diff --git a/drivers/power/supply/qcom/smb5-lib.c b/drivers/power/supply/qcom/smb5-lib.c index 93ff019c7c0e..771072aa7d95 100644 --- a/drivers/power/supply/qcom/smb5-lib.c +++ b/drivers/power/supply/qcom/smb5-lib.c @@ -4081,11 +4081,7 @@ static int smblib_get_prop_ufp_mode(struct smb_charger *chg) return POWER_SUPPLY_TYPEC_SOURCE_MEDIUM; case SNK_DAM_3000MA_BIT: case SNK_RP_3P0_BIT: - if (chg->hvdcp_disable){ - return POWER_SUPPLY_TYPEC_SOURCE_MEDIUM; - } else { - return POWER_SUPPLY_TYPEC_SOURCE_HIGH; - } + return POWER_SUPPLY_TYPEC_SOURCE_HIGH; case SNK_RP_SHORT_BIT: return POWER_SUPPLY_TYPEC_NON_COMPLIANT; default: @@ -5443,7 +5439,10 @@ int smblib_get_charge_current(struct smb_charger *chg, current_ua = TYPEC_MEDIUM_CURRENT_UA; break; case POWER_SUPPLY_TYPEC_SOURCE_HIGH: - current_ua = TYPEC_HIGH_CURRENT_UA; + if(chg->hvdcp_disable) + current_ua = TYPEC_HIGH_CURRENT_UA_NON_HVDCP; + else + current_ua = TYPEC_HIGH_CURRENT_UA; break; case POWER_SUPPLY_TYPEC_NON_COMPLIANT: case POWER_SUPPLY_TYPEC_NONE: @@ -9943,7 +9942,10 @@ void mmi_chrg_rate_check(struct smb_charger *chip) if (chip->typec_mode == POWER_SUPPLY_TYPEC_SOURCE_HIGH || mmi->hvdcp3_con) { - mmi->charger_rate = POWER_SUPPLY_CHARGE_RATE_TURBO; + if(chip->hvdcp_disable) + mmi->charger_rate = POWER_SUPPLY_CHARGE_RATE_NORMAL; + else + mmi->charger_rate = POWER_SUPPLY_CHARGE_RATE_TURBO; goto end_rate_check; } @@ -10295,7 +10297,10 @@ static void mmi_heartbeat_work(struct work_struct *work) cl_cc = 1500; break; case POWER_SUPPLY_TYPEC_SOURCE_HIGH: - cl_cc = 3000; + if(chip->hvdcp_disable) + cl_cc = 2000; + else + cl_cc = 3000; break; case POWER_SUPPLY_TYPEC_SINK_AUDIO_ADAPTER: cl_cc = 500; diff --git a/drivers/power/supply/qcom/smb5-lib.h b/drivers/power/supply/qcom/smb5-lib.h index 49bb1bfeebc1..a8c37f358c0e 100644 --- a/drivers/power/supply/qcom/smb5-lib.h +++ b/drivers/power/supply/qcom/smb5-lib.h @@ -113,6 +113,7 @@ enum print_reason { #define TYPEC_DEFAULT_CURRENT_UA 900000 #define TYPEC_MEDIUM_CURRENT_UA 1500000 #define TYPEC_HIGH_CURRENT_UA 3000000 +#define TYPEC_HIGH_CURRENT_UA_NON_HVDCP 2000000 // defined for non-support hvdcp project, only drive 2A current from type-c HIGH #define DCIN_ICL_MIN_UA 100000 #define DCIN_ICL_MAX_UA 1500000 #define DCIN_ICL_STEP_UA 100000