From 17a3315c98d193574f1bbbcfda420302241d2a5c Mon Sep 17 00:00:00 2001 From: Eunyoung Lee Date: Thu, 5 Jul 2018 16:57:40 +0900 Subject: [PATCH] [9610] fimc-is2: change power sequence for 2P6 PR JIRA ID : CPR-38 Change-Id: Iabae0349d1f52f2c88fee34baece0aa13b1aecc6 Signed-off-by: Eunyoung Lee --- .../modules/fimc-is-device-module-2p6.c | 93 +++++-------------- 1 file changed, 22 insertions(+), 71 deletions(-) diff --git a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/modules/fimc-is-device-module-2p6.c b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/modules/fimc-is-device-module-2p6.c index 201587874c86..a23906fa9607 100644 --- a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/modules/fimc-is-device-module-2p6.c +++ b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/modules/fimc-is-device-module-2p6.c @@ -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]; -- 2.20.1