static int __init autok_init(void)
{
    int retval = 0;
     
    autok_log_entry = debugfs_create_file("autok_log", 0660, NULL, NULL, &autok_log_fops);
    i_gid_write(autok_log_entry->d_inode, 1000);
    autok_log_info = (char*)kzalloc(LOG_SIZE, GFP_KERNEL);
    is_full_log = 1;
    /* create node /sys/mtk_sdio */
    autok_kobj = kobject_create_and_add("autok", NULL);
    if (autok_kobj == NULL)
        return -ENOMEM;
    stage1_kobj = kobject_create_and_add("stage1", autok_kobj);
    if (stage1_kobj == NULL)
        return -ENOMEM;
      
    stage2_kobj = kobject_create_and_add("stage2", autok_kobj);
    if (stage2_kobj == NULL)
        return -ENOMEM;      
#ifdef AUTOK_THREAD    
    p_autok_thread_data = kzalloc(sizeof(struct sdio_autok_thread_data), GFP_KERNEL);
    p_autok_thread_data->log = autok_log_info;
    //msdc_autok_apply_param_2 = msdc_autok_apply_param;
#endif

    if((retval=create_host_node(autok_kobj)) != 0)
        return retval;
          
    if((retval=create_stage1_nodes(HOST_MAX_NUM, stage1_kobj)) != 0)
        return retval;
        
    if((retval=create_stage2_node(HOST_MAX_NUM, stage2_kobj)) != 0)
        return retval;
    // Special for 95m since we want to do autok with order 1.0|1.125 
    if(vcorefs_sdio_need_multi_autok()){
        pr_err("need_multi_autok\n");
        suggest_vol_count = 2;
        suggest_vol = kzalloc(sizeof(unsigned int)*suggest_vol_count, GFP_KERNEL);
        suggest_vol[0] = 1000000; 
        suggest_vol[1] = 1125000;
    } else {
        pr_err("Not need_multi_autok\n");
        suggest_vol_count = 1;
        suggest_vol = kzalloc(sizeof(unsigned int)*suggest_vol_count, GFP_KERNEL);
        suggest_vol[0] = 1125000;
    }
    
    return retval;
}
static int __init autok_init(void)
{
	int retval = 0;

	autok_log_entry = debugfs_create_file("autok_log", 0660, NULL, NULL, &autok_log_fops);
	i_gid_write(autok_log_entry->d_inode, 1000);
	autok_log_info = kzalloc(LOG_SIZE, GFP_KERNEL);
	is_full_log = 1;
	/* create node /sys/mtk_sdio */
	autok_kobj = kobject_create_and_add("autok", NULL);
	if (autok_kobj == NULL)
		return -ENOMEM;
	stage1_kobj = kobject_create_and_add("stage1", autok_kobj);
	if (stage1_kobj == NULL)
		return -ENOMEM;

	stage2_kobj = kobject_create_and_add("stage2", autok_kobj);
	if (stage2_kobj == NULL)
		return -ENOMEM;
#ifdef AUTOK_THREAD
	p_autok_thread_data = kzalloc(sizeof(struct sdio_autok_thread_data), GFP_KERNEL);
	p_autok_thread_data->log = autok_log_info;
	/* msdc_autok_apply_param_2 = msdc_autok_apply_param; */
#endif

	retval = create_host_node(autok_kobj);
	if (retval != 0)
		return retval;

	retval = create_stage1_nodes(HOST_MAX_NUM, stage1_kobj);
	if (retval != 0)
		return retval;

	retval = create_stage2_node(HOST_MAX_NUM, stage2_kobj);
	if (retval != 0)
		return retval;

	suggest_vol_count = msdc_autok_get_suggetst_vcore(&suggest_vol);

	/* ccyeh suggest_vol_count = 1;//ccyeh FIXME */

	return retval;
}