static int mtk_cl_bcct_get_cur_state(struct thermal_cooling_device *cdev, unsigned long *state)
{
	MTK_CL_BCCT_GET_CURR_STATE(*state, *((unsigned long *)cdev->devdata));
	mtk_cooler_bcct_dprintk("mtk_cl_bcct_get_cur_state() %s %lu\n", cdev->type, *state);
	mtk_cooler_bcct_dprintk("mtk_cl_bcct_get_cur_state() %s limit=%d\n", cdev->type,
				get_bat_charging_current_level() / 100);
	return 0;
}
static void 
mtk_cl_bcct_set_bcct_limit(void)
{
  // TODO: optimize
  int i = 0;
  int min_limit = 65535;
  for (; i < MAX_NUM_INSTANCE_MTK_COOLER_BCCT; i++)
  {
    unsigned long curr_state;

    MTK_CL_BCCT_GET_CURR_STATE(curr_state, cl_bcct_state[i]);
    if (1 == curr_state)
    {
      int limit;
      MTK_CL_BCCT_GET_LIMIT(limit, cl_bcct_state[i]);
      if ((min_limit > limit) && (limit > 0))
        min_limit = limit;
    }
  }

  if (min_limit != cl_bcct_cur_limit)
  {
    cl_bcct_cur_limit = min_limit;
#if 1
    if (65535 <= cl_bcct_cur_limit)
    {
      set_bat_charging_current_limit(-1);
      mtk_cooler_bcct_dprintk_always("mtk_cl_bcct_set_bcct_limit() limit=-1\n");
    }
    else
    {
      set_bat_charging_current_limit(cl_bcct_cur_limit);
      mtk_cooler_bcct_dprintk_always("mtk_cl_bcct_set_bcct_limit() limit=%d\n", cl_bcct_cur_limit);
    }
    
    mtk_cooler_bcct_dprintk_always("mtk_cl_bcct_set_bcct_limit() real limit=%d\n", get_bat_charging_current_level());
#endif
  }
}