Hi, On Tue, Jun 26, 2012 at 4:48 PM, Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> wrote: > On 06/26/2012 01:13 PM, ABRAHAM, KISHON VIJAY wrote: >> Hi, >> >> On Tue, Jun 26, 2012 at 4:11 PM, Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> wrote: >>> On 06/26/2012 11:37 AM, Kishon Vijay Abraham I wrote: >>>> Adds an API to get usb phy by passing a device node phandle value. Since >>>> now it's possible to obtain phy by phandle, the checks in usb_add_phy >>>> for a valid phy type is removed (now it's just a debug message if a user >>>> tries to add a phy with undefined type). >>>> This also allows to add multiple phys of same type. >>>> >>>> Cc: Richard Zhao <richard.zhao@xxxxxxxxxxxxx> >>>> Cc: Marek Vasut <marex@xxxxxxx> >>>> Signed-off-by: Kishon Vijay Abraham I <kishon@xxxxxx> >>>> --- >>>> Had to remove the restricion on adding multiple phys of same type as now it >>>> would be possible to get the phys by phandle value. However there is no >>>> clear way to get a phy when there are multiple phys of same type without >>>> a phandle (non-dt). So in non-dt environment, adding and getting phy API's >>>> should be used with caution. Currently multiple-phys of the same type >>>> doesn't exist in kernel. >>> >>> In the current chipidea bindings for the mxs we link the usb phy >>> directly to the usb device: >>> >>> usb0: usb@80080000 { >>> compatible = "fsl,imx28-usb", "fsl,imx27-usb"; >>> reg = <0x80080000 0x10000>; >>> interrupts = <93>; >>> fsl,usbphy = <&usbphy0>; >>> status = "disabled"; >>> }; >>> >>> And then extract it from the DT with this code: >>> >>>> phy_np = of_parse_phandle(pdev->dev.of_node, "fsl,usbphy", 0); >>>> if (phy_np) { >>>> data->phy_np = phy_np; >>>> phy_pdev = of_find_device_by_node(phy_np); >>>> if (phy_pdev) { >>>> struct usb_phy *phy; >>>> phy = pdev_to_phy(phy_pdev); >>>> if (phy && >>>> try_module_get(phy_pdev->dev.driver->owner)) { >>>> usb_phy_init(phy); >>>> data->phy = phy; >>>> } >>>> } >>>> } >> >> This is like bypassing the otg_library to add or get the phy :-( > > The problem is, we don't have _the_ phy, we have one phy per usb port > and we have two USB ports. I think then this patch would solve your problem as it allows to add multiple-phys of the same type? > >> Ideally you should make use of the otg library function for it. Having >> a generic function in the otg library to get phy by phandle will help >> other phy users to use it instead of implementing their own version of >> get_phy from phandle. > > +1 > > The code I pointed you at is the topmost patch in: > https://github.com/riczhao/kernel-imx/commits/topics/usb-driver > As soon as your code is available, let's convert it to use your generic > function. Cool. Thanks :-) Regards Kishon -- 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