[PATCH v2 2/2] drm/bridge: fsl-ldb: Add i.MX6SX support
neil.armstrong at linaro.org
neil.armstrong at linaro.org
Fri Mar 31 08:58:50 UTC 2023
On 30/03/2023 12:42, Fabio Estevam wrote:
> From: Fabio Estevam <festevam at denx.de>
>
> i.MX6SX has a single LVDS port and share a similar LDB_CTRL register layout
> with i.MX8MP and i.MX93.
>
> There is no LVDS CTRL register on the i.MX6SX, so only write to
> this register on the appropriate SoCs.
>
> Add support for the i.MX6SX LDB.
>
> Tested on a imx6sx-sdb board with a Hannstar HSD100PXN1 LVDS panel
> and also on a custom i.MX6SX-based board.
>
> Signed-off-by: Fabio Estevam <festevam at denx.de>
> ---
> Changes since v1:
> - None
>
> drivers/gpu/drm/bridge/fsl-ldb.c | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/bridge/fsl-ldb.c b/drivers/gpu/drm/bridge/fsl-ldb.c
> index 450b352914f4..f8e5d8ab98e3 100644
> --- a/drivers/gpu/drm/bridge/fsl-ldb.c
> +++ b/drivers/gpu/drm/bridge/fsl-ldb.c
> @@ -56,6 +56,7 @@
> #define LVDS_CTRL_VBG_ADJ_MASK GENMASK(19, 17)
>
> enum fsl_ldb_devtype {
> + IMX6SX_LDB,
> IMX8MP_LDB,
> IMX93_LDB,
> };
> @@ -64,9 +65,14 @@ struct fsl_ldb_devdata {
> u32 ldb_ctrl;
> u32 lvds_ctrl;
> bool lvds_en_bit;
> + bool not_lvds_ctrl;
> };
>
> static const struct fsl_ldb_devdata fsl_ldb_devdata[] = {
> + [IMX6SX_LDB] = {
> + .ldb_ctrl = 0x18,
> + .not_lvds_ctrl = true,
> + },
> [IMX8MP_LDB] = {
> .ldb_ctrl = 0x5c,
> .lvds_ctrl = 0x128,
> @@ -202,6 +208,9 @@ static void fsl_ldb_atomic_enable(struct drm_bridge *bridge,
>
> regmap_write(fsl_ldb->regmap, fsl_ldb->devdata->ldb_ctrl, reg);
>
> + if (fsl_ldb->devdata->not_lvds_ctrl)
> + return;
> +
> /* Program LVDS_CTRL */
> reg = LVDS_CTRL_CC_ADJ(2) | LVDS_CTRL_PRE_EMPH_EN |
> LVDS_CTRL_PRE_EMPH_ADJ(3) | LVDS_CTRL_VBG_EN;
> @@ -228,7 +237,8 @@ static void fsl_ldb_atomic_disable(struct drm_bridge *bridge,
> regmap_write(fsl_ldb->regmap, fsl_ldb->devdata->lvds_ctrl,
> LVDS_CTRL_LVDS_EN);
> else
> - regmap_write(fsl_ldb->regmap, fsl_ldb->devdata->lvds_ctrl, 0);
> + if (!fsl_ldb->devdata->not_lvds_ctrl)
> + regmap_write(fsl_ldb->regmap, fsl_ldb->devdata->lvds_ctrl, 0);
> regmap_write(fsl_ldb->regmap, fsl_ldb->devdata->ldb_ctrl, 0);
>
> clk_disable_unprepare(fsl_ldb->clk);
> @@ -355,6 +365,8 @@ static void fsl_ldb_remove(struct platform_device *pdev)
> }
>
> static const struct of_device_id fsl_ldb_match[] = {
> + { .compatible = "fsl,imx6sx-ldb",
> + .data = &fsl_ldb_devdata[IMX6SX_LDB], },
> { .compatible = "fsl,imx8mp-ldb",
> .data = &fsl_ldb_devdata[IMX8MP_LDB], },
> { .compatible = "fsl,imx93-ldb",
Reviewed-by: Neil Armstrong <neil.armstrong at linaro.org>
More information about the dri-devel
mailing list