The following series implements the device_asset addition to struct device that has been discussed on the usb and omap lists with Alan Stern and GKH. Several of the ideas here are from Alan Stern. First we add the new struct to linux/device.h and cause it to be used just before device probe with one device_asset-specific callback to "enable" the assets and just after device removal with another device_asset-specific callback to "disable" the associated assets. Typical assets are things like regulators and clocks which are not known to the generic driver but which are bound to the specific device instance by hardware design. Second we provide stock, default device_asset callbacks if your asset is a struct regulator. You can just use those and the regulator will have a get and enable until the device instance is removed, when it will be disabled and put. Third we provide the same for struct clk. These stock callbacks mean there won't be any code duplication caused in the common case. Fourth we remove all the struct regulator code from ehci-omap. Fifth we implement Panda HUB+ETH (smsc95xx chip) regulator control using the device_asset scheme. Since the right device, ehci-omap.0 is created under mfd, the device_asset array is passed in platform_data to the right place where it's added to the platform_device's device before registration. Sixth we add the Panda's external ULPI PHY clock to the device_asset array we established for the regulator case above. The end result is we are able to remove the code about regulator and don't need any for clock control in the generic drivers. Instead we are able to associate the board-specific prerequisites for the drivers to work on a board externally with the enable and disable hidden in the plumbing. The end result is power and clock to the HUB+PHY (smsc95xx chip) remains off until ehci-hcd module is inserted, and both are disabled again when the module is removed. --- Andy Green (7): drivers: base: introduce device assets regulator: core: add default device asset handlers clk: add default device asset handlers usb: omap ehci: remove all regulator control from ehci omap omap4: panda: add smsc95xx regulator and reset dependent on root hub omap4 panda add smsc95xx clock dependent on root hub config omap2plus add ehci bits arch/arm/configs/omap2plus_defconfig | 42 +++++------- arch/arm/mach-omap2/board-omap4panda.c | 113 +++++++++++++++++++++++--------- arch/arm/mach-omap2/usb-host.c | 2 - arch/arm/plat-omap/include/plat/usb.h | 9 +-- drivers/base/dd.c | 36 ++++++++++ drivers/clk/clkdev.c | 39 +++++++++++ drivers/mfd/omap-usb-host.c | 9 ++- drivers/regulator/core.c | 34 ++++++++++ drivers/usb/host/ehci-omap.c | 37 ---------- include/linux/clk.h | 33 +++++++++ include/linux/device.h | 25 +++++++ include/linux/regulator/machine.h | 30 ++++++++ 12 files changed, 303 insertions(+), 106 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html