Ejemplo n.º 1
0
////////////////////////////////
// Power OFF
////////////////////////////////
static void cam12mp_sensor_poweroff(void)
{
    LOGI("+%s()\n", __func__);

    gpio_set_value(RESET, 0);
    mdelay(1);

    gpio_tlmm_config(GPIO_CFG(MCLK, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_2MA), GPIO_ENABLE);
    mdelay(1);

    gpio_set_value(R_STBY, 0);

    gpio_set_value(H_STBY, 0);
    mdelay(1);

    pmic_vreg_pull_down_switch(ON_CMD, PM_VREG_PDOWN_GP1_ID);
    if ( vreg_disable(vreg_get(NULL, "gp1")))
            LOGE("%s: vreg disable failed !\n", __func__);
    mdelay(1);

    sub_pmic_ldo_ctrl(SUB_PMIC_CAM28V, SUB_PMIC_LDO_OFF);
    mdelay(1);

    gpio_set_value(CAM_18V, 0);
    mdelay(1);

    sub_pmic_ldo_ctrl(SUB_PMIC_CAM12V, SUB_PMIC_LDO_OFF);
    mdelay(1);

    pmic_vreg_pull_down_switch(ON_CMD, PM_VREG_PDOWN_GP6_ID);
    if (vreg_disable(vreg_get(NULL, "gp6")))
            LOGE("%s: vreg disable failed !\n", __func__);
    mdelay(1);

    sub_pmic_reg_ctrl(SUB_PMIC_REG2, SUB_PMIC_LDO_OFF);

    pmic_vreg_pull_down_switch(OFF_CMD, PM_VREG_PDOWN_GP1_ID);
    pmic_vreg_pull_down_switch(OFF_CMD, PM_VREG_PDOWN_GP6_ID);
    mdelay(10);
}
Ejemplo n.º 2
0
static int debug_vreg_pull_down_switch(char *buf, int size)
{
	enum switch_cmd	cmd;
	enum vreg_pdown_id id;
	int	cnt;

	cnt = sscanf(buf, "%u %u", &cmd, &id);
	if (cnt < 2) {
		printk(KERN_ERR "%s: sscanf failed cnt=%d", __func__, cnt);
		return -EINVAL;
	}
	if (pmic_vreg_pull_down_switch(cmd, id) < 0)
		return -EFAULT;

	return size;
}