Message ID | 20220928150840.3804313-1-waynec@nvidia.com |
---|---|
State | New |
Headers | show |
Series | [v2,1/1] usb: typec: ucsi_ccg: Disable UCSI ALT support on Tegra | expand |
On Wed, Sep 28, 2022 at 11:08:40PM +0800, Wayne Chang wrote: > From: Sing-Han Chen <singhanc@nvidia.com> > > Firmware built for Tegra doesn't support UCSI ALT command and has known > issue of reporting wrong capability info. > > This commit disables UCSI ALT support when reading the capability on > Tegra. > > Signed-off-by: Sing-Han Chen <singhanc@nvidia.com> > Signed-off-by: Wayne Chang <waynec@nvidia.com> Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > V1 -> V2: updated the commit message and removed the unnecessary changes for RTX > We are now enabling the NVIDIA Tegra products on upstream kernel. > The change is to add the Cypress cypd 4226 support for NVIDA Tegra > products including Xavier AGX, Xavier Orin and the upcoming products. > The Cypress cypd4226 is not enabled in current kernel codebase. > And thus, we shall not need it for stable kernels and backporting > > drivers/usb/typec/ucsi/ucsi_ccg.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/usb/typec/ucsi/ucsi_ccg.c b/drivers/usb/typec/ucsi/ucsi_ccg.c > index 5c0bf48be766..cbd93f893e48 100644 > --- a/drivers/usb/typec/ucsi/ucsi_ccg.c > +++ b/drivers/usb/typec/ucsi/ucsi_ccg.c > @@ -125,6 +125,11 @@ struct version_format { > #define CCG_FW_BUILD_NVIDIA (('n' << 8) | 'v') > #define CCG_OLD_FW_VERSION (CCG_VERSION(0x31) | CCG_VERSION_PATCH(10)) > > +/* Firmware for Tegra doesn't support UCSI ALT command, built > + * for NVIDIA has known issue of reporting wrong capability info > + */ > +#define CCG_FW_BUILD_NVIDIA_TEGRA (('g' << 8) | 'n') > + > /* Altmode offset for NVIDIA Function Test Board (FTB) */ > #define NVIDIA_FTB_DP_OFFSET (2) > #define NVIDIA_FTB_DBG_OFFSET (3) > @@ -513,6 +518,7 @@ static int ucsi_ccg_read(struct ucsi *ucsi, unsigned int offset, > { > struct ucsi_ccg *uc = ucsi_get_drvdata(ucsi); > u16 reg = CCGX_RAB_UCSI_DATA_BLOCK(offset); > + struct ucsi_capability *cap; > struct ucsi_altmode *alt; > int ret; > > @@ -536,6 +542,12 @@ static int ucsi_ccg_read(struct ucsi *ucsi, unsigned int offset, > ucsi_ccg_nvidia_altmode(uc, alt); > } > break; > + case UCSI_GET_CAPABILITY: > + if (uc->fw_build == CCG_FW_BUILD_NVIDIA_TEGRA) { > + cap = val; > + cap->features &= ~UCSI_CAP_ALT_MODE_DETAILS; > + } > + break; > default: > break; > } thanks,
diff --git a/drivers/usb/typec/ucsi/ucsi_ccg.c b/drivers/usb/typec/ucsi/ucsi_ccg.c index 5c0bf48be766..cbd93f893e48 100644 --- a/drivers/usb/typec/ucsi/ucsi_ccg.c +++ b/drivers/usb/typec/ucsi/ucsi_ccg.c @@ -125,6 +125,11 @@ struct version_format { #define CCG_FW_BUILD_NVIDIA (('n' << 8) | 'v') #define CCG_OLD_FW_VERSION (CCG_VERSION(0x31) | CCG_VERSION_PATCH(10)) +/* Firmware for Tegra doesn't support UCSI ALT command, built + * for NVIDIA has known issue of reporting wrong capability info + */ +#define CCG_FW_BUILD_NVIDIA_TEGRA (('g' << 8) | 'n') + /* Altmode offset for NVIDIA Function Test Board (FTB) */ #define NVIDIA_FTB_DP_OFFSET (2) #define NVIDIA_FTB_DBG_OFFSET (3) @@ -513,6 +518,7 @@ static int ucsi_ccg_read(struct ucsi *ucsi, unsigned int offset, { struct ucsi_ccg *uc = ucsi_get_drvdata(ucsi); u16 reg = CCGX_RAB_UCSI_DATA_BLOCK(offset); + struct ucsi_capability *cap; struct ucsi_altmode *alt; int ret; @@ -536,6 +542,12 @@ static int ucsi_ccg_read(struct ucsi *ucsi, unsigned int offset, ucsi_ccg_nvidia_altmode(uc, alt); } break; + case UCSI_GET_CAPABILITY: + if (uc->fw_build == CCG_FW_BUILD_NVIDIA_TEGRA) { + cap = val; + cap->features &= ~UCSI_CAP_ALT_MODE_DETAILS; + } + break; default: break; }