Message ID | 20240306101625.795732-3-alexander.stein@ew.tq-group.com |
---|---|
State | Changes Requested |
Headers | show |
Series | Initial support Cadence MHDP8501(HDMI/DP) for i.MX8MQ | expand |
Hi Alexander, On Wed, Mar 06, 2024 at 11:16:19AM +0100, Alexander Stein wrote: > From: Sandor Yu <Sandor.yu@nxp.com> > > Allow HDMI PHYs to be configured through the generic > functions through a custom structure added to the generic union. > > The parameters added here are based on HDMI PHY > implementation practices. The current set of parameters > should cover the potential users. > > Signed-off-by: Sandor Yu <Sandor.yu@nxp.com> > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > Acked-by: Vinod Koul <vkoul@kernel.org> > --- > include/linux/phy/phy-hdmi.h | 24 ++++++++++++++++++++++++ > include/linux/phy/phy.h | 7 ++++++- > 2 files changed, 30 insertions(+), 1 deletion(-) > create mode 100644 include/linux/phy/phy-hdmi.h > > diff --git a/include/linux/phy/phy-hdmi.h b/include/linux/phy/phy-hdmi.h > new file mode 100644 > index 0000000000000..b7de88e9090f0 > --- /dev/null > +++ b/include/linux/phy/phy-hdmi.h > @@ -0,0 +1,24 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * Copyright 2022 NXP > + */ > + > +#ifndef __PHY_HDMI_H_ > +#define __PHY_HDMI_H_ > + > +#include <linux/hdmi.h> > +/** > + * struct phy_configure_opts_hdmi - HDMI configuration set > + * @pixel_clk_rate: Pixel clock of video modes in KHz. > + * @bpc: Maximum bits per color channel. > + * @color_space: Colorspace in enum hdmi_colorspace. > + * > + * This structure is used to represent the configuration state of a HDMI phy. > + */ > +struct phy_configure_opts_hdmi { > + unsigned int pixel_clk_rate; > + unsigned int bpc; > + enum hdmi_colorspace color_space; > +}; Does the PHY actually care about the pixel clock rate, color space and formats, or does it only care about the character rate? Also, how would you handle pixel doubling? Maxime
On 06-03-24, 15:48, Maxime Ripard wrote: > Hi Alexander, > > On Wed, Mar 06, 2024 at 11:16:19AM +0100, Alexander Stein wrote: > > From: Sandor Yu <Sandor.yu@nxp.com> > > > > Allow HDMI PHYs to be configured through the generic > > functions through a custom structure added to the generic union. > > > > The parameters added here are based on HDMI PHY > > implementation practices. The current set of parameters > > should cover the potential users. > > > > Signed-off-by: Sandor Yu <Sandor.yu@nxp.com> > > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > > Acked-by: Vinod Koul <vkoul@kernel.org> > > --- > > include/linux/phy/phy-hdmi.h | 24 ++++++++++++++++++++++++ > > include/linux/phy/phy.h | 7 ++++++- > > 2 files changed, 30 insertions(+), 1 deletion(-) > > create mode 100644 include/linux/phy/phy-hdmi.h > > > > diff --git a/include/linux/phy/phy-hdmi.h b/include/linux/phy/phy-hdmi.h > > new file mode 100644 > > index 0000000000000..b7de88e9090f0 > > --- /dev/null > > +++ b/include/linux/phy/phy-hdmi.h > > @@ -0,0 +1,24 @@ > > +/* SPDX-License-Identifier: GPL-2.0 */ > > +/* > > + * Copyright 2022 NXP > > + */ > > + > > +#ifndef __PHY_HDMI_H_ > > +#define __PHY_HDMI_H_ > > + > > +#include <linux/hdmi.h> > > +/** > > + * struct phy_configure_opts_hdmi - HDMI configuration set > > + * @pixel_clk_rate: Pixel clock of video modes in KHz. > > + * @bpc: Maximum bits per color channel. > > + * @color_space: Colorspace in enum hdmi_colorspace. > > + * > > + * This structure is used to represent the configuration state of a HDMI phy. > > + */ > > +struct phy_configure_opts_hdmi { > > + unsigned int pixel_clk_rate; > > + unsigned int bpc; > > + enum hdmi_colorspace color_space; > > +}; > > Does the PHY actually care about the pixel clock rate, color space and > formats, or does it only care about the character rate? Nope it should not
On Fri, Apr 05, 2024 at 07:54:46PM +0530, Vinod Koul wrote: > On 06-03-24, 15:48, Maxime Ripard wrote: > > Hi Alexander, > > > > On Wed, Mar 06, 2024 at 11:16:19AM +0100, Alexander Stein wrote: > > > From: Sandor Yu <Sandor.yu@nxp.com> > > > > > > Allow HDMI PHYs to be configured through the generic > > > functions through a custom structure added to the generic union. > > > > > > The parameters added here are based on HDMI PHY > > > implementation practices. The current set of parameters > > > should cover the potential users. > > > > > > Signed-off-by: Sandor Yu <Sandor.yu@nxp.com> > > > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > > > Acked-by: Vinod Koul <vkoul@kernel.org> > > > --- > > > include/linux/phy/phy-hdmi.h | 24 ++++++++++++++++++++++++ > > > include/linux/phy/phy.h | 7 ++++++- > > > 2 files changed, 30 insertions(+), 1 deletion(-) > > > create mode 100644 include/linux/phy/phy-hdmi.h > > > > > > diff --git a/include/linux/phy/phy-hdmi.h b/include/linux/phy/phy-hdmi.h > > > new file mode 100644 > > > index 0000000000000..b7de88e9090f0 > > > --- /dev/null > > > +++ b/include/linux/phy/phy-hdmi.h > > > @@ -0,0 +1,24 @@ > > > +/* SPDX-License-Identifier: GPL-2.0 */ > > > +/* > > > + * Copyright 2022 NXP > > > + */ > > > + > > > +#ifndef __PHY_HDMI_H_ > > > +#define __PHY_HDMI_H_ > > > + > > > +#include <linux/hdmi.h> > > > +/** > > > + * struct phy_configure_opts_hdmi - HDMI configuration set > > > + * @pixel_clk_rate: Pixel clock of video modes in KHz. > > > + * @bpc: Maximum bits per color channel. > > > + * @color_space: Colorspace in enum hdmi_colorspace. > > > + * > > > + * This structure is used to represent the configuration state of a HDMI phy. > > > + */ > > > +struct phy_configure_opts_hdmi { > > > + unsigned int pixel_clk_rate; > > > + unsigned int bpc; > > > + enum hdmi_colorspace color_space; > > > +}; > > > > Does the PHY actually care about the pixel clock rate, color space and > > formats, or does it only care about the character rate? > > Nope it should not After taking a look at the Cadence PHY driver, I share the feeling that hdptx_hdmi_feedback_factor() should be reworked into drm_display helper and then the struct phy_configure_opts_hdmi can be limited to having a single unsigned long char_freq or bit_rate field. I'm not sure whether we need anything corresponding to the TMDS Bit Clock Ratio control. As far as I understand, it can be deduced from the Bit Rate.
diff --git a/include/linux/phy/phy-hdmi.h b/include/linux/phy/phy-hdmi.h new file mode 100644 index 0000000000000..b7de88e9090f0 --- /dev/null +++ b/include/linux/phy/phy-hdmi.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright 2022 NXP + */ + +#ifndef __PHY_HDMI_H_ +#define __PHY_HDMI_H_ + +#include <linux/hdmi.h> +/** + * struct phy_configure_opts_hdmi - HDMI configuration set + * @pixel_clk_rate: Pixel clock of video modes in KHz. + * @bpc: Maximum bits per color channel. + * @color_space: Colorspace in enum hdmi_colorspace. + * + * This structure is used to represent the configuration state of a HDMI phy. + */ +struct phy_configure_opts_hdmi { + unsigned int pixel_clk_rate; + unsigned int bpc; + enum hdmi_colorspace color_space; +}; + +#endif /* __PHY_HDMI_H_ */ diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h index 03cd5bae92d3f..4ac486b101fe4 100644 --- a/include/linux/phy/phy.h +++ b/include/linux/phy/phy.h @@ -17,6 +17,7 @@ #include <linux/regulator/consumer.h> #include <linux/phy/phy-dp.h> +#include <linux/phy/phy-hdmi.h> #include <linux/phy/phy-lvds.h> #include <linux/phy/phy-mipi-dphy.h> @@ -42,7 +43,8 @@ enum phy_mode { PHY_MODE_MIPI_DPHY, PHY_MODE_SATA, PHY_MODE_LVDS, - PHY_MODE_DP + PHY_MODE_DP, + PHY_MODE_HDMI, }; enum phy_media { @@ -60,11 +62,14 @@ enum phy_media { * the DisplayPort protocol. * @lvds: Configuration set applicable for phys supporting * the LVDS phy mode. + * @hdmi: Configuration set applicable for phys supporting + * the HDMI phy mode. */ union phy_configure_opts { struct phy_configure_opts_mipi_dphy mipi_dphy; struct phy_configure_opts_dp dp; struct phy_configure_opts_lvds lvds; + struct phy_configure_opts_hdmi hdmi; }; /**