Re: [PATCH v3 1/6] ARM: tegra: add gpiod_lookup table for paz00

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

 




Am Donnerstag, 28. November 2013, 12:06:37 schrieb Thierry Reding:
> On Thu, Nov 28, 2013 at 11:20:19AM +0100, Marc Dietrich wrote:
> > Am Donnerstag, 28. November 2013, 10:32:41 schrieb Thierry Reding:
> > > On Thu, Nov 28, 2013 at 10:09:14AM +0100, Marc Dietrich wrote:
> > > > The real problem with the rfkill driver is that it does not support
> > > > DT. A
> > > > naive attempt to convert it was made some year ago, but got rejected
> > > > because rfkill wasn't seen as isolated device which can be represented
> > > > in
> > > > the device- tree. Also it can not be added under some existing device
> > > > node (e.g. the wifi driver) because those devices sit normally on an
> > > > "enumeratable" bus (e.g. usb, pci), which is not listed in the device
> > > > tree at all. This is why it still requires a board file and
> > > > platform_data. I wish we could find a solution for this.
> > > 
> > > There is a solution at least for PCI. You can list PCI devices within
> > > the device tree, which is really handy (required even) if for instance
> > > one of the PCI devices is an SPI or I2C controller, each providing a bus
> > > that cannot be probed. What you usually do is describe the PCI hierarchy
> > > at least up to the controller and then list slaves as child nodes.
> > > 
> > > I'm not aware of anything similar for USB, but it should certainly be
> > > possible to come up with a standard binding for the USB bus. It has a
> > > topology that's similar enough to that of PCI so that the same general
> > > rules could be applied.
> > > 
> > > If that's really the only thing that keeps rfkill from gaining DT
> > > support then it's something worth tackling in my opinion.
> > 
> > it's not so simple I fear. The wifi driver needs to learn about the rfkill
> > "device".
> 
> Why does the WiFi driver need to know about it? You say below that the
> WiFi driver polls a separate set of GPIO lines (internal to the WiFi
> module I assume?). In that case rfkill is merely a way to export control
> of that functionality so that it can be used from some other part of the
> kernel or from userspace.

You are right. We just need some device to bind this driver to. It doesn't 
need to be the wifi driver.

> That's very similar to things such as backlight control or fan control.
> Still we manage to describe those in DT as well.

Yes, rfkill is just an interface for userspace to able to control the gpio. 
E.g. backlight of medcom-wide seems to be related to the pwm controller, but 
is not a subnode of it. Instead it is a device of its own without parent. 
Hence, we may include rfkill in a similar, "free-standing" node. But this 
approch was rejected in the past. Maybe this changed now.

> > As mentioned above, it's not really a device so the question is what
> > needs to be added and where? The wifi driver just polls his own gpio lines
> > to check the status of rfkill. Be we want to modify the "other side", so
> > maybe this isn't related to the wifi driver at all. It's more a "virtual
> > rfkill device". No idea if something like this exists already in device
> > tree.
> But it's a part of some other device. Or rather, it's always associated
> with another device, right? So I don't see anything particularily wrong
> with something like this:
> 
> 	usb-controller {
> 		/* USB hub */
> 		usb@0,0 {
> 			...
> 
> 			/* USB device */
> 			usb@1,0 {
> 				...
> 
> 				rfkill {
> 					shutdown-gpio = <&gpio ...>;
> 					reset-gpio = <&gpio ...>;
> 				};
> 
> 				...
> 			};
> 
> 			...
> 		};
> 	};
> 
> You said that the main objection was that it needed to be represented as
> a "subdevice" of whatever device it controls. If the only reason is that
> we have no means to represent those devices because they are on a bus
> that can be enumerated and therefore can't be listed in DT, then my
> suggestion is to fix things so that we can describe those devices in DT.
>
> The goal is to get rid of board files, right? board-paz00.c is the only
> one left for Tegra, and rfkill is an actual hardware component, so there
> is no reason why it can't be described in DT.

Thinking a bit more about it, rfkill is neither a hw block nor a function of 
the wifi driver, so I guess it cannot be added to the usb controller (or a usb 
device).

Anyway, I think this discussion deserves a new mail thread, but I don't have 
enough background information to start one. We can bring this topic back when 
all turkeys who deserve it, are dead.

Marc





--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux