static void smb347_set_charging_state(struct smb_charger_callbacks *ptr, int cable_status) { struct smb347_chg_data *chg = container_of(ptr, struct smb347_chg_data, callbacks); if (cable_status) { /* Init smb347 charger */ smb347_charger_init(chg); switch (cable_status) { case CABLE_TYPE_AC: /* Input current limit : DCIN 1800mA, USBIN HC 1800mA */ smb347_i2c_write(chg->client, SMB347_INPUT_CURRENTLIMIT, 0x66); /* CommandB : High-current mode */ smb347_i2c_write(chg->client, SMB347_COMMAND_B, 0x03); pr_info("%s : 1.8A charging enable\n", __func__); break; case CABLE_TYPE_USB: /* CommandB : USB5 */ smb347_i2c_write(chg->client, SMB347_COMMAND_B, 0x02); pr_info("%s : LOW(USB5) charging enable\n", __func__); break; default: /* CommandB : USB1 */ smb347_i2c_write(chg->client, SMB347_COMMAND_B, 0x00); pr_info("%s : LOW(USB1) charging enable\n", __func__); break; } } }
static void smb347_set_charging_state(int enable, int charging_mode) { struct smb347_chg_data *chg = smb347_chg; pr_info("%s : enable(%d), charging_mode(%d)\n", __func__, enable, charging_mode); if (enable) { /* Only for P4C rev0.2, Check vbus for opeartion charger */ if (!smb347_check_powersource(chg)) return; /* Init smb347 charger */ smb347_charger_init(chg); switch (charging_mode) { case CABLE_TYPE_TA: /* Input current limit : DCIN 1800mA, USBIN HC 1800mA */ smb347_i2c_write(chg->client, SMB347_INPUT_CURRENTLIMIT, 0x66); /* CommandB : High-current mode */ smb347_i2c_write(chg->client, SMB347_COMMAND_B, 0x03); pr_info("%s : 1.8A charging enable\n", __func__); break; case CABLE_TYPE_DESKDOCK: /* Input current limit : DCIN 1500mA, USBIN HC 1500mA */ smb347_i2c_write(chg->client, SMB347_INPUT_CURRENTLIMIT, 0x55); /* CommandB : High-current mode */ smb347_i2c_write(chg->client, SMB347_COMMAND_B, 0x03); pr_info("%s : 1.5A charging enable\n", __func__); break; case CABLE_TYPE_USB: /* CommandB : USB5 */ smb347_i2c_write(chg->client, SMB347_COMMAND_B, 0x02); pr_info("%s : LOW(USB5) charging enable\n", __func__); break; default: /* CommandB : USB1 */ smb347_i2c_write(chg->client, SMB347_COMMAND_B, 0x00); pr_info("%s : LOW(USB1) charging enable\n", __func__); break; } smb347_enable_charging(chg); } else { smb347_disable_charging(chg); } smb347_test_read(); }