linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).