devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/15] drm: sun4i: Add support for the HDMI controller
@ 2017-03-07  8:56 Maxime Ripard
       [not found] ` <cover.bc06ffa88f847ddd9ddd7c259415d5f61b55307b.1488876832.git-series.maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
                   ` (2 more replies)
  0 siblings, 3 replies; 50+ messages in thread
From: Maxime Ripard @ 2017-03-07  8:56 UTC (permalink / raw)
  To: Mike Turquette, Stephen Boyd, Chen-Yu Tsai, Maxime Ripard
  Cc: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Daniel Vetter,
	David Airlie, Mark Rutland, Rob Herring,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-clk-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

Hi,

Here is an attempt at getting the HDMI controller running.

This HDMI controller is found on a number of old Allwinner SoCs (A10, A10s,
A20, A31).

This driver only supports for now the A10s because it was an easy target,
being very close to the A13 that is already supported by our DRM driver.

There's nothing out of the extraordinary there, except maybe the clock
setup. All the internal clocks (TMDS, DDC) have been modeled using the
common clock framework, the TMDS clock being the parent of the DDC one.

While this might sound overkill, other SoC have a different, external
source for the DDC clock, which will be easier to support through the clock
framework.

It's still a bit rough around the edges, as it doesn't work for all the
modes. This will need to be fixed before being merged obviously.

The IP also supports audio (through an already supported i2s controller,
and some missing configuration in the HDMI controller) and CEC. Both will
come eventually.

Let me know what you think!
Maxime

Maxime Ripard (15):
  clk: divider: Make divider_round_rate take the parent clock
  clk: sunxi-ng: Pass the parent and a pointer to the clocks round rate
  clk: sunxi-ng: div: Switch to divider_round_rate
  clk: sunxi-ng: mux: Don't just rely on the parent for CLK_SET_RATE_PARENT
  clk: sunxi-ng: sun5i: Export video PLLs
  dt-bindings: display: sun4i: Add HDMI display bindings
  dt-bindings: display: sun4i: Add allwinner,tcon-channel property
  drm/sun4i: tcon: Add channel debug
  drm/sun4i: tcon: Pass the encoder to the mode set functions
  drm/sun4i: tcon: Switch mux on only for composite
  drm/sun4i: tcon: Fix tcon channel 1 backporch calculation
  drm/sun4i: tcon: multiply the vtotal when not in interlace
  drm/sun4i: Add HDMI support
  ARM: sun5i: a10s: Add the HDMI controller node
  ARM: sun5i: a10s-olinuxino: Enable HDMI

 Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt |  32 +-
 arch/arm/boot/dts/sun5i-a10s-olinuxino-micro.dts              |  12 +-
 arch/arm/boot/dts/sun5i-a10s.dtsi                             |  34 +-
 arch/arm/boot/dts/sun5i.dtsi                                  |   1 +-
 drivers/clk/clk-divider.c                                     |  18 +-
 drivers/clk/hisilicon/clkdivider-hi6220.c                     |   5 +-
 drivers/clk/meson/clk-cpu.c                                   |   5 +-
 drivers/clk/nxp/clk-lpc32xx.c                                 |   5 +-
 drivers/clk/qcom/clk-alpha-pll.c                              |   5 +-
 drivers/clk/qcom/clk-regmap-divider.c                         |   3 +-
 drivers/clk/sunxi-ng/ccu-sun5i.h                              |   6 +-
 drivers/clk/sunxi-ng/ccu_div.c                                |  28 +-
 drivers/clk/sunxi-ng/ccu_mp.c                                 |   7 +-
 drivers/clk/sunxi-ng/ccu_mult.c                               |  11 +-
 drivers/clk/sunxi-ng/ccu_mux.c                                |  22 +-
 drivers/clk/sunxi-ng/ccu_mux.h                                |   3 +-
 drivers/clk/sunxi-ng/ccu_nkm.c                                |   7 +-
 drivers/gpu/drm/sun4i/Makefile                                |   5 +-
 drivers/gpu/drm/sun4i/sun4i_hdmi.h                            | 124 ++-
 drivers/gpu/drm/sun4i/sun4i_hdmi_ddc_clk.c                    | 128 ++-
 drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c                        | 449 +++++++-
 drivers/gpu/drm/sun4i/sun4i_hdmi_tmds_clk.c                   | 236 ++++-
 drivers/gpu/drm/sun4i/sun4i_rgb.c                             |   2 +-
 drivers/gpu/drm/sun4i/sun4i_tcon.c                            |  25 +-
 drivers/gpu/drm/sun4i/sun4i_tcon.h                            |   4 +-
 drivers/gpu/drm/sun4i/sun4i_tv.c                              |   2 +-
 drivers/rtc/rtc-ac100.c                                       |   6 +-
 include/dt-bindings/clock/sun5i-ccu.h                         |   3 +-
 include/linux/clk-provider.h                                  |   5 +-
 29 files changed, 1103 insertions(+), 90 deletions(-)
 create mode 100644 drivers/gpu/drm/sun4i/sun4i_hdmi.h
 create mode 100644 drivers/gpu/drm/sun4i/sun4i_hdmi_ddc_clk.c
 create mode 100644 drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
 create mode 100644 drivers/gpu/drm/sun4i/sun4i_hdmi_tmds_clk.c

base-commit: d1bee31b9da7222c6be3248d1f3b087e8cc9004c
-- 
git-series 0.8.11

^ permalink raw reply	[flat|nested] 50+ messages in thread
* Re: [PATCH 7/15] dt-bindings: display: sun4i: Add allwinner,tcon-channel property
@ 2017-03-28 10:05 Icenowy Zheng
       [not found] ` <20170328100519.145DE203419-Y9/x5g2N/Tt0ykcd9G8QkxTxI0vvWBSX@public.gmane.org>
  0 siblings, 1 reply; 50+ messages in thread
From: Icenowy Zheng @ 2017-03-28 10:05 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: Mark Rutland, devicetree, Mike Turquette, Stephen Boyd,
	linux-kernel, dri-devel, linux-sunxi, Daniel Vetter, Chen-Yu Tsai,
	linux-clk, linux-arm-kernel


2017年3月27日 上午5:11于 Maxime Ripard <maxime.ripard@free-electrons.com>写道:
>
> On Fri, Mar 17, 2017 at 11:34:45AM +0800, Chen-Yu Tsai wrote: 
> > On Thu, Mar 16, 2017 at 1:37 AM, Rob Herring <robh@kernel.org> wrote: 
> > > On Tue, Mar 07, 2017 at 09:56:26AM +0100, Maxime Ripard wrote: 
> > >> The Allwinner Timings Controller has two, mutually exclusive, channels. 
> > >> When the binding has been introduced, it was assumed that there would be 
> > >> only a single user per channel in the system. 
> > >> 
> > >> While this is likely for the channel 0 which only connects to LCD displays, 
> > >> it turns out that the channel 1 can be connected to multiple controllers in 
> > >> the SoC (HDMI and TV encoders for example). And while the simultaneous use 
> > >> of HDMI and TV outputs cannot be achieved, switching from one to the other 
> > >> at runtime definitely sounds plausible. 
> > >> 
> > >> Add an extra property, allwinner,tcon-channel, to specify for a given 
> > >> endpoint which TCON channel it is connected to, while falling back to the 
> > >> previous mechanism if that property is missing. 
> > > 
> > > I think perhaps TCON channels should have been ports rather than 
> > > endpoints. The fact that the channels are mutually exclusive can be 
> > > handled in the driver and doesn't really matter in the binding. How 
> > > painful would it be to rework things to move TCON channel 1 from port 0, 
> > > endpoint 1 to port 1? 
> > 
> > Having a separate output port for channel 1 was one option we discussed. 
> > However it wouldn't work well with the kernel's of_graph based crtc 
> > detection (drm_of_find_possible_crtcs / drm_of_find_possible_crtcs), 
> > which has the crtcs bound via the output port. As the logic is used 
> > by multiple drivers, I'm not sure it's easy to rework or test. 
>
> Can't we use a different logic than drm_of_find_possible_crtcs to fill 
> the same role? 
>
> > Also, we still have to support old device trees using channel 1 from 
> > output port 0 endpoint 1. This is the TV encoder on sun5i (A10s/A13/R8). 

And from A83T on we will face channel-1 only TCONs., which do not
have channel 0 at all in hardware.

>
> We could probably work something out if we go that way to deal with 
> old DTs though. 
>
> Maxime 
>
> -- 
> Maxime Ripard, Free Electrons 
> Embedded Linux and Kernel engineering 
> http://free-electrons.com
>
> _______________________________________________ 
> linux-arm-kernel mailing list 
> linux-arm-kernel@lists.infradead.org 
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 50+ messages in thread
* Re: [PATCH 7/15] dt-bindings: display: sun4i: Add allwinner,tcon-channel property
@ 2017-03-28 10:05 Icenowy Zheng
  0 siblings, 0 replies; 50+ messages in thread
From: Icenowy Zheng @ 2017-03-28 10:05 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: linux-arm-kernel, Mike Turquette, David Airlie, Mark Rutland,
	Daniel Vetter, linux-sunxi, linux-kernel, Stephen Boyd,
	devicetree, linux-clk, dri-devel, Chen-Yu Tsai, Rob Herring


2017年3月27日 上午5:11于 Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>写道:
>
> On Fri, Mar 17, 2017 at 11:34:45AM +0800, Chen-Yu Tsai wrote: 
> > On Thu, Mar 16, 2017 at 1:37 AM, Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> wrote: 
> > > On Tue, Mar 07, 2017 at 09:56:26AM +0100, Maxime Ripard wrote: 
> > >> The Allwinner Timings Controller has two, mutually exclusive, channels. 
> > >> When the binding has been introduced, it was assumed that there would be 
> > >> only a single user per channel in the system. 
> > >> 
> > >> While this is likely for the channel 0 which only connects to LCD displays, 
> > >> it turns out that the channel 1 can be connected to multiple controllers in 
> > >> the SoC (HDMI and TV encoders for example). And while the simultaneous use 
> > >> of HDMI and TV outputs cannot be achieved, switching from one to the other 
> > >> at runtime definitely sounds plausible. 
> > >> 
> > >> Add an extra property, allwinner,tcon-channel, to specify for a given 
> > >> endpoint which TCON channel it is connected to, while falling back to the 
> > >> previous mechanism if that property is missing. 
> > > 
> > > I think perhaps TCON channels should have been ports rather than 
> > > endpoints. The fact that the channels are mutually exclusive can be 
> > > handled in the driver and doesn't really matter in the binding. How 
> > > painful would it be to rework things to move TCON channel 1 from port 0, 
> > > endpoint 1 to port 1? 
> > 
> > Having a separate output port for channel 1 was one option we discussed. 
> > However it wouldn't work well with the kernel's of_graph based crtc 
> > detection (drm_of_find_possible_crtcs / drm_of_find_possible_crtcs), 
> > which has the crtcs bound via the output port. As the logic is used 
> > by multiple drivers, I'm not sure it's easy to rework or test. 
>
> Can't we use a different logic than drm_of_find_possible_crtcs to fill 
> the same role? 
>
> > Also, we still have to support old device trees using channel 1 from 
> > output port 0 endpoint 1. This is the TV encoder on sun5i (A10s/A13/R8). 

And from A83T on we will face channel-1 only TCONs., which do not
have channel 0 at all in hardware.

>
> We could probably work something out if we go that way to deal with 
> old DTs though. 
>
> Maxime 
>
> -- 
> Maxime Ripard, Free Electrons 
> Embedded Linux and Kernel engineering 
> http://free-electrons.com
>
> _______________________________________________ 
> linux-arm-kernel mailing list 
> linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org 
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel 

-- 
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply	[flat|nested] 50+ messages in thread

end of thread, other threads:[~2017-05-03  8:41 UTC | newest]

Thread overview: 50+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-07  8:56 [PATCH 0/15] drm: sun4i: Add support for the HDMI controller Maxime Ripard
     [not found] ` <cover.bc06ffa88f847ddd9ddd7c259415d5f61b55307b.1488876832.git-series.maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-03-07  8:56   ` [PATCH 1/15] clk: divider: Make divider_round_rate take the parent clock Maxime Ripard
2017-03-07 14:11     ` Stephen Boyd
     [not found]       ` <20170307141157.GC10239-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-03-09 10:55         ` Maxime Ripard
2017-03-07  8:56   ` [PATCH 2/15] clk: sunxi-ng: Pass the parent and a pointer to the clocks round rate Maxime Ripard
2017-03-07  8:56   ` [PATCH 3/15] clk: sunxi-ng: div: Switch to divider_round_rate Maxime Ripard
2017-03-07  8:56   ` [PATCH 4/15] clk: sunxi-ng: mux: Don't just rely on the parent for CLK_SET_RATE_PARENT Maxime Ripard
2017-03-07  8:56   ` [PATCH 5/15] clk: sunxi-ng: sun5i: Export video PLLs Maxime Ripard
     [not found]     ` <4bb77a9793d4ba25bf633eff6abe41910bb7fc3c.1488876832.git-series.maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-03-07 10:21       ` Julian Calaby
2017-03-08  8:58         ` [linux-sunxi] " Maxime Ripard
2017-03-07  8:56   ` [PATCH 6/15] dt-bindings: display: sun4i: Add HDMI display bindings Maxime Ripard
     [not found]     ` <f1d46b79f933df724a6750d557ebe9517b6339b5.1488876832.git-series.maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-03-08  3:39       ` Chen-Yu Tsai
2017-03-15 17:26       ` Rob Herring
2017-04-03 20:59         ` Maxime Ripard
2017-05-03  3:27       ` Chen-Yu Tsai
2017-03-07  8:56   ` [PATCH 8/15] drm/sun4i: tcon: Add channel debug Maxime Ripard
     [not found]     ` <71ebb24fd6b0efc1af7de732aa4aac9d5a2ee4f1.1488876832.git-series.maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-03-08  3:37       ` Chen-Yu Tsai
2017-03-07  8:56   ` [PATCH 9/15] drm/sun4i: tcon: Pass the encoder to the mode set functions Maxime Ripard
2017-03-07  8:56   ` [PATCH 10/15] drm/sun4i: tcon: Switch mux on only for composite Maxime Ripard
     [not found]     ` <3f70bcfe2ec03188c06d54a262d49ad91963a510.1488876832.git-series.maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-03-08  3:51       ` Chen-Yu Tsai
2017-03-08  4:16         ` Stefan Monnier
2017-03-09 10:58         ` Maxime Ripard
2017-03-09 11:31           ` Chen-Yu Tsai
2017-03-09 14:55             ` [linux-sunxi] " Maxime Ripard
2017-03-07  8:56   ` [PATCH 11/15] drm/sun4i: tcon: Fix tcon channel 1 backporch calculation Maxime Ripard
     [not found]     ` <475aeed1da40d46d8e50420c281a74c32b78c730.1488876832.git-series.maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-03-08  4:25       ` Chen-Yu Tsai
     [not found]         ` <CAGb2v64gJ13DB3UxfG7DnJCzE+CZ02repkX8=iOQASsHw2cG5A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-08  8:55           ` Maxime Ripard
2017-03-07  8:56   ` [PATCH 12/15] drm/sun4i: tcon: multiply the vtotal when not in interlace Maxime Ripard
     [not found]     ` <0b3b516527c42e745ed8a35736948a383411bd50.1488876832.git-series.maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-03-07 10:05       ` Chen-Yu Tsai
     [not found]         ` <CAGb2v67t7O4AuSXUupB3EU7OZdxgQbeyB6qL_g3x_BXOFLg9Bg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-09 10:54           ` Maxime Ripard
2017-03-07  8:56   ` [PATCH 13/15] drm/sun4i: Add HDMI support Maxime Ripard
     [not found]     ` <c63d01aedeccc58bf8d6f5bfd66d8595156e9491.1488876832.git-series.maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-04-21 15:17       ` Chen-Yu Tsai
2017-04-26  6:50         ` [linux-sunxi] " Maxime Ripard
2017-04-26  7:59           ` Chen-Yu Tsai
     [not found]             ` <CAGb2v67Szt9Xj+hwJD6i9X0XgXOtZBS1Jy4wWjbfSGJSDFM1NQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-05-03  8:41               ` Maxime Ripard
2017-03-07  8:56   ` [PATCH 14/15] ARM: sun5i: a10s: Add the HDMI controller node Maxime Ripard
     [not found]     ` <61406c0ba992f2fa5b5180b790a1ef3fa38d9567.1488876832.git-series.maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-03-08  3:35       ` Chen-Yu Tsai
     [not found]         ` <CAGb2v64KKp0cYB3u0=bSVcq0gB41LkurCeiTJ3OEzn7UjdSPpQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-09 10:59           ` Maxime Ripard
2017-03-09 11:10             ` Chen-Yu Tsai
2017-03-07  8:56   ` [PATCH 15/15] ARM: sun5i: a10s-olinuxino: Enable HDMI Maxime Ripard
     [not found]     ` <3194cb69fa565ded062ea950d5bf72fd7886e3f8.1488876832.git-series.maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-03-08  3:36       ` Chen-Yu Tsai
2017-03-07  8:56 ` [PATCH 7/15] dt-bindings: display: sun4i: Add allwinner, tcon-channel property Maxime Ripard
     [not found]   ` <46fdec2d680d539652f87d79c627973b3a568438.1488876832.git-series.maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-03-08  3:38     ` [PATCH 7/15] dt-bindings: display: sun4i: Add allwinner,tcon-channel property Chen-Yu Tsai
2017-03-15 17:37     ` Rob Herring
2017-03-17  3:34       ` Chen-Yu Tsai
     [not found]         ` <CAGb2v67A2T4KeLBttAGLKoo7igBTnQH+5yxN-jJo1k7Ewfd9mQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-26 21:11           ` Maxime Ripard
2017-03-07 14:06 ` [PATCH 0/15] drm: sun4i: Add support for the HDMI controller Stefan Monnier
  -- strict thread matches above, loose matches on Subject: below --
2017-03-28 10:05 [PATCH 7/15] dt-bindings: display: sun4i: Add allwinner,tcon-channel property Icenowy Zheng
     [not found] ` <20170328100519.145DE203419-Y9/x5g2N/Tt0ykcd9G8QkxTxI0vvWBSX@public.gmane.org>
2017-03-29 12:31   ` Maxime Ripard
2017-03-28 10:05 Icenowy Zheng

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).