Hi Niklas, On 22/11/2020 16:36, Niklas Söderlund wrote: > Hello, > > This series enables usage of the ADV748x after the system have been > suspended to ram. During s2ram the ADV748x may be powered down and thus > lose its configuration from probe time. The configuration contains > among other things the i2c slave address mappings for the different > blocks inside the ADV748x. If this is lost the hardware listens to the > "wrong" i2c addresses and becomes inaccessible. > > Example trying to read the analog standard before and after s2ram with > and without this this series. > Should we be considering runtime_pm for this instead? -- Kieran > Without this series, > > # subdev=$(grep -l "adv748x 4-0070 afe" /sys/class/video4linux/*/name | sed 's#.*video4linux\(.*\)/name#/dev\1#g') > # v4l2-ctl --get-detected-standard -d $subdev > Video Standard = 0x000000ff > PAL-B/B1/G/H/I/D/D1/K > # echo on > /sys/bus/i2c/drivers/bd9571mwv/*/bd9571mwv-regulator*/backup_mode > ** flipp SW23 off ** > # echo mem > /sys/power/state > ** flipp SW23 on ** > # v4l2-ctl --get-detected-standard -d $subdev > [ 502.753723] adv748x 4-0070: error reading 63, 02 > [ 502.866437] adv748x 4-0070: error reading 63, 02 > VIDIOC_QUERYSTD: failed: No such device or address > > With this series, > > # subdev=$(grep -l "adv748x 4-0070 afe" /sys/class/video4linux/*/name | sed 's#.*video4linux\(.*\)/name#/dev\1#g') > # v4l2-ctl --get-detected-standard -d $subdev > Video Standard = 0x000000ff > PAL-B/B1/G/H/I/D/D1/K > # echo on > /sys/bus/i2c/drivers/bd9571mwv/*/bd9571mwv-regulator*/backup_mode > ** flipp SW23 off ** > # echo mem > /sys/power/state > ** flipp SW23 on ** > # v4l2-ctl --get-detected-standard -d $subdev > Video Standard = 0x000000ff > PAL-B/B1/G/H/I/D/D1/K > > Also any streaming while the system is suspended to ram fails to resume > without this series due to the issue demonstrated above. This series is > tested on R-Car M3-N on-top of latest media-tree. > > Niklas Söderlund (3): > adv748x: afe: Select input port when device is reset > adv748x: csi2: Set virtual channel when device is reset > adv748x: Configure device when resuming from sleep > > drivers/media/i2c/adv748x/adv748x-afe.c | 6 +---- > drivers/media/i2c/adv748x/adv748x-core.c | 29 ++++++++++++++++++++++-- > drivers/media/i2c/adv748x/adv748x-csi2.c | 6 +---- > drivers/media/i2c/adv748x/adv748x.h | 2 ++ > 4 files changed, 31 insertions(+), 12 deletions(-) >