All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: Thierry Reding <thierry.reding@avionic-design.de>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>,
	Alex Courbot <acourbot@nvidia.com>,
	Stephen Warren <swarren@nvidia.com>,
	Simon Glass <sjg@chromium.org>,
	Grant Likely <grant.likely@secretlab.ca>,
	Rob Herring <rob.herring@calxeda.com>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Anton Vorontsov <cbou@mail.ru>,
	David Woodhouse <dwmw2@infradead.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Leela Krishna Amudala <l.krishna@samsung.com>,
	"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-fbdev@vger.kernel.org" <linux-fbdev@vger.kernel.org>,
	"devicetree-discuss@lists.ozlabs.org"
	<devicetree-discuss@lists.ozlabs.org>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>
Subject: Re: [PATCH v6 1/4] Runtime Interpreted Power Sequences
Date: Thu, 13 Sep 2012 07:50:37 +0000	[thread overview]
Message-ID: <20120913075037.GG6180@pengutronix.de> (raw)
In-Reply-To: <20120913072920.GA11459@avionic-0098.mockup.avionic-design.de>

On Thu, Sep 13, 2012 at 09:29:20AM +0200, Thierry Reding wrote:
> On Thu, Sep 13, 2012 at 10:03:27AM +0300, Tomi Valkeinen wrote:
> > On Thu, 2012-09-13 at 09:00 +0200, Sascha Hauer wrote:
> > > On Thu, Sep 13, 2012 at 09:54:09AM +0300, Tomi Valkeinen wrote:
> > > > On Thu, 2012-09-13 at 15:36 +0900, Alex Courbot wrote:
> > > > > On Thursday 13 September 2012 14:22:57 Tomi Valkeinen wrote:
> > > > >  
> > > > > > However, I fear these board specific things may be quite a bit anything,
> > > > > > so it may well be pwm, gpios and regulators are not enough for them. For
> > > > > > example, there could be an FPGA on the board which requires some
> > > > > > configuration to accomplish the task at hand. It could be rather
> > > > > > difficult to handle it with a generic power sequence.
> > > > > 
> > > > > Right. Note that this framework is supposed to be extended - I would like to 
> > > > > at least add regulator voltage setting, and maybe even support for clocks and 
> > > > > pinmux (but that might be out of place).
> > > > 
> > > > Yes, that's one concern of mine... I already can imagine someone
> > > > suggesting adding conditionals to the power sequence data. Perhaps also
> > > > direct memory read/writes so you can twiddle registers directly. And so
> > > > on. Where's the limit what it should contain? Can we soon write full
> > > > drivers with the DT data? =)
> > > 
> > > I have this concern aswell, that's why I'm sceptical about this patch
> > > set. But what are the alternatives? Adding power code to the drivers and
> > > thus adding board specific code to them is backwards.
> > 
> > As was pointed out in earlier posts in this thread, these are almost
> > always device specific, not board specific.
> > 
> > Do you have examples of board specific power sequences or such?
> 
> It is true that most (perhaps all) power sequences can be associated
> with a specific device, but if we go and implement drivers for these
> kinds of devices we will probably end up with loads of variations of
> the same scheme.
> 
> Lets take display panels as an example. One of the devices that we build
> has gone through two generations so far and both are slightly different
> in how they control the panel backlight: one has an external backlight
> controller, the other has the display controller built into the panel.
> However, from the board's perspective the control of the backlight
> doesn't change, because both devices get the same inputs (an enable pin
> and a PWM) that map to the same pins on the SoC.
> 
> This may not be a very good example because the timing isn't relevant,
> but the basic point is still valid: if we provide a driver for both
> panel devices, the code will be exactly the same. So we end up having to
> refactor to avoid code duplication and use the same driver for a number
> of backlight/panel combinations. Which in itself isn't very bad, but it
> also means that we'll probably get to see a large number of "generic"
> drivers which aren't very generic after all.
> 
> Another problem, which also applies to the case of power-sequences, is
> that often the panel and backlight are not the same device.

Maybe that is the problem that needs to be addressed? They *are* not the
same device, still they are handled in a single platform callback (or
now power sequence). Maybe the amount of combinations dastrically go
down if we really make them two devices.

Most of our panels have:

- A regulator (or gpio) for turning them on

And the backlights have:

- A regulator (or gpio) for turning them on
- A PWM for controlling brightness.

The power sequence for the above is clear: Turn on the panel the panel,
wait until it stabilized and afterwards turn on the backlight.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

WARNING: multiple messages have this Message-ID (diff)
From: Sascha Hauer <s.hauer@pengutronix.de>
To: Thierry Reding <thierry.reding@avionic-design.de>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>,
	Alex Courbot <acourbot@nvidia.com>,
	Stephen Warren <swarren@nvidia.com>,
	Simon Glass <sjg@chromium.org>,
	Grant Likely <grant.likely@secretlab.ca>,
	Rob Herring <rob.herring@calxeda.com>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Anton Vorontsov <cbou@mail.ru>,
	David Woodhouse <dwmw2@infradead.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Leela Krishna Amudala <l.krishna@samsung.com>,
	"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-fbdev@vger.kernel.org" <linux-fbdev@vger.kernel.org>,
	"devicetree-discuss@lists.ozlabs.org"
	<devicetree-discuss@lists.ozlabs.org>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>
Subject: Re: [PATCH v6 1/4] Runtime Interpreted Power Sequences
Date: Thu, 13 Sep 2012 09:50:37 +0200	[thread overview]
Message-ID: <20120913075037.GG6180@pengutronix.de> (raw)
In-Reply-To: <20120913072920.GA11459@avionic-0098.mockup.avionic-design.de>

On Thu, Sep 13, 2012 at 09:29:20AM +0200, Thierry Reding wrote:
> On Thu, Sep 13, 2012 at 10:03:27AM +0300, Tomi Valkeinen wrote:
> > On Thu, 2012-09-13 at 09:00 +0200, Sascha Hauer wrote:
> > > On Thu, Sep 13, 2012 at 09:54:09AM +0300, Tomi Valkeinen wrote:
> > > > On Thu, 2012-09-13 at 15:36 +0900, Alex Courbot wrote:
> > > > > On Thursday 13 September 2012 14:22:57 Tomi Valkeinen wrote:
> > > > >  
> > > > > > However, I fear these board specific things may be quite a bit anything,
> > > > > > so it may well be pwm, gpios and regulators are not enough for them. For
> > > > > > example, there could be an FPGA on the board which requires some
> > > > > > configuration to accomplish the task at hand. It could be rather
> > > > > > difficult to handle it with a generic power sequence.
> > > > > 
> > > > > Right. Note that this framework is supposed to be extended - I would like to 
> > > > > at least add regulator voltage setting, and maybe even support for clocks and 
> > > > > pinmux (but that might be out of place).
> > > > 
> > > > Yes, that's one concern of mine... I already can imagine someone
> > > > suggesting adding conditionals to the power sequence data. Perhaps also
> > > > direct memory read/writes so you can twiddle registers directly. And so
> > > > on. Where's the limit what it should contain? Can we soon write full
> > > > drivers with the DT data? =)
> > > 
> > > I have this concern aswell, that's why I'm sceptical about this patch
> > > set. But what are the alternatives? Adding power code to the drivers and
> > > thus adding board specific code to them is backwards.
> > 
> > As was pointed out in earlier posts in this thread, these are almost
> > always device specific, not board specific.
> > 
> > Do you have examples of board specific power sequences or such?
> 
> It is true that most (perhaps all) power sequences can be associated
> with a specific device, but if we go and implement drivers for these
> kinds of devices we will probably end up with loads of variations of
> the same scheme.
> 
> Lets take display panels as an example. One of the devices that we build
> has gone through two generations so far and both are slightly different
> in how they control the panel backlight: one has an external backlight
> controller, the other has the display controller built into the panel.
> However, from the board's perspective the control of the backlight
> doesn't change, because both devices get the same inputs (an enable pin
> and a PWM) that map to the same pins on the SoC.
> 
> This may not be a very good example because the timing isn't relevant,
> but the basic point is still valid: if we provide a driver for both
> panel devices, the code will be exactly the same. So we end up having to
> refactor to avoid code duplication and use the same driver for a number
> of backlight/panel combinations. Which in itself isn't very bad, but it
> also means that we'll probably get to see a large number of "generic"
> drivers which aren't very generic after all.
> 
> Another problem, which also applies to the case of power-sequences, is
> that often the panel and backlight are not the same device.

Maybe that is the problem that needs to be addressed? They *are* not the
same device, still they are handled in a single platform callback (or
now power sequence). Maybe the amount of combinations dastrically go
down if we really make them two devices.

Most of our panels have:

- A regulator (or gpio) for turning them on

And the backlights have:

- A regulator (or gpio) for turning them on
- A PWM for controlling brightness.

The power sequence for the above is clear: Turn on the panel the panel,
wait until it stabilized and afterwards turn on the backlight.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

  reply	other threads:[~2012-09-13  7:50 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-12  9:57 [PATCH v6 0/4] Runtime Interpreted Power Sequences Alexandre Courbot
2012-09-12  9:57 ` Alexandre Courbot
2012-09-12  9:57 ` Alexandre Courbot
     [not found] ` <1347443867-18868-1-git-send-email-acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-09-12  9:57   ` [PATCH v6 1/4] " Alexandre Courbot
2012-09-12  9:57     ` Alexandre Courbot
2012-09-12  9:57     ` Alexandre Courbot
2012-09-12 22:07     ` Stephen Warren
2012-09-12 22:07       ` Stephen Warren
2012-09-13  6:02       ` Alex Courbot
2012-09-13  6:02         ` Alex Courbot
2012-09-13 15:44         ` Stephen Warren
2012-09-13 15:44           ` Stephen Warren
2012-09-13 15:44           ` Stephen Warren
     [not found]     ` <1347443867-18868-2-git-send-email-acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-09-13  5:45       ` Tomi Valkeinen
2012-09-13  5:45         ` Tomi Valkeinen
2012-09-13  5:45         ` Tomi Valkeinen
2012-09-13  6:08         ` Alex Courbot
2012-09-13  6:08           ` Alex Courbot
2012-09-13  6:22           ` Tomi Valkeinen
2012-09-13  6:22             ` Tomi Valkeinen
2012-09-13  6:36             ` Alex Courbot
2012-09-13  6:36               ` Alex Courbot
2012-09-13  6:54               ` Tomi Valkeinen
2012-09-13  6:54                 ` Tomi Valkeinen
2012-09-13  6:54                 ` Tomi Valkeinen
2012-09-13  7:00                 ` Sascha Hauer
2012-09-13  7:00                   ` Sascha Hauer
2012-09-13  7:00                   ` Sascha Hauer
     [not found]                   ` <20120913070012.GC6180-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-09-13  7:03                     ` Tomi Valkeinen
2012-09-13  7:03                       ` Tomi Valkeinen
2012-09-13  7:03                       ` Tomi Valkeinen
2012-09-13  7:18                       ` Sascha Hauer
2012-09-13  7:18                         ` Sascha Hauer
2012-09-13  7:18                         ` Sascha Hauer
     [not found]                         ` <20120913071829.GE6180-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-09-13  7:27                           ` Tomi Valkeinen
2012-09-13  7:27                             ` Tomi Valkeinen
2012-09-13  7:27                             ` Tomi Valkeinen
2012-09-13  7:21                       ` Alex Courbot
2012-09-13  7:21                         ` Alex Courbot
2012-09-13  7:29                       ` Thierry Reding
2012-09-13  7:29                         ` Thierry Reding
2012-09-13  7:29                         ` Thierry Reding
2012-09-13  7:50                         ` Sascha Hauer [this message]
2012-09-13  7:50                           ` Sascha Hauer
2012-09-13  8:21                           ` Alex Courbot
2012-09-13  8:21                             ` Alex Courbot
2012-09-13  8:26                             ` Thierry Reding
2012-09-13  8:26                               ` Thierry Reding
     [not found]                         ` <20120913072920.GA11459-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-09-13  8:00                           ` Tomi Valkeinen
2012-09-13  8:00                             ` Tomi Valkeinen
2012-09-13  8:00                             ` Tomi Valkeinen
2012-09-13  8:32                             ` Thierry Reding
2012-09-13  8:32                               ` Thierry Reding
2012-09-13  8:32                               ` Thierry Reding
2012-09-13  7:08                 ` Alex Courbot
2012-09-13  7:08                   ` Alex Courbot
2012-09-13  7:08                   ` Alex Courbot
2012-09-13 15:37                   ` Stephen Warren
2012-09-13 15:37                     ` Stephen Warren
2012-09-13  8:09     ` Mark Brown
2012-09-13  8:09       ` Mark Brown
2012-09-12  9:57   ` [PATCH v6 3/4] tegra: dt: add label to tegra20's PWM Alexandre Courbot
2012-09-12  9:57     ` Alexandre Courbot
2012-09-12  9:57     ` Alexandre Courbot
2012-09-12  9:57 ` [PATCH v6 2/4] pwm_backlight: use power sequences Alexandre Courbot
2012-09-12  9:57   ` Alexandre Courbot
2012-09-12  9:57   ` Alexandre Courbot
2012-09-12 22:15   ` Stephen Warren
2012-09-12 22:15     ` Stephen Warren
2012-09-12  9:57 ` [PATCH v6 4/4] tegra: ventana: add pwm backlight DT nodes Alexandre Courbot
2012-09-12  9:57   ` Alexandre Courbot
2012-09-12  9:57   ` Alexandre Courbot
     [not found]   ` <1347443867-18868-5-git-send-email-acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-09-12 21:23     ` Stephen Warren
2012-09-12 21:23       ` Stephen Warren
2012-09-12 21:23       ` Stephen Warren
2012-09-12 21:27 ` [PATCH v6 0/4] Runtime Interpreted Power Sequences Stephen Warren
2012-09-12 21:27   ` Stephen Warren
     [not found]   ` <5050FE28.2080502-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-09-12 21:33     ` Anton Vorontsov
2012-09-12 21:33       ` Anton Vorontsov
2012-09-12 21:33       ` Anton Vorontsov
2012-09-13  5:53       ` Alex Courbot
2012-09-13  5:53         ` Alex Courbot
2012-09-13  5:50 ` Tomi Valkeinen
2012-09-13  5:50   ` Tomi Valkeinen
2012-09-13  6:23   ` Alex Courbot
2012-09-13  6:23     ` Alex Courbot
2012-09-13  6:25     ` Mark Brown
2012-09-13  6:25       ` Mark Brown
2012-09-13  6:42       ` Alex Courbot
2012-09-13  6:42         ` Alex Courbot
2012-09-13  7:19         ` Mark Brown
2012-09-13  7:19           ` Mark Brown
2012-09-13  7:19           ` Mark Brown
2012-09-13  7:26           ` Alex Courbot
2012-09-13  7:26             ` Alex Courbot
2012-09-13  7:29             ` Mark Brown
2012-09-13  7:29               ` Mark Brown
2012-09-13  7:29               ` Mark Brown
2012-09-13 15:24               ` Stephen Warren
2012-09-13 15:24                 ` Stephen Warren
2012-09-19  3:01                 ` Mark Brown
2012-09-19  3:01                   ` Mark Brown
     [not found]                 ` <5051FAC5.40501-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-10-03  8:24                   ` Alex Courbot
2012-10-03  8:24                     ` Alex Courbot
2012-10-03  8:24                     ` Alex Courbot
     [not found]                     ` <506BF62F.6040308-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-10-03 15:30                       ` Stephen Warren
2012-10-03 15:30                         ` Stephen Warren
2012-10-03 15:30                         ` Stephen Warren
2012-09-13  6:42     ` Tomi Valkeinen
2012-09-13  6:42       ` Tomi Valkeinen
2012-09-13  6:48     ` Tomi Valkeinen
2012-09-13  6:48       ` Tomi Valkeinen

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=20120913075037.GG6180@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --cc=acourbot@nvidia.com \
    --cc=arnd@arndb.de \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=cbou@mail.ru \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=dwmw2@infradead.org \
    --cc=grant.likely@secretlab.ca \
    --cc=l.krishna@samsung.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=rob.herring@calxeda.com \
    --cc=sjg@chromium.org \
    --cc=swarren@nvidia.com \
    --cc=thierry.reding@avionic-design.de \
    --cc=tomi.valkeinen@ti.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.