static void max14577_set_charging(struct sec_charger_info *charger)
{
	union power_supply_propval val;
	int full_check_type;
	u8 data;

	if (charger->cable_type == POWER_SUPPLY_TYPE_BATTERY) {
		/* turn off charger */
		data = 0x00;
		max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL2, data);
	} else {
		/* Battery Fast-Charge Timer disabled [6:4] = 0b111 */
		data = 0x70;
		max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL1, data);

		/* Battery-Charger Constant Voltage(CV) Mode, float voltage */
		data = 0;
		data |= max14577_get_float_voltage_data(
			charger->pdata->chg_float_voltage);
		dev_dbg(&charger->client->dev, "%s : float voltage (%dmV)\n",
			__func__, charger->pdata->chg_float_voltage);
		max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL3, data);

		/* Fast Battery Charge Current */
		dev_info(&charger->client->dev,
			"%s : batt_booting_chk = %d\n", __func__, batt_booting_chk);

		if (batt_booting_chk) {
			data = 0;
			data |= max14577_get_fast_charging_current_data(
				charger->charging_current);
			dev_dbg(&charger->client->dev, "%s : charging current (%dmA)\n",
				__func__, charger->charging_current);
			max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL4, data);
		}

		/* End-of-Charge Current Setting */
		data = 0;
		psy_do_property("battery", get,
			POWER_SUPPLY_PROP_CHARGE_NOW, val);
		if (val.intval == SEC_BATTERY_CHARGING_1ST)
			full_check_type = charger->pdata->full_check_type;
		else
			full_check_type = charger->pdata->full_check_type_2nd;
		switch (full_check_type) {
		case SEC_BATTERY_FULLCHARGED_CHGGPIO:
		case SEC_BATTERY_FULLCHARGED_CHGINT:
			/* EOC interrupt NOT masked [0] = 1 */
			data = 0x01;
			max14577_set_command(charger, 0x09, data);
		case SEC_BATTERY_FULLCHARGED_CHGPSY:
			if (val.intval == SEC_BATTERY_CHARGING_1ST) {
				data |= max14577_get_term_current_data(
					charger->pdata->charging_current[
					charger->cable_type].
					full_check_current_1st);
				dev_dbg(&charger->client->dev,
					"%s : term current (%dmA)\n", __func__,
					charger->pdata->charging_current[
					charger->cable_type].
					full_check_current_1st);
			} else {
				data |= max14577_get_term_current_data(
					charger->pdata->charging_current[
					charger->cable_type].
					full_check_current_2nd);
				dev_dbg(&charger->client->dev,
					"%s : term current (%dmA)\n", __func__,
					charger->pdata->charging_current[
					charger->cable_type].
					full_check_current_2nd);
			}
			break;
		}
		/* Set the End Of Charge [EOCS] charging threshold to 50mA i.e.
		 * b1010 so that when battery is nearing charge completion i.e.
		 * SOC=100 & charging current falls below 50mA, EOC IRQ would be
		 * triggered. EOC IRQ status can be read using STATUS3 [0x6]
		 * register.
		 */
		max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL5, data);

		/* Auto Charging Stop disabled [5] = 0 */
		data = 0x20;
		max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL6, data);

		/* Overvoltage-Protection Threshold 6.5V [1:0] = 0b10 */
		data = 0x02;
		max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL7, data);

		/* turn on charger */
		data = 0xc0;
		max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL2, data);
	}
}
static void max14577_set_charging(struct sec_charger_info *charger)
{
    union power_supply_propval val;
    int full_check_type;
    u8 data;

    if (charger->cable_type == POWER_SUPPLY_TYPE_BATTERY) {
        /* turn off charger */
        data = 0x80;
        max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL2, data);
    } else {
        /* Battery Fast-Charge Timer disabled [6:4] = 0b111 */
        data = 0x70;
        max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL1, data);

        /* Battery-Charger Constant Voltage(CV) Mode, float voltage */
        data = 0;
        data |= max14577_get_float_voltage_data(
                    charger->pdata->chg_float_voltage);
        dev_dbg(&charger->client->dev, "%s : float voltage (%dmV)\n",
                __func__, charger->pdata->chg_float_voltage);
        max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL3, data);

        /* Fast Battery Charge Current */
        data = 0;
        data |= max14577_get_fast_charging_current_data(
                    charger->charging_current);
        dev_dbg(&charger->client->dev, "%s : charging current (%dmA)\n",
                __func__, charger->charging_current);
        max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL4, data);

        /* End-of-Charge Current Setting */
        data = 0;
        psy_do_property("battery", get,
                        POWER_SUPPLY_PROP_CHARGE_NOW, val);
        if (val.intval == SEC_BATTERY_CHARGING_1ST)
            full_check_type = charger->pdata->full_check_type;
        else
            full_check_type = charger->pdata->full_check_type_2nd;
        switch (full_check_type) {
        case SEC_BATTERY_FULLCHARGED_CHGGPIO:
        case SEC_BATTERY_FULLCHARGED_CHGINT:
        case SEC_BATTERY_FULLCHARGED_CHGPSY:
            if (val.intval == SEC_BATTERY_CHARGING_1ST) {
                data |= max14577_get_term_current_data(
                            charger->pdata->charging_current[
                                charger->cable_type].
                            full_check_current_1st);
                dev_dbg(&charger->client->dev,
                        "%s : term current (%dmA)\n", __func__,
                        charger->pdata->charging_current[
                            charger->cable_type].
                        full_check_current_1st);
            } else {
                data |= max14577_get_term_current_data(
                            charger->pdata->charging_current[
                                charger->cable_type].
                            full_check_current_2nd);
                dev_dbg(&charger->client->dev,
                        "%s : term current (%dmA)\n", __func__,
                        charger->pdata->charging_current[
                            charger->cable_type].
                        full_check_current_2nd);
            }
            break;
        }
        max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL5, data);

        /* Auto Charging Stop disabled [5] = 0 */
        data = 0;
        max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL6, data);

        /* Overvoltage-Protection Threshold 6.5V [1:0] = 0b10 */
        data = 0x02;
        max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL7, data);

        /* turn on charger */
        data = 0xc0;
        max14577_set_command(charger, MAX14577_CHG_REG_CHG_CTRL2, data);
    }
}