On 29 August 2016 at 10:41, Pavel Machek <pa...@ucw.cz> wrote: > On Mon 2016-08-29 10:21:48, Rafał Miłecki wrote: >> On 29 August 2016 at 10:05, Pavel Machek <pa...@ucw.cz> wrote: >> >> >2) Having "ports" subdir with RW files, one per each existing physical >> >> >port >> >> >In this situation we don't need "new_port" or "remove_port". If we >> >> >want port to be observable we just do: >> >> >echo 1 > 1-1 >> >> >Implementing this solution needs reading more details from USB subsystem. >> >> >> >> The situation here is clear IMO - the number of USB ports in the system >> >> can change dynamically. I'm not sure if this can be handled easily with >> >> sysfs, where we usually expose an interface for known set of settings. >> >> struct attribute arrays are usually defined statically at the compile >> >> time and filled with the variables, that are created with DEVICE_ATTR >> >> macro. >> > >> > sysfs already exposes current view of all usb devices. Just use it. >> >> We're talking about USB ports not devices, but this is still true. You >> can find them in >> /sys/bus/usb/devices/*/*-port* >> >> I can't see how we could use them. How could I develop sysfs interface >> in /sys/class/leds/*/ to allow userspace assigning USB ports to the >> LED trigger? > > Create /sys/bus/usb/devices/*/*-port*/led_trigger file? > > (Do you plan one USB trigger, or multiple ones?)
I guess it means slightly more complex cross-subsystem interaction I may need help to understand. First of all: I will need multiple USB port triggers. It's because there are many devices with multiple USB LEDs. Some complex (but existing!) case: USB 2.0 white LED - activated by USB 2.0 dev in USB 2.0 port USB 3.0 white LED - activated by USB 2.0 dev in USB 3.0 port USB 3.0 green LED - activated by USB 3.0 dev in USB 3.0 port (This devices has separated EHCI and XHCI controllers, so we have 2 logical ports for 1 physical one) So I guess I'll need something more complex like /sys/bus/usb/devices/*/*-port*/bcm53xx:white:usb2_led_trigger /sys/bus/usb/devices/*/*-port*/bcm53xx:white:usb3_led_trigger /sys/bus/usb/devices/*/*-port*/bcm53xx:green:usb3_led_trigger in case every USB led has "usbport" trigger assigned. How can I create above sysfs files? Should I write code for this in ledtrig-usbport.c? That would require accessing struct usb_hub and then struct usb_port, but both of them are internal structs defined in drivers/usb/core/hub.h. How could I work with that? -- Rafał -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html