Thread (1 message) 1 message, 1 author, 2012-11-20

Re: [PATCH v3 1/3] power: Add simple poweroff-gpio driver

From: Stephen Warren <hidden>
Date: 2012-11-20 21:17:24
Also in: linux-arm-kernel

On 11/20/2012 01:31 PM, Andrew Lunn wrote:
On Tue, Nov 20, 2012 at 10:11:18AM -0700, Stephen Warren wrote:
quoted
On 11/20/2012 01:37 AM, Andrew Lunn wrote:
quoted
Hi Jason

These are good comments from Stephan that i want to address. However,
i also don't want to delay the pull-requests direction arm-soc, the
merge window is getting close. Both Linus and Anton have Acked the
current version, so please go with what you have and i will produce a
patch over the top. If its available before Arnd pulls, you can squash
it, otherwise send it upstream as a standalone patch.
I'm not sure I agree here; the comments I made re: the delays and
pulse-vs-level may affect the definition of the DT binding, and that's
something that should be correct from the start.
Hi Stephen

There should be no need to change the binding is a none-backwards
compatible way. The current delays work for all current users.
Well, the binding isn't written for current users, the description is
just a generic "GPIO to turn off the system".
If some
other user comes along which needs longer delays, they can add an
optional property which specified a longer delay.
The DT maintainers have in the past expressed a wish to define DT
bindings completely, rather than incrementally adding stuff if at all
possible. I guess they weren't CC'd on this patch; I've added them here
for comment. I'll defer to whatever they think here.
The pulse-vs-level is needed for the potential PXA use case, which is
where i took this code from. When we first proposed this driver,
Russel King pointed to the PXA reset.c code and requested we create
something which PXA could use. The configuring the GPIO as an input
also come from PXA, which the current two uses user don't need.

I agree it need better documentation, but the current code covers all
bases. It will turn off a level based system, it will also turn off an
edge based system. There is no need to specify in the DT which is
needed, it will just work.
I'm not convinced the pulse logic can be correct for arbitrary users who
expect a level-sensitive GPIO; what if the MPU (or whatever the GPIO is
connected to) is confused by the pulse and fails to power down when it
sees a pulse (e.g. as a safety measure), but would have worked fine with
just a regular level?
quoted
The implementation of gpio_poweroff_do_poweroff() really doesn't seem to
make sense; related to the above.

Also, probe deferral doesn't work, which will likely make this code
completely ineffective.
This code has been tested by the two current users. It works. However,
i agree about your comment here, and i will fix it in the follow up
patch.
If this were a specific driver just for certain platforms, I think it
might be OK. Yet the driver purports to be generic. As such, I think we
need to make it explicitly work for the general case, not just happen to
work for the platforms that have been tested so far.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help