All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vinod Koul <vkoul@kernel.org>
To: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Cc: Neil Armstrong <neil.armstrong@linaro.org>,
	Manivannan Sadhasivam <mani@kernel.org>,
	Heiko Stuebner <heiko@sntech.de>,
	Andy Yan <andy.yan@rock-chips.com>,
	kernel@collabora.com, linux-phy@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-rockchip@lists.infradead.org
Subject: Re: [PATCH v2 1/3] phy: hdmi: Add optional FRL TxFFE config options
Date: Sat, 3 Oct 2026 22:39:34 +0200	[thread overview]
Message-ID: <asFoBih6P7Cr6Ute@parshuram> (raw)
In-Reply-To: <20260901-hdptx-ffe-v2-1-3a5922c76fc5@collabora.com>

On 01-09-26, 22:55, Cristian Ciocaltea wrote:
> During HDMI 2.1 FRL link training, the source and sink can negotiate a
> Transmitter Feed-Forward Equalization (TxFFE) level to improve the
> signal quality.  Starting from zero, the source may increment the TxFFE
> level up to a maximum agreed during the LTS3 stage if the sink keeps
> reporting FLT failures.  TxFFE adjustment is optional and only attempted
> when both the source and the connected sink support it.
> 
> Since the existing HDMI PHY configuration API covers the FRL rate/lane
> selection only, provide the following fields to the frl sub-struct of
> phy_configure_opts_hdmi:
> 
> * ffe_level: the TxFFE level to apply, only meaningful when
>   set_ffe_level is set.
> 
> * set_ffe_level: a 1-bit flag that changes the semantics of the
>   phy_configure() call, i.e. when set, the PHY driver must apply the new
>   ffe_level and ignore the other frl related fields.

The ffe_level 0 implies it is disabled, so why should we use a flag for
this? Rather use if value valid (non zero) logic to apply..?

> 
> The flag-based approach reflects an important invariant in the link
> training process: whenever the FRL rate or lane count changes, the TxFFE
> level must be reset to zero.  A separate phy_configure() call with
> set_ffe_level can only follow after the rate has been established,
> making the two operations deliberately distinct.
> 
> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
> ---
>  include/linux/phy/phy-hdmi.h | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/include/linux/phy/phy-hdmi.h b/include/linux/phy/phy-hdmi.h
> index d4cf4430ee8f..1d4b62475079 100644
> --- a/include/linux/phy/phy-hdmi.h
> +++ b/include/linux/phy/phy-hdmi.h
> @@ -19,6 +19,10 @@ enum phy_hdmi_mode {
>   * @tmds_char_rate: HDMI TMDS Character Rate in Hertz.
>   * @frl.rate_per_lane: HDMI FRL Rate per Lane in Gbps.
>   * @frl.lanes: HDMI FRL lanes count.
> + * @frl.ffe_level: Transmitter Feed Forward Equalizer Level.
> + *	Optional, only meaningful when set_ffe_level flag is on.
> + * @frl.set_ffe_level: Flag indicating whether or not to reconfigure ffe_level.
> + *	All the other struct fields must be ignored when this is used.
>   *
>   * This structure is used to represent the configuration state of a HDMI phy.
>   */
> @@ -29,6 +33,8 @@ struct phy_configure_opts_hdmi {
>  		struct {
>  			u8 rate_per_lane;
>  			u8 lanes;
> +			u8 ffe_level;
> +			u8 set_ffe_level : 1;
>  		} frl;
>  	};
>  };
> 
> -- 
> 2.55.0

-- 
~Vinod

-- 
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy

WARNING: multiple messages have this Message-ID (diff)
From: Vinod Koul <vkoul@kernel.org>
To: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Cc: Neil Armstrong <neil.armstrong@linaro.org>,
	Manivannan Sadhasivam <mani@kernel.org>,
	Heiko Stuebner <heiko@sntech.de>,
	Andy Yan <andy.yan@rock-chips.com>,
	kernel@collabora.com, linux-phy@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-rockchip@lists.infradead.org
Subject: Re: [PATCH v2 1/3] phy: hdmi: Add optional FRL TxFFE config options
Date: Sat, 3 Oct 2026 22:39:34 +0200	[thread overview]
Message-ID: <asFoBih6P7Cr6Ute@parshuram> (raw)
In-Reply-To: <20260901-hdptx-ffe-v2-1-3a5922c76fc5@collabora.com>

On 01-09-26, 22:55, Cristian Ciocaltea wrote:
> During HDMI 2.1 FRL link training, the source and sink can negotiate a
> Transmitter Feed-Forward Equalization (TxFFE) level to improve the
> signal quality.  Starting from zero, the source may increment the TxFFE
> level up to a maximum agreed during the LTS3 stage if the sink keeps
> reporting FLT failures.  TxFFE adjustment is optional and only attempted
> when both the source and the connected sink support it.
> 
> Since the existing HDMI PHY configuration API covers the FRL rate/lane
> selection only, provide the following fields to the frl sub-struct of
> phy_configure_opts_hdmi:
> 
> * ffe_level: the TxFFE level to apply, only meaningful when
>   set_ffe_level is set.
> 
> * set_ffe_level: a 1-bit flag that changes the semantics of the
>   phy_configure() call, i.e. when set, the PHY driver must apply the new
>   ffe_level and ignore the other frl related fields.

The ffe_level 0 implies it is disabled, so why should we use a flag for
this? Rather use if value valid (non zero) logic to apply..?

> 
> The flag-based approach reflects an important invariant in the link
> training process: whenever the FRL rate or lane count changes, the TxFFE
> level must be reset to zero.  A separate phy_configure() call with
> set_ffe_level can only follow after the rate has been established,
> making the two operations deliberately distinct.
> 
> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
> ---
>  include/linux/phy/phy-hdmi.h | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/include/linux/phy/phy-hdmi.h b/include/linux/phy/phy-hdmi.h
> index d4cf4430ee8f..1d4b62475079 100644
> --- a/include/linux/phy/phy-hdmi.h
> +++ b/include/linux/phy/phy-hdmi.h
> @@ -19,6 +19,10 @@ enum phy_hdmi_mode {
>   * @tmds_char_rate: HDMI TMDS Character Rate in Hertz.
>   * @frl.rate_per_lane: HDMI FRL Rate per Lane in Gbps.
>   * @frl.lanes: HDMI FRL lanes count.
> + * @frl.ffe_level: Transmitter Feed Forward Equalizer Level.
> + *	Optional, only meaningful when set_ffe_level flag is on.
> + * @frl.set_ffe_level: Flag indicating whether or not to reconfigure ffe_level.
> + *	All the other struct fields must be ignored when this is used.
>   *
>   * This structure is used to represent the configuration state of a HDMI phy.
>   */
> @@ -29,6 +33,8 @@ struct phy_configure_opts_hdmi {
>  		struct {
>  			u8 rate_per_lane;
>  			u8 lanes;
> +			u8 ffe_level;
> +			u8 set_ffe_level : 1;
>  		} frl;
>  	};
>  };
> 
> -- 
> 2.55.0

-- 
~Vinod


WARNING: multiple messages have this Message-ID (diff)
From: Vinod Koul <vkoul@kernel.org>
To: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Cc: Neil Armstrong <neil.armstrong@linaro.org>,
	Manivannan Sadhasivam <mani@kernel.org>,
	Heiko Stuebner <heiko@sntech.de>,
	Andy Yan <andy.yan@rock-chips.com>,
	kernel@collabora.com, linux-phy@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-rockchip@lists.infradead.org
Subject: Re: [PATCH v2 1/3] phy: hdmi: Add optional FRL TxFFE config options
Date: Sat, 3 Oct 2026 22:39:34 +0200	[thread overview]
Message-ID: <asFoBih6P7Cr6Ute@parshuram> (raw)
In-Reply-To: <20260901-hdptx-ffe-v2-1-3a5922c76fc5@collabora.com>

On 01-09-26, 22:55, Cristian Ciocaltea wrote:
> During HDMI 2.1 FRL link training, the source and sink can negotiate a
> Transmitter Feed-Forward Equalization (TxFFE) level to improve the
> signal quality.  Starting from zero, the source may increment the TxFFE
> level up to a maximum agreed during the LTS3 stage if the sink keeps
> reporting FLT failures.  TxFFE adjustment is optional and only attempted
> when both the source and the connected sink support it.
> 
> Since the existing HDMI PHY configuration API covers the FRL rate/lane
> selection only, provide the following fields to the frl sub-struct of
> phy_configure_opts_hdmi:
> 
> * ffe_level: the TxFFE level to apply, only meaningful when
>   set_ffe_level is set.
> 
> * set_ffe_level: a 1-bit flag that changes the semantics of the
>   phy_configure() call, i.e. when set, the PHY driver must apply the new
>   ffe_level and ignore the other frl related fields.

The ffe_level 0 implies it is disabled, so why should we use a flag for
this? Rather use if value valid (non zero) logic to apply..?

> 
> The flag-based approach reflects an important invariant in the link
> training process: whenever the FRL rate or lane count changes, the TxFFE
> level must be reset to zero.  A separate phy_configure() call with
> set_ffe_level can only follow after the rate has been established,
> making the two operations deliberately distinct.
> 
> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
> ---
>  include/linux/phy/phy-hdmi.h | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/include/linux/phy/phy-hdmi.h b/include/linux/phy/phy-hdmi.h
> index d4cf4430ee8f..1d4b62475079 100644
> --- a/include/linux/phy/phy-hdmi.h
> +++ b/include/linux/phy/phy-hdmi.h
> @@ -19,6 +19,10 @@ enum phy_hdmi_mode {
>   * @tmds_char_rate: HDMI TMDS Character Rate in Hertz.
>   * @frl.rate_per_lane: HDMI FRL Rate per Lane in Gbps.
>   * @frl.lanes: HDMI FRL lanes count.
> + * @frl.ffe_level: Transmitter Feed Forward Equalizer Level.
> + *	Optional, only meaningful when set_ffe_level flag is on.
> + * @frl.set_ffe_level: Flag indicating whether or not to reconfigure ffe_level.
> + *	All the other struct fields must be ignored when this is used.
>   *
>   * This structure is used to represent the configuration state of a HDMI phy.
>   */
> @@ -29,6 +33,8 @@ struct phy_configure_opts_hdmi {
>  		struct {
>  			u8 rate_per_lane;
>  			u8 lanes;
> +			u8 ffe_level;
> +			u8 set_ffe_level : 1;
>  		} frl;
>  	};
>  };
> 
> -- 
> 2.55.0

-- 
~Vinod

_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

  reply	other threads:[~2026-10-03 20:39 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-01 19:55 [PATCH v2 0/3] phy: hdmi: Add FRL TxFFE level control Cristian Ciocaltea
2026-09-01 19:55 ` Cristian Ciocaltea
2026-09-01 19:55 ` Cristian Ciocaltea
2026-09-01 19:55 ` [PATCH v2 1/3] phy: hdmi: Add optional FRL TxFFE config options Cristian Ciocaltea
2026-09-01 19:55   ` Cristian Ciocaltea
2026-09-01 19:55   ` Cristian Ciocaltea
2026-10-03 20:39   ` Vinod Koul [this message]
2026-10-03 20:39     ` Vinod Koul
2026-10-03 20:39     ` Vinod Koul
2026-10-03 21:33     ` Cristian Ciocaltea
2026-10-03 21:33       ` Cristian Ciocaltea
2026-10-03 21:33       ` Cristian Ciocaltea
2026-10-04 10:52       ` Vinod Koul
2026-10-04 10:52         ` Vinod Koul
2026-10-04 10:52         ` Vinod Koul
2026-09-01 19:55 ` [PATCH v2 2/3] phy: rockchip: samsung-hdptx: Handle PHY config after module reload Cristian Ciocaltea
2026-09-01 19:55   ` Cristian Ciocaltea
2026-09-01 19:55   ` Cristian Ciocaltea
2026-09-01 20:11   ` sashiko-bot
2026-09-01 19:55 ` [PATCH v2 3/3] phy: rockchip: samsung-hdptx: Add support for FRL TxFFE level control Cristian Ciocaltea
2026-09-01 19:55   ` Cristian Ciocaltea
2026-09-01 19:55   ` Cristian Ciocaltea
2026-09-01 20:12   ` sashiko-bot
2026-10-05 10:20 ` [PATCH v2 0/3] phy: hdmi: Add " Vinod Koul
2026-10-05 10:20   ` Vinod Koul
2026-10-05 10:20   ` Vinod Koul

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=asFoBih6P7Cr6Ute@parshuram \
    --to=vkoul@kernel.org \
    --cc=andy.yan@rock-chips.com \
    --cc=cristian.ciocaltea@collabora.com \
    --cc=heiko@sntech.de \
    --cc=kernel@collabora.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=mani@kernel.org \
    --cc=neil.armstrong@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.