Re: [PATCH 1/2] media: cec: tegra_cec: don't break off msg on NACK

Mikko Perttunen <[email protected]>
Newsgroups org.kernel.vger.linux-tegra,org.kernel.vger.linux-media
Message-ID <[email protected]>
On Friday, July 10, 2026 6:53 PM Hans Verkuil wrote:
> The Tegra CEC hardware has a bug where, if the first attempt
> to transmit a message is NACKed so the transmit is aborted,
> then the second attempt can contain corrupt data.
> 
> Ensure that the full message is always transmitted to avoid hitting
> this bug.
> 
> I suspect some internal state is not reset in the case of aborting
> a message due to a NACK.
> 
> Signed-off-by: Hans Verkuil <[email protected]>
> ---
>  drivers/media/cec/platform/tegra/tegra_cec.c | 13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/cec/platform/tegra/tegra_cec.c b/drivers/media/cec/platform/tegra/tegra_cec.c
> index fe66336e734f..f8ffaeb78118 100644
> --- a/drivers/media/cec/platform/tegra/tegra_cec.c
> +++ b/drivers/media/cec/platform/tegra/tegra_cec.c
> @@ -243,7 +243,18 @@ static int tegra_cec_adap_enable(struct cec_adapter *adap, bool enable)
>  		  TEGRA_CEC_INT_MASK_RX_REGISTER_FULL |
>  		  TEGRA_CEC_INT_MASK_RX_START_BIT_DETECTED);
>  
> -	cec_write(cec, TEGRA_CEC_HW_CONTROL, TEGRA_CEC_HWCTRL_TX_RX_MODE);
> +	/*
> +	 * TX_NAK_MODE ensures that the whole message is transmitted even
> +	 * if each byte is NACKed. Without this flag the retransmit of the
> +	 * messages after a NACK can be corrupt. This is a bug in the hardware.
> +	 *
> +	 * While less efficient, in practice you rarely transmit messages
> +	 * that can be NACKed, with the exception of POLL messages which
> +	 * are just one byte anyway.
> +	 */
> +	cec_write(cec, TEGRA_CEC_HW_CONTROL,
> +		  TEGRA_CEC_HWCTRL_TX_RX_MODE |
> +		  TEGRA_CEC_HWCTRL_TX_NAK_MODE);
>  	return 0;
>  }
>  
> -- 
> 2.53.0
> 
> 

Reviewed-by: Mikko Perttunen <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.