USB device nodes in device tree
Hello,
We are currently developing a board with an USB MFD device (I2C and GPIOs are to be supported). The device is soldered on the board and is the only one on the bus, so the bus is not really "dynamic".
Since it's an USB device, it should be dynamically detected by the kernel and it would not require a node in the board's DTS. However, I need to have the devices which are "behind" the MFD USB device to be in the DTS (I2C bus topology, and some of the GPIOs are to be used directly by some other DTS nodes as well).
Is there a way to add a node for USB device in a DTS ? Is there an available example for this ?
Thank you
Valentin
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 6 lines · Valentin Longchamp
Hello,
We are currently developing a board with an USB MFD device (I2C and GPIOs are to be supported). The device is soldered on the board and is the only one on the bus, so the bus is not really "dynamic".
Quoted 7 lines
Since it's an USB device, it should be dynamically detected by the kernel and it would not require a node in the board's DTS. However, I need to have the devices which are "behind" the MFD USB device to be in the DTS (I2C bus topology, and some of the GPIOs are to be used directly by some other DTS nodes as well).
Is there a way to add a node for USB device in a DTS ? Is there an available example for this ?
No, there is no way to do it as far as I know. The main problem is that Device Tree is static whereas USB devices are dynamic.
Alan Stern
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): Pine.LNX.4.44L0.1503301534050.1407-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org
Quoted 13 lines · Alan Stern
Quoted 11 lines · Valentin Longchamp
Hello,
We are currently developing a board with an USB MFD device (I2C and GPIOs are to be supported). The device is soldered on the board and is the only one on the bus, so the bus is not really "dynamic".
Since it's an USB device, it should be dynamically detected by the kernel and it would not require a node in the board's DTS. However, I need to have the devices which are "behind" the MFD USB device to be in the DTS (I2C bus topology, and some of the GPIOs are to be used directly by some other DTS nodes as well).
Quoted 5 lines
Quoted 2 lines
Is there a way to add a node for USB device in a DTS ? Is there an available example for this ?
No, there is no way to do it as far as I know. The main problem is that Device Tree is static whereas USB devices are dynamic.
The PCI(e) bus has the same problem, yet you can specify a PCI device child node, and have a compatible string which will match the vendor id/device id tuple, device class etc... such that you can use Device Tree to add additional information not necessarily available in other ways such as MAC addresses and similar.
Once the PCI bus is scanned, pci_device present in Device Tree get a device_node pointer assigned.
I don't think there is anything doing this yet for USB devices, but maybe that's something that should be there?
--
Florian
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 26 lines · On Saturday 04 April 2015 12:08:36 Florian Fainelli wrote:
Quoted 13 lines · Alan Stern
Quoted 11 lines · Valentin Longchamp
Hello,
We are currently developing a board with an USB MFD device (I2C and GPIOs are to be supported). The device is soldered on the board and is the only one on the bus, so the bus is not really "dynamic".
Since it's an USB device, it should be dynamically detected by the kernel and it would not require a node in the board's DTS. However, I need to have the devices which are "behind" the MFD USB device to be in the DTS (I2C bus topology, and some of the GPIOs are to be used directly by some other DTS nodes as well).
Quoted 5 lines
Quoted 2 lines
Is there a way to add a node for USB device in a DTS ? Is there an available example for this ?
No, there is no way to do it as far as I know. The main problem is that Device Tree is static whereas USB devices are dynamic.
The PCI(e) bus has the same problem, yet you can specify a PCI device child node, and have a compatible string which will match the vendor id/device id tuple, device class etc... such that you can use Device Tree to add additional information not necessarily available in other ways such as MAC addresses and similar.
Quoted 6 lines
Once the PCI bus is scanned,
pci_devicepresent in Device Tree get adevice_nodepointer assigned.I don't think there is anything doing this yet for USB devices, but maybe that's something that should be there?
It's come up a number of times. Basically we should support this, and I believe it's relatively straightforward to do, someone just has to implement it, but setting the of_node pointer for a USB device that gets added and if that has a matching node.
There is a binding for USB that we never implemented in Linux. It used to be at http://playground.sun.com/1275/bindings/usb/usb-1_0.ps
and I can send a copy to anyone that needs one. Most of the contents are irrelevant unless you want to implement a full Open Firmware rather than a flattened device tree.
The important parts are:
#address-cells: needs to be 1
#size-cells: needs to be 0
reg: 'The "reg" property for a device node shall consist of the number of the USB hub port or the USB host controller port to which this USB device is attached. As specified in [2] section 11.11.2.1, port numbers range from 1 to 255.'
Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html