[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200219120644.b74jmusyf4ny7euh@gilmour.lan>
Date: Wed, 19 Feb 2020 13:06:44 +0100
From: Maxime Ripard <maxime@...no.tech>
To: Andrey Lebedev <andrey.lebedev@...il.com>
Cc: wens@...e.org, airlied@...ux.ie, daniel@...ll.ch,
dri-devel@...ts.freedesktop.org,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
linux-sunxi@...glegroups.com, Andrey Lebedev <andrey@...edev.lt>
Subject: Re: [PATCH v2 2/2] ARM: sun7i: dts: Add LVDS panel support on A20
On Tue, Feb 18, 2020 at 07:50:33PM +0200, Andrey Lebedev wrote:
> On Mon, Feb 17, 2020 at 06:51:35PM +0100, Maxime Ripard wrote:
> > > diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.h b/drivers/gpu/drm/sun4i/sun4i_tcon.h
> > > index cfbf4e6c1679..bc87d28ee341 100644
> > > --- a/drivers/gpu/drm/sun4i/sun4i_tcon.h
> > > +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.h
> > > @@ -235,6 +235,8 @@ struct sun4i_tcon_quirks {
> > > bool needs_de_be_mux; /* sun6i needs mux to select backend */
> > > bool needs_edp_reset; /* a80 edp reset needed for tcon0 access */
> > > bool supports_lvds; /* Does the TCON support an LVDS output? */
> > > + /* "compatible" string of TCON that exclusively supports LVDS */
> > > + const char *lvds_compatible_tcon;
> >
> > However this is far more complicated than needed, you can simply add a
> > new quirks structure associated to the tcon0 compatible in
> > sun4i_tcon_of_table, and that will do
>
> Aha! Does this look good to you?
>
> From 4ad2978e404c63d4cca1b7890bc5bdd4d1e8965d Mon Sep 17 00:00:00 2001
> From: Andrey Lebedev <andrey@...edev.lt>
> Date: Tue, 18 Feb 2020 19:47:33 +0200
> Subject: [PATCH] Mark tcon0 to be the only tcon capable of LVDS on sun7i-a20
>
> This allows to avoid warnings about reset line not provided for tcon1.
>
> Signed-off-by: Andrey Lebedev <andrey@...edev.lt>
> ---
> arch/arm/boot/dts/sun7i-a20.dtsi | 6 ++++--
> drivers/gpu/drm/sun4i/sun4i_tcon.c | 14 ++++++++++++--
> 2 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi
> index dc4f3f249aee..d50263c1ca9a 100644
> --- a/arch/arm/boot/dts/sun7i-a20.dtsi
> +++ b/arch/arm/boot/dts/sun7i-a20.dtsi
> @@ -405,7 +405,8 @@
> };
>
> tcon0: lcd-controller@...c000 {
> - compatible = "allwinner,sun7i-a20-tcon";
> + compatible = "allwinner,sun7i-a20-tcon0",
> + "allwinner,sun7i-a20-tcon";
> reg = <0x01c0c000 0x1000>;
> interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
> resets = <&ccu RST_TCON0>, <&ccu RST_LVDS>;
> @@ -460,7 +461,8 @@
> };
>
> tcon1: lcd-controller@...d000 {
> - compatible = "allwinner,sun7i-a20-tcon";
> + compatible = "allwinner,sun7i-a20-tcon1",
> + "allwinner,sun7i-a20-tcon";
> reg = <0x01c0d000 0x1000>;
> interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
> resets = <&ccu RST_TCON1>;
This needs to be in a separate patch
> diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c
> index 800a9bd86112..d9605d331010 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c
> @@ -1479,7 +1479,7 @@ static const struct sun4i_tcon_quirks sun6i_a31s_quirks = {
> .dclk_min_div = 1,
> };
>
> -static const struct sun4i_tcon_quirks sun7i_a20_quirks = {
> +static const struct sun4i_tcon_quirks sun7i_a20_tcon0_quirks = {
> .supports_lvds = true,
> .has_channel_0 = true,
> .has_channel_1 = true,
> @@ -1489,6 +1489,15 @@ static const struct sun4i_tcon_quirks sun7i_a20_quirks = {
> .setup_lvds_phy = sun4i_tcon_setup_lvds_phy,
> };
>
> +static const struct sun4i_tcon_quirks sun7i_a20_tcon1_quirks = {
> + .supports_lvds = false,
> + .has_channel_0 = true,
> + .has_channel_1 = true,
> + .dclk_min_div = 4,
> + /* Same display pipeline structure as A10 */
> + .set_mux = sun4i_a10_tcon_set_mux,
> +};
> +
> static const struct sun4i_tcon_quirks sun8i_a33_quirks = {
> .has_channel_0 = true,
> .has_lvds_alt = true,
> @@ -1534,7 +1543,8 @@ const struct of_device_id sun4i_tcon_of_table[] = {
> { .compatible = "allwinner,sun5i-a13-tcon", .data = &sun5i_a13_quirks },
> { .compatible = "allwinner,sun6i-a31-tcon", .data = &sun6i_a31_quirks },
> { .compatible = "allwinner,sun6i-a31s-tcon", .data = &sun6i_a31s_quirks },
> - { .compatible = "allwinner,sun7i-a20-tcon", .data = &sun7i_a20_quirks },
> + { .compatible = "allwinner,sun7i-a20-tcon0", .data = &sun7i_a20_tcon0_quirks },
> + { .compatible = "allwinner,sun7i-a20-tcon1", .data = &sun7i_a20_tcon1_quirks },
> { .compatible = "allwinner,sun8i-a23-tcon", .data = &sun8i_a33_quirks },
> { .compatible = "allwinner,sun8i-a33-tcon", .data = &sun8i_a33_quirks },
> { .compatible = "allwinner,sun8i-a83t-tcon-lcd", .data = &sun8i_a83t_lcd_quirks },
And we need to support older DT as well, so you shouldn't remove the
older TCON compatible and its structure. Make sure to document the new
compatibles too.
Maxime
Download attachment "signature.asc" of type "application/pgp-signature" (229 bytes)
Powered by blists - more mailing lists