mbox series

[v5,0/5] usb: typec: ucsi: ccg: add runtime pm support

Message ID 20190607163423.31860-1-ajayg@nvidia.com
Headers show
Series usb: typec: ucsi: ccg: add runtime pm support | expand

Message

Ajay Gupta June 7, 2019, 4:34 p.m. UTC
Hi Heikki and Wolfram
The latest set (v5) fix comments from Wolfram on further refactoring
master_xfer() function in i2c-nvidia-gpuc.c file and removing extra comments
in patch 2/5.

Patches can go through either usb or i2c tree but since there are 3 out of 5
patches from i2c so may be better they go through i2c. They all should go
together.

Thanks
Ajay

---- v4
These patches add support for runtime power management for UCSI CCGx driver.
I have tested them with NVIDIA GPU card which has i2c interface to talk to
CCG controller. I have added runtime pm support for the i2c bus driver as well.

Fourth version (v4) of patches fix comments from Wolfram on further refactoring
master_xfer() function in i2c-nvidia-gpuc.c file. Also I have added comment on
why we need a stub gpu_i2c_suspend() for runtime pm to work correctly.

First patch refactors master_xfer() of i2c driver fixing comment from Wolfram.
Second and third patch add support for runtime pm in i2c bus driver and UCSI CCGx
driver.

Last two patches add workaround for an old version of ccg firmware
which has known issue of missing interrupt when a device is connected
to runtime resume the ccg controller. The workaround is needed because
if a GPU card doesn't get new firmware but gets new kernel then also it
should continue to work. The workaround is to request runtime resume of
i2c client which is UCSI Cypress CCGx driver. CCG driver will call the ISR
for any connector change event only if NVIDIA GPU has old CCG firmware with
the known issue.

All the five patches should go together since ucsi_ccg driver is dependent
on i2c driver for runtime pm wokaround. I would prefer it to go through
usb-tree since usb ucsi_ccg driver is the main driver getting runtime pm
functionality with the series.

Thanks
Ajay


Ajay Gupta (5):
  i2c: nvidia-gpu: refactor master_xfer
  i2c: nvidia-gpu: add runtime pm support
  usb: typec: ucsi: ccg: enable runtime pm support
  i2c: nvidia-gpu: resume ccgx i2c client
  usb: typec: ucsi: ccg: add runtime pm workaround

 drivers/i2c/busses/i2c-nvidia-gpu.c |  64 +++++++++++----
 drivers/usb/typec/ucsi/ucsi.c       |  10 +++
 drivers/usb/typec/ucsi/ucsi.h       |   1 +
 drivers/usb/typec/ucsi/ucsi_ccg.c   | 118 +++++++++++++++++++++++++++-
 4 files changed, 172 insertions(+), 21 deletions(-)

Comments

Wolfram Sang June 7, 2019, 10:10 p.m. UTC | #1
On Fri, Jun 07, 2019 at 09:34:18AM -0700, Ajay Gupta wrote:
> Hi Heikki and Wolfram
> The latest set (v5) fix comments from Wolfram on further refactoring
> master_xfer() function in i2c-nvidia-gpuc.c file and removing extra comments
> in patch 2/5.
> 
> Patches can go through either usb or i2c tree but since there are 3 out of 5
> patches from i2c so may be better they go through i2c. They all should go
> together.
> 
> Thanks
> Ajay

Applied the series to i2c/for-next, thanks!