All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	devicetree@vger.kernel.org,
	Nicolas Ferre <nicolas.ferre@atmel.com>,
	dri-devel@lists.freedesktop.org,
	Alexandre Belloni <alexandre.belloni@free-electrons.com>,
	Bo Shen <voice.shen@atmel.com>, Lee Jones <lee.jones@linaro.org>,
	Jean-Jacques Hiblot <jjhiblot@traphandler.com>,
	Samuel Ortiz <sameo@linux.intel.com>,
	Tim Niemeyer <tim.niemeyer@corscience.de>,
	Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
	linux-pwm@vger.kernel.org, Pawel Moll <pawel.moll@arm.com>,
	Ian Campbell <ijc+devicetree@hellion.org.uk>,
	Rob Herring <robh+dt@kernel.org>,
	Andrew Victor <linux@maxim.org.za>,
	linux-arm-kernel@lists.infradead.org,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Kumar Gala <galak@codeaurora.org>
Subject: Re: [RESEND PATCH v3 06/11] drm: add DT bindings documentation for atmel-hlcdc-dc driver
Date: Tue, 15 Jul 2014 13:07:58 +0200	[thread overview]
Message-ID: <1484511.NijXCAc7Hx@avalon> (raw)
In-Reply-To: <20140715105253.GE6616@ulmo>


[-- Attachment #1.1: Type: text/plain, Size: 5039 bytes --]

Hi Thierry,

On Tuesday 15 July 2014 12:52:54 Thierry Reding wrote:
> On Tue, Jul 15, 2014 at 12:43:02PM +0200, Laurent Pinchart wrote:
> > On Tuesday 15 July 2014 12:37:19 Thierry Reding wrote:
> >> On Tue, Jul 15, 2014 at 12:20:02PM +0200, Laurent Pinchart wrote:
> >>> On Tuesday 15 July 2014 12:06:19 Boris BREZILLON wrote:
> >>>> On Mon, 14 Jul 2014 12:05:43 +0200 Thierry Reding wrote:
> >>>>> On Mon, Jul 07, 2014 at 06:42:59PM +0200, Boris BREZILLON wrote:
> >>>>>> 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     | 59 ++++++++++
> >>>>>>  1 file changed, 59 insertions(+)
> >>>>>>  create mode 100644
> >>>>>>  Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt
> >>> 
> >>> [snip]
> >>> 
> >>>>>> + - atmel,panel: Should contain a phandle with 2 parameters.
> >>>>>> +   The first cell is a phandle to a DRM panel device
> >>>>>> +   The second cell encodes the RGB mode, which can take the
> >>>>>> following values:
> >>>>>> +   * 0: RGB444
> >>>>>> +   * 1: RGB565
> >>>>>> +   * 2: RGB666
> >>>>>> +   * 3: RGB888
> >>>>> 
> >>>>> These are properties of the panel and should be obtained from the
> >>>> panel directly rather than an additional cell in this specifier.
> >>>> 
> >>>> Okay.
> >>>> What's the preferred way of doing this ?
> >>>> What about defining an rgb-mode property in the panel node.
> >>> 
> >>> You could do that, but it won't help you much, as the HLCDC driver
> >>> must not parse properties from the panel node. You should instead
> >>> extend the drm_panel API with a function to retrieve panel properties.
> >>> The HLCDC driver will then query the panel driver at runtime for the
> >>> interface type. The panel driver will get the information from
> >>> hardcoded data in the driver, from DT or possibly in some cases by
> >>> querying the panel hardware directly.
> >> 
> >> My preference for this would be that we either add this to some existing
> >> structure (struct drm_display_info seems like a good candidate) or if
> >> the number of parameters grows out of hands, then maybe even introduce a
> >> new type of device that's specific for the interface. DRM panels are an
> >> abstraction for panels, that is, interface-agnostic, and if we start
> >> exposing interface specific parameters things will start to become very
> >> unwieldy.
> > 
> > I agree with the goal of keeping drm_panel interface-agnostic. However,
> > one way or another, interface parameters will need to be communicated
> > between the panel driver and the controller driver. My preference, if we
> > need to extend the number and/or scope of parameters beyond what
> > drm_display_info could reasonably contain, would be to implement a new
> > drm_panel operation to query/configure interface parameters, using a
> > structure that contains the interface type and a union of type-specific
> > structures. This would keep the API generic in the sense of not requiring
> > explicit knowledge of all interfaces in the drivers, while offering the
> > flexibility we need with a way to easily detect the interface type at
> > runtime and react on unknown/unsupported types.
>
> That's exactly what I was hoping could be avoided. If instead we modeled
> the interface type as a bus, we could for example have an lvds_bus along
> with an lvds_device and then use that as the natural place to store
> these properties. Much like we do for DSI.

And I believe that's what we should avoid ;-) First of all, let's not forget 
that Linux models control busses, not data busses. DSI is a special case as it 
combines the control and data busses, but in the general case the same 
implementation isn't possible. An LVDS panel controlled through I2C needs to 
be an I2C device sitting on an I2C bus.

Then, I believe it would make all drivers simpler if we had a single object 
type to deal with, with proper abstractions for bus types. A drm_panel that 
can model panels regardless of the data bus type, with one operation that 
conveys bus-specific information, makes storing the objects and communicating 
with them simpler than having to deal with different kind of devices.

-- 
Regards,

Laurent Pinchart

[-- Attachment #1.2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: laurent.pinchart@ideasonboard.com (Laurent Pinchart)
To: linux-arm-kernel@lists.infradead.org
Subject: [RESEND PATCH v3 06/11] drm: add DT bindings documentation for atmel-hlcdc-dc driver
Date: Tue, 15 Jul 2014 13:07:58 +0200	[thread overview]
Message-ID: <1484511.NijXCAc7Hx@avalon> (raw)
In-Reply-To: <20140715105253.GE6616@ulmo>

Hi Thierry,

On Tuesday 15 July 2014 12:52:54 Thierry Reding wrote:
> On Tue, Jul 15, 2014 at 12:43:02PM +0200, Laurent Pinchart wrote:
> > On Tuesday 15 July 2014 12:37:19 Thierry Reding wrote:
> >> On Tue, Jul 15, 2014 at 12:20:02PM +0200, Laurent Pinchart wrote:
> >>> On Tuesday 15 July 2014 12:06:19 Boris BREZILLON wrote:
> >>>> On Mon, 14 Jul 2014 12:05:43 +0200 Thierry Reding wrote:
> >>>>> On Mon, Jul 07, 2014 at 06:42:59PM +0200, Boris BREZILLON wrote:
> >>>>>> 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     | 59 ++++++++++
> >>>>>>  1 file changed, 59 insertions(+)
> >>>>>>  create mode 100644
> >>>>>>  Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt
> >>> 
> >>> [snip]
> >>> 
> >>>>>> + - atmel,panel: Should contain a phandle with 2 parameters.
> >>>>>> +   The first cell is a phandle to a DRM panel device
> >>>>>> +   The second cell encodes the RGB mode, which can take the
> >>>>>> following values:
> >>>>>> +   * 0: RGB444
> >>>>>> +   * 1: RGB565
> >>>>>> +   * 2: RGB666
> >>>>>> +   * 3: RGB888
> >>>>> 
> >>>>> These are properties of the panel and should be obtained from the
> >>>> panel directly rather than an additional cell in this specifier.
> >>>> 
> >>>> Okay.
> >>>> What's the preferred way of doing this ?
> >>>> What about defining an rgb-mode property in the panel node.
> >>> 
> >>> You could do that, but it won't help you much, as the HLCDC driver
> >>> must not parse properties from the panel node. You should instead
> >>> extend the drm_panel API with a function to retrieve panel properties.
> >>> The HLCDC driver will then query the panel driver at runtime for the
> >>> interface type. The panel driver will get the information from
> >>> hardcoded data in the driver, from DT or possibly in some cases by
> >>> querying the panel hardware directly.
> >> 
> >> My preference for this would be that we either add this to some existing
> >> structure (struct drm_display_info seems like a good candidate) or if
> >> the number of parameters grows out of hands, then maybe even introduce a
> >> new type of device that's specific for the interface. DRM panels are an
> >> abstraction for panels, that is, interface-agnostic, and if we start
> >> exposing interface specific parameters things will start to become very
> >> unwieldy.
> > 
> > I agree with the goal of keeping drm_panel interface-agnostic. However,
> > one way or another, interface parameters will need to be communicated
> > between the panel driver and the controller driver. My preference, if we
> > need to extend the number and/or scope of parameters beyond what
> > drm_display_info could reasonably contain, would be to implement a new
> > drm_panel operation to query/configure interface parameters, using a
> > structure that contains the interface type and a union of type-specific
> > structures. This would keep the API generic in the sense of not requiring
> > explicit knowledge of all interfaces in the drivers, while offering the
> > flexibility we need with a way to easily detect the interface type at
> > runtime and react on unknown/unsupported types.
>
> That's exactly what I was hoping could be avoided. If instead we modeled
> the interface type as a bus, we could for example have an lvds_bus along
> with an lvds_device and then use that as the natural place to store
> these properties. Much like we do for DSI.

And I believe that's what we should avoid ;-) First of all, let's not forget 
that Linux models control busses, not data busses. DSI is a special case as it 
combines the control and data busses, but in the general case the same 
implementation isn't possible. An LVDS panel controlled through I2C needs to 
be an I2C device sitting on an I2C bus.

Then, I believe it would make all drivers simpler if we had a single object 
type to deal with, with proper abstractions for bus types. A drm_panel that 
can model panels regardless of the data bus type, with one operation that 
conveys bus-specific information, makes storing the objects and communicating 
with them simpler than having to deal with different kind of devices.

-- 
Regards,

Laurent Pinchart
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140715/a39b1cb9/attachment.sig>

  reply	other threads:[~2014-07-15 11:07 UTC|newest]

Thread overview: 149+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-07 16:42 [RESEND PATCH v3 00/11] drm: add support for Atmel HLCDC Display Controller Boris BREZILLON
2014-07-07 16:42 ` Boris BREZILLON
2014-07-07 16:42 ` [RESEND PATCH v3 01/11] mfd: add atmel-hlcdc driver Boris BREZILLON
2014-07-07 16:42   ` Boris BREZILLON
2014-07-07 16:42 ` [RESEND PATCH v3 02/11] mfd: add documentation for atmel-hlcdc DT bindings Boris BREZILLON
2014-07-07 16:42   ` Boris BREZILLON
2014-07-07 16:42 ` [RESEND PATCH v3 03/11] pwm: add support for atmel-hlcdc-pwm device Boris BREZILLON
2014-07-07 16:42   ` Boris BREZILLON
2014-07-07 16:42 ` [RESEND PATCH v3 04/11] pwm: add DT bindings documentation for atmel-hlcdc-pwm driver Boris BREZILLON
2014-07-07 16:42   ` Boris BREZILLON
2014-07-07 16:42 ` [RESEND PATCH v3 05/11] drm: add Atmel HLCDC Display Controller support Boris BREZILLON
2014-07-07 16:42   ` Boris BREZILLON
2014-07-08  3:45   ` Rob Clark
2014-07-08  7:23     ` Boris BREZILLON
2014-07-08  7:23       ` Boris BREZILLON
2014-07-08 12:49       ` Rob Clark
2014-07-08 12:49         ` Rob Clark
2014-07-08 14:37         ` Boris BREZILLON
2014-07-08 14:37           ` Boris BREZILLON
2014-07-08 15:41           ` Rob Clark
2014-07-08 15:41             ` Rob Clark
2014-07-08 17:08             ` Boris BREZILLON
2014-07-08 17:08               ` Boris BREZILLON
2014-07-08 23:51               ` Matt Roper
2014-07-08 23:51                 ` Matt Roper
2014-07-09  7:14                 ` Boris BREZILLON
2014-07-09  7:14                   ` Boris BREZILLON
2014-07-09 14:02                   ` Daniel Vetter
2014-07-09 14:02                     ` Daniel Vetter
2014-07-09  8:18     ` Boris BREZILLON
2014-07-09  8:18       ` Boris BREZILLON
2014-07-09 11:53       ` Rob Clark
2014-07-09 11:53         ` Rob Clark
2014-07-11 15:17         ` [RFC PATCH] drm: rework flip-work helpers to avoid calling func when the FIFO is full Boris BREZILLON
2014-07-11 15:41           ` Rob Clark
2014-07-11 15:47             ` Boris BREZILLON
2014-07-11 15:57               ` Boris BREZILLON
2014-07-11 16:05               ` Rob Clark
2014-07-12 18:16   ` [RESEND PATCH v3 05/11] drm: add Atmel HLCDC Display Controller support Boris BREZILLON
2014-07-12 18:16     ` Boris BREZILLON
2014-07-12 18:37     ` Rob Clark
2014-07-12 18:37       ` Rob Clark
2014-07-15 11:26       ` Boris BREZILLON
2014-07-15 11:26         ` Boris BREZILLON
2014-07-07 16:42 ` [RESEND PATCH v3 06/11] drm: add DT bindings documentation for atmel-hlcdc-dc driver Boris BREZILLON
2014-07-07 16:42   ` Boris BREZILLON
2014-07-10 11:16   ` Laurent Pinchart
2014-07-10 11:16     ` Laurent Pinchart
2014-07-10 12:56     ` Boris BREZILLON
2014-07-10 12:56       ` Boris BREZILLON
2014-07-11 10:37       ` Laurent Pinchart
2014-07-11 10:37         ` Laurent Pinchart
2014-07-11 12:00         ` Boris BREZILLON
2014-07-11 12:00           ` Boris BREZILLON
2014-07-11 12:19           ` Boris BREZILLON
2014-07-11 12:19             ` Boris BREZILLON
2014-07-14 10:18           ` Thierry Reding
2014-07-14 10:18             ` Thierry Reding
2014-07-15 11:45             ` Boris BREZILLON
2014-07-15 11:45               ` Boris BREZILLON
2014-07-14 10:05   ` Thierry Reding
2014-07-14 10:05     ` Thierry Reding
2014-07-15 10:06     ` Boris BREZILLON
2014-07-15 10:06       ` Boris BREZILLON
2014-07-15 10:20       ` Laurent Pinchart
2014-07-15 10:20         ` Laurent Pinchart
2014-07-15 10:37         ` Thierry Reding
2014-07-15 10:37           ` Thierry Reding
2014-07-15 10:43           ` Laurent Pinchart
2014-07-15 10:43             ` Laurent Pinchart
2014-07-15 10:52             ` Thierry Reding
2014-07-15 10:52               ` Thierry Reding
2014-07-15 11:07               ` Laurent Pinchart [this message]
2014-07-15 11:07                 ` Laurent Pinchart
2014-07-16 13:05                 ` Boris BREZILLON
2014-07-16 13:05                   ` Boris BREZILLON
2014-07-16 13:20                   ` Laurent Pinchart
2014-07-16 13:20                     ` Laurent Pinchart
2014-07-16 13:20                     ` Laurent Pinchart
2014-07-16 13:44                     ` Boris BREZILLON
2014-07-16 13:44                       ` Boris BREZILLON
2014-07-15 12:14               ` Boris BREZILLON
2014-07-15 12:14                 ` Boris BREZILLON
2014-07-15 10:31       ` Thierry Reding
2014-07-15 10:31         ` Thierry Reding
2014-07-18 14:51         ` Boris BREZILLON
2014-07-18 14:51           ` Boris BREZILLON
2014-07-18 15:43           ` Boris BREZILLON
2014-07-18 15:43             ` Boris BREZILLON
2014-07-21  8:59             ` Thierry Reding
2014-07-21  8:59               ` Thierry Reding
2014-07-21  9:24               ` Boris BREZILLON
2014-07-21  9:24                 ` Boris BREZILLON
2014-07-21  9:32                 ` Laurent Pinchart
2014-07-21  9:32                   ` Laurent Pinchart
2014-07-21  9:57                   ` Boris BREZILLON
2014-07-21  9:57                     ` Boris BREZILLON
2014-07-21 12:12                     ` Thierry Reding
2014-07-21 12:12                       ` Thierry Reding
2014-07-21 12:16                       ` Laurent Pinchart
2014-07-21 12:16                         ` Laurent Pinchart
2014-07-21 12:34                         ` Boris BREZILLON
2014-07-21 12:34                           ` Boris BREZILLON
2014-07-21 12:55                           ` Thierry Reding
2014-07-21 12:55                             ` Thierry Reding
2014-07-21 13:22                             ` Laurent Pinchart
2014-07-21 13:22                               ` Laurent Pinchart
2014-07-21 13:30                               ` Thierry Reding
2014-07-21 13:30                                 ` Thierry Reding
2014-07-21 13:43                                 ` Boris BREZILLON
2014-07-21 13:43                                   ` Boris BREZILLON
2014-07-21 13:47                                   ` Laurent Pinchart
2014-07-21 13:47                                     ` Laurent Pinchart
2014-07-21 13:54                                     ` Thierry Reding
2014-07-21 13:54                                       ` Thierry Reding
2014-07-21 14:21                                       ` Boris BREZILLON
2014-07-21 14:21                                         ` Boris BREZILLON
2014-07-21 18:30                                         ` Laurent Pinchart
2014-07-21 18:30                                           ` Laurent Pinchart
2014-07-21 22:04                                           ` Thierry Reding
2014-07-21 22:04                                             ` Thierry Reding
2014-07-21 14:18                                     ` Boris BREZILLON
2014-07-21 14:18                                       ` Boris BREZILLON
2014-07-21 18:32                                       ` Laurent Pinchart
2014-07-21 18:32                                         ` Laurent Pinchart
2014-07-21 17:06                                   ` Russell King - ARM Linux
2014-07-21 17:06                                     ` Russell King - ARM Linux
2014-07-21 22:17                                     ` Thierry Reding
2014-07-21 22:17                                       ` Thierry Reding
2014-07-21 12:15           ` Thierry Reding
2014-07-21 12:15             ` Thierry Reding
2014-07-21 12:33             ` Boris BREZILLON
2014-07-21 12:33               ` Boris BREZILLON
2014-07-21 12:56               ` Thierry Reding
2014-07-21 12:56                 ` Thierry Reding
2014-07-21 13:26                 ` Laurent Pinchart
2014-07-21 13:26                   ` Laurent Pinchart
2014-07-21 13:33                   ` Thierry Reding
2014-07-21 13:33                     ` Thierry Reding
2014-07-07 16:43 ` [RESEND PATCH v3 07/11] ARM: AT91/dt: split sama5d3 lcd pin definitions to match RGB mode configs Boris BREZILLON
2014-07-07 16:43   ` Boris BREZILLON
2014-07-07 16:43 ` [RESEND PATCH v3 08/11] ARM: AT91/dt: add alternative pin muxing for sama5d3 lcd pins Boris BREZILLON
2014-07-07 16:43   ` Boris BREZILLON
2014-07-07 16:43 ` [RESEND PATCH v3 09/11] ARM: at91/dt: define the HLCDC node available on sama5d3 SoCs Boris BREZILLON
2014-07-07 16:43   ` Boris BREZILLON
2014-07-07 16:43 ` [RESEND PATCH v3 10/11] ARM: at91/dt: add LCD panel description to sama5d3xdm.dtsi Boris BREZILLON
2014-07-07 16:43   ` Boris BREZILLON
2014-07-07 16:43 ` [RESEND PATCH v3 11/11] ARM: at91/dt: enable the LCD panel on sama5d3xek boards Boris BREZILLON
2014-07-07 16:43   ` Boris BREZILLON

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1484511.NijXCAc7Hx@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=alexandre.belloni@free-electrons.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=galak@codeaurora.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=jjhiblot@traphandler.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=linux@maxim.org.za \
    --cc=mark.rutland@arm.com \
    --cc=nicolas.ferre@atmel.com \
    --cc=pawel.moll@arm.com \
    --cc=plagnioj@jcrosoft.com \
    --cc=robh+dt@kernel.org \
    --cc=sameo@linux.intel.com \
    --cc=thierry.reding@gmail.com \
    --cc=thomas.petazzoni@free-electrons.com \
    --cc=tim.niemeyer@corscience.de \
    --cc=voice.shen@atmel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.