Re: [PATCH AUTOSEL 4.19 16/38] drm/sun4i: Add support for D1 TCONs

From: Samuel Holland
Date: Mon May 30 2022 - 11:36:06 EST


Hi Sasha,

On 5/30/22 8:49 AM, Sasha Levin wrote:
> From: Samuel Holland <samuel@xxxxxxxxxxxx>
>
> [ Upstream commit b9b52d2f4aafa2bd637ace0f24615bdad8e49f01 ]
>
> D1 has a TCON TOP, so its quirks are similar to those for the R40 TCONs.
> While there are some register changes, the part of the TCON TV supported
> by the driver matches the R40 quirks, so that quirks structure can be
> reused. D1 has the first supported TCON LCD with a TCON TOP, so the TCON
> LCD needs a new quirks structure.
>
> D1's TCON LCD hardware supports LVDS; in fact it provides dual-link LVDS
> from a single TCON. However, it comes with a brand new LVDS PHY. Since
> this PHY has not been tested, leave out LVDS driver support for now.
>
> Signed-off-by: Samuel Holland <samuel@xxxxxxxxxxxx>
> Reviewed-by: Jernej Skrabec <jernej.skrabec@xxxxxxxxx>
> Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx>
> Link: https://patchwork.freedesktop.org/patch/msgid/20220424162633.12369-14-samuel@xxxxxxxxxxxx
> Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

This patch adds support for hardware in a SoC that will not boot on earlier
kernel releases, so there is no benefit to backporting the patch (to any
previous release).

Regards,
Samuel

> ---
> drivers/gpu/drm/sun4i/sun4i_tcon.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c
> index 113c032a2720..0ebb7c1dfee6 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c
> @@ -1316,6 +1316,12 @@ static const struct sun4i_tcon_quirks sun9i_a80_tcon_tv_quirks = {
> .needs_edp_reset = true,
> };
>
> +static const struct sun4i_tcon_quirks sun20i_d1_lcd_quirks = {
> + .has_channel_0 = true,
> + .dclk_min_div = 1,
> + .set_mux = sun8i_r40_tcon_tv_set_mux,
> +};
> +
> /* sun4i_drv uses this list to check if a device node is a TCON */
> const struct of_device_id sun4i_tcon_of_table[] = {
> { .compatible = "allwinner,sun4i-a10-tcon", .data = &sun4i_a10_quirks },
> @@ -1329,6 +1335,8 @@ const struct of_device_id sun4i_tcon_of_table[] = {
> { .compatible = "allwinner,sun8i-v3s-tcon", .data = &sun8i_v3s_quirks },
> { .compatible = "allwinner,sun9i-a80-tcon-lcd", .data = &sun9i_a80_tcon_lcd_quirks },
> { .compatible = "allwinner,sun9i-a80-tcon-tv", .data = &sun9i_a80_tcon_tv_quirks },
> + { .compatible = "allwinner,sun20i-d1-tcon-lcd", .data = &sun20i_d1_lcd_quirks },
> + { .compatible = "allwinner,sun20i-d1-tcon-tv", .data = &sun8i_r40_tv_quirks },
> { }
> };
> MODULE_DEVICE_TABLE(of, sun4i_tcon_of_table);
>