Exemple #1
0
int enable_get_sim_type(int md_id, unsigned int enable)
{
	int ret = 0;
	unsigned int msg_id = EXT_MD_SIM_TYPE;
	unsigned int   resv = enable;
	
	ret = eemcs_notify_md_by_sys_msg(MD_SYS5, msg_id, resv);

	DBGLOG(SMSG,INF,"enable_get_sim_type(enable=%d): %d", resv, ret);

	return ret;
}
Exemple #2
0
//------------For MD get Battery info from AP------------//
void send_battery_info(int md_id)
{
	int	ret = 0;
	unsigned int para = 0;
	unsigned int resv = 0;
	unsigned int msg_id = EXT_MD_GET_BATTERY_INFO;

	resv = eemcs_get_bat_info(para);
	ret = eemcs_notify_md_by_sys_msg(md_id, msg_id, resv);
    DBGLOG(SMSG, INF, "send bat vol(%d) to md: %d", resv, ret);     
    
	return;
}
static void 
mtk_cl_mddtxpwr_set_mddtxpwr_limit(void)
{
  // TODO: optimize
  int i = 0;
  int min_limit = 65535;
  for (; i < MAX_NUM_INSTANCE_MTK_COOLER_MDDTXPWR; i++)
  {
    unsigned long curr_state;

    MTK_CL_MDDTXPWR_GET_CURR_STATE(curr_state, cl_mddtxpwr_state[i]);
    if (1 == curr_state)
    {
      int limit;
      MTK_CL_MDDTXPWR_GET_LIMIT(limit, cl_mddtxpwr_state[i]);
      if ((min_limit > limit) && (limit > 0))
        min_limit = limit;
    }
  }

  if (min_limit != cl_mddtxpwr_cur_limit)
  {
    cl_mddtxpwr_cur_limit = min_limit;
#if 1
    if (65535 <= cl_mddtxpwr_cur_limit)
    {
      int ret = 
        eemcs_notify_md_by_sys_msg(MD_SYS5, EXT_MD_DTX_REQ, 8);
      mtk_cooler_mddtxpwr_dprintk_always("mtk_cl_mddtxpwr_set_mddtxpwr_limit() ret %d limit=30\n", ret);
    }
    else
    {
      int ret = 
        eemcs_notify_md_by_sys_msg(MD_SYS5, EXT_MD_DTX_REQ, cl_mddtxpwr_cur_limit);
      mtk_cooler_mddtxpwr_dprintk_always("mtk_cl_mddtxpwr_set_mddtxpwr_limit() ret %d limit=%d\n", cl_mddtxpwr_cur_limit);
    }
#endif
  }
}
static int amdtxpwr_backoff(int level)
{
    int ret;
    if (level == 0) 
    {
        // no throttle
        //ret = eemcs_notify_md_by_sys_msg(MD_SYS5, EXT_MD_DTX_REQ, 8);
        ret = eemcs_notify_md_by_sys_msg(MD_SYS5, EXT_MD_TX_PWR_REDU_REQ, 23); // TODO: 30db as unlimit...
        mtk_cooler_amdtxctrl_dprintk_always("[%s] unlimit DTX and TX\n", __func__);
        
    }
#if 0
    else if (level >= 1 && level <= 7)
    {
        // only DTX
        ret = eemcs_notify_md_by_sys_msg(MD_SYS5, EXT_MD_DTX_REQ, 8-level);
        ret = eemcs_notify_md_by_sys_msg(MD_SYS5, EXT_MD_TX_PWR_REDU_REQ, 23); // TODO: 30db as unlimit...
        mtk_cooler_amdtxctrl_dprintk_always("[%s] limit DTX %d and unlimit TX\n", __func__, 8-level);
    }
#endif
    else if (level >= 1 && level <= COOLER_STEPS-1)
    {
        // DTX 1/8 + Tx power back off
        //ret = eemcs_notify_md_by_sys_msg(MD_SYS5, EXT_MD_DTX_REQ, 1);
        ret = eemcs_notify_md_by_sys_msg(MD_SYS5, EXT_MD_TX_PWR_REDU_REQ, (23- (level)*3)); // TODO: 30db as unlimit...
        mtk_cooler_amdtxctrl_dprintk_always("[%s] limit DTX 1 and limit TX %d\n", __func__, (23- (level)*3));
    }
    else
    {
        // error...
        ret = -1;
        mtk_cooler_amdtxctrl_dprintk_always("[%s] ouf of range\n", __func__);
    }

    return ret;
        
}
static void eemcs_low_battery_cb(unsigned int level)
{
	int md_id;
	int ret;
	unsigned int reserve = 0xFFFFFFFF;
	
	/*
	 * byte3 byte2 byte1 byte0
	 *  0     4G    3G    2G
	 */
	if(level == LOW_BATTERY_LEVEL_0) {
		reserve = 0;// 0
	} else if(level == LOW_BATTERY_LEVEL_1 || level == LOW_BATTERY_LEVEL_2) {
		reserve = (1<<6);// 64
	}
	
	if(reserve!=0xFFFFFFFF) {
		for(md_id = MD_EXT1; md_id < (MD_EXT1+MAX_EXT_MD_NUM); md_id++) {
			ret = eemcs_notify_md_by_sys_msg(md_id, EXT_MD_LOW_BATTERY_LEVEL, reserve);
			printk("[EEMCS/PLAT] eemcs_low_battery_cb: md_id=%d, msg=%x, reserve=%d, ret=%d\n", \
				md_id, EXT_MD_LOW_BATTERY_LEVEL, reserve, ret);
		}
	}
}
Exemple #6
0
int eemcs_sysmsg_echo_test(int md_id, int data)
{
    eemcs_notify_md_by_sys_msg(md_id, TEST_MSG_ID_AP2MD, data);
    return 0;
}