[9610] fimc-is2: change power sequence for 2P6
authorEunyoung Lee <ey470.lee@samsung.com>
Thu, 5 Jul 2018 07:57:40 +0000 (16:57 +0900)
committerSunyoung Kang <sy0816.kang@samsung.com>
Mon, 23 Jul 2018 08:05:40 +0000 (17:05 +0900)
PR JIRA ID : CPR-38

Change-Id: Iabae0349d1f52f2c88fee34baece0aa13b1aecc6
Signed-off-by: Eunyoung Lee <ey470.lee@samsung.com>
drivers/media/platform/exynos/fimc-is2/sensor/module_framework/modules/fimc-is-device-module-2p6.c

index 201587874c867d197ec39f3bfca8f493b8391909..a23906fa96075d76059e39a5a398004b7a336d14 100644 (file)
@@ -513,9 +513,8 @@ static int sensor_module_2p6_power_setpin(struct device *dev,
        int gpio_reset = 0;
        int gpio_mclk = 0;
        int gpio_none = 0;
-       int gpio_core_en = 0;
-       int gpio_cam_avdd_en = 0;
-       int gpio_cam_io_en = 0;
+       u32 gpio_ldos_en = 0;
+       int ret;
 
        BUG_ON(!dev);
 
@@ -532,14 +531,6 @@ static int sensor_module_2p6_power_setpin(struct device *dev,
                gpio_free(gpio_reset);
        }
 
-       gpio_core_en = of_get_named_gpio(dnode, "gpio_core_en", 0);
-       if (!gpio_is_valid(gpio_core_en)) {
-               dev_err(dev, "failed to get gpio_core_en\n");
-       } else {
-               gpio_request_one(gpio_core_en, GPIOF_OUT_INIT_LOW, "CAM_GPIO_OUTPUT_LOW");
-               gpio_free(gpio_core_en);
-       }
-
        gpio_mclk = of_get_named_gpio(dnode, "gpio_mclk", 0);
        if (!gpio_is_valid(gpio_mclk)) {
                dev_err(dev, "failed to get gpio_mclk\n");
@@ -549,20 +540,12 @@ static int sensor_module_2p6_power_setpin(struct device *dev,
                gpio_free(gpio_mclk);
        }
 
-       gpio_cam_avdd_en = of_get_named_gpio(dnode, "gpio_cam_avdd_en", 0);
-       if (!gpio_is_valid(gpio_cam_avdd_en)) {
-               dev_err(dev, "failed to get gpio_cam_avdd_en\n");
+       gpio_ldos_en = of_get_named_gpio(dnode, "gpio_ldos_en", 0);
+       if (!gpio_is_valid(gpio_ldos_en)) {
+               dev_err(dev, "failed to get gpio_ldos_en\n");
        } else {
-               gpio_request_one(gpio_cam_avdd_en, GPIOF_OUT_INIT_LOW, "CAM_GPIO_OUTPUT_LOW");
-               gpio_free(gpio_cam_avdd_en);
-       }
-
-       gpio_cam_io_en = of_get_named_gpio(dnode, "gpio_cam_io_en", 0);
-       if (!gpio_is_valid(gpio_cam_io_en)) {
-               dev_err(dev, "failed to get gpio_cam_io_en\n");
-       } else {
-               gpio_request_one(gpio_cam_io_en, GPIOF_OUT_INIT_LOW, "CAM_GPIO_OUTPUT_LOW");
-               gpio_free(gpio_cam_io_en);
+               gpio_request_one(gpio_ldos_en, GPIOF_OUT_INIT_LOW, "CAM_LDOS_OUTPUT");
+               gpio_free(gpio_ldos_en);
        }
 
        SET_PIN_INIT(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON);
@@ -574,63 +557,31 @@ static int sensor_module_2p6_power_setpin(struct device *dev,
        /* BACK CAMERA - POWER ON */
        SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_reset, "sen_rst low", PIN_OUTPUT, 0, 0);
 
-       if (gpio_is_valid(gpio_cam_avdd_en)) {
-               SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_cam_avdd_en, "gpio_cam_avdd_en", PIN_OUTPUT, 1, 200);
-       } else {
-               SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_none, "VDDA_2.8V_CAM", PIN_REGULATOR, 1, 200);
-       }
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_ldos_en, "gpio_ldos_en", PIN_OUTPUT, 1, 500);
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_none, "VDD_RCAM_AF_2P8", PIN_REGULATOR, 1, 0);
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_none, "VDD_RCAM_A2P8", PIN_REGULATOR, 1, 0);
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_none, "VDD_RCAM_IO_1P8", PIN_REGULATOR, 1, 0);
 
-       if (gpio_is_valid(gpio_core_en)) {
-               SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_core_en, "gpio_core_en", PIN_OUTPUT, 1, 200);
-       } else {
-               SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_none, "VDDD_1.2V_CAM", PIN_REGULATOR, 1, 200);
-       }
-
-       if (gpio_is_valid(gpio_cam_io_en)) {
-               SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_cam_io_en, "gpio_cam_io_en", PIN_OUTPUT, 1, 1000);
-       } else {
-               SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_none, "VDDIO_1.8V_CAM", PIN_REGULATOR, 1, 1000);
-       }
-
-       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_reset, "sen_rst high", PIN_OUTPUT, 1, 500);
        SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_none, "pin", PIN_FUNCTION, 2, 0);
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_reset, "sen_rst high", PIN_OUTPUT, 1, 500);
 
        /* BACK CAEMRA - POWER OFF */
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_reset, "rst_low", PIN_OUTPUT, 0, 0);
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "pin", PIN_FUNCTION, 0, 0);
        SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "pin", PIN_FUNCTION, 1, 0);
-       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "pin_none", PIN_NONE, 1, 500);
-       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_reset, "sen_rst", PIN_OUTPUT, 0, 200);
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "pin", PIN_FUNCTION, 0, 0);
 
-       if (gpio_is_valid(gpio_cam_io_en)) {
-               SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_cam_io_en, "gpio_cam_io_en", PIN_OUTPUT, 0, 100);
-       } else {
-               SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "VDDIO_1.8V_CAM", PIN_REGULATOR, 0, 100);
-       }
-
-       if (gpio_is_valid(gpio_core_en)) {
-               SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_core_en, "gpio_core_en", PIN_OUTPUT, 0, 100);
-       } else {
-               SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "VDDD_1.2V_CAM", PIN_REGULATOR, 0, 100);
-       }
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_ldos_en, "gpio_ldos_en", PIN_OUTPUT, 0, 0);
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "VDD_RCAM_AF_2P8", PIN_REGULATOR, 0, 0);
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "VDD_RCAM_A2P8", PIN_REGULATOR, 0, 0);
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "VDD_RCAM_IO_1P8", PIN_REGULATOR, 0, 0);
 
-       if (gpio_is_valid(gpio_cam_avdd_en)) {
-               SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_cam_avdd_en, "gpio_cam_avdd_en", PIN_OUTPUT, 0, 100);
-       } else {
-               SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "VDDA_2.8V_CAM", PIN_REGULATOR, 0, 100);
-       }
 
        /* READ_ROM - POWER ON */
-       if (gpio_is_valid(gpio_cam_io_en)) {
-               SET_PIN(pdata, SENSOR_SCENARIO_READ_ROM, GPIO_SCENARIO_ON, gpio_cam_io_en, "gpio_cam_io_en", PIN_OUTPUT, 1, 2000);
-       } else {
-               SET_PIN(pdata, SENSOR_SCENARIO_READ_ROM, GPIO_SCENARIO_ON, gpio_none, "VDDIO_1.8V_CAM", PIN_REGULATOR, 1, 2000);
-       }
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_ldos_en, "gpio_ldos_en", PIN_OUTPUT, 1, 500);
 
        /* READ_ROM - POWER OFF */
-       if (gpio_is_valid(gpio_cam_io_en)) {
-               SET_PIN(pdata, SENSOR_SCENARIO_READ_ROM, GPIO_SCENARIO_OFF, gpio_cam_io_en, "gpio_cam_io_en", PIN_OUTPUT, 0, 0);
-       } else {
-               SET_PIN(pdata, SENSOR_SCENARIO_READ_ROM, GPIO_SCENARIO_OFF, gpio_none, "VDDIO_1.8V_CAM", PIN_REGULATOR, 0, 0);
-       }
+       SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_ldos_en, "gpio_ldos_en", PIN_OUTPUT, 0, 0);
 
        dev_info(dev, "%s X v4\n", __func__);
 
@@ -683,7 +634,7 @@ int sensor_module_2p6_probe(struct platform_device *pdev)
 
        probe_info("%s exist_actuator(%d)\n", __func__, exist_actuator);
 
-       fimc_is_module_parse_dt(dev, module_2p6_power_setpin[exist_actuator]);
+       fimc_is_module_parse_dt(dev, sensor_module_2p6_power_setpin);
 
        pdata = dev_get_platdata(dev);
        device = &core->sensor[pdata->id];