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.