Re: [PATCH 1/9] phy: core: Change the way of_phy_get is called

From: Kishon Vijay Abraham I
Date: Mon Dec 09 2013 - 02:23:31 EST


On Friday 06 December 2013 04:22 PM, Kamil Debski wrote:
Hi,

From: Kishon Vijay Abraham I [mailto:kishon@xxxxxx]
Sent: Friday, December 06, 2013 6:31 AM

Hi,

On Thursday 05 December 2013 05:59 PM, Kamil Debski wrote:
Previously the of_phy_get function took a struct device * and was
declared static. It was impossible to call it from another driver and
thus it was impossible to get phy defined

It was never intended to be called from other drivers. What's up with
the wrapper of of_phy_get, phy_get()/devm_phy_get()? Why isn't that
enough?

Implementing support for multiple phys in the ehci driver is a bit tricky.
Especially when we want to do it right. Please have a look at this part of
the dts file:

+ ehci@12580000 {
+ compatible = "samsung,exynos4210-ehci";
+ reg = <0x12580000 0x20000>;
+ interrupts = <0 70 0>;
+ clocks = <&clock 304>, <&clock 305>;
+ clock-names = "usbhost", "otg";
+ status = "disabled";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@0 {
+ reg = <0>;
+ phys = <&usb2phy 1>;
+ phy-names = "host";
+ status = "disabled";
+ };
+ port@1 {
+ reg = <1>;
+ phys = <&usb2phy 2>;
+ phy-names = "hsic0";
+ status = "disabled";
+ };
+ port@2 {
+ reg = <2>;
+ phys = <&usb2phy 3>;
+ phy-names = "hsic1";
+ status = "disabled";
+ };
+ };

With the above we have a clear specification of ports and their respective
phys. But to do this properly the ehci driver has to iterate over port
nodes. It is much easier to use devm_of_phy_get by giving the node as its
argument.

I see. There are a couple of more things we do in the wrapper that gets missed while exporting of_phy_get (get_device and try_module_get). You might want to re-work that one.

Thanks
Kishon
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/