Re: [PATCH v2 1/1] usb: typec: ucsi_ccg: Disable UCSI ALT support on Tegra

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 28, 2022 at 11:08:40PM +0800, Wayne Chang wrote:
> From: Sing-Han Chen <singhanc@xxxxxxxxxx>
> 
> 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@xxxxxxxxxx>
> Signed-off-by: Wayne Chang <waynec@xxxxxxxxxx>

Acked-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>

> ---
> 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,

-- 
heikki



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux