Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
Hello Chris, On Wed, Jan 15, 2014 at 09:52:20AM +0800, Chris Ruehl wrote: > I have a customized board running OTG/host and USB2/host (USB1 not connected) > Both ports are connected to a ISP1504 ULPI Similar for me here, my board has usb2 only with an ISP1504. > a) I need a rs-gpio to reset in addition to the cs-gpio the ISP1504 (done) I see there are several new chipidea patches in next-20140116 compared to next-20140110 what I am using. Is there explicit support for a cs-gpios property? If so, it's not obvious. > b) Implement UPLI viewport (IORESOURCE_MEM) and logic to set the > external power supply. > The code (b) was rejected and needs rework. The patch I'm currently using is appended below. It doesn't work yet, but I think that's because CS isn't set yet. In my machine's dts I'm using: &usbphy2 { reset-gpios = <&gpio3 20 GPIO_ACTIVE_LOW>; }; &usbh2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usbh2>; status = "okay"; }; Does this look ok? I'm out of time currently for this project, but I will search the mailing list for your patches. If you Cc: on new attempts for b) I will try to test it. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König| Industrial Linux Solutions | http://www.pengutronix.de/ | arch/arm/boot/dts/imx27-pingrp.h | 14 + arch/arm/boot/dts/imx27.dtsi | 67 2 files changed, 81 insertions(+) diff --git a/arch/arm/boot/dts/imx27-pingrp.h b/arch/arm/boot/dts/imx27-pingrp.h index 57ca02f89dff..c4d698fddbc9 100644 --- a/arch/arm/boot/dts/imx27-pingrp.h +++ b/arch/arm/boot/dts/imx27-pingrp.h @@ -148,4 +148,18 @@ MX27_PAD_UART3_CTS__UART3_CTS 0x0 \ MX27_PAD_UART3_RTS__UART3_RTS 0x0 +#define MX27_USBH2_PINGRP1 \ + MX27_PAD_USBH2_CLK__USBH2_CLK 0x0 \ + MX27_PAD_USBH2_DIR__USBH2_DIR 0x0 \ + MX27_PAD_USBH2_DATA7__USBH2_DATA7 0x0 \ + MX27_PAD_USBH2_NXT__USBH2_NXT 0x0 \ + MX27_PAD_USBH2_STP__USBH2_STP 0x0 \ + MX27_PAD_CSPI2_SS2__USBH2_DATA4 0x0 \ + MX27_PAD_CSPI2_SS1__USBH2_DATA3 0x0 \ + MX27_PAD_CSPI2_SS0__USBH2_DATA6 0x0 \ + MX27_PAD_CSPI2_SCLK__USBH2_DATA0 0x0 \ + MX27_PAD_CSPI2_MISO__USBH2_DATA2 0x0 \ + MX27_PAD_CSPI2_MOSI__USBH2_DATA1 0x0 \ + MX27_PAD_CSPI1_SS2__USBH2_DATA5 0x0 + #endif /* __DTS_IMX27_PINGRP_H */ diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi index 7e98966b1834..391769fb291e 100644 --- a/arch/arm/boot/dts/imx27.dtsi +++ b/arch/arm/boot/dts/imx27.dtsi @@ -33,6 +33,9 @@ spi0 = &cspi1; spi1 = &cspi2; spi2 = &cspi3; + usb0 = &usbotg; + usb1 = &usbh1; + usb2 = &usbh2; }; aitc: aitc-interrupt-controller@e000 { @@ -70,6 +73,33 @@ }; }; + usbphy { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <0>; + + usbphy0: usbphy@0 { + compatible = "usb-nop-xceiv"; + reg = <0>; + clocks = <&clks 75>; + clock-names = "main_clk"; + }; + + usbphy1: usbphy@1 { + compatible = "usb-nop-xceiv"; + reg = <1>; + clocks = <&clks 75>; + clock-names = "main_clk"; + }; + + usbphy2: usbphy@2 { + compatible = "usb-nop-xceiv"; + reg = <2>; + clocks = <&clks 75>; + clock-names = "main_clk"; + }; + }; + soc { #address-cells = <1>; #size-cells = <1>; @@ -439,6 +469,43 @@ iram = <&iram>; }; + usbotg: usb@10024000 { + compatible = "fsl,imx27-usb"; + reg = <0x10024000 0x200>; + interrupts = <56>; + clocks = <&clks 15>; + fsl,usbmisc = <&usbmisc 0>; + fsl,usbphy = <&usbphy0>; + status = "disabled"; + }; + + usbh1: usb@10024200 { + compatible = "fsl,imx27-usb"; + reg = <0x10024200 0x200>; + interrupts = <54>; + clocks = <&clks 15>; + fsl,usbmisc = <&usbmisc 1>; + fsl,usbphy = <&usbphy1>; + status = "disabled"; + }; + + usbh2: usb@10024400 { + compatib
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
On Tuesday, January 14, 2014 09:49 PM, Uwe Kleine-König wrote: Hello Chris, On Tue, Jan 14, 2014 at 11:53:47AM +0800, Chris Ruehl wrote: On Tuesday, January 14, 2014 11:30 AM, Alexander Shiyan wrote: Понедельник, 13 января 2014, 22:31 +01:00 от Uwe Kleine-König : On Sat, Jan 11, 2014 at 06:01:48PM +0400, Alexander Shiyan wrote: Суббота, 11 января 2014, 13:55 +01:00 от Uwe Kleine-König : On Mon, Nov 11, 2013 at 11:09:16AM +0400, Alexander Shiyan wrote: Hello. On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. Signed-off-by: Alexander Shiyan --- drivers/usb/chipidea/usbmisc_imx.c | 42 ++ 1 file changed, 42 insertions(+) ... At this point might be good to patch the imx27.dtsi with the usb defines. ... I have a working configuration for i.MX27 USB, but I prefer to make a few more tests before the addition of definitions in DTS. This will be a next step. Thanks. Any news here? Not ready yet. Are you still working at it? Would you mind sharing more details, like your current tree/patch stack and what works/doesn't work for you? Now my work on this is suspended, but will continue later. I'll send you a personal letter with DT configuration. Ports (both Host & OTG) are detected by kernel, but works Host only. OTG not works nor as Host, nor as Device... --- hi, I'm still working on my patches for imx27 and ULPI integration. But have more urgent things in the queue. Starting from here I'm not sure I understand you. I have a running version but it cant make it in the kernel. Rework on platform device code needed. I have a customized board running OTG/host and USB2/host (USB1 not connected) Both ports are connected to a ISP1504 ULPI a) I need a rs-gpio to reset in addition to the cs-gpio the ISP1504 (done) b) Implement UPLI viewport (IORESOURCE_MEM) and logic to set the external power supply. The code (b) was rejected and needs rework. Just wait until the patches already accepted appears in the linux-next before commit new patches. That means: USB works for you? What does "it cant make it in the kernel" mean? Problems to upstream it? Do you wait or should I? I will fix the problem with (b) and resend my patches. Best regards Uwe -- GTSYS Limited RFID Technology A01 24/F Gold King Industrial Bld 35-41 Tai Lin Pai Road, Kwai Chung, Hong Kong Fax (852) 8167 4060 - Tel (852) 3598 9488 Disclaimer: http://www.gtsys.com.hk/email/classified.html -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
Hello Alexander, On Tue, Jan 14, 2014 at 02:47:39PM +0100, Uwe Kleine-König wrote: > On Tue, Jan 14, 2014 at 07:30:46AM +0400, Alexander Shiyan wrote: > > I'll send you a personal letter with DT configuration. > That would be great. You didn't send it yet, did you? I take that back, just found it in my inbox. Don't know why I needed a reply on this mail to find it. Sorry. Uwe -- Pengutronix e.K. | Uwe Kleine-König| Industrial Linux Solutions | http://www.pengutronix.de/ | -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
Hello Chris, On Tue, Jan 14, 2014 at 11:53:47AM +0800, Chris Ruehl wrote: > On Tuesday, January 14, 2014 11:30 AM, Alexander Shiyan wrote: > >Понедельник, 13 января 2014, 22:31 +01:00 от Uwe Kleine-König > >: > >>On Sat, Jan 11, 2014 at 06:01:48PM +0400, Alexander Shiyan wrote: > >>>Суббота, 11 января 2014, 13:55 +01:00 от Uwe Kleine-König > >>>: > On Mon, Nov 11, 2013 at 11:09:16AM +0400, Alexander Shiyan wrote: > >Hello. > > > >>On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: > >>>This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. > >>> > >>>Signed-off-by: Alexander Shiyan > >>>--- > >>> drivers/usb/chipidea/usbmisc_imx.c | 42 > >>> ++ > >>> 1 file changed, 42 insertions(+) > >... > >>At this point might be good to patch the imx27.dtsi with the usb > >>defines. > >... > > > >I have a working configuration for i.MX27 USB, but I prefer to make a > >few more > >tests before the addition of definitions in DTS. This will be a next > >step. > >Thanks. > Any news here? > >>>Not ready yet. > >>Are you still working at it? Would you mind sharing more details, like > >>your current tree/patch stack and what works/doesn't work for you? > > > >Now my work on this is suspended, but will continue later. > >I'll send you a personal letter with DT configuration. > >Ports (both Host & OTG) are detected by kernel, but works Host only. > >OTG not works nor as Host, nor as Device... > > > >--- > hi, > I'm still working on my patches for imx27 and ULPI integration. But > have more urgent things in the queue. Starting from here I'm not sure I understand you. > I have a running version but it cant make it in the kernel. Rework > on platform device code needed. > Just wait until the patches already accepted appears in the > linux-next before commit new patches. That means: USB works for you? What does "it cant make it in the kernel" mean? Problems to upstream it? Do you wait or should I? Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König| Industrial Linux Solutions | http://www.pengutronix.de/ | -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
Hello Alexander, On Tue, Jan 14, 2014 at 07:30:46AM +0400, Alexander Shiyan wrote: > I'll send you a personal letter with DT configuration. That would be great. You didn't send it yet, did you? Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König| Industrial Linux Solutions | http://www.pengutronix.de/ | -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
On Tuesday, January 14, 2014 11:30 AM, Alexander Shiyan wrote: Понедельник, 13 января 2014, 22:31 +01:00 от Uwe Kleine-König : On Sat, Jan 11, 2014 at 06:01:48PM +0400, Alexander Shiyan wrote: Суббота, 11 января 2014, 13:55 +01:00 от Uwe Kleine-König : On Mon, Nov 11, 2013 at 11:09:16AM +0400, Alexander Shiyan wrote: Hello. On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. Signed-off-by: Alexander Shiyan --- drivers/usb/chipidea/usbmisc_imx.c | 42 ++ 1 file changed, 42 insertions(+) ... At this point might be good to patch the imx27.dtsi with the usb defines. ... I have a working configuration for i.MX27 USB, but I prefer to make a few more tests before the addition of definitions in DTS. This will be a next step. Thanks. Any news here? Not ready yet. Are you still working at it? Would you mind sharing more details, like your current tree/patch stack and what works/doesn't work for you? Now my work on this is suspended, but will continue later. I'll send you a personal letter with DT configuration. Ports (both Host & OTG) are detected by kernel, but works Host only. OTG not works nor as Host, nor as Device... --- hi, I'm still working on my patches for imx27 and ULPI integration. But have more urgent things in the queue. I have a running version but it cant make it in the kernel. Rework on platform device code needed. Just wait until the patches already accepted appears in the linux-next before commit new patches. Chris -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
Понедельник, 13 января 2014, 22:31 +01:00 от Uwe Kleine-König : > On Sat, Jan 11, 2014 at 06:01:48PM +0400, Alexander Shiyan wrote: > > Суббота, 11 января 2014, 13:55 +01:00 от Uwe Kleine-König > > : > > > On Mon, Nov 11, 2013 at 11:09:16AM +0400, Alexander Shiyan wrote: > > > > Hello. > > > > > > > > > On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: > > > > > > This adds i.MX27 and i.MX31 as the next user of the usbmisc > > > > > > driver. > > > > > > > > > > > > Signed-off-by: Alexander Shiyan > > > > > > --- > > > > > > drivers/usb/chipidea/usbmisc_imx.c | 42 > > > > > > ++ > > > > > > 1 file changed, 42 insertions(+) > > > > ... > > > > > At this point might be good to patch the imx27.dtsi with the usb > > > > > defines. > > > > ... > > > > > > > > I have a working configuration for i.MX27 USB, but I prefer to make a > > > > few more > > > > tests before the addition of definitions in DTS. This will be a next > > > > step. > > > > Thanks. > > > Any news here? > > > > Not ready yet. > Are you still working at it? Would you mind sharing more details, like > your current tree/patch stack and what works/doesn't work for you? Now my work on this is suspended, but will continue later. I'll send you a personal letter with DT configuration. Ports (both Host & OTG) are detected by kernel, but works Host only. OTG not works nor as Host, nor as Device... ---
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
On Sat, Jan 11, 2014 at 06:01:48PM +0400, Alexander Shiyan wrote: > Суббота, 11 января 2014, 13:55 +01:00 от Uwe Kleine-König > : > > On Mon, Nov 11, 2013 at 11:09:16AM +0400, Alexander Shiyan wrote: > > > Hello. > > > > > > > On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: > > > > > This adds i.MX27 and i.MX31 as the next user of the usbmisc > > > > > driver. > > > > > > > > > > Signed-off-by: Alexander Shiyan > > > > > --- > > > > > drivers/usb/chipidea/usbmisc_imx.c | 42 > > > > > ++ > > > > > 1 file changed, 42 insertions(+) > > > ... > > > > At this point might be good to patch the imx27.dtsi with the usb > > > > defines. > > > ... > > > > > > I have a working configuration for i.MX27 USB, but I prefer to make a few > > > more > > > tests before the addition of definitions in DTS. This will be a next step. > > > Thanks. > > Any news here? > > Not ready yet. Are you still working at it? Would you mind sharing more details, like your current tree/patch stack and what works/doesn't work for you? Thanks Uwe -- Pengutronix e.K. | Uwe Kleine-König| Industrial Linux Solutions | http://www.pengutronix.de/ | -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
Суббота, 11 января 2014, 13:55 +01:00 от Uwe Kleine-König : > On Mon, Nov 11, 2013 at 11:09:16AM +0400, Alexander Shiyan wrote: > > Hello. > > > > > On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: > > > > This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. > > > > > > > > Signed-off-by: Alexander Shiyan > > > > --- > > > > drivers/usb/chipidea/usbmisc_imx.c | 42 > > > > ++ > > > > 1 file changed, 42 insertions(+) > > ... > > > At this point might be good to patch the imx27.dtsi with the usb defines. > > ... > > > > I have a working configuration for i.MX27 USB, but I prefer to make a few > > more > > tests before the addition of definitions in DTS. This will be a next step. > > Thanks. > Any news here? Not ready yet. ---
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
Hello, On Mon, Nov 11, 2013 at 02:10:10PM +0800, Chris Ruehl wrote: > On Monday, November 11, 2013 01:47 PM, Alexander Shiyan wrote: > >>On Monday, November 11, 2013 12:45 PM, Alexander Shiyan wrote: > Hi Alexander, > > On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: > >This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. > > > >Signed-off-by: Alexander Shiyan > >--- > >drivers/usb/chipidea/usbmisc_imx.c | 42 > > ++ > >1 file changed, 42 insertions(+) > > > >diff --git a/drivers/usb/chipidea/usbmisc_imx.c > >b/drivers/usb/chipidea/usbmisc_imx.c > >>>... > >+static int usbmisc_imx27_init(struct imx_usbmisc_data *data) > >+{ > >+unsigned long flags; > >+u32 val; > >+ > >+switch (data->index) { > >+case 0: > >+val = MX27_OTG_PM_BIT; > >+break; > >+case 1: > >+val = MX27_H1_PM_BIT; > >+break; > >+case 2: > >+val = MX27_H2_PM_BIT; > >+break; > >+default: > >+return -EINVAL; > >+}; > >+ > > From my understanding this can not work, the usbmisc->base not point > into the > usb control register (USB_CTRL). Reference manual 30.5.1.1 says > BASE + 0x600 > you must add the offset to the readl instruction. > >>> > >>>Why not work? > >>>usbotg: usb@10024000 > >>>usbh1: usb@10024200 > >>>usbh2: usb@10024400 > >>>usbmisc: usbmisc@10024600 > >>>So, offset to USB_CTRL should already be defined by DTS. > >> > >>in the usbmisc_imx_probe() the base pointer is loaded from > >> > >>res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > >>data->base = devm_ioremap_resource(&pdev->dev, res); > >> > >>(and I did not see any of_ operations) > > > >Yes, and this is an address of usbmisc node, not otg. > > Sorry, you are right. I misunderstood because I didn't see any of > sample DTS files define usbmisc yet. > > At this point might be good to patch the imx27.dtsi with the usb defines. > > --- a/arch/arm/boot/dts/imx27.dtsi > +++ b/arch/arm/boot/dts/imx27.dtsi > @@ -30,6 +30,9 @@ > spi0 = &cspi1; > spi1 = &cspi2; > spi2 = &cspi3; > + usb0 = &usbotg; > + usb1 = &usbh1; > + usb2 = &usbh2; > }; > > @@ -404,6 +419,44 @@ > iram = <&iram>; > }; > > + usbotg: usb@10024000 { > + compatible = "fsl,imx27-usb"; > + reg = <0x10024000 0x200>; > + interrupts = <56>; > + clocks = <&clks 75>, <&clks 62>; > + clock-names = "ipg", "ahb"; > + dr_mode = "host"; > + phy_type = "ulpi"; > + status = "disabled"; > + }; > + > + usbh1: usb@10024200 { > + compatible = "fsl,imx27-usb"; > + reg = <0x10024200 0x200>; > + interrupts = <54>; > + clocks = <&clks 75>, <&clks 62>; > + clock-names = "ipg", "ahb"; > + dr_mode = "host"; > + phy_type = "serial"; > + status = "disabled"; > + }; > + > + usbh2: usb@10024400 { > + compatible = "fsl,imx27-usb"; > + reg = <0x10024400 0x200>; > + interrupts = <55>; > + clocks = <&clks 75>, <&clks 62>; > + clock-names = "ipg", "ahb"; > + dr_mode = "host"; > + phy_type = "ulpi"; > + status = "disabled"; > + }; > + > + usbmisc: usbmisc@10024600 { > + compatible = "fsl,imx27-usb"; > + reg = <0x10024600 0x4>; > + }; I didn't try to get this up yet, but I wonder if the last compatible here should better be fsl,imx27-usbmisc?! Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König| Industrial Linux Solutions | http://www.pengutronix.de/ | -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
On Mon, Nov 11, 2013 at 11:09:16AM +0400, Alexander Shiyan wrote: > Hello. > > > On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: > > > This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. > > > > > > Signed-off-by: Alexander Shiyan > > > --- > > > drivers/usb/chipidea/usbmisc_imx.c | 42 > > > ++ > > > 1 file changed, 42 insertions(+) > ... > > At this point might be good to patch the imx27.dtsi with the usb defines. > ... > > I have a working configuration for i.MX27 USB, but I prefer to make a few more > tests before the addition of definitions in DTS. This will be a next step. > Thanks. Any news here? Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König| Industrial Linux Solutions | http://www.pengutronix.de/ | -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
On Mon, Nov 11, 2013 at 12:45 PM, Alexander Shiyan wrote: >> Hi Alexander, >> >> On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: >> > This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. >> > >> > Signed-off-by: Alexander Shiyan >> > --- >> > drivers/usb/chipidea/usbmisc_imx.c | 42 >> > ++ >> > 1 file changed, 42 insertions(+) >> > >> > diff --git a/drivers/usb/chipidea/usbmisc_imx.c >> > b/drivers/usb/chipidea/usbmisc_imx.c > ... >> > +static int usbmisc_imx27_init(struct imx_usbmisc_data *data) >> > +{ >> > + unsigned long flags; >> > + u32 val; >> > + >> > + switch (data->index) { >> > + case 0: >> > + val = MX27_OTG_PM_BIT; >> > + break; >> > + case 1: >> > + val = MX27_H1_PM_BIT; >> > + break; >> > + case 2: >> > + val = MX27_H2_PM_BIT; >> > + break; >> > + default: >> > + return -EINVAL; >> > + }; >> > + >> >> From my understanding this can not work, the usbmisc->base not point into >> the >> usb control register (USB_CTRL). Reference manual 30.5.1.1 says >> BASE + 0x600 >> you must add the offset to the readl instruction. > > Why not work? > usbotg: usb@10024000 > usbh1: usb@10024200 > usbh2: usb@10024400 > usbmisc: usbmisc@10024600 > So, offset to USB_CTRL should already be defined by DTS. > > >> > + spin_lock_irqsave(&usbmisc->lock, flags); >> > + if (data->disable_oc) >> > + val = readl(usbmisc->base) | val; >> >> else part not needed, the registers bits are set to 0 (reset) >> the function is called on start-up once only, right?! >> >> > + else >> > + val = readl(usbmisc->base)& ~val; >> > + writel(val, usbmisc->base); >> > + spin_unlock_irqrestore(&usbmisc->lock, flags); >> > + >> > + return 0; >> > +} > > Bit can be set/cleared wrongly by the bootloader, it is not a big > overhead to set it in proper state. > I think the "else" is needed, unless the over-current is not connected or the user wants to disable it, we need to enable over-current by default. Acked-by: Peter Chen > ... > > --- > ___ > linux-arm-kernel mailing list > linux-arm-ker...@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel -- BR, Peter Chen -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
Hello. > On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: > > This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. > > > > Signed-off-by: Alexander Shiyan > > --- > > drivers/usb/chipidea/usbmisc_imx.c | 42 > > ++ > > 1 file changed, 42 insertions(+) ... > At this point might be good to patch the imx27.dtsi with the usb defines. ... I have a working configuration for i.MX27 USB, but I prefer to make a few more tests before the addition of definitions in DTS. This will be a next step. Thanks. ---
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
On Monday, November 11, 2013 01:47 PM, Alexander Shiyan wrote: On Monday, November 11, 2013 12:45 PM, Alexander Shiyan wrote: Hi Alexander, On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. Signed-off-by: Alexander Shiyan --- drivers/usb/chipidea/usbmisc_imx.c | 42 ++ 1 file changed, 42 insertions(+) diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c ... +static int usbmisc_imx27_init(struct imx_usbmisc_data *data) +{ + unsigned long flags; + u32 val; + + switch (data->index) { + case 0: + val = MX27_OTG_PM_BIT; + break; + case 1: + val = MX27_H1_PM_BIT; + break; + case 2: + val = MX27_H2_PM_BIT; + break; + default: + return -EINVAL; + }; + From my understanding this can not work, the usbmisc->base not point into the usb control register (USB_CTRL). Reference manual 30.5.1.1 says BASE + 0x600 you must add the offset to the readl instruction. Why not work? usbotg: usb@10024000 usbh1: usb@10024200 usbh2: usb@10024400 usbmisc: usbmisc@10024600 So, offset to USB_CTRL should already be defined by DTS. in the usbmisc_imx_probe() the base pointer is loaded from res = platform_get_resource(pdev, IORESOURCE_MEM, 0); data->base = devm_ioremap_resource(&pdev->dev, res); (and I did not see any of_ operations) Yes, and this is an address of usbmisc node, not otg. Sorry, you are right. I misunderstood because I didn't see any of sample DTS files define usbmisc yet. At this point might be good to patch the imx27.dtsi with the usb defines. --- a/arch/arm/boot/dts/imx27.dtsi +++ b/arch/arm/boot/dts/imx27.dtsi @@ -30,6 +30,9 @@ spi0 = &cspi1; spi1 = &cspi2; spi2 = &cspi3; + usb0 = &usbotg; + usb1 = &usbh1; + usb2 = &usbh2; }; @@ -404,6 +419,44 @@ iram = <&iram>; }; + usbotg: usb@10024000 { + compatible = "fsl,imx27-usb"; + reg = <0x10024000 0x200>; + interrupts = <56>; + clocks = <&clks 75>, <&clks 62>; + clock-names = "ipg", "ahb"; + dr_mode = "host"; + phy_type = "ulpi"; + status = "disabled"; + }; + + usbh1: usb@10024200 { + compatible = "fsl,imx27-usb"; + reg = <0x10024200 0x200>; + interrupts = <54>; + clocks = <&clks 75>, <&clks 62>; + clock-names = "ipg", "ahb"; + dr_mode = "host"; + phy_type = "serial"; + status = "disabled"; + }; + + usbh2: usb@10024400 { + compatible = "fsl,imx27-usb"; + reg = <0x10024400 0x200>; + interrupts = <55>; + clocks = <&clks 75>, <&clks 62>; + clock-names = "ipg", "ahb"; + dr_mode = "host"; + phy_type = "ulpi"; + status = "disabled"; + }; + + usbmisc: usbmisc@10024600 { + compatible = "fsl,imx27-usb"; + reg = <0x10024600 0x4>; + }; + Regards Chris usbmisc = data; base is set to 0x10024000 when I look around all other functions init functions did a offset calculation. Can you point me on this? For example, for i.MX5 CPUs we calculate only offset to PHY_CTRL_X register relative to basic offset 0x800, which is already defined in DTS. ... r -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
> On Monday, November 11, 2013 12:45 PM, Alexander Shiyan wrote: > >> Hi Alexander, > >> > >> On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: > >>> This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. > >>> > >>> Signed-off-by: Alexander Shiyan > >>> --- > >>>drivers/usb/chipidea/usbmisc_imx.c | 42 > >>> ++ > >>>1 file changed, 42 insertions(+) > >>> > >>> diff --git a/drivers/usb/chipidea/usbmisc_imx.c > >>> b/drivers/usb/chipidea/usbmisc_imx.c > > ... > >>> +static int usbmisc_imx27_init(struct imx_usbmisc_data *data) > >>> +{ > >>> + unsigned long flags; > >>> + u32 val; > >>> + > >>> + switch (data->index) { > >>> + case 0: > >>> + val = MX27_OTG_PM_BIT; > >>> + break; > >>> + case 1: > >>> + val = MX27_H1_PM_BIT; > >>> + break; > >>> + case 2: > >>> + val = MX27_H2_PM_BIT; > >>> + break; > >>> + default: > >>> + return -EINVAL; > >>> + }; > >>> + > >> > >>From my understanding this can not work, the usbmisc->base not point > >> into the > >> usb control register (USB_CTRL). Reference manual 30.5.1.1 says > >> BASE + 0x600 > >> you must add the offset to the readl instruction. > > > > Why not work? > > usbotg: usb@10024000 > > usbh1: usb@10024200 > > usbh2: usb@10024400 > > usbmisc: usbmisc@10024600 > > So, offset to USB_CTRL should already be defined by DTS. > > in the usbmisc_imx_probe() the base pointer is loaded from > > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > data->base = devm_ioremap_resource(&pdev->dev, res); > > (and I did not see any of_ operations) Yes, and this is an address of usbmisc node, not otg. > usbmisc = data; > > base is set to 0x10024000 > > when I look around all other functions init functions did a offset > calculation. Can you point me on this? For example, for i.MX5 CPUs we calculate only offset to PHY_CTRL_X register relative to basic offset 0x800, which is already defined in DTS. ... --- N�r��yb�X��ǧv�^�){.n�+{��^n�r���z���h�&���G���h�(�階�ݢj"���m��z�ޖ���f���h���~�m�
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
On Monday, November 11, 2013 12:45 PM, Alexander Shiyan wrote: Hi Alexander, On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. Signed-off-by: Alexander Shiyan --- drivers/usb/chipidea/usbmisc_imx.c | 42 ++ 1 file changed, 42 insertions(+) diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c ... +static int usbmisc_imx27_init(struct imx_usbmisc_data *data) +{ + unsigned long flags; + u32 val; + + switch (data->index) { + case 0: + val = MX27_OTG_PM_BIT; + break; + case 1: + val = MX27_H1_PM_BIT; + break; + case 2: + val = MX27_H2_PM_BIT; + break; + default: + return -EINVAL; + }; + From my understanding this can not work, the usbmisc->base not point into the usb control register (USB_CTRL). Reference manual 30.5.1.1 says BASE + 0x600 you must add the offset to the readl instruction. Why not work? usbotg: usb@10024000 usbh1: usb@10024200 usbh2: usb@10024400 usbmisc: usbmisc@10024600 So, offset to USB_CTRL should already be defined by DTS. in the usbmisc_imx_probe() the base pointer is loaded from res = platform_get_resource(pdev, IORESOURCE_MEM, 0); data->base = devm_ioremap_resource(&pdev->dev, res); (and I did not see any of_ operations) usbmisc = data; base is set to 0x10024000 when I look around all other functions init functions did a offset calculation. + spin_lock_irqsave(&usbmisc->lock, flags); + if (data->disable_oc) + val = readl(usbmisc->base) | val; else part not needed, the registers bits are set to 0 (reset) the function is called on start-up once only, right?! + else + val = readl(usbmisc->base)& ~val; + writel(val, usbmisc->base); + spin_unlock_irqrestore(&usbmisc->lock, flags); + + return 0; +} Bit can be set/cleared wrongly by the bootloader, it is not a big overhead to set it in proper state. ohh, yes that true! ... -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
> Hi Alexander, > > On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: > > This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. > > > > Signed-off-by: Alexander Shiyan > > --- > > drivers/usb/chipidea/usbmisc_imx.c | 42 > > ++ > > 1 file changed, 42 insertions(+) > > > > diff --git a/drivers/usb/chipidea/usbmisc_imx.c > > b/drivers/usb/chipidea/usbmisc_imx.c ... > > +static int usbmisc_imx27_init(struct imx_usbmisc_data *data) > > +{ > > + unsigned long flags; > > + u32 val; > > + > > + switch (data->index) { > > + case 0: > > + val = MX27_OTG_PM_BIT; > > + break; > > + case 1: > > + val = MX27_H1_PM_BIT; > > + break; > > + case 2: > > + val = MX27_H2_PM_BIT; > > + break; > > + default: > > + return -EINVAL; > > + }; > > + > > From my understanding this can not work, the usbmisc->base not point into the > usb control register (USB_CTRL). Reference manual 30.5.1.1 says > BASE + 0x600 > you must add the offset to the readl instruction. Why not work? usbotg: usb@10024000 usbh1: usb@10024200 usbh2: usb@10024400 usbmisc: usbmisc@10024600 So, offset to USB_CTRL should already be defined by DTS. > > + spin_lock_irqsave(&usbmisc->lock, flags); > > + if (data->disable_oc) > > + val = readl(usbmisc->base) | val; > > else part not needed, the registers bits are set to 0 (reset) > the function is called on start-up once only, right?! > > > + else > > + val = readl(usbmisc->base)& ~val; > > + writel(val, usbmisc->base); > > + spin_unlock_irqrestore(&usbmisc->lock, flags); > > + > > + return 0; > > +} Bit can be set/cleared wrongly by the bootloader, it is not a big overhead to set it in proper state. ... ---
Re: [PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
Hi Alexander, On Sunday, November 10, 2013 03:18 PM, Alexander Shiyan wrote: This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. Signed-off-by: Alexander Shiyan --- drivers/usb/chipidea/usbmisc_imx.c | 42 ++ 1 file changed, 42 insertions(+) diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index 8a1094b..4381c5a6 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -21,6 +21,10 @@ #define MX25_USB_PHY_CTRL_OFFSET 0x08 #define MX25_BM_EXTERNAL_VBUS_DIVIDER BIT(23) +#define MX27_H1_PM_BIT BIT(8) +#define MX27_H2_PM_BIT BIT(16) +#define MX27_OTG_PM_BITBIT(24) + #define MX53_USB_OTG_PHY_CTRL_0_OFFSET0x08 #define MX53_USB_UH2_CTRL_OFFSET 0x14 #define MX53_USB_UH3_CTRL_OFFSET 0x18 @@ -68,6 +72,36 @@ static int usbmisc_imx25_post(struct imx_usbmisc_data *data) return 0; } +static int usbmisc_imx27_init(struct imx_usbmisc_data *data) +{ + unsigned long flags; + u32 val; + + switch (data->index) { + case 0: + val = MX27_OTG_PM_BIT; + break; + case 1: + val = MX27_H1_PM_BIT; + break; + case 2: + val = MX27_H2_PM_BIT; + break; + default: + return -EINVAL; + }; + From my understanding this can not work, the usbmisc->base not point into the usb control register (USB_CTRL). Reference manual 30.5.1.1 says BASE + 0x600 you must add the offset to the readl instruction. + spin_lock_irqsave(&usbmisc->lock, flags); + if (data->disable_oc) + val = readl(usbmisc->base) | val; else part not needed, the registers bits are set to 0 (reset) the function is called on start-up once only, right?! + else + val = readl(usbmisc->base)& ~val; + writel(val, usbmisc->base); + spin_unlock_irqrestore(&usbmisc->lock, flags); + + return 0; +} + static int usbmisc_imx53_init(struct imx_usbmisc_data *data) { void __iomem *reg = NULL; @@ -128,6 +162,10 @@ static const struct usbmisc_ops imx25_usbmisc_ops = { .post = usbmisc_imx25_post, }; +static const struct usbmisc_ops imx27_usbmisc_ops = { + .init = usbmisc_imx27_init, +}; + static const struct usbmisc_ops imx53_usbmisc_ops = { .init = usbmisc_imx53_init, }; @@ -162,6 +200,10 @@ static const struct of_device_id usbmisc_imx_dt_ids[] = { .data =&imx25_usbmisc_ops, }, { + .compatible = "fsl,imx27-usbmisc", + .data =&imx27_usbmisc_ops, + }, + { .compatible = "fsl,imx53-usbmisc", .data =&imx53_usbmisc_ops, }, Regards Chris -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 1/2] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs
This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. Signed-off-by: Alexander Shiyan --- drivers/usb/chipidea/usbmisc_imx.c | 42 ++ 1 file changed, 42 insertions(+) diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index 8a1094b..4381c5a6 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -21,6 +21,10 @@ #define MX25_USB_PHY_CTRL_OFFSET 0x08 #define MX25_BM_EXTERNAL_VBUS_DIVIDER BIT(23) +#define MX27_H1_PM_BIT BIT(8) +#define MX27_H2_PM_BIT BIT(16) +#define MX27_OTG_PM_BITBIT(24) + #define MX53_USB_OTG_PHY_CTRL_0_OFFSET 0x08 #define MX53_USB_UH2_CTRL_OFFSET 0x14 #define MX53_USB_UH3_CTRL_OFFSET 0x18 @@ -68,6 +72,36 @@ static int usbmisc_imx25_post(struct imx_usbmisc_data *data) return 0; } +static int usbmisc_imx27_init(struct imx_usbmisc_data *data) +{ + unsigned long flags; + u32 val; + + switch (data->index) { + case 0: + val = MX27_OTG_PM_BIT; + break; + case 1: + val = MX27_H1_PM_BIT; + break; + case 2: + val = MX27_H2_PM_BIT; + break; + default: + return -EINVAL; + }; + + spin_lock_irqsave(&usbmisc->lock, flags); + if (data->disable_oc) + val = readl(usbmisc->base) | val; + else + val = readl(usbmisc->base) & ~val; + writel(val, usbmisc->base); + spin_unlock_irqrestore(&usbmisc->lock, flags); + + return 0; +} + static int usbmisc_imx53_init(struct imx_usbmisc_data *data) { void __iomem *reg = NULL; @@ -128,6 +162,10 @@ static const struct usbmisc_ops imx25_usbmisc_ops = { .post = usbmisc_imx25_post, }; +static const struct usbmisc_ops imx27_usbmisc_ops = { + .init = usbmisc_imx27_init, +}; + static const struct usbmisc_ops imx53_usbmisc_ops = { .init = usbmisc_imx53_init, }; @@ -162,6 +200,10 @@ static const struct of_device_id usbmisc_imx_dt_ids[] = { .data = &imx25_usbmisc_ops, }, { + .compatible = "fsl,imx27-usbmisc", + .data = &imx27_usbmisc_ops, + }, + { .compatible = "fsl,imx53-usbmisc", .data = &imx53_usbmisc_ops, }, -- 1.8.1.5 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html