Exemplo n.º 1
0
/*powerup the PMIC, configure GPIO 37,
set GPIO to NO_PULL, make it as input pin.
Give sleep of 10 millisecs, call registry init
*/
int
prodrv_sns_ON(void)
{
	int ok_flag = TRUE;

	PROX_DBG("=====<PROXIMITY> prodrv_sns_ON=====\n");

	prox_detect.proxy_val = PROX_VAL_NEAR;
	prox_detect.proxy_state = PROX_DETECT_NON;

	sub_pmic_ldo_ctrl(SUB_PMIC_LDO4,SUB_PMIC_LDO_ON);

#ifndef CONFIG_GPIOLIB
	gpio_configure(PROX_GPIO, GPIOF_ENABLE_WAKE | GPIOF_INPUT);
#else
	gpio_direction_input(PROX_GPIO);
#endif
	
	//added to set it to no pull as per spec
	gpio_tlmm_config(GPIO_CFG(PROX_GPIO, 0, GPIO_INPUT, GPIO_NO_PULL, GPIO_2MA),GPIO_ENABLE);

	msleep(SNS_STANDBY_TIME);

	ok_flag = prodrv_sns_reg_init();
	if(ok_flag!=TRUE) {
#ifndef CONFIG_GPIOLIB
		gpio_configure(PROX_GPIO, GPIOF_DRIVE_OUTPUT);
#else
		gpio_direction_output(PROX_GPIO, 1);
#endif
	}
	return ok_flag;
}
Exemplo n.º 2
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);
}
Exemplo n.º 3
0
/*power-down the device
configure GPIO 37 to out*/
void
prodrv_sns_OFF(void)
{
	PROX_DBG("=====<PROXIMITY> prodrv_sns_OFF=====\n");

#ifndef CONFIG_GPIOLIB
	gpio_configure(PROX_GPIO, GPIOF_DRIVE_OUTPUT);
#else
	gpio_direction_output(PROX_GPIO, 1);
#endif
	
	gpio_tlmm_config(GPIO_CFG(PROX_GPIO, 0, GPIO_OUTPUT, GPIO_PULL_UP, GPIO_2MA),GPIO_DISABLE);

	prodrv_sns_ssd();

	sub_pmic_ldo_ctrl(SUB_PMIC_LDO4,SUB_PMIC_LDO_OFF);

	prox_detect.proxy_val = PROX_VAL_NEAR;
	prox_detect.proxy_state = PROX_DETECT_NON;
	
	del_timer(&prox_timer);
}
Exemplo n.º 4
0
////////////////////////////////
// Power ON
////////////////////////////////
static int cam12mp_sensor_poweron(void)
{
    struct vreg *vreg_gp1, *vreg_gp6;

    LOGI("+%s()\n", __func__);

    vreg_gp6 = vreg_get(NULL, "gp6");
    if (IS_ERR(vreg_gp6)) {
        LOGE(" - vreg_get(gp6) failed (%ld) !\n", PTR_ERR(vreg_gp6));
        return -1;
    }
    if (vreg_set_level(vreg_gp6, 1800)) {
        LOGE(" - vreg gp6 set level failed !\n");
        return -1;
    }
    vreg_gp1 = vreg_get(NULL, "gp1");
    if (IS_ERR(vreg_gp1)) {
        LOGE(" - vreg_get(gp1) failed (%ld)\n", PTR_ERR(vreg_gp1));
        return -1;
    }
    if (vreg_set_level(vreg_gp1, 2700)) {
        LOGE(" - vreg gp1 set level failed !\n");
        return -1;
    }

    sub_pmic_reg_ctrl(SUB_PMIC_REG2, SUB_PMIC_LDO_ON);
    mdelay(1);

    if (vreg_enable(vreg_gp6)) {
        LOGE(" - vreg gp6 enable failed !\n");
        goto _sensor_poweron_fail_1;
    }
    mdelay(1);

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

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

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

    if (vreg_enable(vreg_gp1)) {
        LOGE(" - vreg gp1 enable failed !\n");
        goto _sensor_poweron_fail_2;
    }
    mdelay(1);

    gpio_tlmm_config(GPIO_CFG(MCLK, 1, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), GPIO_ENABLE);
    msm_camio_clk_rate_set(9600000);
    msm_camio_camif_pad_reg_reset();

    gpio_set_value(H_STBY, 1);

    gpio_set_value(R_STBY, 1);
    mdelay(1);

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

    return 0;

_sensor_poweron_fail_2:
    sub_pmic_ldo_ctrl(SUB_PMIC_CAM28V, SUB_PMIC_LDO_OFF);
    gpio_set_value(CAM_18V, 0);
    sub_pmic_ldo_ctrl(SUB_PMIC_CAM12V, SUB_PMIC_LDO_OFF);
    vreg_disable(vreg_gp6);

_sensor_poweron_fail_1:
    sub_pmic_reg_ctrl(SUB_PMIC_REG2, SUB_PMIC_LDO_OFF);
    LOGI("-%s (fail.)\n", __func__);
    return -1;
}