Thread (269 messages) 269 messages, 18 authors, 2014-11-11

[linux-sunxi] Re: [PATCH 4/4] simplefb: add clock handling code

From: Hans de Goede <hidden>
Date: 2014-10-02 15:38:17
Also in: linux-fbdev

Hi,

On 10/02/2014 05:30 PM, jonsmirl at gmail.com wrote:
On Thu, Oct 2, 2014 at 11:14 AM, jonsmirl at gmail.com [off-list ref] wrote:
quoted
On Thu, Oct 2, 2014 at 10:50 AM, Hans de Goede [off-list ref] wrote:
quoted
Hi,

On 10/02/2014 04:41 PM, jonsmirl at gmail.com wrote:
quoted
On Thu, Oct 2, 2014 at 10:21 AM, Hans de Goede [off-list ref] wrote:
quoted
Hi,

On 10/02/2014 04:16 PM, jonsmirl at gmail.com wrote:
quoted
On Thu, Oct 2, 2014 at 10:08 AM, Hans de Goede [off-list ref] wrote:
<snip>
quoted
quoted
quoted
quoted
quoted
So there are two ways to do this...
1) modify things like earlyconsole to protect device specific resource
(I think this is a bad idea)
Why is this a bad idea? If the bootloader tells us exactly which resources
are needed, then earlyconsole can claim them, and release them on
handover to the real display driver.
Jon, can you please answer this ? I really really want to know why people
think this is such a bad idea. Understanding why people think this is a bad
idea is necessary to be able to come up with an alternative solution.
The list of resources should not be duplicated in the device tree -
once in the simplefb node and again in the real device node.
It is not duplicated, the simplefb node will list the clocks used for the
mode / output as setup by the firmware, which are often not all clocks
which the display engine supports. Where as the real device node will list
all clocks the display engine may use.
quoted
Device
tree is a hardware description and it is being twisted to solve a
software issue.
This is not true, various core devicetree developers have already said
that storing other info in the devicetree is fine, and being able to do so
is part of the original design.
quoted
This problem is not limited to clocks, same problem
exists with regulators. On SGI systems this would exist with entire
bus controllers (but they are x86 based, console is not on the root
bus). This is a very messy problem and will lead to a Frankenstein
sized driver over time.
This is a "what if ..." argument, we can discuss potential hypothetical
problems all day long, what happens if the sky falls down?
quoted
But... I think this is a red herring which is masking the real
problem. The real problem seems to be that there is no window for
loading device specific drivers before the resource clean up phase
happens. That's a real problem -- multi architecture distros are going
to have lots of loadable device specific drivers.
As Maxime pointed out to my alternative solution to fixing the clocks
problem, this is not strictly a when to do cleanup problem. If another
driver uses the same clocks, and does a clk_disable call after probing
(because the device is put in low power mode until used by userspace),
then the clk will be disabled even without any cleanup running at all.

The real problem here is simply that to work the simplefb needs certain
resources, just like any other device. And while for any other device
simply listing the needed resources is an accepted practice, for simplefb
for some reason (which I still do not understand) people all of a sudden
see listing resources as a problem.
Because you are creating two different device tree nodes describing a
single piece of hardware and that's not suppose to happen in a device
tree.
That again is a very narrow reading of what is a very generic descriptive
language. Also note that we are already in this situation with simplefb,
all we're advocating is extending the info which is in the simplefb node
so that it is actually usable in a much wider range of scenarios.
quoted
The accurate description of the hardware is being perverted to
solve a software problem.
Again, devicetree is not strictly a hardware description language.
quoted
One node describes the hardware in a format to make simplefb happy.
Another node describes the same hardware in a format to make the
device specific driver happy.
But... I think all of this device tree stuff is a red herring and not
the core problem.
Actually the red herring is people focussing on the init ordering
solution, which as already explained will simply never work, quoting
myself (from above):
quoted
quoted
As Maxime pointed out to my alternative solution to fixing the clocks
problem, this is not strictly a when to do cleanup problem. If another
driver uses the same clocks, and does a clk_disable call after probing
(because the device is put in low power mode until used by userspace),
then the clk will be disabled even without any cleanup running at all.
And to repeat myself yet again:

"The real problem here is simply that to work the simplefb needs certain
resources, just like any other device."

So the logical thing to do is to just put the clocks in the node. The only
counter argument I hear you make is "this is not a hardware description,
so it does not belong in devicetree". An argument which has already
been discussed earlier in this thread (about a month ago) and one of the
officialo devicetree maintainers responded to that saying that it is fine
to have non hardware info in the dt.

Regards,

Hans
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help