int max77693_muic_charger_cb(enum cable_type_muic cable_type)
{
#ifdef CONFIG_BATTERY_MAX77693_CHARGER
	struct power_supply *psy = power_supply_get_by_name("max77693-charger");
	union power_supply_propval value;
#endif
	pr_info("%s: %d\n", __func__, cable_type);

	switch (cable_type) {
	case CABLE_TYPE_NONE_MUIC:
	case CABLE_TYPE_OTG_MUIC:
	case CABLE_TYPE_JIG_UART_OFF_MUIC:
	case CABLE_TYPE_MHL_MUIC:
		is_cable_attached = false;
		break;
	case CABLE_TYPE_USB_MUIC:
	case CABLE_TYPE_JIG_USB_OFF_MUIC:
	case CABLE_TYPE_JIG_USB_ON_MUIC:
		is_cable_attached = true;
		break;
	case CABLE_TYPE_MHL_VB_MUIC:
		is_cable_attached = true;
		break;
	case CABLE_TYPE_TA_MUIC:
	case CABLE_TYPE_CARDOCK_MUIC:
	case CABLE_TYPE_DESKDOCK_MUIC:
	case CABLE_TYPE_SMARTDOCK_MUIC:
	case CABLE_TYPE_JIG_UART_OFF_VB_MUIC:
		is_cable_attached = true;
		break;
	default:
		pr_err("%s: invalid type:%d\n", __func__, cable_type);
		return -EINVAL;
	}

#ifdef CONFIG_BATTERY_MAX77693_CHARGER
	if (!psy) {
		pr_err("%s: fail to get max77693-charger psy\n", __func__);
		return 0;
	}

	value.intval = cable_type;
	psy->set_property(psy, POWER_SUPPLY_PROP_ONLINE, &value);
#endif

#ifdef CONFIG_CHARGER_MANAGER
	if (is_cable_attached)
		charge_current_set(CABLE_TYPE_TA);
#endif
#if defined(CONFIG_MACH_SLP_NAPLES) || defined(CONFIG_MACH_MIDAS)
#ifndef CONFIG_MACH_GC1
	tsp_charger_infom(is_cable_attached);
#endif
#endif
#ifdef CONFIG_JACK_MON
	jack_event_handler("charger", is_cable_attached);
#endif

	return 0;
}
Пример #2
0
static int muic_charger_cb(enum muic_attached_dev cable_type)
{
	struct power_supply *psy = power_supply_get_by_name("battery");
	union power_supply_propval value;

	pr_info("%s:%s %d\n", MUIC_DEV_NAME, __func__, cable_type);

	switch (cable_type) {
	case ATTACHED_DEV_NONE_MUIC:
	case ATTACHED_DEV_OTG_MUIC:
	case ATTACHED_DEV_JIG_UART_OFF_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_BATTERY;
		break;
	case ATTACHED_DEV_USB_MUIC:
	case ATTACHED_DEV_CDP_MUIC:
#if defined(CONFIG_MUIC_SUPPORT_POGO_USB)
	case ATTACHED_DEV_POGO_USB_MUIC:
#endif /* CONFIG_MUIC_SUPPORT_POGO_USB */
	case ATTACHED_DEV_JIG_USB_OFF_MUIC:
	case ATTACHED_DEV_JIG_USB_ON_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_USB;
		break;
	case ATTACHED_DEV_TA_MUIC:
	case ATTACHED_DEV_500MA_TA_MUIC:
	case ATTACHED_DEV_2A_TA_MUIC:
#if defined(CONFIG_MUIC_SUPPORT_POGO_TA)
	case ATTACHED_DEV_POGO_TA_MUIC:
#endif /* CONFIG_MUIC_SUPPORT_POGO_TA */
#if defined(CONFIG_MUIC_ADC_ADD_PLATFORM_DEVICE)
	case ATTACHED_DEV_UNKNOWN_TA_MUIC:
#endif /* CONFIG_MUIC_ADC_ADD_PLATFORM_DEVICE */
	case ATTACHED_DEV_DESKDOCK_MUIC:
	case ATTACHED_DEV_CARDOCK_MUIC:
	case ATTACHED_DEV_JIG_UART_OFF_VB_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_MAINS;
		break;
	default:
		pr_err("%s:%s invalid type:%d\n", MUIC_DEV_NAME, __func__, cable_type);
		return -EINVAL;
	}

#if defined(CONFIG_MACH_WATCH)
	tsp_charger_infom(current_cable_type != POWER_SUPPLY_TYPE_BATTERY ? true : false );
#endif

	if (!psy || !psy->set_property)
		pr_err("%s: fail to get battery psy\n", __func__);
	else {
		value.intval = current_cable_type;
		psy->set_property(psy, POWER_SUPPLY_PROP_ONLINE, &value);
	}
	return 0;
}
Пример #3
0
int max77693_muic_charger_cb(enum cable_type_muic cable_type)
{
    struct power_supply *psy = power_supply_get_by_name("battery");
    union power_supply_propval value;
    static enum cable_type_muic previous_cable_type = CABLE_TYPE_NONE_MUIC;

    pr_info("[BATT] CB enabled %d\n", cable_type);

    /* others setting */
    switch (cable_type) {
    case CABLE_TYPE_NONE_MUIC:
    case CABLE_TYPE_OTG_MUIC:
    case CABLE_TYPE_JIG_UART_OFF_MUIC:
    case CABLE_TYPE_MHL_MUIC:
        is_cable_attached = false;
        break;
    case CABLE_TYPE_USB_MUIC:
    case CABLE_TYPE_JIG_USB_OFF_MUIC:
    case CABLE_TYPE_JIG_USB_ON_MUIC:
    case CABLE_TYPE_SMARTDOCK_USB_MUIC:
        is_cable_attached = true;
        break;
    case CABLE_TYPE_MHL_VB_MUIC:
        is_cable_attached = true;
        break;
    case CABLE_TYPE_TA_MUIC:
    case CABLE_TYPE_CARDOCK_MUIC:
    case CABLE_TYPE_DESKDOCK_MUIC:
    case CABLE_TYPE_SMARTDOCK_MUIC:
    case CABLE_TYPE_SMARTDOCK_TA_MUIC:
    case CABLE_TYPE_AUDIODOCK_MUIC:
    case CABLE_TYPE_JIG_UART_OFF_VB_MUIC:
        is_cable_attached = true;
        break;
    default:
        pr_err("%s: invalid type:%d\n", __func__, cable_type);
        return -EINVAL;
    }

#if defined(CONFIG_MACH_SLP_NAPLES) || defined(CONFIG_MACH_MIDAS) \
		|| defined(CONFIG_MACH_GC1) || defined(CONFIG_MACH_T0)
    tsp_charger_infom(is_cable_attached);
#endif
#if defined(CONFIG_MACH_JA)
    touchkey_charger_infom(is_cable_attached);
#endif

    /*  charger setting */
    if (previous_cable_type == cable_type) {
        pr_info("%s: SKIP cable setting\n", __func__);
        goto skip;
    }
    previous_cable_type = cable_type;

    switch (cable_type) {
    case CABLE_TYPE_NONE_MUIC:
    case CABLE_TYPE_JIG_UART_OFF_MUIC:
        current_cable_type = POWER_SUPPLY_TYPE_BATTERY;
        break;
    case CABLE_TYPE_MHL_VB_MUIC:
        if (lpcharge)
            current_cable_type = POWER_SUPPLY_TYPE_USB;
        else
            goto skip;
        break;
    case CABLE_TYPE_MHL_MUIC:
        if (lpcharge) {
            current_cable_type = POWER_SUPPLY_TYPE_BATTERY;
        } else {
            goto skip;
        }
        break;
    case CABLE_TYPE_OTG_MUIC:
        goto skip;
    case CABLE_TYPE_USB_MUIC:
    case CABLE_TYPE_JIG_USB_OFF_MUIC:
    case CABLE_TYPE_JIG_USB_ON_MUIC:
    case CABLE_TYPE_SMARTDOCK_USB_MUIC:
        current_cable_type = POWER_SUPPLY_TYPE_USB;
        break;
    case CABLE_TYPE_JIG_UART_OFF_VB_MUIC:
        current_cable_type = POWER_SUPPLY_TYPE_UARTOFF;
        break;
    case CABLE_TYPE_TA_MUIC:
        current_cable_type = POWER_SUPPLY_TYPE_MAINS;
        break;
    case CABLE_TYPE_CARDOCK_MUIC:
    case CABLE_TYPE_DESKDOCK_MUIC:
    case CABLE_TYPE_SMARTDOCK_MUIC:
    case CABLE_TYPE_AUDIODOCK_MUIC:
    case CABLE_TYPE_SMARTDOCK_TA_MUIC:
        current_cable_type = POWER_SUPPLY_TYPE_MISC;
        break;
    default:
        pr_err("%s: invalid type for charger:%d\n",
               __func__, cable_type);
        goto skip;
    }

    if (!psy || !psy->set_property)
        pr_err("%s: fail to get battery psy\n", __func__);
    else {
        value.intval = current_cable_type<<ONLINE_TYPE_MAIN_SHIFT;
        psy->set_property(psy, POWER_SUPPLY_PROP_ONLINE, &value);
    }

skip:
#ifdef CONFIG_JACK_MON
    jack_event_handler("charger", is_cable_attached);
#endif

    return 0;
}
int max77693_muic_charger_cb(enum cable_type_muic cable_type)
{
#if !defined(USE_CHGIN_INTR)
#ifdef CONFIG_BATTERY_MAX77693_CHARGER
	struct power_supply *psy = power_supply_get_by_name("max77693-charger");
	union power_supply_propval value;
#endif
#endif

#ifdef CONFIG_CHARGER_MAX77693_BAT
	struct power_supply *psy = power_supply_get_by_name("battery");
	union power_supply_propval value;
#endif
	static enum cable_type_muic previous_cable_type = CABLE_TYPE_NONE_MUIC;
	struct power_supply *psy_p = power_supply_get_by_name("ps");

	pr_info("%s: %d\n", __func__, cable_type);

	switch (cable_type) {
	case CABLE_TYPE_NONE_MUIC:
	case CABLE_TYPE_OTG_MUIC:
	case CABLE_TYPE_JIG_UART_OFF_MUIC:
	case CABLE_TYPE_MHL_MUIC:
#ifdef CONFIG_MUIC_MAX77693_SUPPORT_PS_CABLE
	case CABLE_TYPE_POWER_SHARING_MUIC:
#endif
		is_cable_attached = false;
		break;
	case CABLE_TYPE_USB_MUIC:
	case CABLE_TYPE_JIG_USB_OFF_MUIC:
	case CABLE_TYPE_JIG_USB_ON_MUIC:
		is_cable_attached = true;
		break;
	case CABLE_TYPE_MHL_VB_MUIC:
		is_cable_attached = true;
		break;
	case CABLE_TYPE_TA_MUIC:
	case CABLE_TYPE_CARDOCK_MUIC:
	case CABLE_TYPE_DESKDOCK_MUIC:
	case CABLE_TYPE_SMARTDOCK_MUIC:
	case CABLE_TYPE_AUDIODOCK_MUIC:
	case CABLE_TYPE_JIG_UART_OFF_VB_MUIC:
		is_cable_attached = true;
		break;
	default:
		pr_err("%s: invalid type:%d\n", __func__, cable_type);
		return -EINVAL;
	}

#if !defined(USE_CHGIN_INTR)
#ifdef CONFIG_BATTERY_MAX77693_CHARGER
	if (!psy || !psy->set_property) {
		pr_err("%s: fail to get max77693-charger psy\n", __func__);
		return 0;
	}

	value.intval = cable_type;
	psy->set_property(psy, POWER_SUPPLY_PROP_ONLINE, &value);
#endif
#endif

	if (previous_cable_type == cable_type) {
		pr_info("%s : SKIP cable setting\n", __func__);
		goto skip_cable_setting;
	}

#ifdef CONFIG_CHARGER_MAX77693_BAT
	/* charger setting */
	switch (cable_type) {
	case CABLE_TYPE_NONE_MUIC:
	case CABLE_TYPE_JIG_UART_OFF_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_BATTERY;
		break;
	case CABLE_TYPE_MHL_VB_MUIC:
		if (lpcharge)
			current_cable_type = POWER_SUPPLY_TYPE_USB;
		else
			goto skip;
		break;
	case CABLE_TYPE_MHL_MUIC:
		if (lpcharge) {
			current_cable_type = POWER_SUPPLY_TYPE_BATTERY;
		} else {
			goto skip;
		}
		break;
	case CABLE_TYPE_OTG_MUIC:
		goto skip;
	case CABLE_TYPE_USB_MUIC:
	case CABLE_TYPE_JIG_USB_OFF_MUIC:
	case CABLE_TYPE_JIG_USB_ON_MUIC:
	case CABLE_TYPE_SMARTDOCK_USB_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_USB;
		break;
	case CABLE_TYPE_JIG_UART_OFF_VB_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_UARTOFF;
		break;
	case CABLE_TYPE_TA_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_MAINS;
		break;
	case CABLE_TYPE_CARDOCK_MUIC:
	case CABLE_TYPE_DESKDOCK_MUIC:
	case CABLE_TYPE_SMARTDOCK_MUIC:
	case CABLE_TYPE_AUDIODOCK_MUIC:
	case CABLE_TYPE_SMARTDOCK_TA_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_MISC;
		break;
#ifdef CONFIG_MUIC_MAX77693_SUPPORT_PS_CABLE
	case CABLE_TYPE_POWER_SHARING_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_POWER_SHARING;
		break;
#endif
	default:
		pr_err("%s: invalid type for charger:%d\n",
				__func__, cable_type);
		goto skip;
	}

	if (!psy || !psy->set_property || !psy_p || !psy_p->set_property) {
		pr_err("%s: fail to get battery psy\n", __func__);
		return 0;
	} else {
#ifdef CONFIG_MUIC_MAX77693_SUPPORT_PS_CABLE
		if (current_cable_type == POWER_SUPPLY_TYPE_POWER_SHARING) {
			value.intval = current_cable_type;
			psy_p->set_property(psy_p, POWER_SUPPLY_PROP_ONLINE, &value);
		} else {
			if (previous_cable_type == CABLE_TYPE_POWER_SHARING_MUIC) {
				value.intval = current_cable_type;
				psy_p->set_property(psy_p, POWER_SUPPLY_PROP_ONLINE, &value);
			}
#endif
			value.intval = current_cable_type<<ONLINE_TYPE_MAIN_SHIFT;
			psy->set_property(psy, POWER_SUPPLY_PROP_ONLINE, &value);
#ifdef CONFIG_MUIC_MAX77693_SUPPORT_PS_CABLE
		}
#endif
	}
skip:
#endif
	previous_cable_type = cable_type;
skip_cable_setting:
#if defined(CONFIG_MACH_SLP_NAPLES) \
	|| defined(CONFIG_MACH_MIDAS) \
	|| defined(CONFIG_MACH_GC1) \
	|| defined(CONFIG_MACH_T0) \
	|| defined(CONFIG_MACH_GD2)

#ifndef CONFIG_TOUCHSCREEN_CYPRESS_TMA46X
#ifndef CONFIG_MACH_KONA
	tsp_charger_infom(is_cable_attached);
#endif
#endif
#endif
#ifdef CONFIG_JACK_MON
	jack_event_handler("charger", is_cable_attached);
#endif

	return 0;
}
Пример #5
0
int max77803_muic_charger_cb(enum cable_type_muic cable_type)
{
	struct power_supply *psy = power_supply_get_by_name("battery");
	struct power_supply *psy_p = power_supply_get_by_name("ps");
	union power_supply_propval value;
	static enum cable_type_muic previous_cable_type = CABLE_TYPE_NONE_MUIC;

	pr_info("[BATT] CB enabled(%d), prev_cable(%d)\n", cable_type, previous_cable_type);

	/* others setting */
	switch (cable_type) {
	case CABLE_TYPE_NONE_MUIC:
	case CABLE_TYPE_OTG_MUIC:
	case CABLE_TYPE_JIG_UART_OFF_MUIC:
	case CABLE_TYPE_MHL_MUIC:
	case CABLE_TYPE_DESKDOCK_MUIC:
	case CABLE_TYPE_PS_CABLE_MUIC:
		is_cable_attached = false;
		break;
	case CABLE_TYPE_USB_MUIC:
	case CABLE_TYPE_JIG_USB_OFF_MUIC:
	case CABLE_TYPE_JIG_USB_ON_MUIC:
	case CABLE_TYPE_SMARTDOCK_USB_MUIC:
		is_cable_attached = true;
		break;
	case CABLE_TYPE_MHL_VB_MUIC:
		is_cable_attached = true;
		break;
	case CABLE_TYPE_TA_MUIC:
	case CABLE_TYPE_LANHUB_MUIC:
	case CABLE_TYPE_CARDOCK_MUIC:
	case CABLE_TYPE_DESKDOCK_TA_MUIC:
	case CABLE_TYPE_SMARTDOCK_MUIC:
	case CABLE_TYPE_SMARTDOCK_TA_MUIC:
	case CABLE_TYPE_AUDIODOCK_MUIC:
	case CABLE_TYPE_JIG_UART_OFF_VB_MUIC:
	case CABLE_TYPE_CDP_MUIC:
	case CABLE_TYPE_MMDOCK_MUIC:
	case CABLE_TYPE_UNSUPPORTED_ID_VB_MUIC:
		is_cable_attached = true;
		break;
	default:
		pr_err("%s: invalid type:%d\n", __func__, cable_type);
		return -EINVAL;
	}

#ifdef SYNAPTICS_RMI_INFORM_CHARGER
#if defined(CONFIG_V2A)
	if (0x6 <= system_rev)
		tsp_charger_infom(is_cable_attached);
	else
#endif
	synaptics_tsp_charger_infom(cable_type);
#elif defined(CONFIG_V1A) || defined(CONFIG_V2A) \
		|| defined(CONFIG_N1A) || defined(CONFIG_N2A)\
		|| defined(CONFIG_KLIMT)
	tsp_charger_infom(is_cable_attached);
#endif
#if defined(CONFIG_MACH_JA)
	touchkey_charger_infom(is_cable_attached);
#endif
#if defined(CONFIG_KLIMT) && defined(TK_INFORM_CHARGER)
	touchkey_charger_infom(is_cable_attached);
#endif

	/*  charger setting */
	if (previous_cable_type == cable_type) {
		pr_info("%s: SKIP cable setting\n", __func__);
		goto skip_cable_setting;
	}

	switch (cable_type) {
	case CABLE_TYPE_NONE_MUIC:
	case CABLE_TYPE_JIG_UART_OFF_MUIC:
	case CABLE_TYPE_DESKDOCK_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_BATTERY;
		break;
	case CABLE_TYPE_MHL_VB_MUIC:
		if (lpcharge)
			current_cable_type = POWER_SUPPLY_TYPE_USB;
		else
			goto skip;
		break;
	case CABLE_TYPE_MHL_MUIC:
		if (lpcharge) {
			current_cable_type = POWER_SUPPLY_TYPE_BATTERY;
		} else {
			goto skip;
		}
		break;
	case CABLE_TYPE_OTG_MUIC:
		goto skip;
	case CABLE_TYPE_USB_MUIC:
	case CABLE_TYPE_JIG_USB_OFF_MUIC:
	case CABLE_TYPE_JIG_USB_ON_MUIC:
	case CABLE_TYPE_SMARTDOCK_USB_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_USB;
		break;
	case CABLE_TYPE_JIG_UART_OFF_VB_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_UARTOFF;
		break;
	case CABLE_TYPE_TA_MUIC:
	case CABLE_TYPE_CARDOCK_MUIC:
	case CABLE_TYPE_DESKDOCK_TA_MUIC:
	case CABLE_TYPE_SMARTDOCK_MUIC:
	case CABLE_TYPE_SMARTDOCK_TA_MUIC:
	case CABLE_TYPE_UNSUPPORTED_ID_VB_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_MAINS;
		break;
	case CABLE_TYPE_AUDIODOCK_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_MISC;
		break;
	case CABLE_TYPE_CDP_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_USB_CDP;
		break;
	case CABLE_TYPE_LANHUB_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_LAN_HUB;
		break;
	case CABLE_TYPE_PS_CABLE_MUIC:
		current_cable_type = POWER_SUPPLY_TYPE_POWER_SHARING;
		break;
	case CABLE_TYPE_MMDOCK_MUIC:
		return 0;
	default:
		pr_err("%s: invalid type for charger:%d\n",
			__func__, cable_type);
		goto skip;
	}

	if (!psy || !psy->set_property || !psy_p || !psy_p->set_property) {
		pr_err("%s: fail to get battery/ps psy\n", __func__);
	} else {
		if (current_cable_type == POWER_SUPPLY_TYPE_POWER_SHARING) {
			value.intval = current_cable_type;
			psy_p->set_property(psy_p, POWER_SUPPLY_PROP_ONLINE, &value);
		} else {
			if (previous_cable_type == CABLE_TYPE_PS_CABLE_MUIC) {
				value.intval = current_cable_type;
				psy_p->set_property(psy_p, POWER_SUPPLY_PROP_ONLINE, &value);
			}
			value.intval = current_cable_type<<ONLINE_TYPE_MAIN_SHIFT;
			psy->set_property(psy, POWER_SUPPLY_PROP_ONLINE, &value);
		}
	}
skip:
	previous_cable_type = cable_type;
skip_cable_setting:
#ifdef CONFIG_JACK_MON
	jack_event_handler("charger", is_cable_attached);
#endif

	return 0;
}