[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CACna6rzzmvAzS-yaQL8oKVjLkMwotYcwz+=MbjMLs0ordkYb0w@mail.gmail.com>
Date: Mon, 29 Aug 2016 11:01:21 +0200
From: Rafał Miłecki <zajec5@...il.com>
To: Pavel Machek <pavel@....cz>
Cc: Jacek Anaszewski <j.anaszewski@...sung.com>,
Jacek Anaszewski <jacek.anaszewski@...il.com>,
Alan Stern <stern@...land.harvard.edu>,
Richard Purdie <rpurdie@...ys.net>,
Felipe Balbi <balbi@...nel.org>,
Greg KH <gregkh@...uxfoundation.org>,
Peter Chen <hzpeterchen@...il.com>,
"linux-usb@...r.kernel.org" <linux-usb@...r.kernel.org>,
Rafał Miłecki <rafal@...ecki.pl>,
Jonathan Corbet <corbet@....net>,
Ezequiel Garcia <ezequiel@...guardiasur.com.ar>,
Stephan Linz <linz@...pro.net>,
Matthias Brugger <mbrugger@...e.com>,
Boris Brezillon <boris.brezillon@...e-electrons.com>,
Geert Uytterhoeven <geert@...ux-m68k.org>,
"open list:DOCUMENTATION" <linux-doc@...r.kernel.org>,
open list <linux-kernel@...r.kernel.org>,
"open list:LED SUBSYSTEM" <linux-leds@...r.kernel.org>
Subject: Re: [PATCH RFC V3.5] leds: trigger: Introduce an USB port trigger
On 29 August 2016 at 10:41, Pavel Machek <pavel@....cz> wrote:
> On Mon 2016-08-29 10:21:48, Rafał Miłecki wrote:
>> On 29 August 2016 at 10:05, Pavel Machek <pavel@....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ł
Powered by blists - more mailing lists