Message ID | 1412175188-28278-7-git-send-email-boris.brezillon@free-electrons.com |
---|---|
State | Superseded, archived |
Headers | show |
On Wed, Oct 01, 2014 at 04:53:03PM +0200, Boris Brezillon wrote: > From: Boris BREZILLON <boris.brezillon@free-electrons.com> > > The Atmel HLCDC (HLCD Controller) IP available on some Atmel SoCs (i.e. > at91sam9n12, at91sam9x5 family or sama5d3 family) provides a display > controller device. > > The HLCDC block provides a single RGB output port, and only supports LCD > panels connection to LCD panels for now. > > The atmel,panel property link the HLCDC RGB output with the LCD panel > connected on this port (note that the HLCDC RGB connector implementation > makes use of the DRM panel framework). > > Connection to other external devices (DRM bridges) might be added later by > mean of a new atmel,xxx (atmel,bridge) property. > > Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> > --- > .../devicetree/bindings/drm/atmel-hlcdc-dc.txt | 53 ++++++++++++++++++++++ > 1 file changed, 53 insertions(+) > create mode 100644 Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > diff --git a/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > new file mode 100644 > index 0000000..ebc1a91 > --- /dev/null > +++ b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > @@ -0,0 +1,53 @@ > +Device-Tree bindings for Atmel's HLCDC (High LCD Controller) DRM driver > + > +The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device. > +See ../mfd/atmel-hlcdc.txt for more details. > + > +Required properties: > + - compatible: value should be "atmel,hlcdc-display-controller" > + - pinctrl-names: the pin control state names. Should contain "default". > + - pinctrl-0: should contain the default pinctrl states. > + - #address-cells: should be set to 1. > + - #size-cells: should be set to 0. > + > +Required children nodes: > + Children nodes are encoding available output ports and their connections > + to external devices using the OF graph reprensentation (see ../graph.txt). > + At least one port node is required. Are the connections configurable at runtime? Does the SoC have IP blocks for HDMI or other types of outputs or does it provide only RGB output to external blocks? When you say "at least one port", how are multiple ports going to work if you have only a single display controller? Thierry
On Mon, 6 Oct 2014 12:54:34 +0200 Thierry Reding <thierry.reding@gmail.com> wrote: > On Wed, Oct 01, 2014 at 04:53:03PM +0200, Boris Brezillon wrote: > > From: Boris BREZILLON <boris.brezillon@free-electrons.com> > > > > The Atmel HLCDC (HLCD Controller) IP available on some Atmel SoCs (i.e. > > at91sam9n12, at91sam9x5 family or sama5d3 family) provides a display > > controller device. > > > > The HLCDC block provides a single RGB output port, and only supports LCD > > panels connection to LCD panels for now. > > > > The atmel,panel property link the HLCDC RGB output with the LCD panel > > connected on this port (note that the HLCDC RGB connector implementation > > makes use of the DRM panel framework). > > > > Connection to other external devices (DRM bridges) might be added later by > > mean of a new atmel,xxx (atmel,bridge) property. > > > > Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> > > --- > > .../devicetree/bindings/drm/atmel-hlcdc-dc.txt | 53 ++++++++++++++++++++++ > > 1 file changed, 53 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > > > diff --git a/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > new file mode 100644 > > index 0000000..ebc1a91 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > @@ -0,0 +1,53 @@ > > +Device-Tree bindings for Atmel's HLCDC (High LCD Controller) DRM driver > > + > > +The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device. > > +See ../mfd/atmel-hlcdc.txt for more details. > > + > > +Required properties: > > + - compatible: value should be "atmel,hlcdc-display-controller" > > + - pinctrl-names: the pin control state names. Should contain "default". > > + - pinctrl-0: should contain the default pinctrl states. > > + - #address-cells: should be set to 1. > > + - #size-cells: should be set to 0. > > + > > +Required children nodes: > > + Children nodes are encoding available output ports and their connections > > + to external devices using the OF graph reprensentation (see ../graph.txt). > > + At least one port node is required. > > Are the connections configurable at runtime? Does the SoC have IP blocks > for HDMI or other types of outputs or does it provide only RGB output to > external blocks? No, there's only one RGB output port, but you can connect more than one device on the RGB port (should we call it DPI port ?). Actually Atmel connected an HDMI encoder and an LCD panel connected on the same port on their dev kit. > > When you say "at least one port", how are multiple ports going to work > if you have only a single display controller? No there's only one port for now, I'll rework the last statement. > > Thierry
On Mon, Oct 06, 2014 at 02:14:40PM +0200, Boris Brezillon wrote: > On Mon, 6 Oct 2014 12:54:34 +0200 > Thierry Reding <thierry.reding@gmail.com> wrote: > > > On Wed, Oct 01, 2014 at 04:53:03PM +0200, Boris Brezillon wrote: > > > From: Boris BREZILLON <boris.brezillon@free-electrons.com> > > > > > > The Atmel HLCDC (HLCD Controller) IP available on some Atmel SoCs (i.e. > > > at91sam9n12, at91sam9x5 family or sama5d3 family) provides a display > > > controller device. > > > > > > The HLCDC block provides a single RGB output port, and only supports LCD > > > panels connection to LCD panels for now. > > > > > > The atmel,panel property link the HLCDC RGB output with the LCD panel > > > connected on this port (note that the HLCDC RGB connector implementation > > > makes use of the DRM panel framework). > > > > > > Connection to other external devices (DRM bridges) might be added later by > > > mean of a new atmel,xxx (atmel,bridge) property. > > > > > > Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> > > > --- > > > .../devicetree/bindings/drm/atmel-hlcdc-dc.txt | 53 ++++++++++++++++++++++ > > > 1 file changed, 53 insertions(+) > > > create mode 100644 Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > > > > > diff --git a/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > > new file mode 100644 > > > index 0000000..ebc1a91 > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > > @@ -0,0 +1,53 @@ > > > +Device-Tree bindings for Atmel's HLCDC (High LCD Controller) DRM driver > > > + > > > +The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device. > > > +See ../mfd/atmel-hlcdc.txt for more details. > > > + > > > +Required properties: > > > + - compatible: value should be "atmel,hlcdc-display-controller" > > > + - pinctrl-names: the pin control state names. Should contain "default". > > > + - pinctrl-0: should contain the default pinctrl states. > > > + - #address-cells: should be set to 1. > > > + - #size-cells: should be set to 0. > > > + > > > +Required children nodes: > > > + Children nodes are encoding available output ports and their connections > > > + to external devices using the OF graph reprensentation (see ../graph.txt). > > > + At least one port node is required. > > > > Are the connections configurable at runtime? Does the SoC have IP blocks > > for HDMI or other types of outputs or does it provide only RGB output to > > external blocks? > > No, there's only one RGB output port, but you can connect more than one > device on the RGB port (should we call it DPI port ?). > Actually Atmel connected an HDMI encoder and an LCD panel connected on > the same port on their dev kit. This was discussed in some other thread if I remember correctly. I still think that the HLCDC node should only contain a single output, no matter how many encoders or panels get connected. So the output represents the set of signals that exit the IP block, but what's connected to them on the board is a board-level detail and therefore should go into the board DTS. In the above case of the Atmel devkit, is there any way to control where the signal goes or does it just go to both the panel and HDMI encoder at the same time and it's up to the user to properly configure the output in order to get either HDMI or panel to display anything? Thierry
On Mon, 6 Oct 2014 14:35:06 +0200 Thierry Reding <thierry.reding@gmail.com> wrote: > On Mon, Oct 06, 2014 at 02:14:40PM +0200, Boris Brezillon wrote: > > On Mon, 6 Oct 2014 12:54:34 +0200 > > Thierry Reding <thierry.reding@gmail.com> wrote: > > > > > On Wed, Oct 01, 2014 at 04:53:03PM +0200, Boris Brezillon wrote: > > > > From: Boris BREZILLON <boris.brezillon@free-electrons.com> > > > > > > > > The Atmel HLCDC (HLCD Controller) IP available on some Atmel SoCs (i.e. > > > > at91sam9n12, at91sam9x5 family or sama5d3 family) provides a display > > > > controller device. > > > > > > > > The HLCDC block provides a single RGB output port, and only supports LCD > > > > panels connection to LCD panels for now. > > > > > > > > The atmel,panel property link the HLCDC RGB output with the LCD panel > > > > connected on this port (note that the HLCDC RGB connector implementation > > > > makes use of the DRM panel framework). > > > > > > > > Connection to other external devices (DRM bridges) might be added later by > > > > mean of a new atmel,xxx (atmel,bridge) property. > > > > > > > > Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> > > > > --- > > > > .../devicetree/bindings/drm/atmel-hlcdc-dc.txt | 53 ++++++++++++++++++++++ > > > > 1 file changed, 53 insertions(+) > > > > create mode 100644 Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > > > > > > > diff --git a/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > > > new file mode 100644 > > > > index 0000000..ebc1a91 > > > > --- /dev/null > > > > +++ b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > > > @@ -0,0 +1,53 @@ > > > > +Device-Tree bindings for Atmel's HLCDC (High LCD Controller) DRM driver > > > > + > > > > +The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device. > > > > +See ../mfd/atmel-hlcdc.txt for more details. > > > > + > > > > +Required properties: > > > > + - compatible: value should be "atmel,hlcdc-display-controller" > > > > + - pinctrl-names: the pin control state names. Should contain "default". > > > > + - pinctrl-0: should contain the default pinctrl states. > > > > + - #address-cells: should be set to 1. > > > > + - #size-cells: should be set to 0. > > > > + > > > > +Required children nodes: > > > > + Children nodes are encoding available output ports and their connections > > > > + to external devices using the OF graph reprensentation (see ../graph.txt). > > > > + At least one port node is required. > > > > > > Are the connections configurable at runtime? Does the SoC have IP blocks > > > for HDMI or other types of outputs or does it provide only RGB output to > > > external blocks? > > > > No, there's only one RGB output port, but you can connect more than one > > device on the RGB port (should we call it DPI port ?). > > Actually Atmel connected an HDMI encoder and an LCD panel connected on > > the same port on their dev kit. > > This was discussed in some other thread if I remember correctly. I still > think that the HLCDC node should only contain a single output, no matter > how many encoders or panels get connected. > > So the output represents the set of signals that exit the IP block, but > what's connected to them on the board is a board-level detail and > therefore should go into the board DTS. > > In the above case of the Atmel devkit, is there any way to control where > the signal goes or does it just go to both the panel and HDMI encoder at > the same time and it's up to the user to properly configure the output > in order to get either HDMI or panel to display anything? No there's no way to control where the signal goes. What you can control though, is the activation of the associated encoder/connectors connected on this bus (using dpms). And yes it's up to the user to choose the appropriate mode: - display on only one slave device: in this case you're free to choose any of the mode supported by the slave device - display on all slave devices: in this case you'll have to find a mode (drm_display_mode) and an bus format (video_bus_format) that suits all slave devices
On Mon, Oct 06, 2014 at 03:53:58PM +0200, Boris Brezillon wrote: > On Mon, 6 Oct 2014 14:35:06 +0200 > Thierry Reding <thierry.reding@gmail.com> wrote: > > > On Mon, Oct 06, 2014 at 02:14:40PM +0200, Boris Brezillon wrote: > > > On Mon, 6 Oct 2014 12:54:34 +0200 > > > Thierry Reding <thierry.reding@gmail.com> wrote: > > > > > > > On Wed, Oct 01, 2014 at 04:53:03PM +0200, Boris Brezillon wrote: > > > > > From: Boris BREZILLON <boris.brezillon@free-electrons.com> > > > > > > > > > > The Atmel HLCDC (HLCD Controller) IP available on some Atmel SoCs (i.e. > > > > > at91sam9n12, at91sam9x5 family or sama5d3 family) provides a display > > > > > controller device. > > > > > > > > > > The HLCDC block provides a single RGB output port, and only supports LCD > > > > > panels connection to LCD panels for now. > > > > > > > > > > The atmel,panel property link the HLCDC RGB output with the LCD panel > > > > > connected on this port (note that the HLCDC RGB connector implementation > > > > > makes use of the DRM panel framework). > > > > > > > > > > Connection to other external devices (DRM bridges) might be added later by > > > > > mean of a new atmel,xxx (atmel,bridge) property. > > > > > > > > > > Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> > > > > > --- > > > > > .../devicetree/bindings/drm/atmel-hlcdc-dc.txt | 53 ++++++++++++++++++++++ > > > > > 1 file changed, 53 insertions(+) > > > > > create mode 100644 Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > > > > new file mode 100644 > > > > > index 0000000..ebc1a91 > > > > > --- /dev/null > > > > > +++ b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > > > > @@ -0,0 +1,53 @@ > > > > > +Device-Tree bindings for Atmel's HLCDC (High LCD Controller) DRM driver > > > > > + > > > > > +The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device. > > > > > +See ../mfd/atmel-hlcdc.txt for more details. > > > > > + > > > > > +Required properties: > > > > > + - compatible: value should be "atmel,hlcdc-display-controller" > > > > > + - pinctrl-names: the pin control state names. Should contain "default". > > > > > + - pinctrl-0: should contain the default pinctrl states. > > > > > + - #address-cells: should be set to 1. > > > > > + - #size-cells: should be set to 0. > > > > > + > > > > > +Required children nodes: > > > > > + Children nodes are encoding available output ports and their connections > > > > > + to external devices using the OF graph reprensentation (see ../graph.txt). > > > > > + At least one port node is required. > > > > > > > > Are the connections configurable at runtime? Does the SoC have IP blocks > > > > for HDMI or other types of outputs or does it provide only RGB output to > > > > external blocks? > > > > > > No, there's only one RGB output port, but you can connect more than one > > > device on the RGB port (should we call it DPI port ?). > > > Actually Atmel connected an HDMI encoder and an LCD panel connected on > > > the same port on their dev kit. > > > > This was discussed in some other thread if I remember correctly. I still > > think that the HLCDC node should only contain a single output, no matter > > how many encoders or panels get connected. > > > > So the output represents the set of signals that exit the IP block, but > > what's connected to them on the board is a board-level detail and > > therefore should go into the board DTS. > > > > In the above case of the Atmel devkit, is there any way to control where > > the signal goes or does it just go to both the panel and HDMI encoder at > > the same time and it's up to the user to properly configure the output > > in order to get either HDMI or panel to display anything? > > No there's no way to control where the signal goes. > What you can control though, is the activation of the associated > encoder/connectors connected on this bus (using dpms). But the bus is really only the CRTC, so using DPMS for this is not how it's usually done in DRM. Can't you model both outputs as separate encoders and then attach them to the CRTC? This should work automatically for the framebuffer console and any userspace that can talk KMS. Perhaps that's already what's being done and I misunderstand what you're saying. I should go back to reviewing the DRM driver. I started this morning, then got interrupted by other things. Thierry
On Mon, 6 Oct 2014 16:26:10 +0200 Thierry Reding <thierry.reding@gmail.com> wrote: > On Mon, Oct 06, 2014 at 03:53:58PM +0200, Boris Brezillon wrote: > > On Mon, 6 Oct 2014 14:35:06 +0200 > > Thierry Reding <thierry.reding@gmail.com> wrote: > > > > > On Mon, Oct 06, 2014 at 02:14:40PM +0200, Boris Brezillon wrote: > > > > On Mon, 6 Oct 2014 12:54:34 +0200 > > > > Thierry Reding <thierry.reding@gmail.com> wrote: > > > > > > > > > On Wed, Oct 01, 2014 at 04:53:03PM +0200, Boris Brezillon wrote: > > > > > > From: Boris BREZILLON <boris.brezillon@free-electrons.com> > > > > > > > > > > > > The Atmel HLCDC (HLCD Controller) IP available on some Atmel SoCs (i.e. > > > > > > at91sam9n12, at91sam9x5 family or sama5d3 family) provides a display > > > > > > controller device. > > > > > > > > > > > > The HLCDC block provides a single RGB output port, and only supports LCD > > > > > > panels connection to LCD panels for now. > > > > > > > > > > > > The atmel,panel property link the HLCDC RGB output with the LCD panel > > > > > > connected on this port (note that the HLCDC RGB connector implementation > > > > > > makes use of the DRM panel framework). > > > > > > > > > > > > Connection to other external devices (DRM bridges) might be added later by > > > > > > mean of a new atmel,xxx (atmel,bridge) property. > > > > > > > > > > > > Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> > > > > > > --- > > > > > > .../devicetree/bindings/drm/atmel-hlcdc-dc.txt | 53 ++++++++++++++++++++++ > > > > > > 1 file changed, 53 insertions(+) > > > > > > create mode 100644 Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > > > > > new file mode 100644 > > > > > > index 0000000..ebc1a91 > > > > > > --- /dev/null > > > > > > +++ b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > > > > > > @@ -0,0 +1,53 @@ > > > > > > +Device-Tree bindings for Atmel's HLCDC (High LCD Controller) DRM driver > > > > > > + > > > > > > +The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device. > > > > > > +See ../mfd/atmel-hlcdc.txt for more details. > > > > > > + > > > > > > +Required properties: > > > > > > + - compatible: value should be "atmel,hlcdc-display-controller" > > > > > > + - pinctrl-names: the pin control state names. Should contain "default". > > > > > > + - pinctrl-0: should contain the default pinctrl states. > > > > > > + - #address-cells: should be set to 1. > > > > > > + - #size-cells: should be set to 0. > > > > > > + > > > > > > +Required children nodes: > > > > > > + Children nodes are encoding available output ports and their connections > > > > > > + to external devices using the OF graph reprensentation (see ../graph.txt). > > > > > > + At least one port node is required. > > > > > > > > > > Are the connections configurable at runtime? Does the SoC have IP blocks > > > > > for HDMI or other types of outputs or does it provide only RGB output to > > > > > external blocks? > > > > > > > > No, there's only one RGB output port, but you can connect more than one > > > > device on the RGB port (should we call it DPI port ?). > > > > Actually Atmel connected an HDMI encoder and an LCD panel connected on > > > > the same port on their dev kit. > > > > > > This was discussed in some other thread if I remember correctly. I still > > > think that the HLCDC node should only contain a single output, no matter > > > how many encoders or panels get connected. > > > > > > So the output represents the set of signals that exit the IP block, but > > > what's connected to them on the board is a board-level detail and > > > therefore should go into the board DTS. > > > > > > In the above case of the Atmel devkit, is there any way to control where > > > the signal goes or does it just go to both the panel and HDMI encoder at > > > the same time and it's up to the user to properly configure the output > > > in order to get either HDMI or panel to display anything? > > > > No there's no way to control where the signal goes. > > What you can control though, is the activation of the associated > > encoder/connectors connected on this bus (using dpms). > > But the bus is really only the CRTC, so using DPMS for this is not how > it's usually done in DRM. Can't you model both outputs as separate > encoders and then attach them to the CRTC? This should work > automatically for the framebuffer console and any userspace that can > talk KMS. That's exactly what I'm proposing, except there's a layer in between handling the video bus format configuration. I just sent you an RFC, proposing an implementation of the DPI/raw-RGB bus layer. > > Perhaps that's already what's being done and I misunderstand what you're > saying. I should go back to reviewing the DRM driver. I started this > morning, then got interrupted by other things. No problem. I'm glad to see that things are eventually moving on.
diff --git a/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt new file mode 100644 index 0000000..ebc1a91 --- /dev/null +++ b/Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt @@ -0,0 +1,53 @@ +Device-Tree bindings for Atmel's HLCDC (High LCD Controller) DRM driver + +The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device. +See ../mfd/atmel-hlcdc.txt for more details. + +Required properties: + - compatible: value should be "atmel,hlcdc-display-controller" + - pinctrl-names: the pin control state names. Should contain "default". + - pinctrl-0: should contain the default pinctrl states. + - #address-cells: should be set to 1. + - #size-cells: should be set to 0. + +Required children nodes: + Children nodes are encoding available output ports and their connections + to external devices using the OF graph reprensentation (see ../graph.txt). + At least one port node is required. + +Example: + + hlcdc: hlcdc@f0030000 { + compatible = "atmel,sama5d3-hlcdc"; + reg = <0xf0030000 0x2000>; + interrupts = <36 IRQ_TYPE_LEVEL_HIGH 0>; + clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>; + clock-names = "periph_clk","sys_clk", "slow_clk"; + status = "disabled"; + + hlcdc-display-controller { + compatible = "atmel,hlcdc-display-controller"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>; + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + + hlcdc_panel_output: endpoint@0 { + reg = <0>; + remote-endpoint = <&panel_input>; + }; + }; + }; + + hlcdc_pwm: hlcdc-pwm { + compatible = "atmel,hlcdc-pwm"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_lcd_pwm>; + #pwm-cells = <3>; + }; + };