diff mbox

[v2,5/5] arm64: dts: mediatek: add xHCI & usb phy for mt8173

Message ID 1436348468-4126-6-git-send-email-chunfeng.yun@mediatek.com (mailing list archive)
State New, archived
Headers show

Commit Message

Chunfeng Yun (云春峰) July 8, 2015, 9:41 a.m. UTC
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
 arch/arm64/boot/dts/mediatek/mt8173-evb.dts | 15 +++++++++++++++
 arch/arm64/boot/dts/mediatek/mt8173.dtsi    | 27 +++++++++++++++++++++++++++
 2 files changed, 42 insertions(+)

Comments

Daniel Kurtz July 14, 2015, 10:12 a.m. UTC | #1
Hi Chunfeng,

On Wed, Jul 8, 2015 at 5:41 PM, Chunfeng Yun <chunfeng.yun@mediatek.com> wrote:
> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> ---
>  arch/arm64/boot/dts/mediatek/mt8173-evb.dts | 15 +++++++++++++++
>  arch/arm64/boot/dts/mediatek/mt8173.dtsi    | 27 +++++++++++++++++++++++++++
>  2 files changed, 42 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/mediatek/mt8173-evb.dts b/arch/arm64/boot/dts/mediatek/mt8173-evb.dts
> index f433c21..cb63dc3 100644
> --- a/arch/arm64/boot/dts/mediatek/mt8173-evb.dts
> +++ b/arch/arm64/boot/dts/mediatek/mt8173-evb.dts
> @@ -13,6 +13,7 @@
>   */
>
>  /dts-v1/;
> +#include <dt-bindings/gpio/gpio.h>
>  #include "mt8173.dtsi"
>
>  / {
> @@ -32,6 +33,15 @@
>         };
>
>         chosen { };
> +
> +       usb_p1_vbus: fixedregulator@0 {

Why @0 ?

> +               compatible = "regulator-fixed";
> +               regulator-name = "usb_vbus";
> +               regulator-min-microvolt = <5000000>;
> +               regulator-max-microvolt = <5000000>;
> +               gpio = <&pio 130 GPIO_ACTIVE_HIGH>;
> +               enable-active-high;
> +       };
>  };
>
>  &pwrap {
> @@ -211,3 +221,8 @@
>  &uart0 {
>         status = "okay";
>  };
> +
> +&usb {
> +       reg-vusb33-supply = <&mt6397_vusb_reg>;
> +       reg-vbus-supply = <&usb_p1_vbus>;
> +};
> diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
> index 0696f8f..452bd0a 100644
> --- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
> +++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
> @@ -15,6 +15,7 @@
>  #include <dt-bindings/interrupt-controller/irq.h>
>  #include <dt-bindings/interrupt-controller/arm-gic.h>
>  #include <dt-bindings/reset-controller/mt8173-resets.h>
> +#include <dt-bindings/power/mt8173-power.h>

Sort alphabetically, so:
power before reset

>  #include "mt8173-pinfunc.h"
>
>  / {
> @@ -393,6 +394,32 @@
>                         #size-cells = <0>;
>                         status = "disabled";
>                 };
> +
> +               usb: usb30@11270000 {
> +                       compatible = "mediatek,mt8173-xhci";
> +                       reg = <0 0x11270000 0 0x1000>;
> +                       interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_LOW>;
> +                       usb-phy = <&u3phy>;
> +                       usb3-lpm-capable;
> +                       clocks = <&topckgen CLK_TOP_USB30_SEL>;
> +                       clock-names = "sys_mac";
> +               };
> +
> +               u3phy: usb-phy@11271000 {
> +                       compatible = "mediatek,mt8173-u3phy";
> +                       reg = <0 0x11271000 0 0x3000>,
> +                             <0 0x11280000 0 0x20000>;
> +                       power-domains = <&scpsys MT8173_POWER_DOMAIN_USB>;
> +                       usb-wakeup-ctrl = <&pericfg>;
> +                       wakeup-src = <1>;
> +                       u2port-num = <2>;

Mediatek specific properties should be prefixed with "mediatek,".
I also find it nicer if you put the standard properties first:
  (compatible, reg, clocks, clock-names, power-domains)
then device specific properties:
  (usb-wakeup-ctrl, wakeup-src, u2port-num)
and then the final:
  status="disabled";

This last is currently missing, so please add it, too.

Also, is there some pinctrl settings that must be set for USB?

Lastly, I could not quite figure out which patch this set was based on.
Patch [0] mentions v4.2-rc1, however, the .dts changes in this patch
did not apply cleanly.
Perhaps it was based on a particular patch of Matthias tree?

Thanks!
-Dan

> +                       clocks = <&pericfg CLK_PERI_USB0>,
> +                                <&pericfg CLK_PERI_USB1>,
> +                                <&apmixedsys CLK_APMIXED_REF2USB_TX>;
> +                       clock-names = "wakeup_deb_p0",
> +                                     "wakeup_deb_p1",
> +                                     "u3phya_ref";
> +               };
>         };
>  };
>
> --
> 1.8.1.1.dirty
>
>
> _______________________________________________
> Linux-mediatek mailing list
> Linux-mediatek@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-mediatek
Chunfeng Yun (云春峰) July 20, 2015, 2:39 p.m. UTC | #2
Hi,

On Tue, 2015-07-14 at 18:12 +0800, Daniel Kurtz wrote:
> Hi Chunfeng,
> 
> On Wed, Jul 8, 2015 at 5:41 PM, Chunfeng Yun <chunfeng.yun@mediatek.com> wrote:
> > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> > ---
> >  arch/arm64/boot/dts/mediatek/mt8173-evb.dts | 15 +++++++++++++++
> >  arch/arm64/boot/dts/mediatek/mt8173.dtsi    | 27 +++++++++++++++++++++++++++
> >  2 files changed, 42 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/mediatek/mt8173-evb.dts b/arch/arm64/boot/dts/mediatek/mt8173-evb.dts
> > index f433c21..cb63dc3 100644
> > --- a/arch/arm64/boot/dts/mediatek/mt8173-evb.dts
> > +++ b/arch/arm64/boot/dts/mediatek/mt8173-evb.dts
> > @@ -13,6 +13,7 @@
> >   */
> >
> >  /dts-v1/;
> > +#include <dt-bindings/gpio/gpio.h>
> >  #include "mt8173.dtsi"
> >
> >  / {
> > @@ -32,6 +33,15 @@
> >         };
> >
> >         chosen { };
> > +
> > +       usb_p1_vbus: fixedregulator@0 {
> 
> Why @0 ?
It is the first fixed regulator, so set it to 0 as a index.
I will remove it later
> 
> > +               compatible = "regulator-fixed";
> > +               regulator-name = "usb_vbus";
> > +               regulator-min-microvolt = <5000000>;
> > +               regulator-max-microvolt = <5000000>;
> > +               gpio = <&pio 130 GPIO_ACTIVE_HIGH>;
> > +               enable-active-high;
> > +       };
> >  };
> >
> >  &pwrap {
> > @@ -211,3 +221,8 @@
> >  &uart0 {
> >         status = "okay";
> >  };
> > +
> > +&usb {
> > +       reg-vusb33-supply = <&mt6397_vusb_reg>;
> > +       reg-vbus-supply = <&usb_p1_vbus>;
> > +};
> > diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
> > index 0696f8f..452bd0a 100644
> > --- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
> > +++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
> > @@ -15,6 +15,7 @@
> >  #include <dt-bindings/interrupt-controller/irq.h>
> >  #include <dt-bindings/interrupt-controller/arm-gic.h>
> >  #include <dt-bindings/reset-controller/mt8173-resets.h>
> > +#include <dt-bindings/power/mt8173-power.h>
> 
> Sort alphabetically, so:
> power before reset
> 
Ok
> >  #include "mt8173-pinfunc.h"
> >
> >  / {
> > @@ -393,6 +394,32 @@
> >                         #size-cells = <0>;
> >                         status = "disabled";
> >                 };
> > +
> > +               usb: usb30@11270000 {
> > +                       compatible = "mediatek,mt8173-xhci";
> > +                       reg = <0 0x11270000 0 0x1000>;
> > +                       interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_LOW>;
> > +                       usb-phy = <&u3phy>;
> > +                       usb3-lpm-capable;
> > +                       clocks = <&topckgen CLK_TOP_USB30_SEL>;
> > +                       clock-names = "sys_mac";
> > +               };
> > +
> > +               u3phy: usb-phy@11271000 {
> > +                       compatible = "mediatek,mt8173-u3phy";
> > +                       reg = <0 0x11271000 0 0x3000>,
> > +                             <0 0x11280000 0 0x20000>;
> > +                       power-domains = <&scpsys MT8173_POWER_DOMAIN_USB>;
> > +                       usb-wakeup-ctrl = <&pericfg>;
> > +                       wakeup-src = <1>;
> > +                       u2port-num = <2>;
> 
> Mediatek specific properties should be prefixed with "mediatek,".
> I also find it nicer if you put the standard properties first:
>   (compatible, reg, clocks, clock-names, power-domains)
> then device specific properties:
>   (usb-wakeup-ctrl, wakeup-src, u2port-num)
> and then the final:
>   status="disabled";
> 
> This last is currently missing, so please add it, too.
> 
I will revise it. Thanks a lot.

> Also, is there some pinctrl settings that must be set for USB?
> 
There is no special pinctrl setting for USB on EVB board on which driver
is tested.

> Lastly, I could not quite figure out which patch this set was based on.
> Patch [0] mentions v4.2-rc1, however, the .dts changes in this patch
> did not apply cleanly.
> Perhaps it was based on a particular patch of Matthias tree?
> 
Yes, it is.
> Thanks!
> -Dan
> 
> > +                       clocks = <&pericfg CLK_PERI_USB0>,
> > +                                <&pericfg CLK_PERI_USB1>,
> > +                                <&apmixedsys CLK_APMIXED_REF2USB_TX>;
> > +                       clock-names = "wakeup_deb_p0",
> > +                                     "wakeup_deb_p1",
> > +                                     "u3phya_ref";
> > +               };
> >         };
> >  };
> >
> > --
> > 1.8.1.1.dirty
> >
> >
> > _______________________________________________
> > Linux-mediatek mailing list
> > Linux-mediatek@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-mediatek
Yingjoe Chen July 20, 2015, 2:51 p.m. UTC | #3
Hi Daniel, Chunfeng,


On Mon, 2015-07-20 at 22:39 +0800, chunfeng yun wrote:
> Hi,
> 
> On Tue, 2015-07-14 at 18:12 +0800, Daniel Kurtz wrote:
<...>
> > > +
> > > +       usb_p1_vbus: fixedregulator@0 {
> > 
> > Why @0 ?
> It is the first fixed regulator, so set it to 0 as a index.
> I will remove it later

Since this name should be unique, I think we should use gpio number as
address for fixedregulator in case we need other fixedregulators. So
this could be:

	usb_p1_vbus: fixedregulator@130 {

Also, we should sort according to the address(gpio number) for these
nodes. Does this make sense?

Joe.C

> > 
> > > +               compatible = "regulator-fixed";
> > > +               regulator-name = "usb_vbus";
> > > +               regulator-min-microvolt = <5000000>;
> > > +               regulator-max-microvolt = <5000000>;
> > > +               gpio = <&pio 130 GPIO_ACTIVE_HIGH>;
> > > +               enable-active-high;
> > > +       };
Daniel Kurtz July 20, 2015, 2:59 p.m. UTC | #4
On Mon, Jul 20, 2015 at 10:51 PM, Yingjoe Chen
<yingjoe.chen@mediatek.com> wrote:
>
> Hi Daniel, Chunfeng,
>
>
> On Mon, 2015-07-20 at 22:39 +0800, chunfeng yun wrote:
>> Hi,
>>
>> On Tue, 2015-07-14 at 18:12 +0800, Daniel Kurtz wrote:
> <...>
>> > > +
>> > > +       usb_p1_vbus: fixedregulator@0 {
>> >
>> > Why @0 ?
>> It is the first fixed regulator, so set it to 0 as a index.
>> I will remove it later
>
> Since this name should be unique, I think we should use gpio number as
> address for fixedregulator in case we need other fixedregulators. So
> this could be:
>
>         usb_p1_vbus: fixedregulator@130 {
>
> Also, we should sort according to the address(gpio number) for these
> nodes. Does this make sense?

Yes - that makes some sense.
But, a quick check of other "fixedregulator@" nodes in
arch/arm/boot/dts/ shows that mostly they use @0 , @1.
So, I think the original patch is probably fine.

Sorry for the noise,
-Dan

>
> Joe.C
>
>> >
>> > > +               compatible = "regulator-fixed";
>> > > +               regulator-name = "usb_vbus";
>> > > +               regulator-min-microvolt = <5000000>;
>> > > +               regulator-max-microvolt = <5000000>;
>> > > +               gpio = <&pio 130 GPIO_ACTIVE_HIGH>;
>> > > +               enable-active-high;
>> > > +       };
>
>
diff mbox

Patch

diff --git a/arch/arm64/boot/dts/mediatek/mt8173-evb.dts b/arch/arm64/boot/dts/mediatek/mt8173-evb.dts
index f433c21..cb63dc3 100644
--- a/arch/arm64/boot/dts/mediatek/mt8173-evb.dts
+++ b/arch/arm64/boot/dts/mediatek/mt8173-evb.dts
@@ -13,6 +13,7 @@ 
  */
 
 /dts-v1/;
+#include <dt-bindings/gpio/gpio.h>
 #include "mt8173.dtsi"
 
 / {
@@ -32,6 +33,15 @@ 
 	};
 
 	chosen { };
+
+	usb_p1_vbus: fixedregulator@0 {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		gpio = <&pio 130 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
 };
 
 &pwrap {
@@ -211,3 +221,8 @@ 
 &uart0 {
 	status = "okay";
 };
+
+&usb {
+	reg-vusb33-supply = <&mt6397_vusb_reg>;
+	reg-vbus-supply = <&usb_p1_vbus>;
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
index 0696f8f..452bd0a 100644
--- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
@@ -15,6 +15,7 @@ 
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/reset-controller/mt8173-resets.h>
+#include <dt-bindings/power/mt8173-power.h>
 #include "mt8173-pinfunc.h"
 
 / {
@@ -393,6 +394,32 @@ 
 			#size-cells = <0>;
 			status = "disabled";
 		};
+
+		usb: usb30@11270000 {
+			compatible = "mediatek,mt8173-xhci";
+			reg = <0 0x11270000 0 0x1000>;
+			interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_LOW>;
+			usb-phy = <&u3phy>;
+			usb3-lpm-capable;
+			clocks = <&topckgen CLK_TOP_USB30_SEL>;
+			clock-names = "sys_mac";
+		};
+
+		u3phy: usb-phy@11271000 {
+			compatible = "mediatek,mt8173-u3phy";
+			reg = <0 0x11271000 0 0x3000>,
+			      <0 0x11280000 0 0x20000>;
+			power-domains = <&scpsys MT8173_POWER_DOMAIN_USB>;
+			usb-wakeup-ctrl = <&pericfg>;
+			wakeup-src = <1>;
+			u2port-num = <2>;
+			clocks = <&pericfg CLK_PERI_USB0>,
+				 <&pericfg CLK_PERI_USB1>,
+				 <&apmixedsys CLK_APMIXED_REF2USB_TX>;
+			clock-names = "wakeup_deb_p0",
+				      "wakeup_deb_p1",
+				      "u3phya_ref";
+		};
 	};
 };