* [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
* 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@kernel.org, robh+dt@kernel.org
Cc: linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de,
devicetree@vger.kernel.org, dl-linux-imx,
linux-usb@vger.kernel.org
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@kernel.org, linux-arm-kernel@lists.infradead.org,
kernel@pengutronix.de, devicetree@vger.kernel.org, dl-linux-imx,
linux-usb@vger.kernel.org
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
* [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