All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oliver Graute <oliver.graute@kococonnector.com>
To: Peter Chen <peter.chen@nxp.com>
Cc: "linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	Felipe Balbi <balbi@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Fabio Estevam <festevam@gmail.com>,
	Mathias Nyman <mathias.nyman@intel.com>,
	dl-linux-imx <linux-imx@nxp.com>
Subject: Re: using cdns3-imx driver on imx8qm
Date: Fri, 3 Apr 2020 16:40:44 +0200	[thread overview]
Message-ID: <20200403144044.GA49880@archlinux.localdomain> (raw)
In-Reply-To: <AM7PR04MB715728ED4EF3715A7798A5A08BC80@AM7PR04MB7157.eurprd04.prod.outlook.com>

On 31/03/20, Peter Chen wrote:
>   
> > > 		compatible = "fsl,imx8qxp-lpcg";
> > > 		reg = <0x5b280000 0x10000>;
> > > 		#clock-cells = <1>;
> > > 		bit-offset = <0 4 16 20 24 28>;
> > > 		clocks = <&clk IMX_SC_R_USB_2 IMX_SC_PM_CLK_PER>,
> > > 			 <&clk IMX_SC_R_USB_2 IMX_SC_PM_CLK_MISC>,
> > > 			 <&conn_ipg_clk>,
> > > 			 <&conn_ipg_clk>,
> > > 			 <&conn_ipg_clk>,
> > > 			 <&clk IMX_SC_R_USB_2 IMX_SC_PM_CLK_MST_BUS>;
> > > 		clock-output-names = "usb3_app_clk",
> > > 				     "usb3_lpm_clk",
> > > 				     "usb3_ipg_clk",
> > > 				     "usb3_core_pclk",
> > > 				     "usb3_phy_clk",
> > > 				     "usb3_aclk";
> > > 		power-domains = <&pd IMX_SC_R_USB_2_PHY>;
> > > 	};
> > >
> > > 	usbotg3: usb3@5b110000 {
> > > 		compatible = "fsl,imx8qm-usb3";
> > > 		#address-cells = <1>;
> > > 		#size-cells = <1>;
> > > 		ranges;
> > > 		reg = <0x5B110000 0x10000>;
> > > 		clocks = <&usb3_lpcg 1>,
> > > 			 <&usb3_lpcg 0>,
> > > 			 <&usb3_lpcg 5>,
> > > 			 <&usb3_lpcg 2>,
> > > 			 <&usb3_lpcg 3>;
> > > 		clock-names = "usb3_lpm_clk", "usb3_bus_clk", "usb3_aclk",
> > > 			"usb3_ipg_clk", "usb3_core_pclk";
> > > 		assigned-clocks = <&clk IMX_SC_R_USB_2
> > IMX_SC_PM_CLK_PER>,
> > > 			<&clk IMX_SC_R_USB_2 IMX_SC_PM_CLK_MISC>,
> > > 			<&clk IMX_SC_R_USB_2 IMX_SC_PM_CLK_MST_BUS>;
> > > 		assigned-clock-rates = <125000000>, <12000000>, <250000000>;
> > > 		power-domains = <&pd IMX_SC_R_USB_2>;
> > > 		status = "disabled";
> > >
> > > 		usbotg3_cdns3: cdns3 {
> > > 			compatible = "cdns,usb3";
> > > 			#address-cells = <1>;
> > > 			#size-cells = <1>;
> > > 			interrupt-parent = <&gic>;
> > > 			interrupts = <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
> > > 					<GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
> > > 					<GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>;
> > > 			interrupt-names = "host", "peripheral", "otg";
> > > 			reg = <0x5B130000 0x10000>,     /* memory area for HOST
> > registers */
> > > 				<0x5B140000 0x10000>,   /* memory area for
> > DEVICE registers */
> > > 				<0x5B120000 0x10000>;   /* memory area for
> > OTG/DRD registers */
> > > 			reg-names = "xhci", "dev", "otg";
> > > 			phys = <&usb3_phy>;
> > > 			phy-names = "cdns3,usb3-phy";
> > > 			status = "disabled";
> > > 		};
> > > 	};
> > 
> > Hello Peter,
> > 
> > thx for the dts example. Now I get "wait clkvld timeout" in "cdns_imx_noncore_init()"
> > So USB3_SSPHY_STATUS register seems to be wrong.
> > 
> > dmesg | grep imx
> > [    1.065445] cdns3-imx 5b110000.usb3: Adding to iommu group 0
> > [    1.257309] imx-scu scu: NXP i.MX SCU Initialized
> > [    1.275489] imx-scu-clk: probe of gpt0_clk failed with error -5
> > [    1.291143] imx-scu-clk: probe of pwm_clk failed with error -22
> > [    1.302517] imx-scu-clk: probe of lcd_clk failed with error -22
> > [    1.341405] imx8qm-pinctrl scu:pinctrl: initialized IMX pinctrl driver
> > [    3.029484] cdns3-imx 5b110000.usb3: wait clkvld timeout
> > [    3.034891] cdns3-imx: probe of 5b110000.usb3 failed with error -110
> > [    3.237393] sdhci-esdhc-imx 5b030000.mmc: Got CD GPIO
> > [    3.242468] sdhci-esdhc-imx 5b030000.mmc: Got WP GPIO
> > [    3.316687] imx8qxp-lpcg-clk 5a4a0000.clock-controller: ignoring dependency for
> > device, assuming no driver
> > 
>  
> Make sure the five clocks in dts are correct, and print the USB3_SSPHY_STATUS if
> timeout still exists.

ok thx, we got it fixed by replacing:

 clocks = <&usb3_lpcg 1>,
          <&usb3_lpcg 0>,
          <&usb3_lpcg 4>,
          <&usb3_lpcg 2>,
          <&usb3_lpcg 3>;

with this:
 
 clocks = <&usb3_lpcg IMX_LPCG_CLK_1>,
          <&usb3_lpcg IMX_LPCG_CLK_0>,
          <&usb3_lpcg IMX_LPCG_CLK_7>,
          <&usb3_lpcg IMX_LPCG_CLK_4>,
          <&usb3_lpcg IMX_LPCG_CLK_5>;

now the "wait clkvld timeout" is gone and the USB3_SSPHY_STATUS register
is very similar to another imx8qm device which runs linux-imx from NXP.

Now I try to get into USB HOST mode:

--- a/drivers/usb/cdns3/cdns3-imx.c
+++ b/drivers/usb/cdns3/cdns3-imx.c
@@ -113,11 +115,11 @@ static int cdns_imx_noncore_init(struct cdns_imx *data)
        udelay(1);

        value = cdns_imx_readl(data, USB3_CORE_CTRL1);
-       value = (value & ~MODE_STRAP_MASK) | OTG_MODE | OC_DISABLE;
+       value = (value & ~MODE_STRAP_MASK) | HOST_MODE | OC_DISABLE;
        cdns_imx_writel(data, USB3_CORE_CTRL1, value);

Is this change necessary?

Do I need special changes on xhci.c do get it work with cdns-imx in host mode?

I'am stuck at:

[   16.697525] xhci-hcd xhci-hcd.0.auto: can't setup: -110

I already tried to add the Intel quirk:

udelay(1000) in xhci_reset() but without success.

Is the host mode working on your side?

Best regards,

Oliver


  parent reply	other threads:[~2020-04-03 14:44 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-26 17:01 using cdns3-imx driver on imx8qm Oliver Graute
2020-03-27  9:05 ` Peter Chen
2020-03-27  9:50   ` Oliver Graute
2020-03-27 13:21     ` Peter Chen
2020-03-31 14:25       ` Oliver Graute
2020-03-31 14:39         ` Peter Chen
2020-04-01 10:34           ` Oliver Graute
2020-04-01 11:36             ` Felipe Balbi
2020-04-02  1:16             ` Peter Chen
2020-04-03 14:40           ` Oliver Graute [this message]
2020-04-06 16:25             ` Oliver Graute
2020-04-07  2:46               ` Peter Chen
2020-04-07 16:37                 ` Oliver Graute
2020-04-07 19:57                   ` Oliver Graute

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200403144044.GA49880@archlinux.localdomain \
    --to=oliver.graute@kococonnector.com \
    --cc=balbi@kernel.org \
    --cc=festevam@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=kernel@pengutronix.de \
    --cc=linux-imx@nxp.com \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=peter.chen@nxp.com \
    --cc=s.hauer@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.