Enable usbphy and hsotg for exynos4
Subsystems (2)
cover Enable usbphy and hsotg for exynos4
This patchset enables a exynos4 usbphy and hsotg DT node for exynos4. The usb phy node uses generic exynos phy driver. The driver uses PMU syscon and SYSREG syscon phandles.
Chanho Park (4):
ARM: dts: exynos4: add PMU syscon node
ARM: dts: exynos4: add exynos_usbphy node
ARM: dts: exynos4: add hsotg device node
ARM: dts: exynos4412-trats2: enable usb nodes
arch/arm/boot/dts/exynos4.dtsi | 26 ++++++++++++++++++++++++++ arch/arm/boot/dts/exynos4412-trats2.dts | 10 ++++++++++ arch/arm/boot/dts/exynos4x12.dtsi | 5 +++++ 3 files changed, 41 insertions(+)
Signature · 1 line
1.8.3.2
PATCH 1/4 ARM: dts: exynos4: add PMU syscon node
This patch adds a PMU(Power Management Unit) syscon node. This should be required for USB Phy syscon regmap I/F.
--- arch/arm/boot/dts/exynos4.dtsi | 5 +++++ 1 file changed, 5 insertions(+)
arch/arm/boot/dts/exynos4.dtsi +5 -0
@@ -110,6 +110,11 @@ reg = <0x10010000 0x400>; }; + pmu_reg: syscon at 10020000 { + compatible = "samsung,exynos4-pmureg", "syscon"; + reg = <0x10020000 0x4000>; + }; + dsi_0: dsi at 11C80000 { compatible = "samsung,exynos4210-mipi-dsi"; reg = <0x11C80000 0x10000>;
Signature · 1 line
1.8.3.2
PATCH 1/4 ARM: dts: exynos4: add PMU syscon node
Hi Chanho,
Quoted 15 lines · Chanho Park
This patch adds a PMU(Power Management Unit) syscon node. This should be required for USB Phy syscon regmap I/F.
Cc Tomasz Figa <[email protected]>Cc Kamil Debski <[email protected]>Signed-off-by Chanho Park <[email protected]>--- arch/arm/boot/dts/exynos4.dtsi | 5 +++++ 1 file changed, 5 insertions(+)arch/arm/boot/dts/exynos4.dtsi +0
-0
arch/arm/boot/dts/exynos4.dtsi line 114
Quoted 5 lines
arch/arm/boot/dts/exynos4.dtsi +2
-0@@ -110,6 +110,11 @@ reg = <0x10010000 0x400>; }; + pmu_reg: syscon at 10020000 { + compatible = "samsung,exynos4-pmureg", "syscon";
This compatible string doesn't seem to be defined in [1], please add it there,
[1] Documentation/devicetree/bindings/arm/samsung/pmu.txt
Otherwise looks good, so after fixing that you may add my
Best regards,
Tomasz
PATCH 1/4 ARM: dts: exynos4: add PMU syscon node
Hi,
Quoted 24 lines · Tomasz Figa
Hi Chanho,
Quoted 20 lines · Chanho Park
This patch adds a PMU(Power Management Unit) syscon node. This should be required for USB Phy syscon regmap I/F.
Cc Tomasz Figa <[email protected]>Cc Kamil Debski <[email protected]>Signed-off-by Chanho Park <[email protected]>--- arch/arm/boot/dts/exynos4.dtsi | 5 +++++ 1 file changed, 5 insertions(+)arch/arm/boot/dts/exynos4.dtsi +0
-0@@ -110,6 +110,11 @@ reg = <0x10010000 0x400>; };
Quoted 3 lines
arch/arm/boot/dts/exynos4.dtsi line 114
Quoted 2 lines
arch/arm/boot/dts/exynos4.dtsi +2
-0+ pmu_reg: syscon at 10020000 { + compatible = "samsung,exynos4-pmureg", "syscon";
Assume a case where exynos PMU is made as platform driver [1] and we
need use the compatible "samsung,exynos4-pmureg" in the driver. But since syscon driver uses compatible "syscon" and once the syscon driver is probed, the exynos PMU platform driver [1] will NEVER be probed.
So my question is, can we have 2 compatible strings for a DT node, and both the compatible strings are used for probing purpose? Recently I faced this issue on exynos5250, where i was testing PMU driver [1] and I noticed that PMU driver [1] was NEVER probed, if I enable syscon driver in menuconfig.
[1] http://www.spinics.net/lists/linux-samsung-soc/msg28038.html
Quoted 18 lines
This compatible string doesn't seem to be defined in [1], please add it there,
[1]
Documentation/devicetree/bindings/arm/samsung/pmu.txtOtherwise looks good, so after fixing that you may add my
Reviewed-by Tomasz Figa <[email protected]>Best regards,
Tomasz--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 1/4 ARM: dts: exynos4: add PMU syscon node
Hi Vikas,
Quoted 32 lines · Vikas Sajjan
Hi,
Quoted 24 lines · Tomasz Figa
Hi Chanho,
Quoted 20 lines · Chanho Park
This patch adds a PMU(Power Management Unit) syscon node. This should be required for USB Phy syscon regmap I/F.
Cc Tomasz Figa <[email protected]>Cc Kamil Debski <[email protected]>Signed-off-by Chanho Park <[email protected]>--- arch/arm/boot/dts/exynos4.dtsi | 5 +++++ 1 file changed, 5 insertions(+)arch/arm/boot/dts/exynos4.dtsi +0
-0@@ -110,6 +110,11 @@ reg = <0x10010000 0x400>; };Quoted 3 lines
arch/arm/boot/dts/exynos4.dtsi line 114
Quoted 2 lines
arch/arm/boot/dts/exynos4.dtsi +2
-0+ pmu_reg: syscon at 10020000 { + compatible = "samsung,exynos4-pmureg", "syscon";
Quoted 10 lines
Assume a case where exynos PMU is made as platform driver [1] and we
need use the compatible "samsung,exynos4-pmureg" in the driver. But since syscon driver uses compatible "syscon" and once the syscon driver is probed, the exynos PMU platform driver [1] will NEVER be probed.
So my question is, can we have 2 compatible strings for a DT node, and both the compatible strings are used for probing purpose? Recently I faced this issue on exynos5250, where i was testing PMU driver [1] and I noticed that PMU driver [1] was NEVER probed, if I enable syscon driver in menuconfig.
No, it is not possible to bind two drivers with different compatible strings to the same node. Basically this is because only one platform driver can be bound to particular platform device.
The rule is that the most specific compatible string (e.g. the first from the left) that matches should be used, but I'm not sure if this is implemented this way in Linux kernel, especially considering that a platform driver usually probes when it is being registered. So we might have a race here, which you can work around by making sure that your PMU driver is always registered first (e.g. by lowering its initcall level).
Best regards,
Tomasz
PATCH 1/4 ARM: dts: exynos4: add PMU syscon node
Hi Tomasz,
Quoted 52 lines · Tomasz Figa
Hi Vikas,
Quoted 36 lines · Vikas Sajjan
Hi,
Quoted 26 lines · Tomasz Figa
Hi Chanho,
Quoted 21 lines · Chanho Park
This patch adds a PMU(Power Management Unit) syscon node. This should be required for USB Phy syscon regmap I/F.
Cc Tomasz Figa <[email protected]>Cc Kamil Debski <[email protected]>Signed-off-by Chanho Park <[email protected]>--- arch/arm/boot/dts/exynos4.dtsi | 5 +++++ 1 file changed, 5 insertions(+)arch/arm/boot/dts/exynos4.dtsi +0
-0@@ -110,6 +110,11 @@ reg = <0x10010000 0x400>; };Quoted 4 lines
arch/arm/boot/dts/exynos4.dtsi line 114
Quoted 2 lines
arch/arm/boot/dts/exynos4.dtsi +2
-0+ pmu_reg: syscon at 10020000 { + compatible = "samsung,exynos4-pmureg", "syscon";Quoted 10 lines
Assume a case where exynos PMU is made as platform driver [1] and we
need use the compatible "samsung,exynos4-pmureg" in the driver. But since syscon driver uses compatible "syscon" and once the syscon driver is probed, the exynos PMU platform driver [1] will NEVER be probed.
So my question is, can we have 2 compatible strings for a DT node, and both the compatible strings are used for probing purpose? Recently I faced this issue on exynos5250, where i was testing PMU driver [1] and I noticed that PMU driver [1] was NEVER probed, if I enable syscon driver in menuconfig.
Quoted 4 lines
No, it is not possible to bind two drivers with different compatible strings to the same node. Basically this is because only one platform driver can be bound to particular platform device.
Yes, correct.
Quoted 7 lines
The rule is that the most specific compatible string (e.g. the first from the left) that matches should be used, but I'm not sure if this is implemented this way in Linux kernel, especially considering that a platform driver usually probes when it is being registered. So we might have a race here, which you can work around by making sure that your PMU driver is always registered first (e.g. by lowering its initcall level).
I don't see it's using first compatible string from the left. I can see whichever driver registers platform driver first, it's probe is getting called. As in this particular case, PMU has two compatibility string as "samsung, exynosxxx-pmu", "syscon". But since "syscon" driver registers it's platform driver in postcore_initcall where as PMU platform driver [1], was registering as arch_initcall, only "syscon" probe got called.
In my V2 patch for converting PMU as driver form, I dropped idea of converting into platform driver, because we can't remove "syscon" from binding as many other driver wants to access PMU register via regmap handle. By lowering it's initcall level may be I can make PMU probe gets called but then how other drivers will be able to access PMU regmap handles?
Quoted 8 lines
Best regards,
Tomasz_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
PATCH 2/4 ARM: dts: exynos4: add exynos_usbphy node
In reply to Chanho ParkThis patch enables a exynos_usbphy node for exynos4 SoCs. A exynos4x12 usb phy node is almost same with 4210's one except compatible string and pmu syscon.
--- arch/arm/boot/dts/exynos4.dtsi | 10 ++++++++++ arch/arm/boot/dts/exynos4x12.dtsi | 5 +++++ 2 files changed, 15 insertions(+)
arch/arm/boot/dts/exynos4.dtsi +10 -0
@@ -278,6 +278,16 @@ status = "disabled"; }; + exynos_usbphy: exynos-usbphy at 125B0000 { + compatible = "samsung,exynos4210-usb2-phy"; + reg = <0x125B0000 0x100>; + samsung,pmureg-phandle = <&pmu_reg>; + clocks = <&clock 305>, <&clock 2>; + clock-names = "phy", "ref"; + status = "disabled"; + #phy-cells = <1>; + }; + ehci at 12580000 { compatible = "samsung,exynos4210-ehci"; reg = <0x12580000 0x100>;
arch/arm/boot/dts/exynos4x12.dtsi +5 -0
@@ -243,4 +243,9 @@ clock-names = "biu", "ciu"; status = "disabled"; }; + + exynos-usbphy at 125B0000 { + compatible = "samsung,exynos4x12-usb2-phy"; + samsung,sysreg-phandle = <&sys_reg>; + }; };
Signature · 1 line
1.8.3.2
PATCH 2/4 ARM: dts: exynos4: add exynos_usbphy node
Hi Chanho,
Quoted 17 lines · Chanho Park
This patch enables a
exynos_usbphynode for exynos4 SoCs. A exynos4x12 usb phy node is almost same with 4210's one except compatible string and pmu syscon.Cc Tomasz Figa <[email protected]>Cc Kamil Debski <[email protected]>Signed-off-by Chanho Park <[email protected]>--- arch/arm/boot/dts/exynos4.dtsi | 10 ++++++++++ arch/arm/boot/dts/exynos4x12.dtsi | 5 +++++ 2 files changed, 15 insertions(+)arch/arm/boot/dts/exynos4.dtsi +0
-0
arch/arm/boot/dts/exynos4.dtsi line 285
Quoted 8 lines
arch/arm/boot/dts/exynos4.dtsi +5
-0@@ -278,6 +278,16 @@ status = "disabled"; }; + exynos_usbphy: exynos-usbphy at 125B0000 { + compatible = "samsung,exynos4210-usb2-phy"; + reg = <0x125B0000 0x100>; + samsung,pmureg-phandle = <&pmu_reg>; + clocks = <&clock 305>, <&clock 2>;
Please use clock macros from include/dt-bindings instead of numbers directly.
Best regards,
Tomasz
PATCH 3/4 ARM: dts: exynos4: add hsotg device node
In reply to Chanho ParkThis patch adds a hsotg node for exynos4 USB2.0 device controller.
--- arch/arm/boot/dts/exynos4.dtsi | 11 +++++++++++ 1 file changed, 11 insertions(+)
arch/arm/boot/dts/exynos4.dtsi +11 -0
@@ -288,6 +288,17 @@ #phy-cells = <1>; }; + hsotg at 12480000 { + compatible = "samsung,s3c6400-hsotg"; + reg = <0x12480000 0x20000>; + interrupts = <0 71 0>; + clocks = <&clock 305>; + clock-names = "otg"; + phys = <&exynos_usbphy 0>; + phy-names = "device"; + status = "disabled"; + }; + ehci at 12580000 { compatible = "samsung,exynos4210-ehci"; reg = <0x12580000 0x100>;
Signature · 1 line
1.8.3.2
PATCH 3/4 ARM: dts: exynos4: add hsotg device node
Hi Chanho,
Quoted 15 lines · Chanho Park
This patch adds a hsotg node for exynos4 USB2.0 device controller.
Cc Tomasz Figa <[email protected]>Cc Kamil Debski <[email protected]>Cc Marek Szyprowski <[email protected]>Signed-off-by Chanho Park <[email protected]>--- arch/arm/boot/dts/exynos4.dtsi | 11 +++++++++++ 1 file changed, 11 insertions(+)arch/arm/boot/dts/exynos4.dtsi +0
-0
arch/arm/boot/dts/exynos4.dtsi line 295
Quoted 8 lines
arch/arm/boot/dts/exynos4.dtsi +5
-0@@ -288,6 +288,17 @@ #phy-cells = <1>; }; + hsotg at 12480000 { + compatible = "samsung,s3c6400-hsotg"; + reg = <0x12480000 0x20000>; + interrupts = <0 71 0>; + clocks = <&clock 305>;
Please use clock macros.
arch/arm/boot/dts/exynos4.dtsi line 298
Quoted 3 lines
arch/arm/boot/dts/exynos4.dtsi +3
-0+ clock-names = "otg"; + phys = <&exynos_usbphy 0>; + phy-names = "device";
This is not the correct phy name for this binding. According to what the driver uses and the example in ...bindings/usb/dwc2.txt "usb2-phy" should be used.
Best regards,
Tomasz
PATCH 4/4 ARM: dts: exynos4412-trats2: enable usb nodes
In reply to Chanho ParkThis patch enables exynos_usbphy and hsotg device nodes.
--- arch/arm/boot/dts/exynos4412-trats2.dts | 10 ++++++++++ 1 file changed, 10 insertions(+)
arch/arm/boot/dts/exynos4412-trats2.dts +10 -0
@@ -665,6 +665,16 @@ }; }; + exynos-usbphy at 125B0000 { + status = "okay"; + }; + + hsotg at 12480000 { + vusb_d-supply = <&ldo15_reg>; + vusb_a-supply = <&ldo12_reg>; + status = "okay"; + }; + thermistor-ap at 0 { compatible = "ntc,ncp15wb473"; pullup-uv = <1800000>; /* VCC_1.8V_AP */
Signature · 1 line
1.8.3.2