devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/4] doc: dt-binding: ci-hdrc-usb2: add property for imx picophy
@ 2020-07-09 10:58 Peter Chen
  2020-07-09 10:59 ` [PATCH 2/4] usb: chipidea: imx: add two picophy parameters tuning implementation Peter Chen
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Peter Chen @ 2020-07-09 10:58 UTC (permalink / raw)
  To: shawnguo, robh+dt
  Cc: linux-arm-kernel, kernel, devicetree, fabio.estevam, linux-imx,
	linux-usb, jun.li, Peter Chen

Add two parameters which are used to tune USB signal for imx picophy,
picophy is used at imx7d, imx8mm, and imx8mn.

Reviewed-by: Jun Li <jun.li@nxp.com>
Signed-off-by: Peter Chen <peter.chen@nxp.com>
---
 Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt b/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
index 51376cbe5f3d..e9858dafb08f 100644
--- a/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
+++ b/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
@@ -100,6 +100,13 @@ i.mx specific properties
   It's recommended to specify the over current polarity.
 - power-active-high: power signal polarity is active high
 - external-vbus-divider: enables off-chip resistor divider for Vbus
+- picophy,pre-emp-curr-control: HS Transmitter Pre-Emphasis Current
+  Control. This signal controls the amount of current sourced to the
+  USB_OTG*_DP and USB_OTG*_DN pins after a J-to-K or K-to-J transition.
+  Details can refer to TXPREEMPAMPTUNE0 bits of USBNC_n_PHY_CFG1.
+- picophy,dc-vol-level-adjust: HS DC Voltage Level Adjustment.
+  Adjust the high-speed transmitter DC level voltage, details can refer
+  to TXVREFTUNE0 bits of USBNC_n_PHY_CFG1.
 
 Example:
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/4] usb: chipidea: imx: add two picophy parameters tuning implementation
  2020-07-09 10:58 [PATCH 1/4] doc: dt-binding: ci-hdrc-usb2: add property for imx picophy Peter Chen
@ 2020-07-09 10:59 ` Peter Chen
  2020-07-09 10:59 ` [PATCH 3/4] ARM64: dts: fsl: imx8mm-evk: add two parameters for picophy tuning Peter Chen
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Peter Chen @ 2020-07-09 10:59 UTC (permalink / raw)
  To: shawnguo, robh+dt
  Cc: linux-arm-kernel, kernel, devicetree, fabio.estevam, linux-imx,
	linux-usb, jun.li, Peter Chen

These two parameters are used to improve USB signal for board level,
in this commit, we read it from the dtb, and write to related register
during the initialization.

Signed-off-by: Peter Chen <peter.chen@nxp.com>
---
 drivers/usb/chipidea/ci_hdrc_imx.c |  5 +++++
 drivers/usb/chipidea/ci_hdrc_imx.h |  2 ++
 drivers/usb/chipidea/usbmisc_imx.c | 21 +++++++++++++++++++++
 3 files changed, 28 insertions(+)

diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c
index 5ae16368a0c7..58de0f3ac0e9 100644
--- a/drivers/usb/chipidea/ci_hdrc_imx.c
+++ b/drivers/usb/chipidea/ci_hdrc_imx.c
@@ -165,6 +165,11 @@ static struct imx_usbmisc_data *usbmisc_get_init_data(struct device *dev)
 	if (of_usb_get_phy_mode(np) == USBPHY_INTERFACE_MODE_ULPI)
 		data->ulpi = 1;
 
+	of_property_read_u32(np, "picophy,pre-emp-curr-control",
+			&data->emp_curr_control);
+	of_property_read_u32(np, "picophy,dc-vol-level-adjust",
+			&data->dc_vol_level_adjust);
+
 	return data;
 }
 
diff --git a/drivers/usb/chipidea/ci_hdrc_imx.h b/drivers/usb/chipidea/ci_hdrc_imx.h
index 727d02b6dbd3..367bb0d0cb6b 100644
--- a/drivers/usb/chipidea/ci_hdrc_imx.h
+++ b/drivers/usb/chipidea/ci_hdrc_imx.h
@@ -25,6 +25,8 @@ struct imx_usbmisc_data {
 	unsigned int ext_id:1; /* ID from exteranl event */
 	unsigned int ext_vbus:1; /* Vbus from exteranl event */
 	struct usb_phy *usb_phy;
+	int emp_curr_control;
+	int dc_vol_level_adjust;
 };
 
 int imx_usbmisc_init(struct imx_usbmisc_data *data);
diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
index f136876cb4a3..f9881aed468f 100644
--- a/drivers/usb/chipidea/usbmisc_imx.c
+++ b/drivers/usb/chipidea/usbmisc_imx.c
@@ -128,6 +128,12 @@
 #define MX7D_USB_OTG_PHY_STATUS_VBUS_VLD	BIT(3)
 #define MX7D_USB_OTG_PHY_STATUS_CHRGDET		BIT(29)
 
+#define MX7D_USB_OTG_PHY_CFG1		0x30
+#define TXPREEMPAMPTUNE0_BIT		28
+#define TXPREEMPAMPTUNE0_MASK		(3 << 28)
+#define TXVREFTUNE0_BIT			20
+#define TXVREFTUNE0_MASK		(0xf << 20)
+
 #define MX6_USB_OTG_WAKEUP_BITS (MX6_BM_WAKEUP_ENABLE | MX6_BM_VBUS_WAKEUP | \
 				 MX6_BM_ID_WAKEUP)
 
@@ -649,6 +655,21 @@ static int usbmisc_imx7d_init(struct imx_usbmisc_data *data)
 		writel(reg | MX7D_USB_VBUS_WAKEUP_SOURCE_BVALID
 			| MX7D_USBNC_AUTO_RESUME,
 			usbmisc->base + MX7D_USBNC_USB_CTRL2);
+		/* PHY tuning for signal quality */
+		reg = readl(usbmisc->base + MX7D_USB_OTG_PHY_CFG1);
+		if (data->emp_curr_control && data->emp_curr_control <=
+			(TXPREEMPAMPTUNE0_MASK >> TXPREEMPAMPTUNE0_BIT)) {
+			reg &= ~TXPREEMPAMPTUNE0_MASK;
+			reg |= (data->emp_curr_control << TXPREEMPAMPTUNE0_BIT);
+		}
+
+		if (data->dc_vol_level_adjust && data->dc_vol_level_adjust <=
+			(TXVREFTUNE0_MASK >> TXVREFTUNE0_BIT)) {
+			reg &= ~TXVREFTUNE0_MASK;
+			reg |= (data->dc_vol_level_adjust << TXVREFTUNE0_BIT);
+		}
+
+		writel(reg, usbmisc->base + MX7D_USB_OTG_PHY_CFG1);
 	}
 
 	spin_unlock_irqrestore(&usbmisc->lock, flags);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/4] ARM64: dts: fsl: imx8mm-evk: add two parameters for picophy tuning
  2020-07-09 10:58 [PATCH 1/4] doc: dt-binding: ci-hdrc-usb2: add property for imx picophy Peter Chen
  2020-07-09 10:59 ` [PATCH 2/4] usb: chipidea: imx: add two picophy parameters tuning implementation Peter Chen
@ 2020-07-09 10:59 ` Peter Chen
  2020-07-13  8:36   ` Shawn Guo
  2020-07-09 10:59 ` [PATCH 4/4] ARM64: dts: fsl: imx8mn-evk: " Peter Chen
  2020-07-13  8:31 ` [PATCH 1/4] doc: dt-binding: ci-hdrc-usb2: add property for imx picophy Shawn Guo
  3 siblings, 1 reply; 8+ messages in thread
From: Peter Chen @ 2020-07-09 10:59 UTC (permalink / raw)
  To: shawnguo, robh+dt
  Cc: linux-arm-kernel, kernel, devicetree, fabio.estevam, linux-imx,
	linux-usb, jun.li, Peter Chen

With these two parameters tuning, it can pass USB eye diagram at evk board.

Reviewed-by: Jun Li <jun.li@nxp.com>
Signed-off-by: Peter Chen <peter.chen@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx8mm-evk.dts | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8mm-evk.dts b/arch/arm64/boot/dts/freescale/imx8mm-evk.dts
index 0f1d7f8aeac4..c432b628e1ed 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mm-evk.dts
@@ -324,6 +324,8 @@
 	srp-disable;
 	adp-disable;
 	usb-role-switch;
+	picophy,pre-emp-curr-control = <3>;
+	picophy,dc-vol-level-adjust = <7>;
 	status = "okay";
 
 	port {
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 4/4] ARM64: dts: fsl: imx8mn-evk: add two parameters for picophy tuning
  2020-07-09 10:58 [PATCH 1/4] doc: dt-binding: ci-hdrc-usb2: add property for imx picophy Peter Chen
  2020-07-09 10:59 ` [PATCH 2/4] usb: chipidea: imx: add two picophy parameters tuning implementation Peter Chen
  2020-07-09 10:59 ` [PATCH 3/4] ARM64: dts: fsl: imx8mm-evk: add two parameters for picophy tuning Peter Chen
@ 2020-07-09 10:59 ` Peter Chen
  2020-07-13  8:31 ` [PATCH 1/4] doc: dt-binding: ci-hdrc-usb2: add property for imx picophy Shawn Guo
  3 siblings, 0 replies; 8+ messages in thread
From: Peter Chen @ 2020-07-09 10:59 UTC (permalink / raw)
  To: shawnguo, robh+dt
  Cc: linux-arm-kernel, kernel, devicetree, fabio.estevam, linux-imx,
	linux-usb, jun.li, Peter Chen

With these two parameters tuning, it can pass USB eye diagram at evk board.

Signed-off-by: Peter Chen <peter.chen@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx8mn-evk.dtsi | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8mn-evk.dtsi b/arch/arm64/boot/dts/freescale/imx8mn-evk.dtsi
index 85fc0aa38c4f..a6e9035e6cd5 100644
--- a/arch/arm64/boot/dts/freescale/imx8mn-evk.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mn-evk.dtsi
@@ -132,6 +132,8 @@
 	srp-disable;
 	adp-disable;
 	usb-role-switch;
+	picophy,pre-emp-curr-control = <3>;
+	picophy,dc-vol-level-adjust = <7>;
 	status = "okay";
 
 	port {
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/4] doc: dt-binding: ci-hdrc-usb2: add property for imx picophy
  2020-07-09 10:58 [PATCH 1/4] doc: dt-binding: ci-hdrc-usb2: add property for imx picophy Peter Chen
                   ` (2 preceding siblings ...)
  2020-07-09 10:59 ` [PATCH 4/4] ARM64: dts: fsl: imx8mn-evk: " Peter Chen
@ 2020-07-13  8:31 ` Shawn Guo
  2020-07-13  8:38   ` Peter Chen
  3 siblings, 1 reply; 8+ messages in thread
From: Shawn Guo @ 2020-07-13  8:31 UTC (permalink / raw)
  To: Peter Chen
  Cc: robh+dt, linux-arm-kernel, kernel, devicetree, fabio.estevam,
	linux-imx, linux-usb, jun.li

On Thu, Jul 09, 2020 at 06:58:59PM +0800, Peter Chen wrote:
> Add two parameters which are used to tune USB signal for imx picophy,
> picophy is used at imx7d, imx8mm, and imx8mn.
> 
> Reviewed-by: Jun Li <jun.li@nxp.com>
> Signed-off-by: Peter Chen <peter.chen@nxp.com>
> ---
>  Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt b/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
> index 51376cbe5f3d..e9858dafb08f 100644
> --- a/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
> +++ b/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
> @@ -100,6 +100,13 @@ i.mx specific properties
>    It's recommended to specify the over current polarity.
>  - power-active-high: power signal polarity is active high
>  - external-vbus-divider: enables off-chip resistor divider for Vbus
> +- picophy,pre-emp-curr-control: HS Transmitter Pre-Emphasis Current

'picophy' should be documented in vendor-prefixes.yaml?

Shawn

> +  Control. This signal controls the amount of current sourced to the
> +  USB_OTG*_DP and USB_OTG*_DN pins after a J-to-K or K-to-J transition.
> +  Details can refer to TXPREEMPAMPTUNE0 bits of USBNC_n_PHY_CFG1.
> +- picophy,dc-vol-level-adjust: HS DC Voltage Level Adjustment.
> +  Adjust the high-speed transmitter DC level voltage, details can refer
> +  to TXVREFTUNE0 bits of USBNC_n_PHY_CFG1.
>  
>  Example:
>  
> -- 
> 2.17.1
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/4] ARM64: dts: fsl: imx8mm-evk: add two parameters for picophy tuning
  2020-07-09 10:59 ` [PATCH 3/4] ARM64: dts: fsl: imx8mm-evk: add two parameters for picophy tuning Peter Chen
@ 2020-07-13  8:36   ` Shawn Guo
  2020-07-13  8:40     ` Peter Chen
  0 siblings, 1 reply; 8+ messages in thread
From: Shawn Guo @ 2020-07-13  8:36 UTC (permalink / raw)
  To: Peter Chen
  Cc: robh+dt, linux-arm-kernel, kernel, devicetree, fabio.estevam,
	linux-imx, linux-usb, jun.li

On Thu, Jul 09, 2020 at 06:59:01PM +0800, Peter Chen wrote:
> With these two parameters tuning, it can pass USB eye diagram at evk board.
> 
> Reviewed-by: Jun Li <jun.li@nxp.com>
> Signed-off-by: Peter Chen <peter.chen@nxp.com>

It's not so consistent, but idiomatically we prefix arm i.MX
platform/dts patches like 'ARM: ...', but 'arm64: ...' for arm64 ones.
Also with 'imx8mm-evk' in prefix, it's good enough to know this is
fsl/imx patch, so I suggest prefix like:

 'arm64: dts: imx8mm-evk: ...'

Shawn

> ---
>  arch/arm64/boot/dts/freescale/imx8mm-evk.dts | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/freescale/imx8mm-evk.dts b/arch/arm64/boot/dts/freescale/imx8mm-evk.dts
> index 0f1d7f8aeac4..c432b628e1ed 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mm-evk.dts
> +++ b/arch/arm64/boot/dts/freescale/imx8mm-evk.dts
> @@ -324,6 +324,8 @@
>  	srp-disable;
>  	adp-disable;
>  	usb-role-switch;
> +	picophy,pre-emp-curr-control = <3>;
> +	picophy,dc-vol-level-adjust = <7>;
>  	status = "okay";
>  
>  	port {
> -- 
> 2.17.1
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH 1/4] doc: dt-binding: ci-hdrc-usb2: add property for imx picophy
  2020-07-13  8:31 ` [PATCH 1/4] doc: dt-binding: ci-hdrc-usb2: add property for imx picophy Shawn Guo
@ 2020-07-13  8:38   ` Peter Chen
  0 siblings, 0 replies; 8+ messages in thread
From: Peter Chen @ 2020-07-13  8:38 UTC (permalink / raw)
  To: Shawn Guo
  Cc: robh+dt, linux-arm-kernel, kernel, devicetree, Fabio Estevam,
	dl-linux-imx, linux-usb, Jun Li

 
> > ---
> >  Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt | 7 +++++++
> >  1 file changed, 7 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
> > b/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
> > index 51376cbe5f3d..e9858dafb08f 100644
> > --- a/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
> > +++ b/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
> > @@ -100,6 +100,13 @@ i.mx specific properties
> >    It's recommended to specify the over current polarity.
> >  - power-active-high: power signal polarity is active high
> >  - external-vbus-divider: enables off-chip resistor divider for Vbus
> > +- picophy,pre-emp-curr-control: HS Transmitter Pre-Emphasis Current
> 
> 'picophy' should be documented in vendor-prefixes.yaml?
> 

For chipidea binding doc, there is no vendor specific doc, only there are vendor
specific parts in general binding doc.

Peter


> Shawn
> 
> > +  Control. This signal controls the amount of current sourced to the
> > +  USB_OTG*_DP and USB_OTG*_DN pins after a J-to-K or K-to-J transition.
> > +  Details can refer to TXPREEMPAMPTUNE0 bits of USBNC_n_PHY_CFG1.
> > +- picophy,dc-vol-level-adjust: HS DC Voltage Level Adjustment.
> > +  Adjust the high-speed transmitter DC level voltage, details can
> > +refer
> > +  to TXVREFTUNE0 bits of USBNC_n_PHY_CFG1.
> >
> >  Example:
> >
> > --
> > 2.17.1
> >

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH 3/4] ARM64: dts: fsl: imx8mm-evk: add two parameters for picophy tuning
  2020-07-13  8:36   ` Shawn Guo
@ 2020-07-13  8:40     ` Peter Chen
  0 siblings, 0 replies; 8+ messages in thread
From: Peter Chen @ 2020-07-13  8:40 UTC (permalink / raw)
  To: Shawn Guo
  Cc: robh+dt, linux-arm-kernel, kernel, devicetree, Fabio Estevam,
	dl-linux-imx, linux-usb, Jun Li

 
> > Reviewed-by: Jun Li <jun.li@nxp.com>
> > Signed-off-by: Peter Chen <peter.chen@nxp.com>
> 
> It's not so consistent, but idiomatically we prefix arm i.MX platform/dts patches like
> 'ARM: ...', but 'arm64: ...' for arm64 ones.
> Also with 'imx8mm-evk' in prefix, it's good enough to know this is fsl/imx patch, so I
> suggest prefix like:
> 
>  'arm64: dts: imx8mm-evk: ...'
> 
 
Thanks, will change.

Peter

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-07-13  8:40 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-09 10:58 [PATCH 1/4] doc: dt-binding: ci-hdrc-usb2: add property for imx picophy Peter Chen
2020-07-09 10:59 ` [PATCH 2/4] usb: chipidea: imx: add two picophy parameters tuning implementation Peter Chen
2020-07-09 10:59 ` [PATCH 3/4] ARM64: dts: fsl: imx8mm-evk: add two parameters for picophy tuning Peter Chen
2020-07-13  8:36   ` Shawn Guo
2020-07-13  8:40     ` Peter Chen
2020-07-09 10:59 ` [PATCH 4/4] ARM64: dts: fsl: imx8mn-evk: " Peter Chen
2020-07-13  8:31 ` [PATCH 1/4] doc: dt-binding: ci-hdrc-usb2: add property for imx picophy Shawn Guo
2020-07-13  8:38   ` Peter Chen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).