diff mbox series

[v2,11/18] drm/sun4i: Add A83T support

Message ID 1c4f6b275597dec7d97b5c1d9f749ba27c0610f3.1511797218.git-series.maxime.ripard@free-electrons.com
State New
Headers show
Series drm/sun4i: Add A83t LVDS support | expand

Commit Message

Maxime Ripard Nov. 27, 2017, 3:41 p.m. UTC
Add support for the A83T display pipeline.

Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
 Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt | 3 +++
 drivers/gpu/drm/sun4i/sun4i_drv.c                             | 2 ++
 drivers/gpu/drm/sun4i/sun4i_tcon.c                            | 5 +++++
 drivers/gpu/drm/sun4i/sun8i_mixer.c                           | 4 ++++
 4 files changed, 14 insertions(+)

Comments

Maxime Ripard Nov. 28, 2017, 9:02 a.m. UTC | #1
Hi,

On Mon, Nov 27, 2017 at 05:01:49PM +0100, Jernej Škrabec wrote:
> Dne ponedeljek, 27. november 2017 ob 16:41:35 CET je Maxime Ripard napisal(a):

> > Add support for the A83T display pipeline.

> > 

> > Reviewed-by: Chen-Yu Tsai <wens@csie.org>

> > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>

> > ---

> >  Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt | 3 +++

> >  drivers/gpu/drm/sun4i/sun4i_drv.c                             | 2 ++

> >  drivers/gpu/drm/sun4i/sun4i_tcon.c                            | 5 +++++

> >  drivers/gpu/drm/sun4i/sun8i_mixer.c                           | 4 ++++

> >  4 files changed, 14 insertions(+)

> > 

> > diff --git a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt

> > b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt index

> > d4259a4f5171..d6b52e5c48c0 100644

> > --- a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt

> > +++ b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt

> > @@ -93,6 +93,7 @@ Required properties:

> >     * allwinner,sun6i-a31s-tcon

> >     * allwinner,sun7i-a20-tcon

> >     * allwinner,sun8i-a33-tcon

> > +   * allwinner,sun8i-a83t-tcon-lcd

> >     * allwinner,sun8i-v3s-tcon

> >   - reg: base address and size of memory-mapped region

> >   - interrupts: interrupt associated to this IP

> > @@ -224,6 +225,7 @@ supported.

> > 

> >  Required properties:

> >    - compatible: value must be one of:

> > +    * allwinner,sun8i-a83t-de2-mixer

> 

> What will be the name of the second mixer, once support for HDMI is added? 

> Should we start directly with 0 and 1 postfix ?


What are the differences exactly without the two mixers?

I was hoping to be able to cover them all using properties, indices
are usually pretty badly received in compatibles.

> >  static const struct of_device_id sun8i_mixer_of_table[] = {

> >  	{

> > +		.compatible = "allwinner,sun8i-a83t-de2-mixer",

> > +		.data = &sun8i_v3s_mixer_cfg,

> > +	},

> > +	{

> 

> Maybe you want to squash 12 patch since this works only by luck.


Yeah, I totally meant to do that :)

Thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
Maxime Ripard Nov. 28, 2017, 3:46 p.m. UTC | #2
On Tue, Nov 28, 2017 at 07:50:19PM +0800, Icenowy Zheng wrote:
> 在 2017-11-28 17:02,Maxime Ripard 写道:

> > Hi,

> > 

> > On Mon, Nov 27, 2017 at 05:01:49PM +0100, Jernej Škrabec wrote:

> > > Dne ponedeljek, 27. november 2017 ob 16:41:35 CET je Maxime Ripard

> > > napisal(a):

> > > > Add support for the A83T display pipeline.

> > > >

> > > > Reviewed-by: Chen-Yu Tsai <wens@csie.org>

> > > > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>

> > > > ---

> > > >  Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt | 3 +++

> > > >  drivers/gpu/drm/sun4i/sun4i_drv.c                             | 2 ++

> > > >  drivers/gpu/drm/sun4i/sun4i_tcon.c                            | 5 +++++

> > > >  drivers/gpu/drm/sun4i/sun8i_mixer.c                           | 4 ++++

> > > >  4 files changed, 14 insertions(+)

> > > >

> > > > diff --git a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt

> > > > b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt index

> > > > d4259a4f5171..d6b52e5c48c0 100644

> > > > --- a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt

> > > > +++ b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt

> > > > @@ -93,6 +93,7 @@ Required properties:

> > > >     * allwinner,sun6i-a31s-tcon

> > > >     * allwinner,sun7i-a20-tcon

> > > >     * allwinner,sun8i-a33-tcon

> > > > +   * allwinner,sun8i-a83t-tcon-lcd

> > > >     * allwinner,sun8i-v3s-tcon

> > > >   - reg: base address and size of memory-mapped region

> > > >   - interrupts: interrupt associated to this IP

> > > > @@ -224,6 +225,7 @@ supported.

> > > >

> > > >  Required properties:

> > > >    - compatible: value must be one of:

> > > > +    * allwinner,sun8i-a83t-de2-mixer

> > > 

> > > What will be the name of the second mixer, once support for HDMI is

> > > added?

> > > Should we start directly with 0 and 1 postfix ?

> > 

> > What are the differences exactly without the two mixers?

> > 

> > I was hoping to be able to cover them all using properties, indices

> > are usually pretty badly received in compatibles.

> 

> 1. VEP is only available on the VI channel in mixer0. (VEP may mean

> Video Enhance Processor)

> 2. Smart Backlight is only available in mixer0's on SoCs with LCD.

> 3. Writeback function is only available in mixer0.


Then yeah, we can totally support that using properties.

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
Maxime Ripard Nov. 28, 2017, 10 p.m. UTC | #3
On Tue, Nov 28, 2017 at 04:48:55PM +0100, Jernej Škrabec wrote:
> > On Mon, Nov 27, 2017 at 05:01:49PM +0100, Jernej Škrabec wrote:

> > > Dne ponedeljek, 27. november 2017 ob 16:41:35 CET je Maxime Ripard 

> napisal(a):

> > > > Add support for the A83T display pipeline.

> > > > 

> > > > Reviewed-by: Chen-Yu Tsai <wens@csie.org>

> > > > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>

> > > > ---

> > > > 

> > > >  Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt | 3 +++

> > > >  drivers/gpu/drm/sun4i/sun4i_drv.c                             | 2 ++

> > > >  drivers/gpu/drm/sun4i/sun4i_tcon.c                            | 5 +++++

> > > >  drivers/gpu/drm/sun4i/sun8i_mixer.c                           | 4 ++++

> > > >  4 files changed, 14 insertions(+)

> > > > 

> > > > diff --git

> > > > a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt

> > > > b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt index

> > > > d4259a4f5171..d6b52e5c48c0 100644

> > > > --- a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt

> > > > +++ b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt

> > > > 

> > > > @@ -93,6 +93,7 @@ Required properties:

> > > >     * allwinner,sun6i-a31s-tcon

> > > >     * allwinner,sun7i-a20-tcon

> > > >     * allwinner,sun8i-a33-tcon

> > > > 

> > > > +   * allwinner,sun8i-a83t-tcon-lcd

> > > > 

> > > >     * allwinner,sun8i-v3s-tcon

> > > >   

> > > >   - reg: base address and size of memory-mapped region

> > > >   - interrupts: interrupt associated to this IP

> > > > 

> > > > @@ -224,6 +225,7 @@ supported.

> > > > 

> > > >  Required properties:

> > > >    - compatible: value must be one of:

> > > > +    * allwinner,sun8i-a83t-de2-mixer

> > > 

> > > What will be the name of the second mixer, once support for HDMI is added?

> > > Should we start directly with 0 and 1 postfix ?

> > 

> > What are the differences exactly without the two mixers?

> 

> Mixer properties:

> - mixer index (0 or 1), important for determining CCSC base (see my patches)


Is that the only thing we need to determine?

> - number of VI planes (usually 1)


Usually or always?

> - number of UI planes (usually 1 or 3)


Same question.

> - writeback support (yes/no)

> - scale line buffer length (2048 or 4096)

> - smart backligth support (yes/no)

> 

> channel properties (for both, VI and UI):

> - scaler support (yes/no, usually yes)

> - overlay count (seems to be always 4)

> - VEP support (yes/no)

> 

> Those are properties found in BSP de_feat.c, so I guess that's enough to make 

> any kind of decision in the code.

> 

> Usually, but we can't count on that, first mixer has 1 VI and 3 UI planes and 

> second mixer has 1 VI and 1 UI plane.


Right. So that would be easy to support using a property as well. The
only difference would be the CSC base.

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
index d4259a4f5171..d6b52e5c48c0 100644
--- a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
+++ b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
@@ -93,6 +93,7 @@  Required properties:
    * allwinner,sun6i-a31s-tcon
    * allwinner,sun7i-a20-tcon
    * allwinner,sun8i-a33-tcon
+   * allwinner,sun8i-a83t-tcon-lcd
    * allwinner,sun8i-v3s-tcon
  - reg: base address and size of memory-mapped region
  - interrupts: interrupt associated to this IP
@@ -224,6 +225,7 @@  supported.
 
 Required properties:
   - compatible: value must be one of:
+    * allwinner,sun8i-a83t-de2-mixer
     * allwinner,sun8i-v3s-de2-mixer
   - reg: base address and size of the memory-mapped region.
   - clocks: phandles to the clocks feeding the mixer
@@ -253,6 +255,7 @@  Required properties:
     * allwinner,sun6i-a31s-display-engine
     * allwinner,sun7i-a20-display-engine
     * allwinner,sun8i-a33-display-engine
+    * allwinner,sun8i-a83t-display-engine
     * allwinner,sun8i-v3s-display-engine
 
   - allwinner,pipelines: list of phandle to the display engine
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 75c76cdd82bc..c418be2f22be 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -193,6 +193,7 @@  static bool sun4i_drv_node_is_tcon(struct device_node *node)
 		of_device_is_compatible(node, "allwinner,sun6i-a31s-tcon") ||
 		of_device_is_compatible(node, "allwinner,sun7i-a20-tcon") ||
 		of_device_is_compatible(node, "allwinner,sun8i-a33-tcon") ||
+		of_device_is_compatible(node, "allwinner,sun8i-a83t-tcon-lcd") ||
 		of_device_is_compatible(node, "allwinner,sun8i-v3s-tcon");
 }
 
@@ -353,6 +354,7 @@  static const struct of_device_id sun4i_drv_of_table[] = {
 	{ .compatible = "allwinner,sun6i-a31s-display-engine" },
 	{ .compatible = "allwinner,sun7i-a20-display-engine" },
 	{ .compatible = "allwinner,sun8i-a33-display-engine" },
+	{ .compatible = "allwinner,sun8i-a83t-display-engine" },
 	{ .compatible = "allwinner,sun8i-v3s-display-engine" },
 	{ }
 };
diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c
index 46ce6daa0b1a..871df75793a9 100644
--- a/drivers/gpu/drm/sun4i/sun4i_tcon.c
+++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c
@@ -1132,6 +1132,10 @@  static const struct sun4i_tcon_quirks sun8i_a33_quirks = {
 	.has_lvds_pll		= true,
 };
 
+static const struct sun4i_tcon_quirks sun8i_a83t_quirks = {
+	/* nothing is supported */
+};
+
 static const struct sun4i_tcon_quirks sun8i_v3s_quirks = {
 	/* nothing is supported */
 };
@@ -1143,6 +1147,7 @@  static const struct of_device_id sun4i_tcon_of_table[] = {
 	{ .compatible = "allwinner,sun6i-a31s-tcon", .data = &sun6i_a31s_quirks },
 	{ .compatible = "allwinner,sun7i-a20-tcon", .data = &sun7i_a20_quirks },
 	{ .compatible = "allwinner,sun8i-a33-tcon", .data = &sun8i_a33_quirks },
+	{ .compatible = "allwinner,sun8i-a83t-tcon-lcd", .data = &sun8i_a83t_quirks },
 	{ .compatible = "allwinner,sun8i-v3s-tcon", .data = &sun8i_v3s_quirks },
 	{ }
 };
diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c
index 44d5e639ebb2..5a1376965270 100644
--- a/drivers/gpu/drm/sun4i/sun8i_mixer.c
+++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c
@@ -395,6 +395,10 @@  static const struct sun8i_mixer_cfg sun8i_v3s_mixer_cfg = {
 
 static const struct of_device_id sun8i_mixer_of_table[] = {
 	{
+		.compatible = "allwinner,sun8i-a83t-de2-mixer",
+		.data = &sun8i_v3s_mixer_cfg,
+	},
+	{
 		.compatible = "allwinner,sun8i-v3s-de2-mixer",
 		.data = &sun8i_v3s_mixer_cfg,
 	},