ARM: dts: mx25: USB block requires only one clock
Subsystems (5)
PATCH v3 1/9 ARM: dts: mx25: USB block requires only one clock
From: Fabio Estevam <[email protected]>
Like other imx SoCs only one USB clock is needed on mx25.
--- arch/arm/boot/dts/imx25.dtsi | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
arch/arm/boot/dts/imx25.dtsi +2 -4
@@ -496,8 +496,7 @@ compatible = "fsl,imx25-usb", "fsl,imx27-usb"; reg = <0x53ff4000 0x0200>; interrupts = <37>; - clocks = <&clks 9>, <&clks 70>, <&clks 8>; - clock-names = "ipg", "ahb", "per"; + clocks = <&clks 70>; fsl,usbmisc = <&usbmisc 0>; status = "disabled"; };
@@ -506,8 +505,7 @@ compatible = "fsl,imx25-usb", "fsl,imx27-usb"; reg = <0x53ff4400 0x0200>; interrupts = <35>; - clocks = <&clks 9>, <&clks 70>, <&clks 8>; - clock-names = "ipg", "ahb", "per"; + clocks = <&clks 70>; fsl,usbmisc = <&usbmisc 1>; status = "disabled"; };
Signature · 1 line
1.7.9.5
PATCH v3 2/9 ARM: dts: mx35: USB block requires only one clock
From: Fabio Estevam <[email protected]>
Like other imx SoCs only one USB clock is needed on mx35.
--- arch/arm/boot/dts/imx35.dtsi | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
arch/arm/boot/dts/imx35.dtsi +2 -4
@@ -296,8 +296,7 @@ compatible = "fsl,imx35-usb", "fsl,imx27-usb"; reg = <0x53ff4000 0x0200>; interrupts = <37>; - clocks = <&clks 9>, <&clks 73>, <&clks 28>; - clock-names = "ipg", "ahb", "per"; + clocks = <&clks 73>; fsl,usbmisc = <&usbmisc 0>; status = "disabled"; };
@@ -306,8 +305,7 @@ compatible = "fsl,imx35-usb", "fsl,imx27-usb"; reg = <0x53ff4400 0x0200>; interrupts = <35>; - clocks = <&clks 9>, <&clks 73>, <&clks 28>; - clock-names = "ipg", "ahb", "per"; + clocks = <&clks 73>; fsl,usbmisc = <&usbmisc 1>; status = "disabled"; };
Signature · 1 line
1.7.9.5
PATCH v3 3/9 usb: chipidea: Use standard usb-phy property.
In reply to Denis CarikliThis converts the Chipidea usbmisc driver to
use the standard usb-phy property.
It also adapt the dts that uses it.
--- arch/arm/boot/dts/imx23.dtsi | 2 +- arch/arm/boot/dts/imx27.dtsi | 4 ++-- arch/arm/boot/dts/imx28.dtsi | 4 ++-- arch/arm/boot/dts/imx51.dtsi | 2 +- arch/arm/boot/dts/imx53.dtsi | 4 ++-- arch/arm/boot/dts/imx6qdl.dtsi | 4 ++-- arch/arm/boot/dts/imx6sl.dtsi | 4 ++-- drivers/usb/chipidea/ci_hdrc_imx.c | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-)
arch/arm/boot/dts/imx23.dtsi +1 -1
@@ -522,7 +522,7 @@ compatible = "fsl,imx23-usb", "fsl,imx27-usb"; reg = <0x80080000 0x40000>; interrupts = <11>; - fsl,usbphy = <&usbphy0>; + usb-phy = <&usbphy0>; clocks = <&clks 40>; status = "disabled"; };
arch/arm/boot/dts/imx27.dtsi +2 -2
@@ -466,7 +466,7 @@ interrupts = <56>; clocks = <&clks 15>; fsl,usbmisc = <&usbmisc 0>; - fsl,usbphy = <&usbphy0>; + usb-phy = <&usbphy0>; status = "disabled"; };
@@ -485,7 +485,7 @@ interrupts = <55>; clocks = <&clks 15>; fsl,usbmisc = <&usbmisc 2>; - fsl,usbphy = <&usbphy2>; + usb-phy = <&usbphy2>; status = "disabled"; };
arch/arm/boot/dts/imx28.dtsi +2 -2
@@ -1143,7 +1143,7 @@ reg = <0x80080000 0x10000>; interrupts = <93>; clocks = <&clks 60>; - fsl,usbphy = <&usbphy0>; + usb-phy = <&usbphy0>; status = "disabled"; };
@@ -1152,7 +1152,7 @@ reg = <0x80090000 0x10000>; interrupts = <92>; clocks = <&clks 61>; - fsl,usbphy = <&usbphy1>; + usb-phy = <&usbphy1>; status = "disabled"; };
arch/arm/boot/dts/imx51.dtsi +1 -1
@@ -249,7 +249,7 @@ interrupts = <18>; clocks = <&clks IMX5_CLK_USBOH3_GATE>; fsl,usbmisc = <&usbmisc 0>; - fsl,usbphy = <&usbphy0>; + usb-phy = <&usbphy0>; status = "disabled"; };
arch/arm/boot/dts/imx53.dtsi +2 -2
@@ -276,7 +276,7 @@ interrupts = <18>; clocks = <&clks IMX5_CLK_USBOH3_GATE>; fsl,usbmisc = <&usbmisc 0>; - fsl,usbphy = <&usbphy0>; + usb-phy = <&usbphy0>; status = "disabled"; };
@@ -286,7 +286,7 @@ interrupts = <14>; clocks = <&clks IMX5_CLK_USBOH3_GATE>; fsl,usbmisc = <&usbmisc 1>; - fsl,usbphy = <&usbphy1>; + usb-phy = <&usbphy1>; status = "disabled"; };
arch/arm/boot/dts/imx6qdl.dtsi +2 -2
@@ -789,7 +789,7 @@ reg = <0x02184000 0x200>; interrupts = <0 43 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks 162>; - fsl,usbphy = <&usbphy1>; + usb-phy = <&usbphy1>; fsl,usbmisc = <&usbmisc 0>; status = "disabled"; };
@@ -799,7 +799,7 @@ reg = <0x02184200 0x200>; interrupts = <0 40 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks 162>; - fsl,usbphy = <&usbphy2>; + usb-phy = <&usbphy2>; fsl,usbmisc = <&usbmisc 1>; status = "disabled"; };
arch/arm/boot/dts/imx6sl.dtsi +2 -2
@@ -651,7 +651,7 @@ reg = <0x02184000 0x200>; interrupts = <0 43 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks IMX6SL_CLK_USBOH3>; - fsl,usbphy = <&usbphy1>; + usb-phy = <&usbphy1>; fsl,usbmisc = <&usbmisc 0>; status = "disabled"; };
@@ -661,7 +661,7 @@ reg = <0x02184200 0x200>; interrupts = <0 42 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks IMX6SL_CLK_USBOH3>; - fsl,usbphy = <&usbphy2>; + usb-phy = <&usbphy2>; fsl,usbmisc = <&usbmisc 1>; status = "disabled"; };
drivers/usb/chipidea/ci_hdrc_imx.c +1 -1
@@ -130,7 +130,7 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev)return ret; } - data->phy =devm_usb_get_phy_by_phandle (&pdev->dev,"fsl,usbphy" ,0 ); + data->phy =devm_usb_get_phy_by_phandle (&pdev->dev,"usb-phy" ,0 );if (IS_ERR (data->phy)) { ret =PTR_ERR (data->phy); goto err_clk;
Signature · 1 line
1.7.9.5
PATCH v3 3/9 usb: chipidea: Use standard usb-phy property.
Hi,
Quoted 3 lines · Denis Carikli
This converts the Chipidea usbmisc driver to
use the standard usb-phy property.
[...]
Quoted 6 lines
drivers/usb/chipidea/ci_hdrc_imx.c +0
-0
drivers/usb/chipidea/ci_hdrc_imx.c static int ci_hdrc_imx_probe(struct platform_device *pdev) · line 136
Quoted 8 lines
drivers/usb/chipidea/ci_hdrc_imx.c +1
-1@@ -130,7 +130,7 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev)return ret; } - data->phy =devm_usb_get_phy_by_phandle (&pdev->dev,"fsl,usbphy" ,0 ); + data->phy =devm_usb_get_phy_by_phandle (&pdev->dev,"usb-phy" ,0 );if (IS_ERR (data->phy)) { ret =PTR_ERR (data->phy); goto err_clk;
How about accepting the old property too and print a warning, that it is deprecated, rather than breaking all existing DT blobs?
Lothar Wa?mann
Signature · 9 lines
___________________________________________________________ Ka-Ro electronics GmbH | Pascalstra?e 22 | D - 52076 Aachen Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10 Gesch?ftsf?hrer: Matthias Kaussen Handelsregistereintrag: Amtsgericht Aachen, HRB 4996 www.karo-electronics.de | info at karo-electronics.de ___________________________________________________________
Re: [PATCH v3][ 3/9] usb: chipidea: Use standard usb-phy property.
?????, 12 ????? 2014, 11:19 +01:00 ?? Lothar Wa?mann <[email protected]>:
Quoted 15 lines
Hi,
Quoted 3 lines · Denis Carikli
This converts the Chipidea usbmisc driver to
use the standard usb-phy property.[...]
Quoted 8 lines
drivers/usb/chipidea/ci_hdrc_imx.c +0
-0@@ -130,7 +130,7 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev)return ret; }
Quoted 8 lines
drivers/usb/chipidea/ci_hdrc_imx.c static int ci_hdrc_imx_probe(struct platform_device *pdev) · line 136
Quoted 6 lines
drivers/usb/chipidea/ci_hdrc_imx.c +1
-1- data->phy =devm_usb_get_phy_by_phandle (&pdev->dev,"fsl,usbphy" ,0 ); + data->phy =devm_usb_get_phy_by_phandle (&pdev->dev,"usb-phy" ,0 );if (IS_ERR (data->phy)) { ret =PTR_ERR (data->phy); goto err_clk;How about accepting the old property too and print a warning, that it is deprecated, rather than breaking all existing DT blobs?
And this change should be reflected in the bindings documentation.
---
PATCH v3 3/9 usb: chipidea: Use standard usb-phy property.
In reply to Denis CarikliQuoted 169 lines
It also adapt the dts that uses it.
Signed-off-by Denis Carikli <[email protected]>--- arch/arm/boot/dts/imx23.dtsi | 2 +- arch/arm/boot/dts/imx27.dtsi | 4 ++-- arch/arm/boot/dts/imx28.dtsi | 4 ++-- arch/arm/boot/dts/imx51.dtsi | 2 +- arch/arm/boot/dts/imx53.dtsi | 4 ++-- arch/arm/boot/dts/imx6qdl.dtsi | 4 ++-- arch/arm/boot/dts/imx6sl.dtsi | 4 ++-- drivers/usb/chipidea/ci_hdrc_imx.c | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-)arch/arm/boot/dts/imx23.dtsi +1
-1@@ -522,7 +522,7 @@ compatible = "fsl,imx23-usb", "fsl,imx27-usb"; reg = <0x80080000 0x40000>; interrupts = <11>; - fsl,usbphy = <&usbphy0>; + usb-phy = <&usbphy0>; clocks = <&clks 40>; status = "disabled"; };arch/arm/boot/dts/imx27.dtsi +2
-2@@ -466,7 +466,7 @@ interrupts = <56>; clocks = <&clks 15>; fsl,usbmisc = <&usbmisc 0>; - fsl,usbphy = <&usbphy0>; + usb-phy = <&usbphy0>; status = "disabled"; };@@ -485,7 +485,7 @@ interrupts = <55>; clocks = <&clks 15>; fsl,usbmisc = <&usbmisc 2>; - fsl,usbphy = <&usbphy2>; + usb-phy = <&usbphy2>; status = "disabled"; };arch/arm/boot/dts/imx28.dtsi +2
-2@@ -1143,7 +1143,7 @@ reg = <0x80080000 0x10000>; interrupts = <93>; clocks = <&clks 60>; - fsl,usbphy = <&usbphy0>; + usb-phy = <&usbphy0>; status = "disabled"; };@@ -1152,7 +1152,7 @@ reg = <0x80090000 0x10000>; interrupts = <92>; clocks = <&clks 61>; - fsl,usbphy = <&usbphy1>; + usb-phy = <&usbphy1>; status = "disabled"; };arch/arm/boot/dts/imx51.dtsi +1
-1@@ -249,7 +249,7 @@ interrupts = <18>; clocks = <&clks IMX5_CLK_USBOH3_GATE>; fsl,usbmisc = <&usbmisc 0>; - fsl,usbphy = <&usbphy0>; + usb-phy = <&usbphy0>; status = "disabled"; };arch/arm/boot/dts/imx53.dtsi +2
-2@@ -276,7 +276,7 @@ interrupts = <18>; clocks = <&clks IMX5_CLK_USBOH3_GATE>; fsl,usbmisc = <&usbmisc 0>; - fsl,usbphy = <&usbphy0>; + usb-phy = <&usbphy0>; status = "disabled"; };@@ -286,7 +286,7 @@ interrupts = <14>; clocks = <&clks IMX5_CLK_USBOH3_GATE>; fsl,usbmisc = <&usbmisc 1>; - fsl,usbphy = <&usbphy1>; + usb-phy = <&usbphy1>; status = "disabled"; };(quoted diff) +0
-0
b/arch/arm/boot/dts/imx6qdl.dtsiindex cfc85be..d2f0087 100644arch/arm/boot/dts/imx6qdl.dtsi +2
-2@@ -789,7 +789,7 @@ reg = <0x02184000 0x200>; interrupts = <0 43 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks 162>; - fsl,usbphy = <&usbphy1>; + usb-phy = <&usbphy1>; fsl,usbmisc = <&usbmisc 0>; status = "disabled"; };@@ -799,7 +799,7 @@ reg = <0x02184200 0x200>; interrupts = <0 40 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks 162>; - fsl,usbphy = <&usbphy2>; + usb-phy = <&usbphy2>; fsl,usbmisc = <&usbmisc 1>; status = "disabled"; };(quoted diff) +0
-0
b/arch/arm/boot/dts/imx6sl.dtsiindex 6477447..33f501a 100644arch/arm/boot/dts/imx6sl.dtsi +2
-2@@ -651,7 +651,7 @@ reg = <0x02184000 0x200>; interrupts = <0 43 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks IMX6SL_CLK_USBOH3>; - fsl,usbphy = <&usbphy1>; + usb-phy = <&usbphy1>; fsl,usbmisc = <&usbmisc 0>; status = "disabled"; };@@ -661,7 +661,7 @@ reg = <0x02184200 0x200>; interrupts = <0 42 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks IMX6SL_CLK_USBOH3>; - fsl,usbphy = <&usbphy2>; + usb-phy = <&usbphy2>; fsl,usbmisc = <&usbmisc 1>; status = "disabled"; };drivers/usb/chipidea/ci_hdrc_imx.c +1
-1@@ -130,7 +130,7 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev)return ret; } - data->phy =devm_usb_get_phy_by_phandle (&pdev->dev,"fsl,usbphy" , 0); + data->phy =devm_usb_get_phy_by_phandle (&pdev->dev,"usb-phy" ,0 );if (IS_ERR (data->phy)) {drivers/usb/chipidea/ci_hdrc_imx.c +0
-1ret =PTR_ERR (data->phy); goto err_clk; --
Quoted 2 lines
1.7.9.5
According to Power_ePAPR_APPROVED_v1.1.pdf
"ethernet-phy" is the node name, it is the same with Sergei's suggestion. But you have changed the property name at this patch, in fact, "fsl,usbphy" is ok for property name, "fsl,usb-phy" may be better, but not worth a patch to change it.
Peter
PATCH v3 3/9 usb: chipidea: Use standard usb-phy property.
Hello.
Quoted 3 lines · Peter Chen
Quoted 3 lines
It also adapt the dts that uses it.
Signed-off-by Denis Carikli <[email protected]>
[...]
Quoted 2 lines
According to Power_ePAPR_APPROVED_v1.1.pdf
"ethernet-phy" is the node name, it is the same with Sergei's suggestion.
Nobody's talking about "ehternet-phy" here.
Quoted 3 lines
But you have changed the property name at this patch, in fact, "fsl,usbphy" is ok for property name, "fsl,usb-phy" may be better, but not worth a patch to change it.
No, it's not better and both are not OK because they're still Freescale
specific while the de-facto standard property "usb-phy" is already used by other USB drivers for the same purpose.
Quoted 1 line
Peter
WBR, Sergei
PATCH v3 3/9 usb: chipidea: Use standard usb-phy property.
Quoted 8 lines
Quoted 5 lines
According to Power_ePAPR_APPROVED_v1.1.pdf "ethernet-phy" is the node name, it is the same with Sergei's suggestion.
Nobody's talking about "ehternet-phy" here.
Hmm, you take "ethernet-phy" as an example, and suggest changing to "usb-phy" at last email.
Quoted 8 lines
Quoted 1 line
But you have changed the property name at this patch, in fact,
"fsl,usbphy"
Quoted 2 lines
is ok for property name, "fsl,usb-phy" may be better, but not worth a patch to change it.
No, it's not better and both are not OK because they're still
Freescale specific while the de-facto standard property "usb-phy" is already used by other USB drivers for the same purpose.
Am I missing something, property name should be the same for all platforms?
At Power_ePAPR_APPROVED_v1.1, page 18, the example property name like below:
fsl,channel-fifo-len
ibm,ppc-interrupt-server#s
linux,network-index
Peter
PATCH v3 3/9 usb: chipidea: Use standard usb-phy property.
Hello.
Quoted 6 lines · Peter Chen
Quoted 4 lines
Quoted 2 lines
According to Power_ePAPR_APPROVED_v1.1.pdf "ethernet-phy" is the node name, it is the same with Sergei's suggestion.
Nobody's talking about "ehternet-phy" here.
Hmm, you take "ethernet-phy" as an example, and suggest changing to "usb-phy" at last email.
Then it's a wrong mail. I'm not mixing nodes and properties.
Quoted 10 lines
Quoted 8 lines
Quoted 1 line
But you have changed the property name at this patch, in fact,
"fsl,usbphy"
Quoted 2 lines
is ok for property name, "fsl,usb-phy" may be better, but not worth a patch to change it.
No, it's not better and both are not OK because they're still
Freescale specific while the de-facto standard property "usb-phy" is already used by other USB drivers for the same purpose.Am I missing something, property name should be the same for all platforms?
If they're doing the same standard thing, yes.
Quoted 1 line
Peter
WBR, Sergei
PATCH v3 4/9 usb: chipidea: usbmisc: Add USB Host support for i.MX25/i.MX35 CPUs
In reply to Denis CarikliThis adds the i.MX25 and the i.MX35 support in the ChipIdea usbmisc driver.
The i.MX25 and i.MX35 usb controllers are similar enough to be able to use the same code.
---
Changelog v2->v3:
- Add a commit log
Changelog v1->v2:
- converted two remaining defines to BIT()
- Removed a variable declaration that was not used in usbmisc_imx25_init
--- drivers/usb/chipidea/usbmisc_imx.c | 58 ++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+)
drivers/usb/chipidea/usbmisc_imx.c +58 -0
@@ -21,6 +21,26 @@#define MX25_USB_PHY_CTRL_OFFSET 0x08#define MX25_BM_EXTERNAL_VBUS_DIVIDER BIT(23) +#define MXC_EHCI_INTERFACE_SINGLE_UNI (2 << 0) +#define MXC_EHCI_INTERFACE_DIFF_UNI (0 << 0) +#define MXC_EHCI_INTERFACE_MASK (0xf) + +#define MX25_OTG_SIC_SHIFT 29 +#define MX25_OTG_SIC_MASK (0x3 << MX25_OTG_SIC_SHIFT) +#define MX25_OTG_PM_BIT BIT(24) +#define MX25_OTG_PP_BIT BIT(11) +#define MX25_OTG_OCPOL_BIT BIT(3) + +#define MX25_H1_SIC_SHIFT 21 +#define MX25_H1_SIC_MASK (0x3 << MX25_H1_SIC_SHIFT) +#define MX25_H1_PP_BIT BIT(18) +#define MX25_H1_PM_BIT BIT(16) +#define MX25_H1_IPPUE_UP_BIT BIT(7) +#define MX25_H1_IPPUE_DOWN_BIT BIT(6) +#define MX25_H1_TLL_BIT BIT(5) +#define MX25_H1_USBTE_BIT BIT(4) +#define MX25_H1_OCPOL_BIT BIT(2) +#define MX27_H1_PM_BIT BIT(8)#define MX27_H2_PM_BIT BIT(16)#define MX27_OTG_PM_BIT BIT(24)
@@ -50,6 +70,39 @@ struct imx_usbmisc {static struct imx_usbmisc *usbmisc; +static int usbmisc_imx25_init (struct imx_usbmisc_data *data) +{ +unsigned long flags; +u32 val =0 ; + +if (data->index >1 ) +return -EINVAL ; + +spin_lock_irqsave (&usbmisc->lock, flags); +switch (data->index) { +case 0 : + val =readl (usbmisc->base); + val &= ~(MX25_OTG_SIC_MASK |MX25_OTG_PP_BIT ); + val |= (MXC_EHCI_INTERFACE_DIFF_UNI &MXC_EHCI_INTERFACE_MASK ) <<MX25_OTG_SIC_SHIFT ; + val |= (MX25_OTG_PM_BIT |MX25_OTG_OCPOL_BIT ); +writel (val, usbmisc->base); +break ; +case 1 : + val =readl (usbmisc->base); + val &= ~(MX25_H1_SIC_MASK |MX25_H1_PP_BIT |MX25_H1_IPPUE_UP_BIT ); + val |= (MXC_EHCI_INTERFACE_SINGLE_UNI &MXC_EHCI_INTERFACE_MASK ) <<MX25_H1_SIC_SHIFT ; + val |= (MX25_H1_PM_BIT |MX25_H1_OCPOL_BIT |MX25_H1_TLL_BIT | +MX25_H1_USBTE_BIT |MX25_H1_IPPUE_DOWN_BIT ); + +writel (val, usbmisc->base); + +break ; + } +spin_unlock_irqrestore (&usbmisc->lock, flags); + +return 0 ; +} +static int usbmisc_imx25_post (struct imx_usbmisc_data *data) {void __iomem *reg;
@@ -159,6 +212,7 @@ static int usbmisc_imx6q_init(struct imx_usbmisc_data *data) }static const struct usbmisc_ops imx25_usbmisc_ops = { + .init = usbmisc_imx25_init, .post = usbmisc_imx25_post, };
@@ -200,6 +254,10 @@ static const struct of_device_id usbmisc_imx_dt_ids[] = { .data = &imx25_usbmisc_ops, }, { + .compatible = "fsl,imx35-usbmisc", + .data = &imx25_usbmisc_ops, + }, + { .compatible = "fsl,imx27-usbmisc", .data = &imx27_usbmisc_ops, },
Signature · 1 line
1.7.9.5
PATCH v3 4/9 usb: chipidea: usbmisc: Add USB Host support for i.MX25/i.MX35 CPUs
Quoted 26 lines
This adds the i.MX25 and the i.MX35 support in the ChipIdea usbmisc driver.
The i.MX25 and i.MX35 usb controllers are similar enough to be able to use the same code.
Signed-off-by Denis Carikli <[email protected]>---
Changelogv2->v3:
- Add a commit logChangelog
v1->v2:
- converted two remaining defines toBIT()
- Removed a variable declaration that was not used inusbmisc_imx25_init--- drivers/usb/chipidea/usbmisc_imx.c | 58 ++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+)drivers/usb/chipidea/usbmisc_imx.c +0
-0
drivers/usb/chipidea/usbmisc_imx.c line 27
Quoted 7 lines
drivers/usb/chipidea/usbmisc_imx.c +4
-0@@ -21,6 +21,26 @@#define MX25_USB_PHY_CTRL_OFFSET 0x08#define MX25_BM_EXTERNAL_VBUS_DIVIDER BIT(23) +#define MXC_EHCI_INTERFACE_SINGLE_UNI (2 << 0) +#define MXC_EHCI_INTERFACE_DIFF_UNI (0 << 0) +#define MXC_EHCI_INTERFACE_MASK (0xf) +
Have a check for my comment for above Macros please.
Peter
Quoted 85 lines
drivers/usb/chipidea/usbmisc_imx.c +37
-0+#define MX25_OTG_SIC_SHIFT 29 +#define MX25_OTG_SIC_MASK (0x3 << MX25_OTG_SIC_SHIFT) +#define MX25_OTG_PM_BIT BIT(24) +#define MX25_OTG_PP_BIT BIT(11) +#define MX25_OTG_OCPOL_BIT BIT(3) + +#define MX25_H1_SIC_SHIFT 21 +#define MX25_H1_SIC_MASK (0x3 << MX25_H1_SIC_SHIFT) +#define MX25_H1_PP_BIT BIT(18) +#define MX25_H1_PM_BIT BIT(16) +#define MX25_H1_IPPUE_UP_BIT BIT(7) +#define MX25_H1_IPPUE_DOWN_BIT BIT(6) +#define MX25_H1_TLL_BIT BIT(5) +#define MX25_H1_USBTE_BIT BIT(4) +#define MX25_H1_OCPOL_BIT BIT(2) +#define MX27_H1_PM_BIT BIT(8)#define MX27_H2_PM_BIT BIT(16)#define MX27_OTG_PM_BIT BIT(24)@@ -50,6 +70,39 @@ struct imx_usbmisc {static struct imx_usbmisc *usbmisc; +static int usbmisc_imx25_init (struct imx_usbmisc_data *data) { +unsigned long flags; +u32 val =0 ; + +if (data->index >1 ) +return -EINVAL ; + +spin_lock_irqsave (&usbmisc->lock, flags); +switch (data->index) { +case 0 : + val =readl (usbmisc->base); + val &= ~(MX25_OTG_SIC_MASK |MX25_OTG_PP_BIT ); + val |= (MXC_EHCI_INTERFACE_DIFF_UNI &MXC_EHCI_INTERFACE_MASK ) <<MX25_OTG_SIC_SHIFT ; + val |= (MX25_OTG_PM_BIT |MX25_OTG_OCPOL_BIT ); +writel (val, usbmisc->base); +break ; +case 1 : + val =readl (usbmisc->base); + val &= ~(MX25_H1_SIC_MASK |MX25_H1_PP_BIT |MX25_H1_IPPUE_UP_BIT ); + val |= (MXC_EHCI_INTERFACE_SINGLE_UNI &MXC_EHCI_INTERFACE_MASK ) <<MX25_H1_SIC_SHIFT ; + val |= (MX25_H1_PM_BIT | MX25_H1_OCPOL_BIT | MX25_H1_TLL_BIT|
drivers/usb/chipidea/usbmisc_imx.c +16
-0+ MX25_H1_USBTE_BIT | MX25_H1_IPPUE_DOWN_BIT); + +writel (val, usbmisc->base); + +break ; + } +spin_unlock_irqrestore (&usbmisc->lock, flags); + +return 0 ; +} +static int usbmisc_imx25_post (struct imx_usbmisc_data *data) {void __iomem *reg;@@ -159,6 +212,7 @@ static int usbmisc_imx6q_init(struct imx_usbmisc_data *data) }static const struct usbmisc_ops imx25_usbmisc_ops = { + .init = usbmisc_imx25_init, .post = usbmisc_imx25_post, };@@ -200,6 +254,10 @@ static const struct of_device_id usbmisc_imx_dt_ids[] = { .data = &imx25_usbmisc_ops, }, { + .compatible = "fsl,imx35-usbmisc", + .data = &imx25_usbmisc_ops, + }, + { .compatible = "fsl,imx27-usbmisc", .data = &imx27_usbmisc_ops,},
--
1.7.9.5
PATCH v3 5/9 ARM: dts: imx25.dtsi: Fix USB support.
In reply to Denis CarikliFrom: Fabio Estevam <[email protected]>
This patch was adapted from the thread named
"USB Host support for mx25" on linux-usb at vger.kernel.org
---
Changelog v2->v3:
- rebased on top of the "usb: chipidea: Use standard usb-phy property." patch.
- Fixed the usbphy nodes index and added and added a reg property.
Changelog v1->v2:
- The usbphy nodes were made to look like the ones in imx53.dtsi
- The patch was rebased on top of the clock fixes commits.
--- arch/arm/boot/dts/imx25.dtsi | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-)
arch/arm/boot/dts/imx25.dtsi +18 -11
@@ -482,22 +482,13 @@ clocks = <&clks 99>; }; - usbphy1: usbphy at 1 { - compatible = "nop-usbphy"; - status = "disabled"; - }; - - usbphy2: usbphy at 2 { - compatible = "nop-usbphy"; - status = "disabled"; - }; - usbotg: usb at 53ff4000 { compatible = "fsl,imx25-usb", "fsl,imx27-usb"; reg = <0x53ff4000 0x0200>; interrupts = <37>; clocks = <&clks 70>; fsl,usbmisc = <&usbmisc 0>; + usb-phy = <&usbphy0>; status = "disabled"; };
@@ -507,6 +498,7 @@ interrupts = <35>; clocks = <&clks 70>; fsl,usbmisc = <&usbmisc 1>; + usb-phy = <&usbphy1>; status = "disabled"; };
@@ -516,7 +508,6 @@ clocks = <&clks 9>, <&clks 70>, <&clks 8>; clock-names = "ipg", "ahb", "per"; reg = <0x53ff4600 0x00f>; - status = "disabled"; }; dryice at 53ffc000 {
@@ -548,4 +539,20 @@ }; }; }; + + usbphy { + #address-cells = <1>; + #size-cells = <0>; + compatible = "simple-bus"; + + usbphy0: usbphy at 0 { + reg = <0>; + compatible = "usb-nop-xceiv"; + }; + + usbphy1: usbphy at 1 { + reg = <1>; + compatible = "usb-nop-xceiv"; + }; + }; };
Signature · 1 line
1.7.9.5
Fabio Estevam
reviewerPATCH v3 5/9 ARM: dts: imx25.dtsi: Fix USB support.
Hi Denis,
Quoted 5 lines · Denis Carikli
From: Fabio Estevam <[email protected]>
This patch was adapted from the thread named
"USB Host support for mx25" on linux-usb at vger.kernel.org
As you add me in the From field, you also need to add:
Signed-off-by line.
arch/arm/boot/dts/imx25.dtsi line 546
Quoted 6 lines
Signed-off-by Denis Carikli <[email protected]>arch/arm/boot/dts/imx25.dtsi +5
-0+ + usbphy { + #address-cells = <1>; + #size-cells = <0>; + compatible = "simple-bus";
I made this comment earlier: why do we place usbphy0/1 under simple-bus?
This is not documented in the the bindings.
arch/arm/boot/dts/imx25.dtsi line 557
Quoted 11 lines
arch/arm/boot/dts/imx25.dtsi +11
-0+ + usbphy0: usbphy at 0 { + reg = <0>; + compatible = "usb-nop-xceiv"; + }; + + usbphy1: usbphy at 1 { + reg = <1>; + compatible = "usb-nop-xceiv"; + }; + };
Regards,
Fabio Estevam
PATCH v3 5/9 ARM: dts: imx25.dtsi: Fix USB support.
Quoted 1 line · Fabio Estevam
Hi Denis,
Hi,
Quoted 4 lines
As you add me in the From field, you also need to add:
Signed-off-by Fabio Estevam <[email protected]> above yourSigned-off-by line.
Thanks.
Quoted 6 lines
arch/arm/boot/dts/imx25.dtsi line 546
Quoted 4 lines
arch/arm/boot/dts/imx25.dtsi +4
-0+ usbphy { + #address-cells = <1>; + #size-cells = <0>; + compatible = "simple-bus";I made this comment earlier: why do we place usbphy0/1 under simple-bus?
The official ePAPR 1.1 standard talks about the system on a chip's internal I/O bus.
So, I wonder if, in general, it makes sense to group together, with a simple-bus compatible, potentially different usb phy, which are connected to potentially different usb controllers.
Still if I remove it from the usbphy node, I get the following messages more than once in dmesg:
Quoted 4 lines
ci_hdrcci_hdrc.0: no usb2 phy configured platform ci_hdrc.0: Driverci_hdrcrequests probe deferralci_hdrcci_hdrc.1: no usb2 phy configured platform ci_hdrc.1: Driverci_hdrcrequests probe deferral
With at the end lsusb printing nothing.
Quoted 1 line
This is not documented in the the bindings.
I don't think that the simple-bus has to be added to Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt because that file only talks about what became usbphy's subnodes.
Denis.
PATCH v3 6/9 ARM: dts: mbimxsd25 baseboard: Add USB support
In reply to Denis Carikli---
Changelog v1->v2:
- With the clock fix patches, the usb gadget also work. So I've set the otg port to otg instead of host.
--- .../boot/dts/imx25-eukrea-mbimxsd25-baseboard.dts | 13 +++++++++++++ 1 file changed, 13 insertions(+)
arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard.dts +13 -0
@@ -172,3 +172,16 @@ fsl,uart-has-rtscts; status = "okay"; }; + +&usbhost1 { + phy_type = "serial"; + dr_mode = "host"; + status = "okay"; +}; + +&usbotg { + phy_type = "utmi"; + dr_mode = "otg"; + external-vbus-divider; + status = "okay"; +};
Signature · 1 line
1.7.9.5
PATCH v3 7/9 ARM: dts: i.MX35: Add USB support.
In reply to Denis Carikli---
Changelog v2->v3:
- rebased on top of the "usb: chipidea: Use standard usb-phy property." patch.
- Fixed the usbphy nodes index and added and added a reg property.
Changelog v1->v2:
- The usbphy nodes were made to look like the ones in imx53.dtsi
- The patch was rebased on top of the clock fixes commits.
--- arch/arm/boot/dts/imx35.dtsi | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
arch/arm/boot/dts/imx35.dtsi +18 -0
@@ -298,6 +298,7 @@ interrupts = <37>; clocks = <&clks 73>; fsl,usbmisc = <&usbmisc 0>; + usb-phy = <&usbphy0>; status = "disabled"; };
@@ -307,6 +308,7 @@ interrupts = <35>; clocks = <&clks 73>; fsl,usbmisc = <&usbmisc 1>; + usb-phy = <&usbphy1>; status = "disabled"; };
@@ -355,4 +357,20 @@ }; }; }; + + usbphy { + #address-cells = <1>; + #size-cells = <0>; + compatible = "simple-bus"; + + usbphy0: usbphy at 0 { + reg = <0>; + compatible = "usb-nop-xceiv"; + }; + + usbphy1: usbphy at 1 { + reg = <1>; + compatible = "usb-nop-xceiv"; + }; + }; };
Signature · 1 line
1.7.9.5
PATCH v3 8/9 ARM: dts: mbimxsd35 baseboard: Add USB support.
In reply to Denis Carikli---
Changelog v1->v2:
- With the clock fix patches, the usb gadget also work. So I've set the otg port to otg instead of host.
- Before I forgott to set dr_mode to host in the usbhost port. That is now fixed.
--- .../boot/dts/imx35-eukrea-mbimxsd35-baseboard.dts | 13 +++++++++++++ 1 file changed, 13 insertions(+)
arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard.dts +13 -0
@@ -150,3 +150,16 @@ fsl,uart-has-rtscts; status = "okay"; }; + +&usbhost1 { + phy_type = "serial"; + dr_mode = "host"; + status = "okay"; +}; + +&usbotg { + phy_type = "utmi"; + dr_mode = "otg"; + external-vbus-divider; + status = "okay"; +};
Signature · 1 line
1.7.9.5
PATCH v3 9/9 ARM: imx_v4_v5_defconfig: Enable drivers for i.MX25/i.MX35 USB support.
In reply to Denis Carikli---
Changelog v2->v3:
- Extra gadget drivers additions were removed from this patch.
Changelog v1->v2:
- With the clock fix patches, the usb gadget also work. So I've addeed it to this patch too.
- CONFIG_USB_OTG_FSM=y was not needed, so it was removed.
--- arch/arm/configs/imx_v4_v5_defconfig | 6 ++++++ 1 file changed, 6 insertions(+)
arch/arm/configs/imx_v4_v5_defconfig +6 -0
@@ -80,6 +80,7 @@ CONFIG_MTD_UBI=y CONFIG_EEPROM_AT24=y CONFIG_EEPROM_AT25=y CONFIG_ATA=y +CONFIG_BLK_DEV_SD=y CONFIG_PATA_IMX=y CONFIG_NETDEVICES=y CONFIG_CS89x0=y
@@ -153,6 +154,11 @@ CONFIG_USB_HID=m CONFIG_USB=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_MXC=y +CONFIG_USB_STORAGE=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_NOP_USB_XCEIV=y CONFIG_MMC=y CONFIG_MMC_UNSAFE_RESUME=y CONFIG_MMC_SDHCI=y
Signature · 1 line
1.7.9.5