From: Andy Green <andy.green-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Alan Stern <stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org>
Cc: Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org>,
Roger Quadros <rogerq-l0cyMroinI0@public.gmane.org>,
keshava_mgowda-l0cyMroinI0@public.gmane.org,
linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 16/16] ARM: OMAP: omap4panda: Power down the USB PHY and ETH when not in use
Date: Sun, 25 Nov 2012 06:00:53 +0800 [thread overview]
Message-ID: <50B14395.4010404@linaro.org> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1211241032490.4291-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
On 11/24/12 23:38, the mail apparently from Alan Stern included:
> On Sat, 24 Nov 2012, Andy Green wrote:
>
>> If we're just looking at fixing the current "magic regulator name"
>> scheme of "hsusb0" so that it can work with abstract devices like any
>> hub / port, we could invert what my original "device path" scheme did.
>>
>> So instead of having a parser (which boiled down quite small, but is
>> complicated by usb%d being the same for different usb drivers), we could
>> just add a helper function that walks the device parents to generate a
>> string representing the device instance. Like
>>
>> int device_path_generate(struct device *device, char *name, int len);
>>
>> if you called it from the hub driver's probe function (or anything
>> else's probe function) with the new hub device pointer, it might fill
>> name with "ehci1/usbhub1-1/1-1.1" or somesuch.
>
> It's not that simple. In your example, the very same device might show
> up, after rebooting, as "ehci2/usbhub2-1/2-1.1". Even if a more or
> less stable name for the controller is used, the bus-number parts of
> the name (the '2's in this example) are always subject to change. The
Agreed; I pointed this out in a previous mail in this thread already,
after someone else pointed it out to me some months ago. Indeed we
can't use "usb%d", the nth "usb" bus because the ordering of driver
insertion for the various drivers that can create "usb%d"s breaks the
determinism of it.
So we can only use in the matching paths a %d that represents the nth
instance of a device from a specific driver, the "nth ehci host
controller" for example.
> device_path_generate routine would have to possess special knowledge
> about the USB subsystem's naming scheme to generate a truly stable
> name.
I think there's enough info exposed to do everything generically with no
access to driver-private info.
When walking struct device "path" one of the things we know at each
stage is matched driver name. So we might meet a device of name "usb2"
but afaik we can trivially also see the matched driver has the name
"ehci-hcd".
If we can walk a list of "usb%d"s, we can determine that our device is
the nth device of that type belonging to "ehci-hcd" driver. That list
may be nondeterministic in terms of drivers getting modprobed in and
out, say inserting themselves randomly in the ordering of the list
before and after we modprobe ehci-hcd, but afaics no amount of insertion
or removal will change the sequencing of other entries of the same type
already there (first ehci-hcd one will always appear in the list in the
same relative order to the second ehci-hcd one). I think this would be
reliable for getting as far as "ehci1/" and it's generic code walking
device path and bus member lists that will work on all buses with that
problem.
> Presumably the same would hold for other subsystems too.
Although it looks like that method will bounce off of usbhub%d since the
driver name does not vary, I think it can also be alright.
If we can walk a list of usbhubs finding the ones that have the same
parent pointer as the parent we arrived at in our walking, we should
again get an ordinal we can use representing the nth hub on that
particular host controller. Afaics that should work for m hub levels
too if we just filter by an opaque parent device pointer.
Of course the code should not particularly know it's looking at "usb%d"
or "usbhub" just generic buses or classes or whatever it sees in use
while walking the device path. And although there's some walking around
described, we only do it at probe time and only for devices that are
interested in getting a deterministic device name to bind assets with.
The above is logically workable I think but to find out if it's
practical to "walk usbhubs" and so on for me anyway the code needs to be
attempted. So I'm curious if you see any flaw already with this scheme.
-Andy
--
Andy Green | TI Landing Team Leader
Linaro.org │ Open source software for ARM SoCs | Follow Linaro
http://facebook.com/pages/Linaro/155974581091106 -
http://twitter.com/#!/linaroorg - http://linaro.org/linaro-blog
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2012-11-24 22:00 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-15 14:33 [PATCH 00/16] OMAP USB Host cleanup Roger Quadros
2012-11-15 14:33 ` [PATCH 01/16] mfd: omap-usb-tll: Avoid creating copy of platform data Roger Quadros
2012-11-21 11:42 ` Felipe Balbi
2012-11-15 14:34 ` [PATCH 02/16] mfd: omap-usb-tll: Clean up clock handling Roger Quadros
2012-11-21 11:55 ` Felipe Balbi
2012-11-21 12:36 ` Roger Quadros
2012-11-21 14:03 ` Felipe Balbi
[not found] ` <20121121140354.GR10216-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-21 15:39 ` Roger Quadros
[not found] ` <50ACF5CD.9010209-l0cyMroinI0@public.gmane.org>
2012-11-21 19:39 ` Felipe Balbi
2012-11-22 8:19 ` Roger Quadros
2012-11-15 14:34 ` [PATCH 03/16] mfd: omap-usb-tll: introduce and use mode_needs_tll() Roger Quadros
2012-11-21 11:57 ` Felipe Balbi
[not found] ` <20121121115705.GE10216-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-21 12:37 ` Roger Quadros
[not found] ` <1352990054-14680-1-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2012-11-15 14:34 ` [PATCH 04/16] mfd: omap-usb-tll: Move port clock handling out of runtime ops Roger Quadros
[not found] ` <1352990054-14680-5-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2012-11-21 12:06 ` Felipe Balbi
2012-11-21 12:45 ` Roger Quadros
[not found] ` <50ACCCFA.6060605-l0cyMroinI0@public.gmane.org>
2012-11-21 14:07 ` Felipe Balbi
2012-11-15 14:34 ` [PATCH 05/16] mfd: omap-usb-tll: Add OMAP5 revision and HSIC support Roger Quadros
[not found] ` <1352990054-14680-6-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2012-11-21 12:12 ` Felipe Balbi
[not found] ` <20121121121238.GG10216-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-21 12:49 ` Roger Quadros
2012-11-21 14:08 ` Felipe Balbi
2012-11-15 14:34 ` [PATCH 06/16] mfd: omap-usb-host: cleanup clock management code Roger Quadros
[not found] ` <1352990054-14680-7-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2012-11-21 13:39 ` Felipe Balbi
2012-11-26 15:14 ` Roger Quadros
[not found] ` <50B38765.5070901-l0cyMroinI0@public.gmane.org>
2012-11-26 20:02 ` Felipe Balbi
2012-11-27 9:41 ` Roger Quadros
2012-11-15 14:34 ` [PATCH 11/16] mfd: omap-usb-host: Manage HSIC clocks for HSIC mode Roger Quadros
[not found] ` <1352990054-14680-12-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2012-11-21 13:54 ` Felipe Balbi
[not found] ` <20121121135451.GM10216-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-21 15:49 ` Roger Quadros
2012-11-15 14:34 ` [PATCH 15/16] ARM: OMAP4: omap4panda: Don't enable USB PHY clock from board Roger Quadros
2012-11-21 13:59 ` Felipe Balbi
2012-11-16 20:08 ` [PATCH 00/16] OMAP USB Host cleanup Kevin Hilman
[not found] ` <87fw49cnvh.fsf-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org>
2012-11-19 10:11 ` Roger Quadros
[not found] ` <50AA05C3.7010003-l0cyMroinI0@public.gmane.org>
2012-11-19 23:22 ` Kevin Hilman
2012-11-20 23:13 ` Tony Lindgren
2012-11-21 10:05 ` Roger Quadros
2012-11-21 11:41 ` Felipe Balbi
2012-11-27 14:42 ` Roger Quadros
2012-11-27 16:30 ` Felipe Balbi
[not found] ` <20121127163022.GB24240-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-12-04 14:46 ` Grazvydas Ignotas
2012-11-15 14:34 ` [PATCH 07/16] mfd: omap_usb_host: Avoid creating copy of platform_data Roger Quadros
2012-11-21 13:40 ` Felipe Balbi
2012-11-15 14:34 ` [PATCH 08/16] mfd: omap-usb-host: know about number of ports from revision register Roger Quadros
2012-11-21 13:43 ` Felipe Balbi
[not found] ` <20121121134300.GJ10216-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-21 14:45 ` Roger Quadros
2012-11-21 19:44 ` Felipe Balbi
2012-11-15 14:34 ` [PATCH 09/16] mfd: omap-usb-host: override number of ports from platform data Roger Quadros
[not found] ` <1352990054-14680-10-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2012-11-21 13:45 ` Felipe Balbi
2012-11-21 14:50 ` Roger Quadros
2012-11-21 19:47 ` Felipe Balbi
2012-11-15 14:34 ` [PATCH 10/16] mfd: omap-usb-host: Intialize all available ports Roger Quadros
2012-11-21 13:52 ` Felipe Balbi
2012-11-21 15:47 ` Roger Quadros
2012-11-21 19:48 ` Felipe Balbi
2012-11-27 12:10 ` Roger Quadros
2012-11-27 13:28 ` Felipe Balbi
[not found] ` <20121127132827.GC22556-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-27 13:39 ` Roger Quadros
2012-11-15 14:34 ` [PATCH 12/16] ARM: OMAP2+: clock data: Merge utmi_px_gfclk into usb_host_hs_utmi_px_clk Roger Quadros
2012-11-15 14:34 ` [PATCH 13/16] mfd: omap-usb-host: Get rid of unnecessary spinlock Roger Quadros
[not found] ` <1352990054-14680-14-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2012-11-21 13:57 ` Felipe Balbi
[not found] ` <20121121135732.GN10216-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-21 15:55 ` Roger Quadros
2012-11-21 19:50 ` Felipe Balbi
2012-11-15 14:34 ` [PATCH 14/16] mfd: omap-usb-host: Support an auxiliary clock per port Roger Quadros
[not found] ` <1352990054-14680-15-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2012-11-21 13:58 ` Felipe Balbi
[not found] ` <20121121135841.GO10216-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-21 16:00 ` Roger Quadros
2012-11-15 14:34 ` [PATCH 16/16] ARM: OMAP: omap4panda: Power down the USB PHY and ETH when not in use Roger Quadros
2012-11-21 14:00 ` Felipe Balbi
[not found] ` <20121121140044.GQ10216-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-21 14:52 ` Alan Stern
2012-11-21 15:13 ` Roger Quadros
[not found] ` <50ACEFA5.4080104-l0cyMroinI0@public.gmane.org>
2012-11-21 15:32 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1211211028200.1731-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2012-11-21 16:07 ` Roger Quadros
2012-11-21 19:54 ` Felipe Balbi
[not found] ` <20121121195436.GF14290-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-22 1:13 ` Andy Green
2012-11-22 12:21 ` Felipe Balbi
[not found] ` <20121122121845.GB18022-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-22 13:49 ` Andy Green
2012-11-22 13:56 ` Felipe Balbi
[not found] ` <20121122135603.GA20066-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-22 15:00 ` Roger Quadros
[not found] ` <50AE3E1D.9000607-l0cyMroinI0@public.gmane.org>
2012-11-22 16:12 ` Felipe Balbi
[not found] ` <20121122161228.GB20665-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-23 10:23 ` Roger Quadros
[not found] ` <50AF4EB8.9010800-l0cyMroinI0@public.gmane.org>
2012-11-23 10:44 ` Felipe Balbi
[not found] ` <20121123104416.GD29585-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-23 16:25 ` Alan Stern
2012-11-23 20:37 ` Andy Green
2012-11-24 15:38 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1211241032490.4291-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
2012-11-24 22:00 ` Andy Green [this message]
[not found] ` <50B14395.4010404-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2012-11-25 0:41 ` Alan Stern
2012-11-22 17:36 ` Alan Stern
2012-11-22 17:53 ` Felipe Balbi
[not found] ` <20121122175340.GA22614-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-22 18:32 ` Alan Stern
2012-11-22 20:15 ` Felipe Balbi
2012-11-23 2:35 ` Alan Stern
2012-11-23 10:38 ` Felipe Balbi
[not found] ` <20121123103817.GC29585-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-11-23 16:27 ` Alan Stern
2012-11-26 8:52 ` Felipe Balbi
[not found] ` <Pine.LNX.4.44L0.1211221226360.2255-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
2012-11-23 0:19 ` Andy Green
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50B14395.4010404@linaro.org \
--to=andy.green-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \
--cc=balbi-l0cyMroinI0@public.gmane.org \
--cc=keshava_mgowda-l0cyMroinI0@public.gmane.org \
--cc=linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=rogerq-l0cyMroinI0@public.gmane.org \
--cc=stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).