media: i2c: adv748x: Conditionally enable only CSI-2 outputs
authorJacopo Mondi <jacopo+renesas@jmondi.org>
Mon, 17 Sep 2018 11:30:56 +0000 (07:30 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Thu, 4 Oct 2018 18:49:17 +0000 (14:49 -0400)
The ADV748x has two CSI-2 output port and one TTL input/output port for
digital video reception/transmission. The TTL digital pad is unconditionally
enabled during the device reset even if not used. Same goes for the TXA
and TXB CSI-2 outputs, which are enabled by the initial settings blob
programmed into the chip.

In order to improve power saving, do not enable unused output interfaces:
keep TTL output disabled, as it is not used, and drop CSI-2 output enabling
from the initial settings list, as they get conditionally enabled later.

Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/i2c/adv748x/adv748x-core.c

index aa9dbde..806e1b2 100644 (file)
@@ -382,8 +382,6 @@ static const struct adv748x_reg_value adv748x_init_txa_4lane[] = {
 
        {ADV748X_PAGE_IO, 0x0c, 0xe0},  /* Enable LLC_DLL & Double LLC Timing */
        {ADV748X_PAGE_IO, 0x0e, 0xdd},  /* LLC/PIX/SPI PINS TRISTATED AUD */
-       /* Outputs Enabled */
-       {ADV748X_PAGE_IO, 0x10, 0xa0},  /* Enable 4-lane CSI Tx & Pixel Port */
 
        {ADV748X_PAGE_TXA, 0x00, 0x84}, /* Enable 4-lane MIPI */
        {ADV748X_PAGE_TXA, 0x00, 0xa4}, /* Set Auto DPHY Timing */
@@ -437,10 +435,6 @@ static const struct adv748x_reg_value adv748x_init_txb_1lane[] = {
        {ADV748X_PAGE_SDP, 0x31, 0x12}, /* ADI Required Write */
        {ADV748X_PAGE_SDP, 0xe6, 0x4f},  /* V bit end pos manually in NTSC */
 
-       /* Enable 1-Lane MIPI Tx, */
-       /* enable pixel output and route SD through Pixel port */
-       {ADV748X_PAGE_IO, 0x10, 0x70},
-
        {ADV748X_PAGE_TXB, 0x00, 0x81}, /* Enable 1-lane MIPI */
        {ADV748X_PAGE_TXB, 0x00, 0xa1}, /* Set Auto DPHY Timing */
        {ADV748X_PAGE_TXB, 0xd2, 0x40}, /* ADI Required Write */
@@ -465,7 +459,7 @@ static const struct adv748x_reg_value adv748x_init_txb_1lane[] = {
 static int adv748x_reset(struct adv748x_state *state)
 {
        int ret;
-       u8 regval = ADV748X_IO_10_PIX_OUT_EN;
+       u8 regval = 0;
 
        ret = adv748x_write_regs(state, adv748x_sw_reset);
        if (ret < 0)