All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris BREZILLON <boris.brezillon@free-electrons.com>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: Ludovic Desroches <ludovic.desroches@atmel.com>,
	Nicolas Ferre <nicolas.ferre@atmel.com>,
	Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
	Alexandre Belloni <alexandre.belloni@free-electrons.com>,
	Andrew Victor <linux@maxim.org.za>,
	David Airlie <airlied@linux.ie>,
	dri-devel@lists.freedesktop.org, linux-pwm@vger.kernel.org,
	Samuel Ortiz <sameo@linux.intel.com>,
	Lee Jones <lee.jones@linaro.org>, Rob Clark <robdclark@gmail.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Mark Rutland <mark.rutland@arm.com>,
	devicetree@vger.kernel.org, Pawel Moll <pawel.moll@arm.com>,
	Ian Campbell <ijc+devicetree@hellion.org.uk>,
	linux-kernel@vger.kernel.org, Rob Herring <robh+dt@kernel.org>,
	Bo Shen <voice.shen@atmel.com>, Kumar Gala <galak@codeaurora.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v4 00/11] drm: add support for Atmel HLCDC Display Controller
Date: Thu, 21 Aug 2014 15:30:58 +0200	[thread overview]
Message-ID: <20140821153058.05cbc8b0@bbrezillon> (raw)
In-Reply-To: <20140821131552.GA19293@ulmo.nvidia.com>

On Thu, 21 Aug 2014 15:16:08 +0200
Thierry Reding <thierry.reding@gmail.com> wrote:

> On Thu, Aug 21, 2014 at 03:06:00PM +0200, Boris BREZILLON wrote:
> > On Thu, 21 Aug 2014 11:52:03 +0200
> > Thierry Reding <thierry.reding@gmail.com> wrote:
> > 
> > > On Thu, Aug 21, 2014 at 11:41:59AM +0200, Boris BREZILLON wrote:
> > > > On Thu, 21 Aug 2014 11:04:07 +0200
> > > > Thierry Reding <thierry.reding@gmail.com> wrote:
> > > > 
> > > > > On Thu, Aug 21, 2014 at 10:37:06AM +0200, Boris BREZILLON wrote:
> > > > > > Hi Ludovic,
> > > > > > 
> > > > > > On Thu, 21 Aug 2014 10:16:19 +0200
> > > > > > Ludovic Desroches <ludovic.desroches@atmel.com> wrote:
> > > > > > 
> > > > > > > Hi Boris,
> > > > > > > 
> > > > > > > You can add
> > > > > > > 
> > > > > > > Tested-by: Ludovic Desroches <ludovic.desroches@atmel.com>
> > > > > > 
> > > > > > Thanks for testing this driver.
> > > > > > 
> > > > > > > 
> > > > > > > Only one issue but not related to your patches, you can't display
> > > > > > > quickly the bootup logo since the panel detection takes too much
> > > > > > > time.
> > > > > > 
> > > > > > Yes, actually this is related to the device probe order: the
> > > > > > hlcdc-display-controller device is probed before the simple-panel, thus
> > > > > > nothing is detected on the RGB connector (I use of_drm_find_panel to
> > > > > > check for panel availability) when the display controller is
> > > > > > instantiated. I rely on the default polling infrastructure provided by
> > > > > > the DRM/KMS framework which polls for a new connector every 10s, and
> > > > > > this is far more than you kernel boot time.
> > > > > > 
> > > > > > Do anyone see a solution to reduce this delay (without changing the
> > > > > > polling interval). I thought we could add a notifier infrastructure to
> > > > > > the DRM panel framework, but I'm not sure this is how you want things
> > > > > > done...
> > > > > 
> > > > > Other drivers return -EPROBE_DEFER when a panel hasn't been registered
> > > > > yet. This will automatically take care of ordering things in a way that
> > > > > DRM/KMS will only be initialized after the panel has been probed.
> > > > 
> > > > Actually I'd like to avoid doing this with a deferred probe, because,
> > > > AFAIU, the remote endpoint is not tightly linked with the display
> > > > controller driver (I mean the display controller can still be
> > > > initialized without having a display connected on it).
> > > > Moreover the atmel dev kit I'm using has an HDMI bridge connected on
> > > > the same RGB connector and I'd like to use it in a near future.
> > > > Returning -EPROBE_DEFER in case of several devices connected on the
> > > > same connector implies that I'll have to wait for all the remote
> > > > end-points to be available before my display controller could be
> > > > instantiated.
> > > > 
> > > > While this could be acceptable when all drivers are statically linked
> > > > in the kernel, it might be problematic when you're using modules,
> > > > meaning that you won't be able to display anything on your LCD panel
> > > > until your HDMI bridge module has been loaded.
> > > 
> > > No. HDMI should be using proper hotplugging anyway, hence it should be
> > > always be loaded anyway. You're in for a world of pain if you think you
> > > can run DRM with a driver that's composed of separate kernel modules.
> > 
> > I was talking about the external RGB to HDMI encoder, should the driver
> > for this encoder (which is not on On Chip block) be compiled
> > statically too ?
> > 
> > > 
> > > Also if you don't want to use deferred probe, then you're in for the
> > > full hotplugging panel dance and that implies that you need to fix a
> > > bunch of things in DRM (one being the framebuffer console instantiation
> > > that I referred to in the other thread).
> > 
> > For now, I wait until there is a device connected on the RGB connector
> > (connector status set to connector_status_connected) before creating an
> > fbdev. It might not be the cleanest way to solve this issue, but it
> > works :-).
> 
> Yeah, I guess that's one way to do it. But it's tricky to get right when
> you have several outputs. Which one should be considered the primary and
> trigger fbdev creation?

I take the first valid one :D (which indeed is not really reliable when
you have several output devices). I guess marking one output as the
primary output in the DT is not an acceptable solution either because
it describes a configuration rather than an HW capability.

Still opened to any suggestions regarding this issue ;-).

> 
> > > You also can't be using the
> > > current device tree bindings because they all assume a dependency from
> > > the display controller/output to the panel. For hotplugging you'd need
> > > the dependency the other way around (the panel needs to refer to the
> > > output by phandle).
> > 
> > Here [1] is a proposal for notification support in the drm_panel
> > infrastructure (which is not that complicated), and here [2] is how
> > I use it in my atmel-hlcdc driver to generate hotplug events.
> > 
> > Let me know if you want me to submit a proper patch series...
> > 
> > Best Regards,
> > 
> > Boris
> > 
> > [1]http://code.bulix.org/scq4g3-86804
> > [2]http://code.bulix.org/7dg501-86805
> 
> Those look interesting. Any chance you could look into how to do the
> same without resorting to notifiers?

Sure, it should be pretty easy too.

I also had a look at the component framework, but I'm not sure it
applies in this context. AFAIU it is designed to delay a master device
registration until all it's slaves are ready to act upon.


-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: boris.brezillon@free-electrons.com (Boris BREZILLON)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 00/11] drm: add support for Atmel HLCDC Display Controller
Date: Thu, 21 Aug 2014 15:30:58 +0200	[thread overview]
Message-ID: <20140821153058.05cbc8b0@bbrezillon> (raw)
In-Reply-To: <20140821131552.GA19293@ulmo.nvidia.com>

On Thu, 21 Aug 2014 15:16:08 +0200
Thierry Reding <thierry.reding@gmail.com> wrote:

> On Thu, Aug 21, 2014 at 03:06:00PM +0200, Boris BREZILLON wrote:
> > On Thu, 21 Aug 2014 11:52:03 +0200
> > Thierry Reding <thierry.reding@gmail.com> wrote:
> > 
> > > On Thu, Aug 21, 2014 at 11:41:59AM +0200, Boris BREZILLON wrote:
> > > > On Thu, 21 Aug 2014 11:04:07 +0200
> > > > Thierry Reding <thierry.reding@gmail.com> wrote:
> > > > 
> > > > > On Thu, Aug 21, 2014 at 10:37:06AM +0200, Boris BREZILLON wrote:
> > > > > > Hi Ludovic,
> > > > > > 
> > > > > > On Thu, 21 Aug 2014 10:16:19 +0200
> > > > > > Ludovic Desroches <ludovic.desroches@atmel.com> wrote:
> > > > > > 
> > > > > > > Hi Boris,
> > > > > > > 
> > > > > > > You can add
> > > > > > > 
> > > > > > > Tested-by: Ludovic Desroches <ludovic.desroches@atmel.com>
> > > > > > 
> > > > > > Thanks for testing this driver.
> > > > > > 
> > > > > > > 
> > > > > > > Only one issue but not related to your patches, you can't display
> > > > > > > quickly the bootup logo since the panel detection takes too much
> > > > > > > time.
> > > > > > 
> > > > > > Yes, actually this is related to the device probe order: the
> > > > > > hlcdc-display-controller device is probed before the simple-panel, thus
> > > > > > nothing is detected on the RGB connector (I use of_drm_find_panel to
> > > > > > check for panel availability) when the display controller is
> > > > > > instantiated. I rely on the default polling infrastructure provided by
> > > > > > the DRM/KMS framework which polls for a new connector every 10s, and
> > > > > > this is far more than you kernel boot time.
> > > > > > 
> > > > > > Do anyone see a solution to reduce this delay (without changing the
> > > > > > polling interval). I thought we could add a notifier infrastructure to
> > > > > > the DRM panel framework, but I'm not sure this is how you want things
> > > > > > done...
> > > > > 
> > > > > Other drivers return -EPROBE_DEFER when a panel hasn't been registered
> > > > > yet. This will automatically take care of ordering things in a way that
> > > > > DRM/KMS will only be initialized after the panel has been probed.
> > > > 
> > > > Actually I'd like to avoid doing this with a deferred probe, because,
> > > > AFAIU, the remote endpoint is not tightly linked with the display
> > > > controller driver (I mean the display controller can still be
> > > > initialized without having a display connected on it).
> > > > Moreover the atmel dev kit I'm using has an HDMI bridge connected on
> > > > the same RGB connector and I'd like to use it in a near future.
> > > > Returning -EPROBE_DEFER in case of several devices connected on the
> > > > same connector implies that I'll have to wait for all the remote
> > > > end-points to be available before my display controller could be
> > > > instantiated.
> > > > 
> > > > While this could be acceptable when all drivers are statically linked
> > > > in the kernel, it might be problematic when you're using modules,
> > > > meaning that you won't be able to display anything on your LCD panel
> > > > until your HDMI bridge module has been loaded.
> > > 
> > > No. HDMI should be using proper hotplugging anyway, hence it should be
> > > always be loaded anyway. You're in for a world of pain if you think you
> > > can run DRM with a driver that's composed of separate kernel modules.
> > 
> > I was talking about the external RGB to HDMI encoder, should the driver
> > for this encoder (which is not on On Chip block) be compiled
> > statically too ?
> > 
> > > 
> > > Also if you don't want to use deferred probe, then you're in for the
> > > full hotplugging panel dance and that implies that you need to fix a
> > > bunch of things in DRM (one being the framebuffer console instantiation
> > > that I referred to in the other thread).
> > 
> > For now, I wait until there is a device connected on the RGB connector
> > (connector status set to connector_status_connected) before creating an
> > fbdev. It might not be the cleanest way to solve this issue, but it
> > works :-).
> 
> Yeah, I guess that's one way to do it. But it's tricky to get right when
> you have several outputs. Which one should be considered the primary and
> trigger fbdev creation?

I take the first valid one :D (which indeed is not really reliable when
you have several output devices). I guess marking one output as the
primary output in the DT is not an acceptable solution either because
it describes a configuration rather than an HW capability.

Still opened to any suggestions regarding this issue ;-).

> 
> > > You also can't be using the
> > > current device tree bindings because they all assume a dependency from
> > > the display controller/output to the panel. For hotplugging you'd need
> > > the dependency the other way around (the panel needs to refer to the
> > > output by phandle).
> > 
> > Here [1] is a proposal for notification support in the drm_panel
> > infrastructure (which is not that complicated), and here [2] is how
> > I use it in my atmel-hlcdc driver to generate hotplug events.
> > 
> > Let me know if you want me to submit a proper patch series...
> > 
> > Best Regards,
> > 
> > Boris
> > 
> > [1]http://code.bulix.org/scq4g3-86804
> > [2]http://code.bulix.org/7dg501-86805
> 
> Those look interesting. Any chance you could look into how to do the
> same without resorting to notifiers?

Sure, it should be pretty easy too.

I also had a look at the component framework, but I'm not sure it
applies in this context. AFAIU it is designed to delay a master device
registration until all it's slaves are ready to act upon.


-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

  reply	other threads:[~2014-08-21 13:31 UTC|newest]

Thread overview: 103+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-22 13:11 [PATCH v4 00/11] drm: add support for Atmel HLCDC Display Controller Boris BREZILLON
2014-07-22 13:11 ` Boris BREZILLON
2014-07-22 13:11 ` Boris BREZILLON
2014-07-22 13:11 ` [PATCH v4 01/11] mfd: add atmel-hlcdc driver Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11 ` [PATCH v4 02/11] mfd: add documentation for atmel-hlcdc DT bindings Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 14:32   ` Varka Bhadram
2014-07-22 14:32     ` Varka Bhadram
2014-07-22 13:11 ` [PATCH v4 03/11] pwm: add support for atmel-hlcdc-pwm device Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11 ` [PATCH v4 04/11] pwm: add DT bindings documentation for atmel-hlcdc-pwm driver Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 14:36   ` Varka Bhadram
2014-07-22 14:36     ` Varka Bhadram
2014-07-22 13:11 ` [PATCH v4 05/11] drm: add Atmel HLCDC Display Controller support Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11 ` [PATCH v4 06/11] drm: add DT bindings documentation for atmel-hlcdc-dc driver Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11 ` [PATCH v4 07/11] ARM: AT91/dt: split sama5d3 lcd pin definitions to match RGB mode configs Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11 ` [PATCH v4 08/11] ARM: AT91/dt: add alternative pin muxing for sama5d3 lcd pins Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11 ` [PATCH v4 09/11] ARM: at91/dt: define the HLCDC node available on sama5d3 SoCs Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11 ` [PATCH v4 10/11] ARM: at91/dt: add LCD panel description to sama5d3xdm.dtsi Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11 ` [PATCH v4 11/11] ARM: at91/dt: enable the LCD panel on sama5d3xek boards Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-07-22 13:11   ` Boris BREZILLON
2014-08-21  8:16 ` [PATCH v4 00/11] drm: add support for Atmel HLCDC Display Controller Ludovic Desroches
2014-08-21  8:16   ` Ludovic Desroches
2014-08-21  8:16   ` Ludovic Desroches
2014-08-21  8:37   ` Boris BREZILLON
2014-08-21  8:37     ` Boris BREZILLON
2014-08-21  8:37     ` Boris BREZILLON
2014-08-21  9:04     ` Thierry Reding
2014-08-21  9:04       ` Thierry Reding
2014-08-21  9:04       ` Thierry Reding
2014-08-21  9:41       ` Boris BREZILLON
2014-08-21  9:41         ` Boris BREZILLON
2014-08-21  9:41         ` Boris BREZILLON
2014-08-21  9:49         ` Boris BREZILLON
2014-08-21  9:49           ` Boris BREZILLON
2014-08-21  9:49           ` Boris BREZILLON
2014-08-21  9:52         ` Thierry Reding
2014-08-21  9:52           ` Thierry Reding
2014-08-21  9:52           ` Thierry Reding
2014-08-21 10:32           ` Andrzej Hajda
2014-08-21 10:32             ` Andrzej Hajda
2014-08-21 13:21             ` Thierry Reding
2014-08-21 13:21               ` Thierry Reding
2014-08-21 15:04               ` Andrzej Hajda
2014-08-21 15:04                 ` Andrzej Hajda
2014-08-21 15:30                 ` Boris BREZILLON
2014-08-21 15:30                   ` Boris BREZILLON
2014-08-21 15:30                   ` Boris BREZILLON
2014-08-21 16:10                   ` Andrzej Hajda
2014-08-21 16:10                     ` Andrzej Hajda
2014-08-21 16:10                     ` Andrzej Hajda
2014-08-21 13:06           ` Boris BREZILLON
2014-08-21 13:06             ` Boris BREZILLON
2014-08-21 13:16             ` Thierry Reding
2014-08-21 13:16               ` Thierry Reding
2014-08-21 13:16               ` Thierry Reding
2014-08-21 13:30               ` Boris BREZILLON [this message]
2014-08-21 13:30                 ` Boris BREZILLON
2014-08-21 14:32               ` Boris BREZILLON
2014-08-21 14:32                 ` Boris BREZILLON
2014-08-21 14:32                 ` Boris BREZILLON
2014-08-25 12:45               ` Daniel Vetter
2014-08-25 12:45                 ` Daniel Vetter
2014-08-25 12:45                 ` Daniel Vetter
2014-08-21 17:08             ` Laurent Pinchart
2014-08-21 17:08               ` Laurent Pinchart
2014-08-21 17:08               ` Laurent Pinchart
2014-08-21 17:26               ` Boris BREZILLON
2014-08-21 17:26                 ` Boris BREZILLON
2014-08-25 23:39                 ` Laurent Pinchart
2014-08-25 23:39                   ` Laurent Pinchart
2014-08-27  7:52                   ` Boris BREZILLON
2014-08-27  7:52                     ` Boris BREZILLON
2014-08-28 12:19                     ` Laurent Pinchart
2014-08-28 12:19                       ` Laurent Pinchart
2014-08-28 12:19                       ` Laurent Pinchart
2014-08-28 14:21                       ` Boris BREZILLON
2014-08-28 14:21                         ` Boris BREZILLON
2014-08-28 14:21                         ` Boris BREZILLON
2014-08-28 22:52                         ` Laurent Pinchart
2014-08-28 22:52                           ` Laurent Pinchart
2014-08-21 10:16         ` Andrzej Hajda
2014-08-21 10:16           ` Andrzej Hajda
2014-08-21 10:16           ` Andrzej Hajda

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=20140821153058.05cbc8b0@bbrezillon \
    --to=boris.brezillon@free-electrons.com \
    --cc=airlied@linux.ie \
    --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=laurent.pinchart@ideasonboard.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=linux@maxim.org.za \
    --cc=ludovic.desroches@atmel.com \
    --cc=mark.rutland@arm.com \
    --cc=nicolas.ferre@atmel.com \
    --cc=pawel.moll@arm.com \
    --cc=plagnioj@jcrosoft.com \
    --cc=robdclark@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=sameo@linux.intel.com \
    --cc=thierry.reding@gmail.com \
    --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.