static int report_state_of_charge(void)//(struct qpnp_chg_chip *chip) { #ifdef CONFIG_PANTECH_USB_SMB_OTG_DISABLE_LOW_BATTERY int ret; #endif if(is_fatctory_dummy_connect()){ pr_debug("djjeon factory dummy\n"); return 50; } #ifdef CONFIG_PANTECH_USB_SMB_OTG_DISABLE_LOW_BATTERY else if(get_pantech_otg_enabled()) { ret = max17058_get_soc(); if(ret < 10) pantech_otg_uvlo_notify(1); return ret; } #endif else return max17058_get_soc(); }
/** * dwc3_ext_event_notify - callback to handle events from external transceiver * @otg: Pointer to the otg transceiver structure * @event: Event reported by transceiver * * Returns 0 on success */ static void dwc3_ext_event_notify(struct usb_otg *otg, enum dwc3_ext_events event) { static bool init; struct dwc3_otg *dotg = container_of(otg, struct dwc3_otg, otg); struct dwc3_ext_xceiv *ext_xceiv = dotg->ext_xceiv; struct usb_phy *phy = dotg->otg.phy; int ret = 0; /* Flush processing any pending events before handling new ones */ if (init) flush_delayed_work(&dotg->sm_work); if (event == DWC3_EVENT_PHY_RESUME) { if (!pm_runtime_status_suspended(phy->dev)) { dev_warn(phy->dev, "PHY_RESUME event out of LPM!!!!\n"); } else { dev_dbg(phy->dev, "ext PHY_RESUME event received\n"); /* ext_xceiver would have taken h/w out of LPM by now */ ret = pm_runtime_get(phy->dev); if ((phy->state == OTG_STATE_A_HOST) && dotg->host_bus_suspend) dotg->host_bus_suspend = 0; if (ret == -EACCES) { /* pm_runtime_get may fail during system resume with -EACCES error */ pm_runtime_disable(phy->dev); pm_runtime_set_active(phy->dev); pm_runtime_enable(phy->dev); } else if (ret < 0) { dev_warn(phy->dev, "pm_runtime_get failed!\n"); } } } else if (event == DWC3_EVENT_XCEIV_STATE) { if (pm_runtime_status_suspended(phy->dev)) { dev_warn(phy->dev, "PHY_STATE event in LPM!!!!\n"); ret = pm_runtime_get(phy->dev); if (ret < 0) dev_warn(phy->dev, "pm_runtime_get failed!!\n"); } if (ext_xceiv->id == DWC3_ID_FLOAT) { dev_dbg(phy->dev, "XCVR: ID set\n"); #if defined(CONFIG_ANDROID_PANTECH_USB_OTG_INTENT) /* FIXME : OTG host intent only notify to user layer * when previous OTG_ID state is 0. * LS4-USB tarial */ if(get_pantech_otg_enabled()) set_otg_host_state(0); #endif set_bit(ID, &dotg->inputs); } else { dev_dbg(phy->dev, "XCVR: ID clear\n"); clear_bit(ID, &dotg->inputs); #ifdef CONFIG_ANDROID_PANTECH_USB_OTG_INTENT set_otg_host_state(1); #endif } if (ext_xceiv->bsv) { dev_dbg(phy->dev, "XCVR: BSV set\n"); set_bit(B_SESS_VLD, &dotg->inputs); } else { dev_dbg(phy->dev, "XCVR: BSV clear\n"); clear_bit(B_SESS_VLD, &dotg->inputs); } if (!init) { init = true; if (!work_busy(&dotg->sm_work.work)) queue_delayed_work(system_nrt_wq, &dotg->sm_work, 0); complete(&dotg->dwc3_xcvr_vbus_init); dev_dbg(phy->dev, "XCVR: BSV init complete\n"); return; } queue_delayed_work(system_nrt_wq, &dotg->sm_work, 0); } }