/* usb cable call back function */ void max77693_muic_usb_cb(u8 usb_mode) { pr_info("MUIC usb_cb:%d\n", usb_mode); if (usb_mode == USB_CABLE_DETACHED || usb_mode == USB_CABLE_ATTACHED) { msm_otg_set_vbus_state(usb_mode); } else if (usb_mode == USB_OTGHOST_DETACHED || usb_mode == USB_OTGHOST_ATTACHED) { if (usb_mode == USB_OTGHOST_DETACHED) msm_otg_set_id_state(1); else msm_otg_set_id_state(0); } else if (usb_mode == USB_POWERED_HOST_DETACHED || usb_mode == USB_POWERED_HOST_ATTACHED) { if (usb_mode == USB_POWERED_HOST_DETACHED) msm_otg_set_smartdock_state(1); else msm_otg_set_smartdock_state(0); } #ifdef CONFIG_JACK_MON if (usb_mode == USB_OTGHOST_ATTACHED || usb_mode == USB_POWERED_HOST_ATTACHED) jack_event_handler("host", USB_CABLE_ATTACHED); else if (usb_mode == USB_OTGHOST_DETACHED || usb_mode == USB_POWERED_HOST_DETACHED) jack_event_handler("host", USB_CABLE_DETACHED); else if ((usb_mode == USB_CABLE_ATTACHED) || (usb_mode == USB_CABLE_DETACHED)) jack_event_handler("usb", usb_mode); #endif }
static void midas_usb_cb(u8 usb_mode) { #ifdef CONFIG_JACK_MON if (usb_mode == USB_OTGHOST_ATTACHED) jack_event_handler("host", USB_CABLE_ATTACHED); else if (usb_mode == USB_OTGHOST_DETACHED) jack_event_handler("host", USB_CABLE_DETACHED); else if ((usb_mode == USB_CABLE_ATTACHED) || (usb_mode == USB_CABLE_DETACHED)) jack_event_handler("usb", usb_mode); #endif }
void max77693_muic_deskdock_cb(bool attached) { pr_info("MUIC deskdock attached=%d\n", attached); if (attached) { #ifdef CONFIG_JACK_MON jack_event_handler("cradle", 1); #endif switch_set_state(&switch_dock, 1); } else { #ifdef CONFIG_JACK_MON jack_event_handler("cradle", 0); #endif switch_set_state(&switch_dock, 0); } }
static int midas_charger_cb(int cable_type) { bool is_cable_attached; switch (cable_type) { case CABLE_TYPE_NONE: case CABLE_TYPE_OTG: case CABLE_TYPE_JIG_UART_OFF: case CABLE_TYPE_MHL: is_cable_attached = false; break; case CABLE_TYPE_USB: case CABLE_TYPE_JIG_USB_OFF: case CABLE_TYPE_JIG_USB_ON: case CABLE_TYPE_MHL_VB: case CABLE_TYPE_TA: case CABLE_TYPE_CARDOCK: case CABLE_TYPE_DESKDOCK: case CABLE_TYPE_JIG_UART_OFF_VB: is_cable_attached = true; break; default: printk(KERN_ERR "%s: invalid type:%d\n", __func__, cable_type); return -EINVAL; } #ifdef CONFIG_JACK_MON jack_event_handler("charger", is_cable_attached); #endif return 0; }
void max77693_muic_smartdock_cb(bool attached) { pr_info("MUIC smartdock attached=%d\n", attached); pr_info("##MUIC [ %s ]- func : %s !!\n", __FILE__, __func__); if (attached) { #ifdef CONFIG_JACK_MON jack_event_handler("cradle", 8); #endif switch_set_state(&switch_dock, 8); } else { #ifdef CONFIG_JACK_MON jack_event_handler("cradle", 0); #endif switch_set_state(&switch_dock, 0); } }
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; }
void max77693_muic_dock_cb(int type) { #ifdef CONFIG_JACK_MON jack_event_handler("cradle", type); #endif #ifdef CONFIG_SWITCH switch_set_state(&switch_dock, type); #endif }
void max77803_muic_dock_cb(int type) { pr_info("%s: MUIC attached: %d\n", __func__, type); #ifdef CONFIG_JACK_MON jack_event_handler("cradle", type); #endif switch_set_state(&switch_dock, type); }
void max77803_muic_dock_cb(int type) { pr_info("%s\n", __func__); #ifdef CONFIG_JACK_MON jack_event_handler("cradle", type); #endif #ifdef CONFIG_SWITCH switch_set_state(&switch_dock, type); #endif }
void max77693_muic_dock_cb(int type) { pr_info("%s:%s= MUIC dock type=%d\n", "sec-switch.c", __func__, type); #ifdef CONFIG_JACK_MON jack_event_handler("cradle", type); #endif #ifdef CONFIG_SWITCH switch_set_state(&switch_dock, type); #endif }
int max77693_muic_charger_cb(enum cable_type_muic cable_type) { 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_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_JACK_MON jack_event_handler("charger", is_cable_attached); #endif return 0; }
int max77803_muic_charger_cb(enum cable_type_muic cable_type) { #if 0 /* Max77836 bringup */ struct power_supply *psy = power_supply_get_by_name("battery"); union power_supply_propval value; #endif /* Max77836 bringup */ 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: case CABLE_TYPE_CDP_MUIC: is_cable_attached = true; break; default: pr_err("%s: invalid type:%d\n", __func__, cable_type); return -EINVAL; } #ifdef SYNAPTICS_RMI_INFORM_CHARGER synaptics_tsp_charger_infom(cable_type); #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 0 /* Max77836 bringup */ if (lpcharge) current_cable_type = POWER_SUPPLY_TYPE_USB; else #endif /* Max77836 bringup */ goto skip; break; case CABLE_TYPE_MHL_MUIC: #if 0 /* Max77836 bringup */ if (lpcharge) current_cable_type = POWER_SUPPLY_TYPE_BATTERY; else #endif /* Max77836 bringup */ 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_MUIC: case CABLE_TYPE_SMARTDOCK_MUIC: case CABLE_TYPE_SMARTDOCK_TA_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; default: pr_err("%s: invalid type for charger:%d\n", __func__, cable_type); goto skip; } #if 0 /* Max77836 bringup */ 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); } #endif /* Max77836 bringup */ skip: #ifdef CONFIG_JACK_MON jack_event_handler("charger", is_cable_attached); #endif return 0; }
int max77803_muic_charger_cb(enum cable_type_muic cable_type) { #ifdef CONFIG_CHARGER_MAX77803 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; #endif pr_info("%s: cable type : %d\n", __func__, cable_type); #ifdef SYNAPTICS_RMI_INFORM_CHARGER synaptics_tsp_charger_infom(cable_type); #endif #if defined(CONFIG_TOUCHSCREEN_ATMEL_MXT224S_KS02) mxt_tsp_charger_infom(cable_type); #endif #ifdef TK_INFORM_CHARGER touchkey_charger_infom(cable_type); #endif #ifdef CONFIG_JACK_MON switch (cable_type) { case CABLE_TYPE_OTG_MUIC: case CABLE_TYPE_NONE_MUIC: case CABLE_TYPE_JIG_UART_OFF_MUIC: case CABLE_TYPE_MHL_MUIC: is_cable_attached = false; break; case CABLE_TYPE_USB_MUIC: #ifdef CONFIG_CHARGER_MAX77803 value.intval = POWER_SUPPLY_TYPE_USB; #endif 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_AUDIODOCK_MUIC: 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_JIG_UART_OFF_VB_MUIC: case CABLE_TYPE_INCOMPATIBLE_MUIC: is_cable_attached = true; break; default: pr_err("%s: invalid type:%d\n", __func__, cable_type); return -EINVAL; } #endif #ifdef CONFIG_CHARGER_MAX77803 /* 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: current_cable_type = POWER_SUPPLY_TYPE_BATTERY; break; case CABLE_TYPE_MHL_VB_MUIC: if(poweroff_charging) current_cable_type = POWER_SUPPLY_TYPE_USB; else goto skip; break; case CABLE_TYPE_MHL_MUIC: if(poweroff_charging) current_cable_type = POWER_SUPPLY_TYPE_BATTERY; else goto skip; 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: 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_CDP_MUIC: current_cable_type = POWER_SUPPLY_TYPE_USB_CDP; break; case CABLE_TYPE_AUDIODOCK_MUIC: current_cable_type = POWER_SUPPLY_TYPE_MISC; break; case CABLE_TYPE_CARDOCK_MUIC: case CABLE_TYPE_DESKDOCK_MUIC: case CABLE_TYPE_SMARTDOCK_MUIC: case CABLE_TYPE_SMARTDOCK_TA_MUIC: current_cable_type = POWER_SUPPLY_TYPE_MAINS; break; case CABLE_TYPE_OTG_MUIC: goto skip; case CABLE_TYPE_JIG_UART_OFF_MUIC: current_cable_type = POWER_SUPPLY_TYPE_BATTERY; break; case CABLE_TYPE_INCOMPATIBLE_MUIC: current_cable_type = POWER_SUPPLY_TYPE_UNKNOWN; 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: #endif #ifdef CONFIG_JACK_MON jack_event_handler("charger", is_cable_attached); #endif return 0; }
/* usb cable call back function */ void max77693_muic_usb_cb(u8 usb_mode) { struct usb_gadget *gadget = platform_get_drvdata(&s3c_device_usbgadget); #ifdef CONFIG_USB_HOST_NOTIFY struct host_notifier_platform_data *host_noti_pdata = host_notifier_device.dev.platform_data; #endif pr_info("MUIC usb_cb:%d\n", usb_mode); if (gadget) { switch (usb_mode) { case USB_CABLE_DETACHED: pr_info("usb: muic: USB_CABLE_DETACHED(%d)\n", usb_mode); usb_gadget_vbus_disconnect(gadget); break; case USB_CABLE_ATTACHED: pr_info("usb: muic: USB_CABLE_ATTACHED(%d)\n", usb_mode); usb_gadget_vbus_connect(gadget); #ifdef CONFIG_CHARGER_MANAGER charge_current_set(CABLE_TYPE_USB); #endif break; default: pr_info("usb: muic: invalid mode%d\n", usb_mode); } } if (usb_mode == USB_OTGHOST_ATTACHED || usb_mode == USB_POWERED_HOST_ATTACHED) { #ifdef CONFIG_USB_HOST_NOTIFY if (usb_mode == USB_OTGHOST_ATTACHED) host_noti_pdata->booster(1); else host_noti_pdata->powered_booster(1); host_noti_pdata->ndev.mode = NOTIFY_HOST_MODE; if (host_noti_pdata->usbhostd_start) host_noti_pdata->usbhostd_start(); #endif #ifdef CONFIG_USB_EHCI_S5P pm_runtime_get_sync(&s5p_device_ehci.dev); #endif #ifdef CONFIG_USB_OHCI_S5P pm_runtime_get_sync(&s5p_device_ohci.dev); #endif } else if (usb_mode == USB_OTGHOST_DETACHED || usb_mode == USB_POWERED_HOST_DETACHED) { #ifdef CONFIG_USB_OHCI_S5P pm_runtime_put_sync(&s5p_device_ohci.dev); #endif #ifdef CONFIG_USB_EHCI_S5P pm_runtime_put_sync(&s5p_device_ehci.dev); #endif #ifdef CONFIG_USB_HOST_NOTIFY host_noti_pdata->ndev.mode = NOTIFY_NONE_MODE; if (host_noti_pdata->usbhostd_stop) host_noti_pdata->usbhostd_stop(); if (usb_mode == USB_OTGHOST_DETACHED) host_noti_pdata->booster(0); else host_noti_pdata->powered_booster(0); #endif } #ifdef CONFIG_JACK_MON if (usb_mode == USB_OTGHOST_ATTACHED || usb_mode == USB_POWERED_HOST_ATTACHED) jack_event_handler("host", USB_CABLE_ATTACHED); else if (usb_mode == USB_OTGHOST_DETACHED || usb_mode == USB_POWERED_HOST_DETACHED) jack_event_handler("host", USB_CABLE_DETACHED); else if ((usb_mode == USB_CABLE_ATTACHED) || (usb_mode == USB_CABLE_DETACHED)) jack_event_handler("usb", usb_mode); #endif }
/* usb cable call back function */ void max77693_muic_usb_cb(u8 usb_mode) { struct usb_gadget *gadget = platform_get_drvdata(&s3c_device_usbgadget); #ifdef CONFIG_USB_EHCI_S5P struct usb_hcd *ehci_hcd = platform_get_drvdata(&s5p_device_ehci); #endif #ifdef CONFIG_USB_OHCI_S5P struct usb_hcd *ohci_hcd = platform_get_drvdata(&s5p_device_ohci); #endif #ifdef CONFIG_USB_HOST_NOTIFY struct host_notifier_platform_data *host_noti_pdata = host_notifier_device.dev.platform_data; #endif int retry_cnt = 1; pr_info("MUIC usb_cb:%d\n", usb_mode); if (gadget) { switch (usb_mode) { case USB_CABLE_DETACHED: pr_info("usb: muic: USB_CABLE_DETACHED(%d)\n", usb_mode); usb_gadget_vbus_disconnect(gadget); break; case USB_CABLE_ATTACHED: pr_info("usb: muic: USB_CABLE_ATTACHED(%d)\n", usb_mode); usb_gadget_vbus_connect(gadget); break; default: pr_info("usb: muic: invalid mode%d\n", usb_mode); } } if (usb_mode == USB_OTGHOST_ATTACHED) { #ifdef CONFIG_USB_EHCI_S5P pm_runtime_get_sync(&s5p_device_ehci.dev); #endif #ifdef CONFIG_USB_OHCI_S5P pm_runtime_get_sync(&s5p_device_ohci.dev); #endif #ifdef CONFIG_USB_HOST_NOTIFY host_noti_pdata->ndev.mode = NOTIFY_HOST_MODE; if (host_noti_pdata->usbhostd_start) host_noti_pdata->usbhostd_start(); host_noti_pdata->booster(1); #endif } else if (usb_mode == USB_OTGHOST_DETACHED) { #ifdef CONFIG_USB_EHCI_S5P pm_runtime_put_sync(&s5p_device_ehci.dev); /* waiting for ehci root hub suspend is done */ while (ehci_hcd->state != HC_STATE_SUSPENDED) { msleep(50); if (retry_cnt++ > RETRY_CNT_LIMIT) { printk(KERN_ERR "ehci suspend not completed\n"); break; } } #endif #ifdef CONFIG_USB_OHCI_S5P pm_runtime_put_sync(&s5p_device_ohci.dev); /* waiting for ohci root hub suspend is done */ while (ohci_hcd->state != HC_STATE_SUSPENDED) { msleep(50); if (retry_cnt++ > RETRY_CNT_LIMIT) { printk(KERN_ERR "ohci suspend is not completed\n"); break; } } #endif #ifdef CONFIG_USB_HOST_NOTIFY host_noti_pdata->ndev.mode = NOTIFY_NONE_MODE; if (host_noti_pdata->usbhostd_stop) host_noti_pdata->usbhostd_stop(); host_noti_pdata->booster(0); #endif } #ifdef CONFIG_JACK_MON if (usb_mode == USB_OTGHOST_ATTACHED) jack_event_handler("host", USB_CABLE_ATTACHED); else if (usb_mode == USB_OTGHOST_DETACHED) jack_event_handler("host", USB_CABLE_DETACHED); else if ((usb_mode == USB_CABLE_ATTACHED) || (usb_mode == USB_CABLE_DETACHED)) jack_event_handler("usb", usb_mode); #endif }
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; }
int max77693_muic_charger_cb(enum cable_type_muic cable_type) { #ifdef CONFIG_CHARGER_MAX77693 struct power_supply *psy = power_supply_get_by_name("battery"); struct power_supply *psy_ps = power_supply_get_by_name("ps"); union power_supply_propval value; static enum cable_type_muic previous_cable_type = CABLE_TYPE_NONE_MUIC; #endif #ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI if (charger_callbacks && charger_callbacks->inform_charger) charger_callbacks->inform_charger(charger_callbacks, cable_type); #endif #ifdef CONFIG_KEYBOARD_CYPRESS_TOUCH_236 touchkey_charger_infom(cable_type); #endif #ifdef CONFIG_JACK_MON switch (cable_type) { case CABLE_TYPE_OTG_MUIC: case CABLE_TYPE_NONE_MUIC: case CABLE_TYPE_JIG_UART_OFF_MUIC: case CABLE_TYPE_MHL_MUIC: case CABLE_TYPE_CHARGING_CABLE_MUIC: is_cable_attached = false; break; case CABLE_TYPE_USB_MUIC: #ifdef CONFIG_CHARGER_MAX77693 value.intval = POWER_SUPPLY_TYPE_USB; #endif 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_AUDIODOCK_MUIC: 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_JIG_UART_OFF_VB_MUIC: case CABLE_TYPE_INCOMPATIBLE_MUIC: is_cable_attached = true; break; default: pr_err("%s: invalid type:%d\n", __func__, cable_type); return -EINVAL; } #endif #ifdef CONFIG_CHARGER_MAX77693 /* charger setting */ if (previous_cable_type == cable_type) { pr_info("%s: SKIP cable setting\n", __func__); goto skip; } switch (cable_type) { case CABLE_TYPE_NONE_MUIC: current_cable_type = POWER_SUPPLY_TYPE_BATTERY; break; case CABLE_TYPE_MHL_VB_MUIC: if(poweroff_charging) current_cable_type = POWER_SUPPLY_TYPE_USB; else goto skip; break; case CABLE_TYPE_MHL_MUIC: if(poweroff_charging) current_cable_type = POWER_SUPPLY_TYPE_BATTERY; else goto skip; 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: 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_CDP_MUIC: current_cable_type = POWER_SUPPLY_TYPE_USB_CDP; break; case CABLE_TYPE_AUDIODOCK_MUIC: case CABLE_TYPE_CARDOCK_MUIC: case CABLE_TYPE_DESKDOCK_MUIC: case CABLE_TYPE_SMARTDOCK_MUIC: case CABLE_TYPE_SMARTDOCK_TA_MUIC: current_cable_type = POWER_SUPPLY_TYPE_MISC; break; case CABLE_TYPE_OTG_MUIC: goto skip; case CABLE_TYPE_JIG_UART_OFF_MUIC: current_cable_type = POWER_SUPPLY_TYPE_BATTERY; break; case CABLE_TYPE_INCOMPATIBLE_MUIC: current_cable_type = POWER_SUPPLY_TYPE_UNKNOWN; break; case CABLE_TYPE_CHARGING_CABLE_MUIC: current_cable_type = POWER_SUPPLY_TYPE_POWER_SHARING; break; default: pr_err("%s: invalid type for charger:%d\n", __func__, cable_type); goto skip; } pr_err("%s: cable type for charger: MUIC(%d), CHARGER(%d)\n", __func__, cable_type, current_cable_type); if (!psy || !psy->set_property || !psy_ps || !psy_ps->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_ps->set_property(psy_ps, POWER_SUPPLY_PROP_ONLINE, &value); } else { if (previous_cable_type == CABLE_TYPE_CHARGING_CABLE_MUIC) { value.intval = current_cable_type; psy_ps->set_property(psy_ps, POWER_SUPPLY_PROP_ONLINE, &value); } else { value.intval = current_cable_type<<ONLINE_TYPE_MAIN_SHIFT; psy->set_property(psy, POWER_SUPPLY_PROP_ONLINE, &value); } } } previous_cable_type = cable_type; #endif skip: #ifdef CONFIG_JACK_MON jack_event_handler("charger", is_cable_attached); #endif return 0; }
static void midas_micdet(u16 status, void *data) { struct snd_soc_codec *codec = data; struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); int report; if (!check_rev00()) { /* Temporarily disable earjack event handling except PQ Rev00 */ pr_err("%s: jack status 0x%x", __func__, status); } else { /* Either nothing present or just starting detection */ if (!(status & WM8958_MICD_STS)) { if (!wm8994->jackdet) { /* If nothing present then clear our statuses */ dev_dbg(codec->dev, "Detected open circuit\n"); wm8994->jack_mic = false; wm8994->mic_detecting = true; midas_micd_set_rate(codec); snd_soc_jack_report(wm8994->micdet[0].jack, 0, wm8994->btn_mask | SND_JACK_HEADSET); /* For SLP platform */ jack_event_handler("earjack", 0); } return; } /* If the measurement is showing a high impedence we've got a * microphone. */ if (wm8994->mic_detecting && (status & 0x400)) { dev_info(codec->dev, "Detected microphone\n"); wm8994->mic_detecting = false; wm8994->jack_mic = true; midas_micd_set_rate(codec); snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADSET, SND_JACK_HEADSET); /* For SLP platform */ jack_event_handler("earjack", SND_JACK_HEADSET); } if (wm8994->mic_detecting && status & 0x4) { dev_info(codec->dev, "Detected headphone\n"); wm8994->mic_detecting = false; midas_micd_set_rate(codec); snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADPHONE, SND_JACK_HEADSET); /* For SLP platform */ jack_event_handler("earjack", SND_JACK_HEADPHONE); /* If we have jackdet that will detect removal */ if (wm8994->jackdet) { snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, WM8958_MICD_ENA, 0); if (wm8994->active_refcount) { snd_soc_update_bits(codec, WM8994_ANTIPOP_2, WM1811_JACKDET_MODE_MASK, WM1811_JACKDET_MODE_AUDIO); } else { snd_soc_update_bits(codec, WM8994_ANTIPOP_2, WM1811_JACKDET_MODE_MASK, WM1811_JACKDET_MODE_JACK); } } } /* Report short circuit as a button */ if (wm8994->jack_mic) { report = 0; if (status & WM1811_JACKDET_BTN0) { report |= SND_JACK_BTN_0; /* For SLP platform */ jack_event_handler("earkey", true); } else jack_event_handler("earkey", false); if (status & WM1811_JACKDET_BTN1) report |= SND_JACK_BTN_1; if (status & WM1811_JACKDET_BTN2) report |= SND_JACK_BTN_2; dev_dbg(codec->dev, "Detected Button: %08x (%08X)\n", report, status); snd_soc_jack_report(wm8994->micdet[0].jack, report, wm8994->btn_mask); } } }
int max77693_muic_charger_cb(enum cable_type_muic cable_type) { #ifdef CONFIG_CHARGER_MAX77XXX struct power_supply *psy = power_supply_get_by_name("battery"); union power_supply_propval value; #endif pr_info("%s: %d\n", __func__, cable_type); #ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI if (charger_callbacks && charger_callbacks->inform_charger) charger_callbacks->inform_charger(charger_callbacks, cable_type); #endif #ifdef CONFIG_TOUCHSCREEN_ATMEL_MXT224S_KS02 if (charger_callbacks && charger_callbacks->inform_charger) charger_callbacks->inform_charger(charger_callbacks, cable_type); #endif #ifdef CONFIG_JACK_MON switch (cable_type) { case CABLE_TYPE_OTG_MUIC: case CABLE_TYPE_NONE_MUIC: case CABLE_TYPE_JIG_UART_OFF_MUIC: case CABLE_TYPE_MHL_MUIC: is_cable_attached = false; break; case CABLE_TYPE_USB_MUIC: #ifdef CONFIG_CHARGER_MAX77XXX value.intval = POWER_SUPPLY_TYPE_USB; #endif 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_AUDIODOCK_MUIC: 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_JIG_UART_OFF_VB_MUIC: case CABLE_TYPE_INCOMPATIBLE_MUIC: is_cable_attached = true; break; default: pr_err("%s: invalid type:%d\n", __func__, cable_type); return -EINVAL; } #endif #ifdef CONFIG_CHARGER_MAX77XXX /* charger setting */ switch (cable_type) { case CABLE_TYPE_NONE_MUIC: current_cable_type = POWER_SUPPLY_TYPE_BATTERY; break; case CABLE_TYPE_MHL_VB_MUIC: if(poweroff_charging) current_cable_type = POWER_SUPPLY_TYPE_USB; else goto skip; break; case CABLE_TYPE_MHL_MUIC: if(poweroff_charging) current_cable_type = POWER_SUPPLY_TYPE_BATTERY; else goto skip; 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: 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_AUDIODOCK_MUIC: case CABLE_TYPE_CARDOCK_MUIC: case CABLE_TYPE_DESKDOCK_MUIC: case CABLE_TYPE_SMARTDOCK_MUIC: case CABLE_TYPE_SMARTDOCK_TA_MUIC: current_cable_type = POWER_SUPPLY_TYPE_MISC; break; case CABLE_TYPE_OTG_MUIC: goto skip; case CABLE_TYPE_JIG_UART_OFF_MUIC: current_cable_type = POWER_SUPPLY_TYPE_BATTERY; break; case CABLE_TYPE_INCOMPATIBLE_MUIC: current_cable_type = POWER_SUPPLY_TYPE_UNKNOWN; 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); } #endif skip: #ifdef CONFIG_JACK_MON jack_event_handler("charger", is_cable_attached); #endif return 0; }
/* usb cable call back function */ void max77693_muic_usb_cb(u8 usb_mode) { struct usb_gadget *gadget = platform_get_drvdata(&s3c_device_usbgadget); #ifdef CONFIG_USB_HOST_NOTIFY struct host_notifier_platform_data *host_noti_pdata = host_notifier_device.dev.platform_data; #endif #ifdef CONFIG_TARGET_LOCALE_KOR if (is_usb_locked) { pr_info("%s: usb locked by mdm\n", __func__); return; } #endif pr_info("MUIC usb_cb:%d\n", usb_mode); if (gadget) { switch (usb_mode) { case USB_CABLE_DETACHED: pr_info("usb: muic: USB_CABLE_DETACHED(%d)\n", usb_mode); usb_gadget_vbus_disconnect(gadget); break; case USB_CABLE_ATTACHED: pr_info("usb: muic: USB_CABLE_ATTACHED(%d)\n", usb_mode); usb_gadget_vbus_connect(gadget); break; default: pr_info("usb: muic: invalid mode%d\n", usb_mode); } } if (usb_mode == USB_OTGHOST_ATTACHED || usb_mode == USB_POWERED_HOST_ATTACHED) { #ifdef CONFIG_USB_HOST_NOTIFY if (usb_mode == USB_OTGHOST_ATTACHED) { host_noti_pdata->booster(1); host_noti_pdata->ndev.mode = NOTIFY_HOST_MODE; if (host_noti_pdata->usbhostd_start) host_noti_pdata->usbhostd_start(); } else { host_noti_pdata->powered_booster(1); start_usbhostd_wakelock(); } #endif #ifdef CONFIG_USB_EHCI_S5P #if defined(CONFIG_MACH_T0_CHN_CTC) || \ defined(CONFIG_MACH_T0_CHN_CMCC) msleep(40); #endif pm_runtime_get_sync(&s5p_device_ehci.dev); #endif #ifdef CONFIG_USB_OHCI_S5P pm_runtime_get_sync(&s5p_device_ohci.dev); #endif #if defined(CONFIG_FAST_BOOT) host_noti_pdata->is_host_working = 1; #endif } else if (usb_mode == USB_OTGHOST_DETACHED || usb_mode == USB_POWERED_HOST_DETACHED) { #ifdef CONFIG_USB_OHCI_S5P pm_runtime_put_sync(&s5p_device_ohci.dev); #endif #ifdef CONFIG_USB_EHCI_S5P pm_runtime_put_sync(&s5p_device_ehci.dev); #endif #ifdef CONFIG_USB_HOST_NOTIFY if (usb_mode == USB_OTGHOST_DETACHED) { host_noti_pdata->ndev.mode = NOTIFY_NONE_MODE; if (host_noti_pdata->usbhostd_stop) host_noti_pdata->usbhostd_stop(); host_noti_pdata->booster(0); } else { host_noti_pdata->powered_booster(0); stop_usbhostd_wakelock(); } #endif #if defined(CONFIG_FAST_BOOT) host_noti_pdata->is_host_working = 0; #endif } #ifdef CONFIG_JACK_MON if (usb_mode == USB_OTGHOST_ATTACHED || usb_mode == USB_POWERED_HOST_ATTACHED) jack_event_handler("host", USB_CABLE_ATTACHED); else if (usb_mode == USB_OTGHOST_DETACHED || usb_mode == USB_POWERED_HOST_DETACHED) jack_event_handler("host", USB_CABLE_DETACHED); else if ((usb_mode == USB_CABLE_ATTACHED) || (usb_mode == USB_CABLE_DETACHED)) jack_event_handler("usb", usb_mode); #endif }
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; }