lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.9 137/757] media: i2c: ov5640: Remain in power down for DVP mode unless streaming
    Date
    From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

    [ Upstream commit 3b987d70e903962eb8c5961ba166c345a49d1a0b ]

    Keep the sensor in software power down mode and wake up only in
    ov5640_set_stream_dvp() callback.

    Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
    Tested-by: Jacopo Mondi <jacopo@jmondi.org>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/media/i2c/ov5640.c | 19 ++++++++++++++++---
    1 file changed, 16 insertions(+), 3 deletions(-)

    diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c
    index ab19e04720d3a..6e558a7e2d244 100644
    --- a/drivers/media/i2c/ov5640.c
    +++ b/drivers/media/i2c/ov5640.c
    @@ -34,6 +34,8 @@
    #define OV5640_REG_SYS_RESET02 0x3002
    #define OV5640_REG_SYS_CLOCK_ENABLE02 0x3006
    #define OV5640_REG_SYS_CTRL0 0x3008
    +#define OV5640_REG_SYS_CTRL0_SW_PWDN 0x42
    +#define OV5640_REG_SYS_CTRL0_SW_PWUP 0x02
    #define OV5640_REG_CHIP_ID 0x300a
    #define OV5640_REG_IO_MIPI_CTRL00 0x300e
    #define OV5640_REG_PAD_OUTPUT_ENABLE01 0x3017
    @@ -1120,6 +1122,12 @@ static int ov5640_load_regs(struct ov5640_dev *sensor,
    val = regs->val;
    mask = regs->mask;

    + /* remain in power down mode for DVP */
    + if (regs->reg_addr == OV5640_REG_SYS_CTRL0 &&
    + val == OV5640_REG_SYS_CTRL0_SW_PWUP &&
    + sensor->ep.bus_type != V4L2_MBUS_CSI2_DPHY)
    + continue;
    +
    if (mask)
    ret = ov5640_mod_reg(sensor, reg_addr, mask, val);
    else
    @@ -1297,9 +1305,14 @@ static int ov5640_set_stream_dvp(struct ov5640_dev *sensor, bool on)
    * PAD OUTPUT ENABLE 02
    * - [7:2]: D[5:0] output enable
    */
    - return ov5640_write_reg(sensor,
    - OV5640_REG_PAD_OUTPUT_ENABLE02,
    - on ? 0xfc : 0);
    + ret = ov5640_write_reg(sensor, OV5640_REG_PAD_OUTPUT_ENABLE02,
    + on ? 0xfc : 0);
    + if (ret)
    + return ret;
    +
    + return ov5640_write_reg(sensor, OV5640_REG_SYS_CTRL0, on ?
    + OV5640_REG_SYS_CTRL0_SW_PWUP :
    + OV5640_REG_SYS_CTRL0_SW_PWDN);
    }

    static int ov5640_set_stream_mipi(struct ov5640_dev *sensor, bool on)
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-27 16:40    [W:4.486 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site