Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
0
/*
 * 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);
}