All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomi Valkeinen <tomi.valkeinen@ti.com>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 11/11] ARM: versatile: move CLCD configuration to device tree
Date: Tue, 23 Feb 2016 12:45:30 +0000	[thread overview]
Message-ID: <56CC546A.9070705@ti.com> (raw)
In-Reply-To: <CAFEAcA9U3V04o2_93bS5G7+k=UT7kTWt4=v7t1Ju0X9W=5oo9A@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 4243 bytes --]

On 23/02/16 13:56, Peter Maydell wrote:
> On 23 February 2016 at 09:58, Tomi Valkeinen <tomi.valkeinen@ti.com> wrote:
>> I'm not quite sure how it works if, as in versatile display case, there
>> are multiple DT overlays of which one has to be enabled. I hope there's
>> support to choose which one to use via kernel cmdline or similar.
>>
>> I would personally like it much more if the bootloader would either
>> compose a final dtb from DT fragments and pass it to the kernel, or
>> alternatively the bootloader would pass the base dtb image and a bunch
>> of DT overlays to the kernel, and the kernel would deal with the DT
>> overlays.
> 
> Speaking as somebody who's written the "bootloader" code that's
> used for what I guess are the majority of versatile kernel boots,
> i.e. the one in QEMU, I think that requiring the bootloader to do this
> would be a significant worsening from the current state.
> 
> Right now the bootloader doesn't need to do much at all with device
> trees, except pass the kernel the DT that the user gave us, which
> is just the kernel's own data structures in a separate file for
> convenience. You need to do some very minor tweaks to the /chosen
> node, but these can be handled the same way for any board and aren't
> hardware specific. There's no need to worry about dt fragments
> either for the bootloader or for the user. Imposing a new requirement
> for the bootloader to have to probe hardware which it otherwise
> has no need to even care about, and then edit and update the DT
> in a board-specific manner, or have board-specific DT fragments,
> seems like a totally unnecessary imposition on both bootloader
> authors and end-users, and of course it would break booting newer
> kernels on the great mass of already existing boot loaders and
> QEMU installs.

I'm looking for a good generic solution for going forward that can be
used on new boards, for both non-probeable and probeable displays.

When we have that solution, we can see if and how the solution could be
used for current boards. I'm sure that for some boards we need to
support whatever legacy methods are out there already.

> The kernel is in a position to probe the display hardware and determine
> what is there, and do the right thing, and that's exactly what it
> does today. The kernel should continue to do this.
> The advantage of DT is that it allows moving information about
> non-probeable hardware that was previously hardwired in the kernel
> C sources into a separate data structure, but the versatile displays
> are not non-probeable. I can see no benefit at all from hardwiring into
> the dt something which the kernel has previously been successfully
> dynamically getting right without any bootloader intervention -- it just
> makes the kernel less flexible and less user-friendly.

My opinion is that the bootloader should be responsible for telling the
kernel what hardware there is on the board. For busses like PCI we have
proper probing mechanism with global unique identifiers for the devices,
and nothing is needed from the bootloader.

In the Versatile case the panels are kind of probeable, but not in the
same sense as PCI: all that can be probed on Versatile is a board
specific ID, which in itself doesn't tell what kind of panel there is.
In addition to the ID we need board specific tables listing the details
of the panels.

So, true, there's probing going on, but it's all board specific,
requiring a board specific driver to support it in the kernel. And I
think that makes the bootloader much better place for supporting it.
But, again, for legacy reasons that may not be possible.

Now, _if_ the Versatile panels were hotpluggable, and it would be a
normal use case to switch the panels at runtime and having the kernel
automatically switch to the correct video mode, we would obviously need
a kernel driver for it. But afaik that's not the case.

I think one of the core questions here is: do we want to start adding
board specific drivers to the kernel, instead of dealing with it in the
bootloader when possible? My understanding is that we've been trying to
reduce board specific code from the kernel.

 Tomi


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: tomi.valkeinen@ti.com (Tomi Valkeinen)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 11/11] ARM: versatile: move CLCD configuration to device tree
Date: Tue, 23 Feb 2016 14:45:30 +0200	[thread overview]
Message-ID: <56CC546A.9070705@ti.com> (raw)
In-Reply-To: <CAFEAcA9U3V04o2_93bS5G7+k=UT7kTWt4=v7t1Ju0X9W=5oo9A@mail.gmail.com>

On 23/02/16 13:56, Peter Maydell wrote:
> On 23 February 2016 at 09:58, Tomi Valkeinen <tomi.valkeinen@ti.com> wrote:
>> I'm not quite sure how it works if, as in versatile display case, there
>> are multiple DT overlays of which one has to be enabled. I hope there's
>> support to choose which one to use via kernel cmdline or similar.
>>
>> I would personally like it much more if the bootloader would either
>> compose a final dtb from DT fragments and pass it to the kernel, or
>> alternatively the bootloader would pass the base dtb image and a bunch
>> of DT overlays to the kernel, and the kernel would deal with the DT
>> overlays.
> 
> Speaking as somebody who's written the "bootloader" code that's
> used for what I guess are the majority of versatile kernel boots,
> i.e. the one in QEMU, I think that requiring the bootloader to do this
> would be a significant worsening from the current state.
> 
> Right now the bootloader doesn't need to do much at all with device
> trees, except pass the kernel the DT that the user gave us, which
> is just the kernel's own data structures in a separate file for
> convenience. You need to do some very minor tweaks to the /chosen
> node, but these can be handled the same way for any board and aren't
> hardware specific. There's no need to worry about dt fragments
> either for the bootloader or for the user. Imposing a new requirement
> for the bootloader to have to probe hardware which it otherwise
> has no need to even care about, and then edit and update the DT
> in a board-specific manner, or have board-specific DT fragments,
> seems like a totally unnecessary imposition on both bootloader
> authors and end-users, and of course it would break booting newer
> kernels on the great mass of already existing boot loaders and
> QEMU installs.

I'm looking for a good generic solution for going forward that can be
used on new boards, for both non-probeable and probeable displays.

When we have that solution, we can see if and how the solution could be
used for current boards. I'm sure that for some boards we need to
support whatever legacy methods are out there already.

> The kernel is in a position to probe the display hardware and determine
> what is there, and do the right thing, and that's exactly what it
> does today. The kernel should continue to do this.
> The advantage of DT is that it allows moving information about
> non-probeable hardware that was previously hardwired in the kernel
> C sources into a separate data structure, but the versatile displays
> are not non-probeable. I can see no benefit at all from hardwiring into
> the dt something which the kernel has previously been successfully
> dynamically getting right without any bootloader intervention -- it just
> makes the kernel less flexible and less user-friendly.

My opinion is that the bootloader should be responsible for telling the
kernel what hardware there is on the board. For busses like PCI we have
proper probing mechanism with global unique identifiers for the devices,
and nothing is needed from the bootloader.

In the Versatile case the panels are kind of probeable, but not in the
same sense as PCI: all that can be probed on Versatile is a board
specific ID, which in itself doesn't tell what kind of panel there is.
In addition to the ID we need board specific tables listing the details
of the panels.

So, true, there's probing going on, but it's all board specific,
requiring a board specific driver to support it in the kernel. And I
think that makes the bootloader much better place for supporting it.
But, again, for legacy reasons that may not be possible.

Now, _if_ the Versatile panels were hotpluggable, and it would be a
normal use case to switch the panels at runtime and having the kernel
automatically switch to the correct video mode, we would obviously need
a kernel driver for it. But afaik that's not the case.

I think one of the core questions here is: do we want to start adding
board specific drivers to the kernel, instead of dealing with it in the
bootloader when possible? My understanding is that we've been trying to
reduce board specific code from the kernel.

 Tomi

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160223/3b325e20/attachment.sig>

  parent reply	other threads:[~2016-02-23 12:45 UTC|newest]

Thread overview: 145+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-04 14:04 [PATCH 00/11] CLCD Nomadik+Versatile support Linus Walleij
2016-02-04 14:04 ` Linus Walleij
2016-02-04 14:04 ` [PATCH 01/11] video: ARM CLCD: backlight support for OF Linus Walleij
2016-02-04 14:04   ` Linus Walleij
2016-02-04 14:04 ` [PATCH 02/11] video: ARM CLCD: support DT signal inversion flags Linus Walleij
2016-02-04 14:04   ` Linus Walleij
2016-02-17 18:10   ` [02/11] " Ray Jui
2016-02-17 18:10     ` Ray Jui
2016-02-19  8:46     ` Linus Walleij
2016-02-19  8:46       ` Linus Walleij
2016-02-20  1:23       ` Ray Jui
2016-02-20  1:23         ` Ray Jui
2016-02-20 11:46         ` Linus Walleij
2016-02-20 11:46           ` Linus Walleij
2016-02-04 14:04 ` [PATCH 03/11] video: ARM CLCD: support pads connected in reverse order Linus Walleij
2016-02-04 14:04   ` Linus Walleij
2016-02-04 14:04 ` [PATCH 04/11] video: ARM CLCD: support Nomadik variant Linus Walleij
2016-02-04 14:04   ` Linus Walleij
2016-02-04 14:04 ` [PATCH 05/11] video: ARM CLCD: add special board and panel hooks for Nomadik Linus Walleij
2016-02-04 14:04   ` Linus Walleij
2016-02-04 14:04 ` [PATCH 06/11] Documentation/DT: add blurb for IB2 syscon to Versatile Linus Walleij
2016-02-04 14:04   ` Linus Walleij
2016-02-04 14:04 ` [PATCH 07/11] Documentation/DT: add Versatile display bindings Linus Walleij
2016-02-04 14:04   ` Linus Walleij
2016-02-17  9:11   ` Tomi Valkeinen
2016-02-17  9:11     ` Tomi Valkeinen
2016-02-18 20:48     ` Linus Walleij
2016-02-18 20:48       ` Linus Walleij
2016-02-04 14:04 ` [PATCH 08/11] video: ARM CLCD: add special panel hook for Versatiles Linus Walleij
2016-02-04 14:04   ` Linus Walleij
2016-02-04 14:04 ` [PATCH 09/11] ARM: PB11MPCore: define a standard VGA panel Linus Walleij
2016-02-04 14:04   ` Linus Walleij
2016-02-04 14:04 ` [PATCH 10/11] ARM: PB1176: " Linus Walleij
2016-02-04 14:04   ` Linus Walleij
2016-02-04 14:04 ` [PATCH 11/11] ARM: versatile: move CLCD configuration to device tree Linus Walleij
2016-02-04 14:04   ` Linus Walleij
2016-02-17  9:09   ` Tomi Valkeinen
2016-02-17  9:09     ` Tomi Valkeinen
2016-02-17  9:41     ` Russell King - ARM Linux
2016-02-17  9:41       ` Russell King - ARM Linux
2016-02-17 16:17     ` Linus Walleij
2016-02-17 16:17       ` Linus Walleij
2016-02-17 21:32       ` Russell King - ARM Linux
2016-02-17 21:32         ` Russell King - ARM Linux
2016-02-18 11:52         ` Tomi Valkeinen
2016-02-18 11:52           ` Tomi Valkeinen
2016-02-18 13:12           ` Russell King - ARM Linux
2016-02-18 13:12             ` Russell King - ARM Linux
2016-02-18 13:37             ` Tomi Valkeinen
2016-02-18 13:37               ` Tomi Valkeinen
2016-02-18 20:31               ` Linus Walleij
2016-02-18 20:31                 ` Linus Walleij
     [not found]           ` <56C5B080.9090007-l0cyMroinI0@public.gmane.org>
2016-02-21 22:39             ` Linus Walleij
2016-02-21 22:39               ` Linus Walleij
2016-02-21 22:39               ` Linus Walleij
     [not found]               ` <CACRpkdaXFUCR5=5mS28_4Dx_LfzqV13zwT=vVeJwuOzm_rGRBQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-02-22 15:41                 ` Tomi Valkeinen
2016-02-22 15:41                   ` Tomi Valkeinen
2016-02-22 15:41                   ` Tomi Valkeinen
     [not found]                   ` <56CB2C31.5040703-l0cyMroinI0@public.gmane.org>
2016-02-22 15:54                     ` Linus Walleij
2016-02-22 15:54                       ` Linus Walleij
2016-02-22 15:54                       ` Linus Walleij
2016-02-23  9:08   ` Linus Walleij
2016-02-23  9:08     ` Linus Walleij
2016-02-23  9:34     ` Arnd Bergmann
2016-02-23  9:34       ` Arnd Bergmann
2016-02-23 10:10       ` Linus Walleij
2016-02-23 10:10         ` Linus Walleij
2016-02-23 11:22         ` Arnd Bergmann
2016-02-23 11:22           ` Arnd Bergmann
2016-02-23 13:00           ` Tomi Valkeinen
2016-02-23 13:00             ` Tomi Valkeinen
2016-02-23 13:16             ` Linus Walleij
2016-02-23 13:16               ` Linus Walleij
2016-02-23 13:38               ` Tomi Valkeinen
2016-02-23 13:38                 ` Tomi Valkeinen
2016-02-24 10:53                 ` Russell King - ARM Linux
2016-02-24 10:53                   ` Russell King - ARM Linux
2016-02-24 11:35                   ` Tomi Valkeinen
2016-02-24 11:35                     ` Tomi Valkeinen
2016-02-25 14:04                 ` Linus Walleij
2016-02-25 14:04                   ` Linus Walleij
2016-02-25 16:08                   ` Arnd Bergmann
2016-02-25 16:08                     ` Arnd Bergmann
2016-02-25 16:22                   ` Russell King - ARM Linux
2016-02-25 16:22                     ` Russell King - ARM Linux
2016-02-25 16:45                   ` Tomi Valkeinen
2016-02-25 16:45                     ` Tomi Valkeinen
2016-02-25 16:57                     ` Russell King - ARM Linux
2016-02-25 16:57                       ` Russell King - ARM Linux
2016-02-25 19:30                     ` Linus Walleij
2016-02-25 19:30                       ` Linus Walleij
2016-02-26 10:47                       ` Tomi Valkeinen
2016-02-26 10:47                         ` Tomi Valkeinen
2016-03-05 16:57                         ` Linus Walleij
2016-03-05 16:57                           ` Linus Walleij
2016-03-07  7:36                           ` Tomi Valkeinen
2016-03-07  7:36                             ` Tomi Valkeinen
2016-02-25 19:32                     ` Linus Walleij
2016-02-25 19:32                       ` Linus Walleij
2016-02-23  9:58     ` Tomi Valkeinen
2016-02-23  9:58       ` Tomi Valkeinen
2016-02-23 10:32       ` Adam Ford
2016-02-23 10:32         ` Adam Ford
2016-02-23 10:59         ` Pantelis Antoniou
2016-02-23 10:59           ` Pantelis Antoniou
2016-02-23 11:56       ` Peter Maydell
2016-02-23 11:56         ` Peter Maydell
2016-02-23 12:01         ` Russell King - ARM Linux
2016-02-23 12:01           ` Russell King - ARM Linux
2016-02-23 13:45           ` Tom Rini
2016-02-23 13:45             ` Tom Rini
2016-02-23 12:45         ` Tomi Valkeinen [this message]
2016-02-23 12:45           ` Tomi Valkeinen
2016-02-23 13:49           ` Peter Maydell
2016-02-23 13:49             ` Peter Maydell
2016-02-24 12:06             ` Tomi Valkeinen
2016-02-24 12:06               ` Tomi Valkeinen
2016-02-24 10:46           ` Russell King - ARM Linux
2016-02-24 10:46             ` Russell King - ARM Linux
2016-02-24 11:21             ` Tomi Valkeinen
2016-02-24 11:21               ` Tomi Valkeinen
2016-02-24 11:35               ` Russell King - ARM Linux
2016-02-24 11:35                 ` Russell King - ARM Linux
2016-02-24 11:47                 ` Tomi Valkeinen
2016-02-24 11:47                   ` Tomi Valkeinen
2016-02-24 12:13               ` Pantelis Antoniou
2016-02-24 12:13                 ` Pantelis Antoniou
2016-02-25 13:43                 ` Linus Walleij
2016-02-25 13:43                   ` Linus Walleij
2016-02-25 13:56                   ` Tomi Valkeinen
2016-02-25 13:56                     ` Tomi Valkeinen
2016-02-25 14:35                   ` Pantelis Antoniou
2016-02-25 14:35                     ` Pantelis Antoniou
2016-02-25 15:36                     ` Linus Walleij
2016-02-25 15:36                       ` Linus Walleij
2016-02-25 15:40                       ` Pantelis Antoniou
2016-02-25 15:40                         ` Pantelis Antoniou
2016-02-23 13:08         ` Linus Walleij
2016-02-23 13:08           ` Linus Walleij
2016-02-15 23:34 ` [PATCH 00/11] CLCD Nomadik+Versatile support Linus Walleij
2016-02-15 23:34   ` Linus Walleij
2016-02-16 13:29   ` Tomi Valkeinen
2016-02-16 13:29     ` Tomi Valkeinen
2016-02-16 22:30     ` Linus Walleij
2016-02-16 22:30       ` Linus Walleij

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=56CC546A.9070705@ti.com \
    --to=tomi.valkeinen@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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.