Re: [PATCH] leds: tlc591xx: SW reset during initialization

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri 2018-08-24 14:06:04, Jan Kundrát wrote:
> On pátek 24. srpna 2018 11:45:00 CEST, Pavel Machek wrote:
> >Ok, resetting seems like good idea, but the crazy way this reset is
> >done tells me it should probably be opt-in via device-tree option?
> 
> Hi Pavel,
> I was also thinking about this, but in the end I decided to always perform
> the reset unconditionally. Here's a bunch of reasons:
> 
> 1) I don't see a scenario where it is legitimate *not* to reset. If we don't
> reset, then even a simple reboot on a platform with no RESET signal
> propagation can cause the kernel to report values via sysfs that do not
> reflect reality. (Been there, saw that.)

Yeah, but I guess working hardware has RESET line connecting... and
reset sequence is crazy enough to be of concern.

> 2) What should be the default? If it's to reset, then one has to come up
> with a way of coordinating the reset among several instances so that a reset
> "of a device probed later" won't affect those already configured. This is
> hard, and that's why my patch keeps a reference to the i2c_client of the
> reset address. And I do believe that the default should be to reset because
> that way we always work with a chip in a known good state.

The default should be not to reset... because that's how it works in v4.18.

> 3) The sequence is not that wonky considering that we're talking about a LED
> driver :). These chips quite often have several group-call addresses and
> other, eh, features which do not map well with Linux' abstractions. I don't
> understand why they did not put in that functionality over the *regular* I2C
> address, but then I don't design chips for a living.

Seems wonky enough to me :-).

> 4) Coming from the SPI subsystem, people say that the DT bindings should
> describe hardware instead of talking about compatibility quirks which might
> be Linux specific (recall that "spidev" discussion where the code complains
> if the DT bindings say that s given device is just "spidev"). Think about
> how the DT bindings with this feature would look like on a board with
> several chips:
> 
>  leds@0x60 {
>    compatible = "ti,tlc59116";
>    reg = <0x60>;
>    ti,reset;
>  };
> 
>  leds@0x61 {
>    compatible = "ti,tlc59116";
>    reg = <0x61>;
>  };
> 
> Only one of these devices should invoke the reset, the rest of them
> must be

You already have that problem, right?

> somehow prevented from doing it because the reset affects all chips on the
> bus, not just the one we are "talking to". The SWRESET I2C address is
> hardcoded. In my opinion, this would be an OS-specific quirk where the DT
> says "reset everyone when the code probes for this device".

I'd say this is "ti,our-hw-designers-forgot-to-connect-reset-line",
and I see nothing OS specific about that...				Pavel

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux