int msm_chg_usb_i_is_available(uint32_t sample) { int rc = 0; struct hsusb_start_req { struct rpc_request_hdr hdr; uint32_t i_ma; } req; // Jagan+ #ifdef CONFIG_BATTERY_QSD if((sample == 100) || (sample == 0)) qsd_bat_update_usb_status(USB_STATUS_USB_IN | USB_STATUS_USB_100); else if(sample == 500) qsd_bat_update_usb_status(USB_STATUS_USB_IN | USB_STATUS_USB_500); else if(sample == 1500) qsd_bat_update_usb_status(USB_STATUS_USB_WALL_IN | USB_STATUS_USB_1500); else if(sample == 505) qsd_bat_update_usb_status(USB_STATUS_USB_WALL_IN | USB_STATUS_USB_500); #endif // Jagan- if (!chg_ep || IS_ERR(chg_ep)) return -EAGAIN; req.i_ma = cpu_to_be32(sample); rc = msm_rpc_call(chg_ep, chg_rpc_ids.chg_usb_i_is_available_proc, &req, sizeof(req), 5 * HZ); if (rc < 0) { pr_err("%s: charger_i_available failed! rc = %d\n", __func__, rc); } else pr_debug("msm_chg_usb_i_is_available(%u)\n", sample); return rc; }
int msm_chg_usb_charger_connected(uint32_t device) { int rc = 0; struct hsusb_start_req { struct rpc_request_hdr hdr; uint32_t otg_dev; } req; // Jagan+ #ifdef CONFIG_BATTERY_QSD if(device == 0) qsd_bat_update_usb_status(USB_STATUS_USB_IN | USB_STATUS_USB_100); else if(device == 2) qsd_bat_update_usb_status(USB_STATUS_USB_WALL_IN | USB_STATUS_USB_1500); else if(device == 3) qsd_bat_update_usb_status(USB_STATUS_USB_WALL_IN | USB_STATUS_USB_500); #endif //Jagan- if (!chg_ep || IS_ERR(chg_ep)) return -EAGAIN; req.otg_dev = cpu_to_be32(device); rc = msm_rpc_call(chg_ep, chg_rpc_ids.chg_usb_charger_connected_proc, &req, sizeof(req), 5 * HZ); if (rc < 0) { pr_err("%s: charger_connected failed! rc = %d\n", __func__, rc); } else pr_debug("msm_chg_usb_charger_connected\n"); return rc; }
int msm_chg_usb_charger_disconnected(void) { int rc = 0; struct hsusb_start_req { struct rpc_request_hdr hdr; } req; // Jagan+ #ifdef CONFIG_BATTERY_QSD qsd_bat_update_usb_status(USB_STATUS_USB_NONE | USB_STATUS_USB_100); #endif // Jagan- if (!chg_ep || IS_ERR(chg_ep)) return -EAGAIN; rc = msm_rpc_call(chg_ep, chg_rpc_ids.chg_usb_charger_disconnected_proc, &req, sizeof(req), 5 * HZ); if (rc < 0) { pr_err("%s: charger_disconnected failed! rc = %d\n", __func__, rc); } else pr_debug("msm_chg_usb_charger_disconnected\n"); return rc; }
/* * tuple format: (key_code, key_param) * * old-architecture: * key-press = (key_code, 0) * key-release = (0xff, key_code) * * new-architecutre: * key-press = (key_code, 0) * key-release = (key_code, 0xff) */ static void report_hs_key(uint32_t key_code, uint32_t key_parm) { int key, temp_key_code; if (key_code == HS_REL_K) key = hs_find_key(key_parm); else key = hs_find_key(key_code); temp_key_code = key_code; if (key_parm == HS_REL_K) key_code = key_parm; switch (key) { case KEY_POWER: case KEY_END: key = KEY_POWER; case KEY_MEDIA: case KEY_VOLUMEUP: case KEY_VOLUMEDOWN: input_report_key(hs->ipdev, key, (key_code != HS_REL_K)); { if(key == KEY_POWER) { if(key_code == HS_REL_K) { pwrkey_down = 0; cancel_delayed_work_sync(&pwrkey_work); } else { pwrkey_down = 1; queue_delayed_work(pwrkey_wqueue, &pwrkey_work, 8*HZ); } } else if(key == KEY_END && pwrkey_down == 1) { if(key_code == HS_REL_K) { pwrkey_down = 0; cancel_delayed_work_sync(&pwrkey_work); } } } break; case SW_HEADPHONE_INSERT: report_headset_switch(hs->ipdev, key, (key_code != HS_REL_K)); break; case KEY_BATTERY: #ifdef CONFIG_BATTERY_QSD if(key_code == HS_BAD_BATT_K) { qsd_bat_update_usb_status(CHG_EVENT_GAGIC_BATT_GOOD); } else if(key_code == HS_CHARGING_ON_K) { qsd_bat_update_usb_status(AC_STATUS_AC_IN); #ifdef CONFIG_HW_AUSTIN q6audio_update_AC_5V_status(1); #endif } else if(key_code == HS_CHARGING_OFF_K) { qsd_bat_update_usb_status(AC_STATUS_AC_NONE); #ifdef CONFIG_HW_AUSTIN q6audio_update_AC_5V_status(0); #endif } else if(key_code == HS_BAT_LOW_K) { qsd_bat_update_usb_status(CHG_EVENT_PMIC_BATT_LOW); } #endif return; case -1: printk(KERN_ERR "%s: No mapping for remote handset event %d\n", __func__, temp_key_code); return; } input_sync(hs->ipdev); }