Beispiel #1
0
static int check_touch_env(struct pixcir_data *pixcir)
{
	//int ret = 0;
	int len = 96;
	int Enable;
    char retval[96] = {0};
	char *p=NULL;

    // Get u-boot parameter
	if(wmt_getsyspara("wmt.io.touch", retval, &len)) return -EIO;

	sscanf(retval,"%d:",&Enable);
	//check touch enable
	if(Enable == 0) return -ENODEV;
	
	p = strchr(retval,':');
	p++;

    if(strncmp(p,"tangoc",6)) return -ENODEV;
    
	pixcir->name = DEV_PIXCIR;
    pixcir->addr = PIXCIR_ADDR;
	p = strchr(p,':');
	p++;
	sscanf(p,"%d:%d:%d:%d:%d:%d",
        &pixcir->xresl, &pixcir->yresl,&pixcir->igp_idx,&pixcir->igp_bit,&pixcir->rgp_idx, &pixcir->rgp_bit);

    pixcir->irq = IRQ_GPIO;
	printk("%s reslx=%d, resly=%d, Interrupt GP%d, bit%d, Reset GP%d, bit%d\n", pixcir->name, 
        pixcir->xresl, pixcir->yresl, pixcir->igp_idx,pixcir->igp_bit,pixcir->rgp_idx,pixcir->rgp_bit);
    
    pixcir->swap = 1;
#if 0
    memset(retval,0x00,sizeof(retval));
    if(wmt_getsyspara("wmt.io.tangoc", retval, &len)){
        pixcir->swap = 1;
    }else{
        sscanf(p,"%d:%d:%d",&pixcir->swap,&pixcir->xch, &pixcir->ych);
    }


    memset(retval,0x00,sizeof(retval));
    ret = wmt_getsyspara("wmt.io.tskey", retval, &len);
    if(!ret){
        sscanf(retval,"%d:", &pixcir->nkeys);
        p = strchr(retval,':');
	    p++;
        for(i=0; i < pixcir->nkeys; i++ ){
            sscanf(p,"%d:%d", &pixcir->tkey.ypos[i].y_lower, &pixcir->tkey.ypos[i].y_upper);
            p = strchr(p,':');
	        p++;
            p = strchr(p,':');
	        p++;
        }
        sscanf(p,"%d:%d:%d", &pixcir->tkey.axis, &pixcir->tkey.x_lower, &pixcir->tkey.x_upper);
        pixcir->tskey_used = 1;           
    }
#endif    
	return 0;
}
Beispiel #2
0
static int vt1603_bat_uboot_env_check(struct vt1603_bat_drvdata *bat_drv)
{
	int ret = 0;
	int len = 96;	
	char buf[96] = { 0 };
		
	ret = wmt_getsyspara("wmt.io.bat", buf, &len);
	if(ret ||strncmp(buf,"3",1)){
		dbg_err(" VT1603A/VT1609 Battery Disabled.\n");
		return -EIO;
	}
	
	len = sizeof(buf);
	memset(buf, 0, sizeof(buf));
	ret = wmt_getsyspara("wmt.audio.i2s", buf, &len);	
    if(ret ||strncmp(buf,"vt1603",6)){
        dbg_err("Vt1603 battery invalid, for VT1603 codec disabled.\n");
        return -EINVAL;
    }

    bat_drv->tch_enabled = 0;
    
    len = sizeof(buf);
	memset(buf, 0, sizeof(buf));
	ret = wmt_getsyspara("wmt.io.touch", buf, &len);	
    if(!strncmp(buf,"1:vt1603",8) ||!strncmp(buf,"1:vt1609",8) )
        bat_drv->tch_enabled = 1;

    return 0;
}
Beispiel #3
0
int cs8556_init(struct vout_s *vo)
{
    char buf[100];
    int varlen = 100;

    cs8556_not_ready = 1;

    if(cs8556_isEnable())
    {
        cs8556_reinitialize_table();

        cs8556_not_ready = 0;

        DPRINT("[CS8556] DVI ext device\n");

        if( wmt_getsyspara("apc.model",buf,&varlen) != 0){
            setenv("apc.model", "Rock");
            saveenv();
        }
            return 0;
    } else {
        DPRINT("[CS8556] not exist\n");

        if( wmt_getsyspara("apc.model",buf,&varlen) != 0){
            setenv("apc.model", "Paper");
            saveenv();
        }
        return -1;
    }
}
static int parse_backlight_param(void)
{
	static char env[] = "wmt.backlight.param";
	struct platform_pwm_backlight_data *pdata = &wm8880_pwmbl_data;
	uint8_t buf[64];
	size_t l = sizeof(buf);
	int pwm_freq = DFT_PWM0_FREQ;
	int rc;

	if (wmt_getsyspara(env, buf, &l)) {
		pr_err("please set %s\n", env);
		return -EINVAL;
	}

	/* wmt.backlight.param
	 * <pwmid>:<invert>:<gpio>:<active>:
	 * <lth_brightness>:<hth_brightness>:<pwm0freq>:<dft_brightness>
	 */
	rc = sscanf(buf, "%d:%d:%d:%d:%d:%d:%d:%d",
		    &pdata->pwm_id,
		    &pdata->invert,
		    &power.gpio, &power.active,
		    &pdata->lth_brightness,
		    &pdata->hth_brightness,
		    &pwm_freq,
		    &pdata->dft_brightness);

	if ((rc < 4)) {
		pr_err("bad env %s %s\n", env, buf);
		return -EINVAL;
	}
	if ((pdata->hth_brightness > pdata->max_brightness) ||
	    (pdata->lth_brightness > pdata->hth_brightness))
		pdata->hth_brightness = pdata->max_brightness;

	pdata->pwm_period_ns = KHZ2PICOS(pwm_freq * 1000);

	pr_info("backlight param: pwm%d(%dkHz), invert %d, brightness %d(%d~%d) ",
		pdata->pwm_id, pwm_freq, pdata->invert, pdata->dft_brightness,
		pdata->lth_brightness, pdata->hth_brightness);

	if (gpio_is_valid(power.gpio)) {
		if (gpio_request(power.gpio, "pwm_bl switch")) {
			pr_warning("gpio request %d failed\n", power.gpio);
			power.gpio = -1;
		}
		pr_info("gpio%d (active %d)\n", power.gpio, power.active);
	} else
		pr_info("no gpio control\n");

	/*  parse wmt.backlight.delay */
	l = sizeof(buf);
	if (wmt_getsyspara("wmt.backlight.delay", buf, &l) == 0) {
		sscanf(buf, "%d", &backlight_delay);
	}
	pr_info("backlight delay: %dms\n", backlight_delay);

	return 0;
}
Beispiel #5
0
static int wmt_pdm_probe(struct platform_device *pdev)
{
	int ret = 0;
	char buf[64];
	int varlen = 64;

	ret = wmt_getsyspara("wmt.audio.pdm", buf, &varlen);
	if (ret == 0) {
		sscanf(buf, "%d", &wmt_pdm_module_enable);
	}

	ret = wmt_pdm_init();
	if (ret) {
		pr_err("Failed to init pcm module: %d\n", ret);
		return ret;
	}
	
	/* register with the ASoC layers */
	ret = snd_soc_register_dai(&pdev->dev, &wmt_pdm_dai);
	if (ret) {
		pr_err("Failed to register DAI: %d\n", ret);
		return ret;
	}
	
	wmt_pdm_data[0].dma_cfg = dma_device_cfg_table[PCM_TX_DMA_REQ];
	wmt_pdm_data[1].dma_cfg = dma_device_cfg_table[PCM_RX_DMA_REQ];
	
	spin_lock_init(&wmt_pdm_data[0].dma_lock);
	spin_lock_init(&wmt_pdm_data[1].dma_lock);
	
	return 0;
}
Beispiel #6
0
static int __init wmt_cpuidle_check_env(void)
{
    int ret = 0;
    int varlen = 128;
    unsigned int drv_en = 0;
    unsigned char buf[128] = {0};

    /* uboot env name is: wmt.cpuidle.param/wmt.dvfs.param */
    ret = wmt_getsyspara("wmt.cpuidle.param", buf, &varlen);                                                                    
    if (ret) {
        printk(KERN_INFO "Can not find uboot env wmt.cpuidle.param\n");
        ret = -ENODATA;
        goto out;
    }
    id_dbg("wmt.cpuidle.param:%s\n", buf);

    sscanf(buf, "%d", &drv_en);
    if (!drv_en) {
        printk(KERN_INFO "wmt cpuidle driver disaled\n");
        ret = -ENODEV;
        goto out;
    }

out:
    return ret;
}
Beispiel #7
0
static void parse_arg(void)
{
	int retval;
	unsigned char buf[80];
	unsigned char tmp_buf[80];
	int varlen = 80;
	char *varname = "wmt.bc.param";
	int i = 0;
	int j = 0;
	retval = wmt_getsyspara(varname, buf, &varlen);
	if (retval == 0) {
		for (i = 0; i < 80; ++i) {
			if (buf[i] == ':')
				break;
			g_battery_charging_en = (buf[i] - '0' == 1)?1:0;
			if (g_battery_charging_en == 0)/*disable*/
				return;
		}
		++i;
		for (; i < 80; ++i) {
			if (buf[i] == ':')
				break;
			tmp_buf[j] = buf[i];
			++j;
		}
		if (!strncmp(tmp_buf,"smb358",6))
			g_battery_charging_en = 1;
		else
			g_battery_charging_en = 0;
		++i;
		g_i2cbus_id = buf[i] - '0';
	} else
		g_battery_charging_en = 0;
}
Beispiel #8
0
static int __init vt1603_bat_uboot_env_check(void)
{
	int len = 128;
    char buf[128] = { 0 };
    int ret = 0;
    int bat_op = 0;
    int bat_update_interval = 0;

    /* TODO uboot env should be like
     * 2:1000:b78:972:b29:b11:afe:aca:aab:a94:a80:a64:a40:a1b:972 */
	ret = wmt_getsyspara("wmt.io.bat", buf, &len);
    if (ret) {
        bat_dbg("can not find parameter: wmt.io.bat\n");
        ret = -ENODATA;
        goto out;
    }
    bat_dbg("%s", buf);
    sscanf(buf,"%x:%x", &bat_op, &bat_update_interval);
    bat_dbg("bat_op:%d, bat_update_interval:%d\n", bat_op, bat_update_interval);
	if (bat_op != 2) {
		bat_dbg("VT1603 Battery disabled now\n");
		ret = -ENODEV;
        goto out;
    }
    /* battery update interval 1sec ~ 30sec */
    if ((bat_update_interval > 1000) && (bat_update_interval < 30000))
        vt1603_bat_pdata.interval = bat_update_interval;

out:
    return ret;
}
Beispiel #9
0
static int __init wmt_ebm_init(void)
{
	int ret;
	unsigned char buf[80];
	int varlen = 80;
	int param_num = 0;
	char *varname = "wmt.ebm.param";

	ret = wmt_getsyspara(varname, buf, &varlen);
	if (ret == 0) {
		param_num = sscanf(buf, "%d:%x:%x", &ebm_enable, &firmware_base_addr, &firmware_len);
		if (param_num != 3) {
			printk("EBM: parameter's format incorrect\n");
			return 0;
		}
		if (ebm_enable == 0) {
			printk("EBM disable\n");
			return 0;
		}
	} else
		return 0;
	ret = platform_device_register(&wmt_ebm_device);
	if (ret)
		printk("wmt-ebm:register device failed\n");
	return platform_driver_register(&ebm_platform_driver);
}
Beispiel #10
0
void pwm_get_env(void)
{
	unsigned char buf[100];
	int varlen = 100;
	g_pwm_invert = 0;
	if( wmt_getsyspara(ENV_DISPLAY_PWM,buf,&varlen) == 0) {
		//printk(" pwm_get_env : %s = %s \n",ENV_DISPLAY_PWM,buf);
		sscanf(buf,"%d",&g_pwm_invert);
		g_pwm_invert = g_pwm_invert >> 4;
	}
Beispiel #11
0
static int __init wifi_proc_init(void)
{
	int retval = 0;
	int varlen = 127;                                                                                                       
    char buf[200]={0};      

	Our_Proc_File = create_proc_entry(procfs_name, 0644, NULL);
	
	if (Our_Proc_File == NULL) {
		remove_proc_entry(procfs_name, NULL);
		printk(KERN_ALERT "Error: Could not initialize /proc/%s\n",
		       procfs_name);
		return -ENOMEM;
	}
	/*
	*  wmt.gpo.printer format as follows:
	*   power_on:lid_stat
	*  for example: setenv wmt.gpo.printer 153:3
	*    gpio8 for power on; gpio9 for lid status
	*/
	retval = wmt_getsyspara("wmt.gpo.printer", buf, &varlen);                   
	if(!retval)                                                              
	{                                                                          
		sscanf(buf, "%d:%d",&power_on,&lid_stat);    			                                                			                                                                                                                                               
		printk("power_on:%d,lid_stat:%d\n", power_on,lid_stat);    
		//request gpio for printer power control
		retval = gpio_request(power_on, "printer power pin");
		if(retval < 0) {
			printk("reques gpio:%x failed!!! for printer power pin\n",power_on);
			return -1;
		}else{
			printk("request gpio:%d for printer power pin success!!!\n", power_on);			
		}
		//request gpio for printer lid status
		retval = gpio_request(lid_stat, "printer lid status");
		if(retval < 0) {
			printk("reques gpio:%x failed!!! for printer lid status\n",lid_stat);
			return -1;
		}else{
			printk("request gpio:%d for printer lid status success!!!\n", lid_stat);			
		}
	}else{
		printk("have not set wmt.gpo.printer");
	}
	
	Our_Proc_File->read_proc = procfile_read;
	Our_Proc_File->write_proc = procfile_write;
	Our_Proc_File->mode 	 = S_IFREG | S_IRUGO;
	Our_Proc_File->uid 	 = 0;
	Our_Proc_File->gid 	 = 0;
	Our_Proc_File->size 	 = 37;

	return 0;	/* everything is ok */
}
Beispiel #12
0
static int __init kpad_init(void)
{
	int ret;
	int retval;
	unsigned char buf[80];
	int varlen = 80;
	char *varname = "wmt.io.keypad";
	int timeout_value;
	
	DPRINTK(KERN_ALERT "Start\n");
	/*read back&menu button integration enable >1 enable & the value is the timeout value*/
	/*read keypad enable*/
	retval = wmt_getsyspara(varname, buf, &varlen);
	if (retval == 0) {
		sscanf(buf,"%d:%d", &enable_keypad, &timeout_value);
		printk(KERN_ALERT "wmt.io.keypad = %d:%d\n",enable_keypad,timeout_value);
		if (enable_keypad <= 0)
			return -ENODEV;
		if (timeout_value >= 0) {
			back_menu_timeout = timeout_value;
		}
		printk(KERN_ALERT "back_menu_timeout = %d \n",back_menu_timeout);
	} else {
		printk("##Warning: \"wmt.io.keypad\" not find\n");
		printk(KERN_ALERT "Default wmt.io.keypad = %d:%d\n",enable_keypad,back_menu_timeout);
	}
	
#ifdef CONFIG_CPU_FREQ
	ret = cpufreq_register_notifier(&kpad_clock_nblock, \
		CPUFREQ_TRANSITION_NOTIFIER);

	if (ret) {
		printk(KERN_ERR "Unable to register CPU frequency " \
			"change notifier (%d)\n", ret);
	}
#endif
	ret = platform_device_register(&wmt_kpad_device);
	if (ret != 0) {
		DPRINTK("End1 ret = %x\n",ret);
		return -ENODEV;
	}

	ret = platform_driver_register(&wmt_kpad_driver);
	DPRINTK("End2 ret = %x\n",ret);
	return ret;
}
Beispiel #13
0
static int __init hwdac_modinit(void)
{
	char buf[80];
	int varlen = 80;
	int ret = 0;
	char codec_name[5];
	
	ret = wmt_getsyspara("wmt.audio.i2s", buf, &varlen);
	
	if (ret == 0) {
		sscanf(buf, "%5s", codec_name);

		if (strcmp(codec_name, "hwdac")) {
			info("hwdac string not found");
			return -EINVAL;
		}
	}
	
	return snd_soc_register_dai(&hwdac_dai);
}
static int get_vibratorset(void* param)
{
	char buf[128];
	unsigned int ubootval[6];
	int ret = 0;
	int varlen = 127;

	/* read the paraqm from */
	memset(buf ,0, sizeof(buf));
	memset(ubootval, 0, sizeof(ubootval));
	if (wmt_getsyspara("wmt.gpo.vibrator", buf, &varlen)) {
		printk(KERN_WARNING "wmt.gpo.vibrator isn't set in u-boot env! -> Use default\n");
		return -1;
	}
	ret = sscanf(buf, "%x:%x:%x:%x:%x:%x",
				       &ubootval[0],
				       &ubootval[1],
				       &ubootval[2],
				       &ubootval[3],
				       &ubootval[4],
				       &ubootval[5]);
	if (ret != 6) {
		printk(KERN_ERR "wmt.gpo.vibrator format is incorrect in u-boot\n");
		return -2;
	}
	vibrate_dbg("wmt.gpo.vibrator = %x:%x:%x:%x:%x:%x\n",
		ubootval[0],
		ubootval[1],
		ubootval[2],
		ubootval[3],
		ubootval[4],
		ubootval[5]);
	l_vibratedev.name = ubootval[0];
	l_vibratedev.active = ubootval[1];
	l_vibratedev.bmp = ubootval[2];
	l_vibratedev.ctraddr = ubootval[3] + WMT_MMAP_OFFSET;
	l_vibratedev.ocaddr = ubootval[4] + WMT_MMAP_OFFSET;
	l_vibratedev.odaddr = ubootval[5] + WMT_MMAP_OFFSET;
	return 0;
}
static int __init wmt_hwdac_platform_init(void)
{
	char buf[80];
	int varlen = 80;
	char codec_name[5];
	int ret = 0;

	DBG_DETAIL();

	ret = wmt_getsyspara("wmt.audio.i2s", buf, &varlen);
	
	if (ret == 0) {
		sscanf(buf, "%5s", codec_name);

		if (strcmp(codec_name, "hwdac")) {
			info("hwdac string not found");
			return -EINVAL;
		}
	}

	return platform_driver_register(&wmt_hwdac_driver);
}
Beispiel #16
0
union cs8556_TvEncoderParam getcs8556_TvEncoderParam(void)
{
	char buf[100] = { 0 };
	int varlen = sizeof(buf);
  union cs8556_TvEncoderParam param;

  if( wmt_getsyspara("wmt.display.tvencoder.param",buf,&varlen) == 0)
  {
    DBG_DETAIL("wmt.display.tvencoder.param: %s\n", buf);
    vpp_parse_param(buf,(unsigned int *)param.buf,sizeof(union cs8556_TvEncoderParam)/sizeof(int),0);
    DBG_DETAIL("%d:%d:%d:%d\n", param.use_pal, param.uboot_use_source_720p, param.kernel_use_source_720p, param.use_progressive_edid_table);
  }
  else
  {
    DBG_DETAIL("wmt.display.tvencoder not exist, use default setting\n");
    // set default values
    param.use_pal = 1;
    param.uboot_use_source_720p = 1;
    param.kernel_use_source_720p = 0;
    param.use_progressive_edid_table = 1;
  }

  return param;
}
Beispiel #17
0
static int __init wmt_check_secure_env(void)
{
    int ret = 0;
    int varlen = 128;
    unsigned int sec_en = 0;
    unsigned char buf[128] = {0};

    /* uboot env name is: wmt.secure.param */
    ret = wmt_getsyspara("wmt.secure.param", buf, &varlen);                                                                    
    if (ret) {
        ret = -ENODATA;
        goto out;
    }

    sscanf(buf, "%d", &sec_en);
    if (sec_en != 1) {
        printk(KERN_INFO "wmt security extension disaled\n");
        ret = -ENODEV;
        goto out;
    }

out:
    return ret;
}
Beispiel #18
0
static int get_mali_param(struct mali_param_s *param)
{
	unsigned char buf[32];
	int varlen = 32;

	/* wmt.mali.param 1:-1:-1:-1 */

	if (wmt_getsyspara("wmt.mali.param", buf, &varlen) == 0) {
		sscanf(buf, "%d:%d:%d:%d", &param->enabled,
			&param->buflen1, &param->buflen2, &param->buflen3);
	} else {
		param->enabled =  1;
		param->buflen1 = -1; /* auto */
		param->buflen2 = -1; /* auto */
		param->buflen3 = -1; /* auto */
	}

	printk(KERN_INFO "wmt.mali.param = %d:%d:%d:%d\n", param->enabled,
		param->buflen1, param->buflen2, param->buflen3);

	if (param->enabled) {
		/* MBytes -> Bytes */
		if (param->buflen1 > 0)
			param->buflen1 <<= 20;
		if (param->buflen2 > 0)
			param->buflen2 <<= 20;
		if (param->buflen3 > 0)
			param->buflen3 <<= 20;
	} else {
		param->buflen1 = 0;
		param->buflen2 = 0;
		param->buflen3 = 0;
	}

	return 0;
}
Beispiel #19
0
static int __init wmt_cec_init(void)
{
	int ret;
	char buf[100];
	int varlen = 100;
	unsigned int cec_enable = 0;

	if( wmt_getsyspara("wmt.display.cec",buf,&varlen) == 0){
		vpp_parse_param(buf,&cec_enable,1,0);
	}
	
	if( cec_enable == 0 )
		return 0;

	DBGMSG(KERN_ALERT "Enter wmt_cec_init\n");
	
	ret = platform_driver_register(&wmt_cec_driver);
	if (!ret) {
		ret = platform_device_register(&wmt_cec_device);
		if (ret)
			platform_driver_unregister(&wmt_cec_driver);
	}
	return ret;
}
Beispiel #20
0
static int parse_pmic_param(void)
{
	int retval;
	unsigned char buf[par_len];
	unsigned char tmp_buf[par_len];
	int varlen = par_len;
	int i = 0;
	int j = 0;
	int k = 0;
	int t = 0;
	int vol = 0;
	int idx = 0;
	char *varname = "wmt.pmic.param";
	retval = wmt_getsyspara(varname, buf, &varlen);
	if (retval != 0)
		return -1;
	if (buf[0] == 0) /*disable*/
		return -1;
	i += 2;
	j = 0;
	for (; i < par_len; ++i) {
		if (buf[i] != ':')
			tmp_buf[j] = buf[i];
		else
			break;
		++j;
	}
	if (strncmp(tmp_buf, "gpio", 4))
		return -1;
	++i;
	/*parse pin_num, map_num, up_time and down_time*/
	j = sscanf((buf+i), "%d,%d,%d,%d,",
			&g_pmic_param.pin_num,
			&g_pmic_param.map_num,
			&g_pmic_param.up_time,
			&g_pmic_param.down_time);
	k = 0;
	for (j = i; j < par_len; ++j) {
		if (buf[j] == ',')
			++k;
		if (k > 3) {
			++j;
			break;
		}	
	}
	i = j;
	g_pmic_param.pmic_gpio = kzalloc(g_pmic_param.pin_num * sizeof(struct wmt_pmic_param_s), GFP_KERNEL);
	g_pmic_param.voltage_map = kzalloc(g_pmic_param.map_num * sizeof(struct wmt_voltage_map), GFP_KERNEL);
	for (j = 0; j < g_pmic_param.pin_num; ++j) {
		k = sscanf((buf +i), "[%x:%x:%x:%x:%x:%x:%x:%x]",
			&(g_pmic_param.pmic_gpio + j)->name_id,
			&(g_pmic_param.pmic_gpio + j)->active,
			&(g_pmic_param.pmic_gpio + j)->bitmap,
			&(g_pmic_param.pmic_gpio + j)->ctraddr,
			&(g_pmic_param.pmic_gpio + j)->ocaddr,
			&(g_pmic_param.pmic_gpio + j)->odaddr,
			&(g_pmic_param.pmic_gpio + j)->opcaddr,
			&(g_pmic_param.pmic_gpio + j)->opdaddr);
		g_pmic_param.pmic_gpio[j].ctraddr += WMT_MMAP_OFFSET;
		g_pmic_param.pmic_gpio[j].ocaddr += WMT_MMAP_OFFSET;
		g_pmic_param.pmic_gpio[j].odaddr += WMT_MMAP_OFFSET;
		g_pmic_param.pmic_gpio[j].opcaddr += WMT_MMAP_OFFSET;
		g_pmic_param.pmic_gpio[j].opdaddr += WMT_MMAP_OFFSET;
		for (k = i; k < par_len; ++k) {
			if (buf[k] == ']') {
				++k;
				break;
			}
		}
		i = k;
	}
	++i;/*','*/
	for (j = 0; j < g_pmic_param.map_num; ++j) {
		k = sscanf((buf + i), "[%d,%d]",
			&idx, &vol);
		t = 0;
		for (k = i; k < par_len; ++k) {
			if (buf[k] == ']') {
				++k;
				break;
			}
		}
		i = k;
		(g_pmic_param.voltage_map + idx)->voltage = vol * 1000;
	}
	return 0;
}