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

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

Reviewed-by: Jun Li <jun.li@nxp.com>
Signed-off-by: Peter Chen <peter.chen@nxp.com>
---
Changes for v3:
- Changing propery name to indicate it is a samsung phy
- Add property range and default value.

 Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt b/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
index 51376cbe5f3d..a5c5db6a0b2d 100644
--- a/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
+++ b/Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
@@ -100,6 +100,15 @@ 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
+- samsung,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.
+  The range is from 0x0 to 0x3, the default value is 0x1.
+  Details can refer to TXPREEMPAMPTUNE0 bits of USBNC_n_PHY_CFG1.
+- samsung,picophy-dc-vol-level-adjust: HS DC Voltage Level Adjustment.
+  Adjust the high-speed transmitter DC level voltage.
+  The range is from 0x0 to 0xf, the default value is 0x3.
+  Details can refer to TXVREFTUNE0 bits of USBNC_n_PHY_CFG1.
 
 Example:
 
-- 
2.17.1


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

* [PATCH v3 2/4] usb: chipidea: imx: add two samsung picophy parameters tuning implementation
  2020-07-24  6:05 [PATCH v3 1/4] doc: dt-binding: ci-hdrc-usb2: add property for samsung picophy Peter Chen
@ 2020-07-24  6:05 ` Peter Chen
  2020-07-24  6:05 ` [PATCH v3 3/4] arm64: dts: imx8mm-evk: add two parameters for samsung picophy tuning Peter Chen
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Peter Chen @ 2020-07-24  6:05 UTC (permalink / raw)
  To: shawnguo, robh+dt
  Cc: linux-arm-kernel, kernel, devicetree, linux-imx, linux-usb, 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>
---
Changes for v3:
- Using new property name

 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..3129df2c46fb 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, "samsung,picophy-pre-emp-curr-control",
+			&data->emp_curr_control);
+	of_property_read_u32(np, "samsung,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] 7+ messages in thread

* [PATCH v3 3/4] arm64: dts: imx8mm-evk: add two parameters for samsung picophy tuning
  2020-07-24  6:05 [PATCH v3 1/4] doc: dt-binding: ci-hdrc-usb2: add property for samsung picophy Peter Chen
  2020-07-24  6:05 ` [PATCH v3 2/4] usb: chipidea: imx: add two samsung picophy parameters tuning implementation Peter Chen
@ 2020-07-24  6:05 ` Peter Chen
  2020-08-21  1:39   ` Peter Chen
  2020-07-24  6:05 ` [PATCH v3 4/4] arm64: dts: imx8mn-evk: " Peter Chen
  2020-08-12 19:17 ` [PATCH v3 1/4] doc: dt-binding: ci-hdrc-usb2: add property for samsung picophy Rob Herring
  3 siblings, 1 reply; 7+ messages in thread
From: Peter Chen @ 2020-07-24  6:05 UTC (permalink / raw)
  To: shawnguo, robh+dt
  Cc: linux-arm-kernel, kernel, devicetree, linux-imx, linux-usb, 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>
---
Changes for v3:
- Using the new property name
Changes for v2
- Address Shawn's comment to change subject.

 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..7c652b898114 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;
+	samsung,picophy-pre-emp-curr-control = <3>;
+	samsung,picophy-dc-vol-level-adjust = <7>;
 	status = "okay";
 
 	port {
-- 
2.17.1


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

* [PATCH v3 4/4] arm64: dts: imx8mn-evk: add two parameters for samsung picophy tuning
  2020-07-24  6:05 [PATCH v3 1/4] doc: dt-binding: ci-hdrc-usb2: add property for samsung picophy Peter Chen
  2020-07-24  6:05 ` [PATCH v3 2/4] usb: chipidea: imx: add two samsung picophy parameters tuning implementation Peter Chen
  2020-07-24  6:05 ` [PATCH v3 3/4] arm64: dts: imx8mm-evk: add two parameters for samsung picophy tuning Peter Chen
@ 2020-07-24  6:05 ` Peter Chen
  2020-08-12 19:17 ` [PATCH v3 1/4] doc: dt-binding: ci-hdrc-usb2: add property for samsung picophy Rob Herring
  3 siblings, 0 replies; 7+ messages in thread
From: Peter Chen @ 2020-07-24  6:05 UTC (permalink / raw)
  To: shawnguo, robh+dt
  Cc: linux-arm-kernel, kernel, devicetree, linux-imx, linux-usb, 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>
---
Changes for v3:
- Using the new property name
Changes for v2
- Address Shawn's comment to change subject.

 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..7453aec0a5fc 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;
+	samsung,picophy-pre-emp-curr-control = <3>;
+	samsung,picophy-dc-vol-level-adjust = <7>;
 	status = "okay";
 
 	port {
-- 
2.17.1


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

* Re: [PATCH v3 1/4] doc: dt-binding: ci-hdrc-usb2: add property for samsung picophy
  2020-07-24  6:05 [PATCH v3 1/4] doc: dt-binding: ci-hdrc-usb2: add property for samsung picophy Peter Chen
                   ` (2 preceding siblings ...)
  2020-07-24  6:05 ` [PATCH v3 4/4] arm64: dts: imx8mn-evk: " Peter Chen
@ 2020-08-12 19:17 ` Rob Herring
  3 siblings, 0 replies; 7+ messages in thread
From: Rob Herring @ 2020-08-12 19:17 UTC (permalink / raw)
  To: Peter Chen
  Cc: linux-arm-kernel, linux-imx, kernel, linux-usb, robh+dt,
	devicetree, shawnguo

On Fri, 24 Jul 2020 14:05:29 +0800, Peter Chen wrote:
> Add two parameters which are used to tune USB signal for samsung picophy,
> which is used at imx7d, imx8mm, and imx8mn.
> 
> Reviewed-by: Jun Li <jun.li@nxp.com>
> Signed-off-by: Peter Chen <peter.chen@nxp.com>
> ---
> Changes for v3:
> - Changing propery name to indicate it is a samsung phy
> - Add property range and default value.
> 
>  Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 

Reviewed-by: Rob Herring <robh@kernel.org>

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

* Re: [PATCH v3 3/4] arm64: dts: imx8mm-evk: add two parameters for samsung picophy tuning
  2020-07-24  6:05 ` [PATCH v3 3/4] arm64: dts: imx8mm-evk: add two parameters for samsung picophy tuning Peter Chen
@ 2020-08-21  1:39   ` Peter Chen
  2020-08-22  3:31     ` Shawn Guo
  0 siblings, 1 reply; 7+ messages in thread
From: Peter Chen @ 2020-08-21  1:39 UTC (permalink / raw)
  To: shawnguo, robh+dt
  Cc: linux-arm-kernel, kernel, devicetree, dl-linux-imx, linux-usb

On 20-07-24 14:05:31, 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>
> ---
> Changes for v3:
> - Using the new property name
> Changes for v2
> - Address Shawn's comment to change subject.
> 
>  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..7c652b898114 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;
> +	samsung,picophy-pre-emp-curr-control = <3>;
> +	samsung,picophy-dc-vol-level-adjust = <7>;
>  	status = "okay";
>  
>  	port {
> -- 

Hi Shawn,

Rob has already acked the binding-doc changes, would you please queue
these two dts changes?

-- 

Thanks,
Peter Chen

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

* Re: [PATCH v3 3/4] arm64: dts: imx8mm-evk: add two parameters for samsung picophy tuning
  2020-08-21  1:39   ` Peter Chen
@ 2020-08-22  3:31     ` Shawn Guo
  0 siblings, 0 replies; 7+ messages in thread
From: Shawn Guo @ 2020-08-22  3:31 UTC (permalink / raw)
  To: Peter Chen
  Cc: robh+dt, linux-arm-kernel, kernel, devicetree, dl-linux-imx, linux-usb

On Fri, Aug 21, 2020 at 01:39:44AM +0000, Peter Chen wrote:
> On 20-07-24 14:05:31, 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>
> > ---
> > Changes for v3:
> > - Using the new property name
> > Changes for v2
> > - Address Shawn's comment to change subject.
> > 
> >  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..7c652b898114 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;
> > +	samsung,picophy-pre-emp-curr-control = <3>;
> > +	samsung,picophy-dc-vol-level-adjust = <7>;
> >  	status = "okay";
> >  
> >  	port {
> > -- 
> 
> Hi Shawn,
> 
> Rob has already acked the binding-doc changes, would you please queue
> these two dts changes?

Applied patch #3 and #4, thanks.

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

end of thread, other threads:[~2020-08-22  3:32 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-24  6:05 [PATCH v3 1/4] doc: dt-binding: ci-hdrc-usb2: add property for samsung picophy Peter Chen
2020-07-24  6:05 ` [PATCH v3 2/4] usb: chipidea: imx: add two samsung picophy parameters tuning implementation Peter Chen
2020-07-24  6:05 ` [PATCH v3 3/4] arm64: dts: imx8mm-evk: add two parameters for samsung picophy tuning Peter Chen
2020-08-21  1:39   ` Peter Chen
2020-08-22  3:31     ` Shawn Guo
2020-07-24  6:05 ` [PATCH v3 4/4] arm64: dts: imx8mn-evk: " Peter Chen
2020-08-12 19:17 ` [PATCH v3 1/4] doc: dt-binding: ci-hdrc-usb2: add property for samsung picophy Rob Herring

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).