linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/4] usb: chipidea: small bugfix and cleanup
@ 2022-10-18 10:37 Sascha Hauer
  2022-10-18 10:37 ` [PATCH v2 1/4] usb: chipidea: usbmisc_imx: Fix i.MX53 clock sel masks Sascha Hauer
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Sascha Hauer @ 2022-10-18 10:37 UTC (permalink / raw)
  To: linux-usb
  Cc: Peng Fan, Pengutronix Kernel Team, linux-arm-kernel, Xu Yang,
	Sascha Hauer

This series was originally sent as "usb: chipidea: Export more phy
tuning parameters to device tree" here:
https://lore.kernel.org/linux-arm-kernel/20221017004153.GC12701@nchen-desktop/T/

As I don't know when I'll find time to implement the changes Rob
requested I dropped 5/6 and 6/6 and only send the bugfixes and cleanups
for now.

Changes since v1:
- Drop device tree changes
- Fix wrong MX53_USB_CTRL_1_H3_XCVR_CLK_SEL mask

Sascha Hauer (4):
  usb: chipidea: usbmisc_imx: Fix i.MX53 clock sel masks
  usb: chipidea: usbmisc_imx: Fix setting i.MX6SX wakeup source
  usb: chipidea: usbmisc_imx: Use GENMASK/FIELD_PREP for bitfields
  usb: chipidea: usbmisc_imx: Add prefix to register defines

 drivers/usb/chipidea/usbmisc_imx.c | 119 +++++++++++++++--------------
 1 file changed, 63 insertions(+), 56 deletions(-)

-- 
2.30.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH v2 1/4] usb: chipidea: usbmisc_imx: Fix i.MX53 clock sel masks
  2022-10-18 10:37 [PATCH v2 0/4] usb: chipidea: small bugfix and cleanup Sascha Hauer
@ 2022-10-18 10:37 ` Sascha Hauer
  2022-10-22 10:36   ` Greg KH
  2022-10-18 10:37 ` [PATCH v2 2/4] usb: chipidea: usbmisc_imx: Fix setting i.MX6SX wakeup source Sascha Hauer
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Sascha Hauer @ 2022-10-18 10:37 UTC (permalink / raw)
  To: linux-usb
  Cc: Peng Fan, Pengutronix Kernel Team, linux-arm-kernel, Xu Yang,
	Sascha Hauer, Xu Yang

According to the reference manual the masks for the
MX53_USB_CTRL_1_H*_XCVR_CLK_SEL bits are 0x3, not 0x11 (which were
probably meant as 0b11).

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Reviewed-by: Xu Yang <xu.yang_2@nxp.com>
Link: https://lore.kernel.org/r/20221011082924.884123-2-s.hauer@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/usb/chipidea/usbmisc_imx.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
index bac0f5458cab9..8f805aa9c383c 100644
--- a/drivers/usb/chipidea/usbmisc_imx.c
+++ b/drivers/usb/chipidea/usbmisc_imx.c
@@ -42,9 +42,9 @@
 #define MX53_USB_OTG_PHY_CTRL_0_OFFSET	0x08
 #define MX53_USB_OTG_PHY_CTRL_1_OFFSET	0x0c
 #define MX53_USB_CTRL_1_OFFSET	        0x10
-#define MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_MASK (0x11 << 2)
+#define MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_MASK (0x3 << 2)
 #define MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_ULPI BIT(2)
-#define MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_MASK (0x11 << 6)
+#define MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_MASK (0x3 << 6)
 #define MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_ULPI BIT(6)
 #define MX53_USB_UH2_CTRL_OFFSET	0x14
 #define MX53_USB_UH3_CTRL_OFFSET	0x18
-- 
2.30.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH v2 2/4] usb: chipidea: usbmisc_imx: Fix setting i.MX6SX wakeup source
  2022-10-18 10:37 [PATCH v2 0/4] usb: chipidea: small bugfix and cleanup Sascha Hauer
  2022-10-18 10:37 ` [PATCH v2 1/4] usb: chipidea: usbmisc_imx: Fix i.MX53 clock sel masks Sascha Hauer
@ 2022-10-18 10:37 ` Sascha Hauer
  2022-10-18 10:37 ` [PATCH v2 3/4] usb: chipidea: usbmisc_imx: Use GENMASK/FIELD_PREP for bitfields Sascha Hauer
  2022-10-18 10:37 ` [PATCH v2 4/4] usb: chipidea: usbmisc_imx: Add prefix to register defines Sascha Hauer
  3 siblings, 0 replies; 7+ messages in thread
From: Sascha Hauer @ 2022-10-18 10:37 UTC (permalink / raw)
  To: linux-usb
  Cc: Peng Fan, Pengutronix Kernel Team, linux-arm-kernel, Xu Yang,
	Sascha Hauer, Xu Yang

MX6SX_USB_VBUS_WAKEUP_SOURCE are two bits containing an enum value,
so when read/modify/write that we have to clear both bits bits before
setting the desired bits. The clearing of the bits was forgotten, add
it.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Reviewed-by: Xu Yang <xu.yang_2@nxp.com>
Link: https://lore.kernel.org/r/20221011082924.884123-3-s.hauer@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/usb/chipidea/usbmisc_imx.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
index 8f805aa9c383c..e1b4b7f9b3f31 100644
--- a/drivers/usb/chipidea/usbmisc_imx.c
+++ b/drivers/usb/chipidea/usbmisc_imx.c
@@ -551,6 +551,7 @@ static int usbmisc_imx6sx_init(struct imx_usbmisc_data *data)
 		spin_lock_irqsave(&usbmisc->lock, flags);
 		/* Set vbus wakeup source as bvalid */
 		val = readl(reg);
+		val &= ~MX6SX_USB_VBUS_WAKEUP_SOURCE(3);
 		writel(val | MX6SX_USB_VBUS_WAKEUP_SOURCE_BVALID, reg);
 		/*
 		 * Disable dp/dm wakeup in device mode when vbus is
-- 
2.30.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH v2 3/4] usb: chipidea: usbmisc_imx: Use GENMASK/FIELD_PREP for bitfields
  2022-10-18 10:37 [PATCH v2 0/4] usb: chipidea: small bugfix and cleanup Sascha Hauer
  2022-10-18 10:37 ` [PATCH v2 1/4] usb: chipidea: usbmisc_imx: Fix i.MX53 clock sel masks Sascha Hauer
  2022-10-18 10:37 ` [PATCH v2 2/4] usb: chipidea: usbmisc_imx: Fix setting i.MX6SX wakeup source Sascha Hauer
@ 2022-10-18 10:37 ` Sascha Hauer
  2022-10-18 10:51   ` Xu Yang
  2022-10-18 10:37 ` [PATCH v2 4/4] usb: chipidea: usbmisc_imx: Add prefix to register defines Sascha Hauer
  3 siblings, 1 reply; 7+ messages in thread
From: Sascha Hauer @ 2022-10-18 10:37 UTC (permalink / raw)
  To: linux-usb
  Cc: Peng Fan, Pengutronix Kernel Team, linux-arm-kernel, Xu Yang,
	Sascha Hauer

GENMASK and FIELD_PREP offer a convenient unified way to manipulate
bitfields in registers without having to define mask and shift
separately. Broaden the use of this mechanism by converting usbmisc_imx
over to it. No functional change intended.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Link: https://lore.kernel.org/r/20221011082924.884123-4-s.hauer@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/usb/chipidea/usbmisc_imx.c | 116 +++++++++++++++--------------
 1 file changed, 59 insertions(+), 57 deletions(-)

diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
index e1b4b7f9b3f31..09979264958fc 100644
--- a/drivers/usb/chipidea/usbmisc_imx.c
+++ b/drivers/usb/chipidea/usbmisc_imx.c
@@ -9,24 +9,23 @@
 #include <linux/io.h>
 #include <linux/delay.h>
 #include <linux/usb/otg.h>
+#include <linux/bits.h>
+#include <linux/bitfield.h>
 
 #include "ci_hdrc_imx.h"
 
 #define MX25_USB_PHY_CTRL_OFFSET	0x08
 #define MX25_BM_EXTERNAL_VBUS_DIVIDER	BIT(23)
 
-#define MX25_EHCI_INTERFACE_SINGLE_UNI	(2 << 0)
-#define MX25_EHCI_INTERFACE_DIFF_UNI	(0 << 0)
-#define MX25_EHCI_INTERFACE_MASK	(0xf)
+#define MX25_EHCI_INTERFACE_SINGLE_UNI	2
+#define MX25_EHCI_INTERFACE_DIFF_UNI	0
 
-#define MX25_OTG_SIC_SHIFT		29
-#define MX25_OTG_SIC_MASK		(0x3 << MX25_OTG_SIC_SHIFT)
+#define MX25_OTG_SIC			GENMASK(30, 29)
 #define MX25_OTG_PM_BIT			BIT(24)
 #define MX25_OTG_PP_BIT			BIT(11)
 #define MX25_OTG_OCPOL_BIT		BIT(3)
 
-#define MX25_H1_SIC_SHIFT		21
-#define MX25_H1_SIC_MASK		(0x3 << MX25_H1_SIC_SHIFT)
+#define MX25_H1_SIC			GENMASK(22, 21)
 #define MX25_H1_PP_BIT			BIT(18)
 #define MX25_H1_PM_BIT			BIT(16)
 #define MX25_H1_IPPUE_UP_BIT		BIT(7)
@@ -42,10 +41,10 @@
 #define MX53_USB_OTG_PHY_CTRL_0_OFFSET	0x08
 #define MX53_USB_OTG_PHY_CTRL_1_OFFSET	0x0c
 #define MX53_USB_CTRL_1_OFFSET	        0x10
-#define MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_MASK (0x3 << 2)
-#define MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_ULPI BIT(2)
-#define MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_MASK (0x3 << 6)
-#define MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_ULPI BIT(6)
+#define MX53_USB_CTRL_1_H2_XCVR_CLK_SEL	GENMASK(3, 2)
+#define MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_ULPI 1
+#define MX53_USB_CTRL_1_H3_XCVR_CLK_SEL	GENMASK(7, 6)
+#define MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_ULPI 1
 #define MX53_USB_UH2_CTRL_OFFSET	0x14
 #define MX53_USB_UH3_CTRL_OFFSET	0x18
 #define MX53_USB_CLKONOFF_CTRL_OFFSET	0x24
@@ -85,26 +84,24 @@
 #define MX6_USB_OTG1_PHY_CTRL		0x18
 /* For imx6dql, it is host-only controller, for later imx6, it is otg's */
 #define MX6_USB_OTG2_PHY_CTRL		0x1c
-#define MX6SX_USB_VBUS_WAKEUP_SOURCE(v)	(v << 8)
-#define MX6SX_USB_VBUS_WAKEUP_SOURCE_VBUS	MX6SX_USB_VBUS_WAKEUP_SOURCE(0)
-#define MX6SX_USB_VBUS_WAKEUP_SOURCE_AVALID	MX6SX_USB_VBUS_WAKEUP_SOURCE(1)
-#define MX6SX_USB_VBUS_WAKEUP_SOURCE_BVALID	MX6SX_USB_VBUS_WAKEUP_SOURCE(2)
-#define MX6SX_USB_VBUS_WAKEUP_SOURCE_SESS_END	MX6SX_USB_VBUS_WAKEUP_SOURCE(3)
+#define MX6SX_USB_VBUS_WAKEUP_SOURCE		GENMASK(9, 8)
+#define MX6SX_USB_VBUS_WAKEUP_SOURCE_VBUS	0
+#define MX6SX_USB_VBUS_WAKEUP_SOURCE_AVALID	1
+#define MX6SX_USB_VBUS_WAKEUP_SOURCE_BVALID	2
+#define MX6SX_USB_VBUS_WAKEUP_SOURCE_SESS_END	3
 
 #define VF610_OVER_CUR_DIS		BIT(7)
 
 #define MX7D_USBNC_USB_CTRL2		0x4
-#define MX7D_USB_VBUS_WAKEUP_SOURCE_MASK	0x3
-#define MX7D_USB_VBUS_WAKEUP_SOURCE(v)		(v << 0)
-#define MX7D_USB_VBUS_WAKEUP_SOURCE_VBUS	MX7D_USB_VBUS_WAKEUP_SOURCE(0)
-#define MX7D_USB_VBUS_WAKEUP_SOURCE_AVALID	MX7D_USB_VBUS_WAKEUP_SOURCE(1)
-#define MX7D_USB_VBUS_WAKEUP_SOURCE_BVALID	MX7D_USB_VBUS_WAKEUP_SOURCE(2)
-#define MX7D_USB_VBUS_WAKEUP_SOURCE_SESS_END	MX7D_USB_VBUS_WAKEUP_SOURCE(3)
+#define MX7D_USB_VBUS_WAKEUP_SOURCE		GENMASK(1, 0)
+#define MX7D_USB_VBUS_WAKEUP_SOURCE_VBUS	0
+#define MX7D_USB_VBUS_WAKEUP_SOURCE_AVALID	1
+#define MX7D_USB_VBUS_WAKEUP_SOURCE_BVALID	2
+#define MX7D_USB_VBUS_WAKEUP_SOURCE_SESS_END	3
 #define MX7D_USBNC_AUTO_RESUME				BIT(2)
 /* The default DM/DP value is pull-down */
-#define MX7D_USBNC_USB_CTRL2_OPMODE(v)			(v << 6)
-#define MX7D_USBNC_USB_CTRL2_OPMODE_NON_DRIVING	MX7D_USBNC_USB_CTRL2_OPMODE(1)
-#define MX7D_USBNC_USB_CTRL2_OPMODE_OVERRIDE_MASK	(BIT(7) | BIT(6))
+#define MX7D_USBNC_USB_CTRL2_OPMODE		GENMASK(7, 6)
+#define MX7D_USBNC_USB_CTRL2_OPMODE_NON_DRIVING	1
 #define MX7D_USBNC_USB_CTRL2_OPMODE_OVERRIDE_EN		BIT(8)
 #define MX7D_USBNC_USB_CTRL2_DP_OVERRIDE_VAL		BIT(12)
 #define MX7D_USBNC_USB_CTRL2_DP_OVERRIDE_EN		BIT(13)
@@ -129,10 +126,8 @@
 #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 TXPREEMPAMPTUNE0		GENMASK(29, 28)
+#define TXVREFTUNE0			GENMASK(23, 20)
 
 #define MX6_USB_OTG_WAKEUP_BITS (MX6_BM_WAKEUP_ENABLE | MX6_BM_VBUS_WAKEUP | \
 				 MX6_BM_ID_WAKEUP)
@@ -173,8 +168,8 @@ static int usbmisc_imx25_init(struct imx_usbmisc_data *data)
 	switch (data->index) {
 	case 0:
 		val = readl(usbmisc->base);
-		val &= ~(MX25_OTG_SIC_MASK | MX25_OTG_PP_BIT);
-		val |= (MX25_EHCI_INTERFACE_DIFF_UNI & MX25_EHCI_INTERFACE_MASK) << MX25_OTG_SIC_SHIFT;
+		val &= ~(MX25_OTG_SIC | MX25_OTG_PP_BIT);
+		val |= FIELD_PREP(MX25_OTG_SIC, MX25_EHCI_INTERFACE_DIFF_UNI);
 		val |= (MX25_OTG_PM_BIT | MX25_OTG_OCPOL_BIT);
 
 		/*
@@ -188,8 +183,8 @@ static int usbmisc_imx25_init(struct imx_usbmisc_data *data)
 		break;
 	case 1:
 		val = readl(usbmisc->base);
-		val &= ~(MX25_H1_SIC_MASK | MX25_H1_PP_BIT |  MX25_H1_IPPUE_UP_BIT);
-		val |= (MX25_EHCI_INTERFACE_SINGLE_UNI & MX25_EHCI_INTERFACE_MASK) << MX25_H1_SIC_SHIFT;
+		val &= ~(MX25_H1_SIC | MX25_H1_PP_BIT |  MX25_H1_IPPUE_UP_BIT);
+		val |= FIELD_PREP(MX25_H1_SIC, MX25_EHCI_INTERFACE_SINGLE_UNI);
 		val |= (MX25_H1_PM_BIT | MX25_H1_OCPOL_BIT | MX25_H1_TLL_BIT |
 			MX25_H1_USBTE_BIT | MX25_H1_IPPUE_DOWN_BIT);
 
@@ -308,8 +303,9 @@ static int usbmisc_imx53_init(struct imx_usbmisc_data *data)
 			reg = usbmisc->base + MX53_USB_CTRL_1_OFFSET;
 			val = readl(reg) | MX53_USB_CTRL_1_UH2_ULPI_EN;
 			/* select ULPI clock */
-			val &= ~MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_MASK;
-			val |= MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_ULPI;
+			val &= ~MX53_USB_CTRL_1_H2_XCVR_CLK_SEL;
+			val |= FIELD_PREP(MX53_USB_CTRL_1_H2_XCVR_CLK_SEL,
+					  MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_ULPI);
 			writel(val, reg);
 			/* Set interrupt wake up enable */
 			reg = usbmisc->base + MX53_USB_UH2_CTRL_OFFSET;
@@ -338,8 +334,9 @@ static int usbmisc_imx53_init(struct imx_usbmisc_data *data)
 			reg = usbmisc->base + MX53_USB_CTRL_1_OFFSET;
 			val = readl(reg) | MX53_USB_CTRL_1_UH3_ULPI_EN;
 			/* select ULPI clock */
-			val &= ~MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_MASK;
-			val |= MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_ULPI;
+			val &= ~MX53_USB_CTRL_1_H3_XCVR_CLK_SEL;
+			val |= FIELD_PREP(MX53_USB_CTRL_1_H3_XCVR_CLK_SEL,
+					  MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_ULPI);
 			writel(val, reg);
 			/* Set interrupt wake up enable */
 			reg = usbmisc->base + MX53_USB_UH3_CTRL_OFFSET;
@@ -551,8 +548,10 @@ static int usbmisc_imx6sx_init(struct imx_usbmisc_data *data)
 		spin_lock_irqsave(&usbmisc->lock, flags);
 		/* Set vbus wakeup source as bvalid */
 		val = readl(reg);
-		val &= ~MX6SX_USB_VBUS_WAKEUP_SOURCE(3);
-		writel(val | MX6SX_USB_VBUS_WAKEUP_SOURCE_BVALID, reg);
+		val &= ~MX6SX_USB_VBUS_WAKEUP_SOURCE;
+		val |= FIELD_PREP(MX6SX_USB_VBUS_WAKEUP_SOURCE,
+				  MX6SX_USB_VBUS_WAKEUP_SOURCE_BVALID);
+		writel(val, reg);
 		/*
 		 * Disable dp/dm wakeup in device mode when vbus is
 		 * not there.
@@ -652,22 +651,23 @@ static int usbmisc_imx7d_init(struct imx_usbmisc_data *data)
 
 	if (!data->hsic) {
 		reg = readl(usbmisc->base + MX7D_USBNC_USB_CTRL2);
-		reg &= ~MX7D_USB_VBUS_WAKEUP_SOURCE_MASK;
-		writel(reg | MX7D_USB_VBUS_WAKEUP_SOURCE_BVALID
-			| MX7D_USBNC_AUTO_RESUME,
-			usbmisc->base + MX7D_USBNC_USB_CTRL2);
+		reg &= ~MX7D_USB_VBUS_WAKEUP_SOURCE;
+		reg |= FIELD_PREP(MX7D_USB_VBUS_WAKEUP_SOURCE,
+				  MX7D_USB_VBUS_WAKEUP_SOURCE_BVALID);
+		reg |= MX7D_USBNC_AUTO_RESUME;
+		writel(reg, 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->emp_curr_control &&
+		    FIELD_FIT(TXPREEMPAMPTUNE0, data->emp_curr_control)) {
+			reg &= ~TXPREEMPAMPTUNE0;
+			reg |= FIELD_PREP(TXPREEMPAMPTUNE0, data->emp_curr_control);
 		}
 
-		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);
+		if (data->dc_vol_level_adjust &&
+		    FIELD_FIT(TXVREFTUNE0, data->dc_vol_level_adjust)) {
+			reg &= ~TXVREFTUNE0;
+			reg |= FIELD_PREP(TXVREFTUNE0, data->dc_vol_level_adjust);
 		}
 
 		writel(reg, usbmisc->base + MX7D_USB_OTG_PHY_CFG1);
@@ -742,7 +742,7 @@ static void imx7_disable_charger_detector(struct imx_usbmisc_data *data)
 
 	/* Set OPMODE to be 2'b00 and disable its override */
 	val = readl(usbmisc->base + MX7D_USBNC_USB_CTRL2);
-	val &= ~MX7D_USBNC_USB_CTRL2_OPMODE_OVERRIDE_MASK;
+	val &= ~MX7D_USBNC_USB_CTRL2_OPMODE;
 	writel(val, usbmisc->base + MX7D_USBNC_USB_CTRL2);
 
 	val = readl(usbmisc->base + MX7D_USBNC_USB_CTRL2);
@@ -852,8 +852,9 @@ static int imx7d_charger_detection(struct imx_usbmisc_data *data)
 	 */
 	spin_lock_irqsave(&usbmisc->lock, flags);
 	val = readl(usbmisc->base + MX7D_USBNC_USB_CTRL2);
-	val &= ~MX7D_USBNC_USB_CTRL2_OPMODE_OVERRIDE_MASK;
-	val |= MX7D_USBNC_USB_CTRL2_OPMODE_NON_DRIVING;
+	val &= ~MX7D_USBNC_USB_CTRL2_OPMODE;
+	val |= FIELD_PREP(MX7D_USBNC_USB_CTRL2_OPMODE,
+			  MX7D_USBNC_USB_CTRL2_OPMODE_NON_DRIVING);
 	writel(val, usbmisc->base + MX7D_USBNC_USB_CTRL2);
 
 	val = readl(usbmisc->base + MX7D_USBNC_USB_CTRL2);
@@ -926,9 +927,10 @@ static int usbmisc_imx7ulp_init(struct imx_usbmisc_data *data)
 			usbmisc->base + MX7D_USBNC_USB_CTRL2);
 	} else {
 		reg = readl(usbmisc->base + MX7D_USBNC_USB_CTRL2);
-		reg &= ~MX7D_USB_VBUS_WAKEUP_SOURCE_MASK;
-		writel(reg | MX7D_USB_VBUS_WAKEUP_SOURCE_BVALID,
-			 usbmisc->base + MX7D_USBNC_USB_CTRL2);
+		reg &= ~MX7D_USB_VBUS_WAKEUP_SOURCE;
+		reg |= FIELD_PREP(MX7D_USB_VBUS_WAKEUP_SOURCE,
+				  MX7D_USB_VBUS_WAKEUP_SOURCE_BVALID);
+		writel(reg, usbmisc->base + MX7D_USBNC_USB_CTRL2);
 	}
 
 	spin_unlock_irqrestore(&usbmisc->lock, flags);
-- 
2.30.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH v2 4/4] usb: chipidea: usbmisc_imx: Add prefix to register defines
  2022-10-18 10:37 [PATCH v2 0/4] usb: chipidea: small bugfix and cleanup Sascha Hauer
                   ` (2 preceding siblings ...)
  2022-10-18 10:37 ` [PATCH v2 3/4] usb: chipidea: usbmisc_imx: Use GENMASK/FIELD_PREP for bitfields Sascha Hauer
@ 2022-10-18 10:37 ` Sascha Hauer
  3 siblings, 0 replies; 7+ messages in thread
From: Sascha Hauer @ 2022-10-18 10:37 UTC (permalink / raw)
  To: linux-usb
  Cc: Peng Fan, Pengutronix Kernel Team, linux-arm-kernel, Xu Yang,
	Sascha Hauer, Xu Yang

The driver is used for a broad range of i.MX SoCs and most of the
register defines have a SoC/regname specific prefix to make clear
in which context they should be used. Add such a prefix to the
MX7D_USB_OTG_PHY_CFG1 defines as well.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Reviewed-by: Xu Yang <xu.yang_2@nxp.com>
Link: https://lore.kernel.org/r/20221011082924.884123-5-s.hauer@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/usb/chipidea/usbmisc_imx.c | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
index 09979264958fc..4e8c7c4952f0b 100644
--- a/drivers/usb/chipidea/usbmisc_imx.c
+++ b/drivers/usb/chipidea/usbmisc_imx.c
@@ -126,8 +126,8 @@
 #define MX7D_USB_OTG_PHY_STATUS_CHRGDET		BIT(29)
 
 #define MX7D_USB_OTG_PHY_CFG1		0x30
-#define TXPREEMPAMPTUNE0		GENMASK(29, 28)
-#define TXVREFTUNE0			GENMASK(23, 20)
+#define MX7D_USB_OTG_PHY_CFG1_TXPREEMPAMPTUNE0	GENMASK(29, 28)
+#define MX7D_USB_OTG_PHY_CFG1_TXVREFTUNE0	GENMASK(23, 20)
 
 #define MX6_USB_OTG_WAKEUP_BITS (MX6_BM_WAKEUP_ENABLE | MX6_BM_VBUS_WAKEUP | \
 				 MX6_BM_ID_WAKEUP)
@@ -659,15 +659,19 @@ static int usbmisc_imx7d_init(struct imx_usbmisc_data *data)
 		/* PHY tuning for signal quality */
 		reg = readl(usbmisc->base + MX7D_USB_OTG_PHY_CFG1);
 		if (data->emp_curr_control &&
-		    FIELD_FIT(TXPREEMPAMPTUNE0, data->emp_curr_control)) {
-			reg &= ~TXPREEMPAMPTUNE0;
-			reg |= FIELD_PREP(TXPREEMPAMPTUNE0, data->emp_curr_control);
+		    FIELD_FIT(MX7D_USB_OTG_PHY_CFG1_TXPREEMPAMPTUNE0,
+			      data->emp_curr_control)) {
+			reg &= ~MX7D_USB_OTG_PHY_CFG1_TXPREEMPAMPTUNE0;
+			reg |= FIELD_PREP(MX7D_USB_OTG_PHY_CFG1_TXPREEMPAMPTUNE0,
+					  data->emp_curr_control);
 		}
 
 		if (data->dc_vol_level_adjust &&
-		    FIELD_FIT(TXVREFTUNE0, data->dc_vol_level_adjust)) {
-			reg &= ~TXVREFTUNE0;
-			reg |= FIELD_PREP(TXVREFTUNE0, data->dc_vol_level_adjust);
+		    FIELD_FIT(MX7D_USB_OTG_PHY_CFG1_TXVREFTUNE0,
+			      data->dc_vol_level_adjust)) {
+			reg &= ~MX7D_USB_OTG_PHY_CFG1_TXVREFTUNE0;
+			reg |= FIELD_PREP(MX7D_USB_OTG_PHY_CFG1_TXVREFTUNE0,
+					  data->dc_vol_level_adjust);
 		}
 
 		writel(reg, usbmisc->base + MX7D_USB_OTG_PHY_CFG1);
-- 
2.30.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH v2 3/4] usb: chipidea: usbmisc_imx: Use GENMASK/FIELD_PREP for bitfields
  2022-10-18 10:37 ` [PATCH v2 3/4] usb: chipidea: usbmisc_imx: Use GENMASK/FIELD_PREP for bitfields Sascha Hauer
@ 2022-10-18 10:51   ` Xu Yang
  0 siblings, 0 replies; 7+ messages in thread
From: Xu Yang @ 2022-10-18 10:51 UTC (permalink / raw)
  To: Sascha Hauer
  Cc: linux-usb, Peng Fan, Pengutronix Kernel Team, linux-arm-kernel, Xu Yang

On Tue, Oct 18, 2022 at 6:37 PM Sascha Hauer <s.hauer@pengutronix.de> wrote:
>
> GENMASK and FIELD_PREP offer a convenient unified way to manipulate
> bitfields in registers without having to define mask and shift
> separately. Broaden the use of this mechanism by converting usbmisc_imx
> over to it. No functional change intended.
>
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> Link: https://lore.kernel.org/r/20221011082924.884123-4-s.hauer@pengutronix.de
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>

Reviewed-by: Xu Yang <xu.yang_2@nxp.com>

Thanks,
Xu Yang

> ---
>  drivers/usb/chipidea/usbmisc_imx.c | 116 +++++++++++++++--------------
>  1 file changed, 59 insertions(+), 57 deletions(-)
>
> diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
> index e1b4b7f9b3f31..09979264958fc 100644
> --- a/drivers/usb/chipidea/usbmisc_imx.c
> +++ b/drivers/usb/chipidea/usbmisc_imx.c
> @@ -9,24 +9,23 @@
>  #include <linux/io.h>
>  #include <linux/delay.h>
>  #include <linux/usb/otg.h>
> +#include <linux/bits.h>
> +#include <linux/bitfield.h>
>
>  #include "ci_hdrc_imx.h"
>
>  #define MX25_USB_PHY_CTRL_OFFSET       0x08
>  #define MX25_BM_EXTERNAL_VBUS_DIVIDER  BIT(23)
>
> -#define MX25_EHCI_INTERFACE_SINGLE_UNI (2 << 0)
> -#define MX25_EHCI_INTERFACE_DIFF_UNI   (0 << 0)
> -#define MX25_EHCI_INTERFACE_MASK       (0xf)
> +#define MX25_EHCI_INTERFACE_SINGLE_UNI 2
> +#define MX25_EHCI_INTERFACE_DIFF_UNI   0
>
> -#define MX25_OTG_SIC_SHIFT             29
> -#define MX25_OTG_SIC_MASK              (0x3 << MX25_OTG_SIC_SHIFT)
> +#define MX25_OTG_SIC                   GENMASK(30, 29)
>  #define MX25_OTG_PM_BIT                        BIT(24)
>  #define MX25_OTG_PP_BIT                        BIT(11)
>  #define MX25_OTG_OCPOL_BIT             BIT(3)
>
> -#define MX25_H1_SIC_SHIFT              21
> -#define MX25_H1_SIC_MASK               (0x3 << MX25_H1_SIC_SHIFT)
> +#define MX25_H1_SIC                    GENMASK(22, 21)
>  #define MX25_H1_PP_BIT                 BIT(18)
>  #define MX25_H1_PM_BIT                 BIT(16)
>  #define MX25_H1_IPPUE_UP_BIT           BIT(7)
> @@ -42,10 +41,10 @@
>  #define MX53_USB_OTG_PHY_CTRL_0_OFFSET 0x08
>  #define MX53_USB_OTG_PHY_CTRL_1_OFFSET 0x0c
>  #define MX53_USB_CTRL_1_OFFSET         0x10
> -#define MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_MASK (0x3 << 2)
> -#define MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_ULPI BIT(2)
> -#define MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_MASK (0x3 << 6)
> -#define MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_ULPI BIT(6)
> +#define MX53_USB_CTRL_1_H2_XCVR_CLK_SEL        GENMASK(3, 2)
> +#define MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_ULPI 1
> +#define MX53_USB_CTRL_1_H3_XCVR_CLK_SEL        GENMASK(7, 6)
> +#define MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_ULPI 1
>  #define MX53_USB_UH2_CTRL_OFFSET       0x14
>  #define MX53_USB_UH3_CTRL_OFFSET       0x18
>  #define MX53_USB_CLKONOFF_CTRL_OFFSET  0x24
> @@ -85,26 +84,24 @@
>  #define MX6_USB_OTG1_PHY_CTRL          0x18
>  /* For imx6dql, it is host-only controller, for later imx6, it is otg's */
>  #define MX6_USB_OTG2_PHY_CTRL          0x1c
> -#define MX6SX_USB_VBUS_WAKEUP_SOURCE(v)        (v << 8)
> -#define MX6SX_USB_VBUS_WAKEUP_SOURCE_VBUS      MX6SX_USB_VBUS_WAKEUP_SOURCE(0)
> -#define MX6SX_USB_VBUS_WAKEUP_SOURCE_AVALID    MX6SX_USB_VBUS_WAKEUP_SOURCE(1)
> -#define MX6SX_USB_VBUS_WAKEUP_SOURCE_BVALID    MX6SX_USB_VBUS_WAKEUP_SOURCE(2)
> -#define MX6SX_USB_VBUS_WAKEUP_SOURCE_SESS_END  MX6SX_USB_VBUS_WAKEUP_SOURCE(3)
> +#define MX6SX_USB_VBUS_WAKEUP_SOURCE           GENMASK(9, 8)
> +#define MX6SX_USB_VBUS_WAKEUP_SOURCE_VBUS      0
> +#define MX6SX_USB_VBUS_WAKEUP_SOURCE_AVALID    1
> +#define MX6SX_USB_VBUS_WAKEUP_SOURCE_BVALID    2
> +#define MX6SX_USB_VBUS_WAKEUP_SOURCE_SESS_END  3
>
>  #define VF610_OVER_CUR_DIS             BIT(7)
>
>  #define MX7D_USBNC_USB_CTRL2           0x4
> -#define MX7D_USB_VBUS_WAKEUP_SOURCE_MASK       0x3
> -#define MX7D_USB_VBUS_WAKEUP_SOURCE(v)         (v << 0)
> -#define MX7D_USB_VBUS_WAKEUP_SOURCE_VBUS       MX7D_USB_VBUS_WAKEUP_SOURCE(0)
> -#define MX7D_USB_VBUS_WAKEUP_SOURCE_AVALID     MX7D_USB_VBUS_WAKEUP_SOURCE(1)
> -#define MX7D_USB_VBUS_WAKEUP_SOURCE_BVALID     MX7D_USB_VBUS_WAKEUP_SOURCE(2)
> -#define MX7D_USB_VBUS_WAKEUP_SOURCE_SESS_END   MX7D_USB_VBUS_WAKEUP_SOURCE(3)
> +#define MX7D_USB_VBUS_WAKEUP_SOURCE            GENMASK(1, 0)
> +#define MX7D_USB_VBUS_WAKEUP_SOURCE_VBUS       0
> +#define MX7D_USB_VBUS_WAKEUP_SOURCE_AVALID     1
> +#define MX7D_USB_VBUS_WAKEUP_SOURCE_BVALID     2
> +#define MX7D_USB_VBUS_WAKEUP_SOURCE_SESS_END   3
>  #define MX7D_USBNC_AUTO_RESUME                         BIT(2)
>  /* The default DM/DP value is pull-down */
> -#define MX7D_USBNC_USB_CTRL2_OPMODE(v)                 (v << 6)
> -#define MX7D_USBNC_USB_CTRL2_OPMODE_NON_DRIVING        MX7D_USBNC_USB_CTRL2_OPMODE(1)
> -#define MX7D_USBNC_USB_CTRL2_OPMODE_OVERRIDE_MASK      (BIT(7) | BIT(6))
> +#define MX7D_USBNC_USB_CTRL2_OPMODE            GENMASK(7, 6)
> +#define MX7D_USBNC_USB_CTRL2_OPMODE_NON_DRIVING        1
>  #define MX7D_USBNC_USB_CTRL2_OPMODE_OVERRIDE_EN                BIT(8)
>  #define MX7D_USBNC_USB_CTRL2_DP_OVERRIDE_VAL           BIT(12)
>  #define MX7D_USBNC_USB_CTRL2_DP_OVERRIDE_EN            BIT(13)
> @@ -129,10 +126,8 @@
>  #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 TXPREEMPAMPTUNE0               GENMASK(29, 28)
> +#define TXVREFTUNE0                    GENMASK(23, 20)
>
>  #define MX6_USB_OTG_WAKEUP_BITS (MX6_BM_WAKEUP_ENABLE | MX6_BM_VBUS_WAKEUP | \
>                                  MX6_BM_ID_WAKEUP)
> @@ -173,8 +168,8 @@ static int usbmisc_imx25_init(struct imx_usbmisc_data *data)
>         switch (data->index) {
>         case 0:
>                 val = readl(usbmisc->base);
> -               val &= ~(MX25_OTG_SIC_MASK | MX25_OTG_PP_BIT);
> -               val |= (MX25_EHCI_INTERFACE_DIFF_UNI & MX25_EHCI_INTERFACE_MASK) << MX25_OTG_SIC_SHIFT;
> +               val &= ~(MX25_OTG_SIC | MX25_OTG_PP_BIT);
> +               val |= FIELD_PREP(MX25_OTG_SIC, MX25_EHCI_INTERFACE_DIFF_UNI);
>                 val |= (MX25_OTG_PM_BIT | MX25_OTG_OCPOL_BIT);
>
>                 /*
> @@ -188,8 +183,8 @@ static int usbmisc_imx25_init(struct imx_usbmisc_data *data)
>                 break;
>         case 1:
>                 val = readl(usbmisc->base);
> -               val &= ~(MX25_H1_SIC_MASK | MX25_H1_PP_BIT |  MX25_H1_IPPUE_UP_BIT);
> -               val |= (MX25_EHCI_INTERFACE_SINGLE_UNI & MX25_EHCI_INTERFACE_MASK) << MX25_H1_SIC_SHIFT;
> +               val &= ~(MX25_H1_SIC | MX25_H1_PP_BIT |  MX25_H1_IPPUE_UP_BIT);
> +               val |= FIELD_PREP(MX25_H1_SIC, MX25_EHCI_INTERFACE_SINGLE_UNI);
>                 val |= (MX25_H1_PM_BIT | MX25_H1_OCPOL_BIT | MX25_H1_TLL_BIT |
>                         MX25_H1_USBTE_BIT | MX25_H1_IPPUE_DOWN_BIT);
>
> @@ -308,8 +303,9 @@ static int usbmisc_imx53_init(struct imx_usbmisc_data *data)
>                         reg = usbmisc->base + MX53_USB_CTRL_1_OFFSET;
>                         val = readl(reg) | MX53_USB_CTRL_1_UH2_ULPI_EN;
>                         /* select ULPI clock */
> -                       val &= ~MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_MASK;
> -                       val |= MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_ULPI;
> +                       val &= ~MX53_USB_CTRL_1_H2_XCVR_CLK_SEL;
> +                       val |= FIELD_PREP(MX53_USB_CTRL_1_H2_XCVR_CLK_SEL,
> +                                         MX53_USB_CTRL_1_H2_XCVR_CLK_SEL_ULPI);
>                         writel(val, reg);
>                         /* Set interrupt wake up enable */
>                         reg = usbmisc->base + MX53_USB_UH2_CTRL_OFFSET;
> @@ -338,8 +334,9 @@ static int usbmisc_imx53_init(struct imx_usbmisc_data *data)
>                         reg = usbmisc->base + MX53_USB_CTRL_1_OFFSET;
>                         val = readl(reg) | MX53_USB_CTRL_1_UH3_ULPI_EN;
>                         /* select ULPI clock */
> -                       val &= ~MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_MASK;
> -                       val |= MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_ULPI;
> +                       val &= ~MX53_USB_CTRL_1_H3_XCVR_CLK_SEL;
> +                       val |= FIELD_PREP(MX53_USB_CTRL_1_H3_XCVR_CLK_SEL,
> +                                         MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_ULPI);
>                         writel(val, reg);
>                         /* Set interrupt wake up enable */
>                         reg = usbmisc->base + MX53_USB_UH3_CTRL_OFFSET;
> @@ -551,8 +548,10 @@ static int usbmisc_imx6sx_init(struct imx_usbmisc_data *data)
>                 spin_lock_irqsave(&usbmisc->lock, flags);
>                 /* Set vbus wakeup source as bvalid */
>                 val = readl(reg);
> -               val &= ~MX6SX_USB_VBUS_WAKEUP_SOURCE(3);
> -               writel(val | MX6SX_USB_VBUS_WAKEUP_SOURCE_BVALID, reg);
> +               val &= ~MX6SX_USB_VBUS_WAKEUP_SOURCE;
> +               val |= FIELD_PREP(MX6SX_USB_VBUS_WAKEUP_SOURCE,
> +                                 MX6SX_USB_VBUS_WAKEUP_SOURCE_BVALID);
> +               writel(val, reg);
>                 /*
>                  * Disable dp/dm wakeup in device mode when vbus is
>                  * not there.
> @@ -652,22 +651,23 @@ static int usbmisc_imx7d_init(struct imx_usbmisc_data *data)
>
>         if (!data->hsic) {
>                 reg = readl(usbmisc->base + MX7D_USBNC_USB_CTRL2);
> -               reg &= ~MX7D_USB_VBUS_WAKEUP_SOURCE_MASK;
> -               writel(reg | MX7D_USB_VBUS_WAKEUP_SOURCE_BVALID
> -                       | MX7D_USBNC_AUTO_RESUME,
> -                       usbmisc->base + MX7D_USBNC_USB_CTRL2);
> +               reg &= ~MX7D_USB_VBUS_WAKEUP_SOURCE;
> +               reg |= FIELD_PREP(MX7D_USB_VBUS_WAKEUP_SOURCE,
> +                                 MX7D_USB_VBUS_WAKEUP_SOURCE_BVALID);
> +               reg |= MX7D_USBNC_AUTO_RESUME;
> +               writel(reg, 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->emp_curr_control &&
> +                   FIELD_FIT(TXPREEMPAMPTUNE0, data->emp_curr_control)) {
> +                       reg &= ~TXPREEMPAMPTUNE0;
> +                       reg |= FIELD_PREP(TXPREEMPAMPTUNE0, data->emp_curr_control);
>                 }
>
> -               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);
> +               if (data->dc_vol_level_adjust &&
> +                   FIELD_FIT(TXVREFTUNE0, data->dc_vol_level_adjust)) {
> +                       reg &= ~TXVREFTUNE0;
> +                       reg |= FIELD_PREP(TXVREFTUNE0, data->dc_vol_level_adjust);
>                 }
>
>                 writel(reg, usbmisc->base + MX7D_USB_OTG_PHY_CFG1);
> @@ -742,7 +742,7 @@ static void imx7_disable_charger_detector(struct imx_usbmisc_data *data)
>
>         /* Set OPMODE to be 2'b00 and disable its override */
>         val = readl(usbmisc->base + MX7D_USBNC_USB_CTRL2);
> -       val &= ~MX7D_USBNC_USB_CTRL2_OPMODE_OVERRIDE_MASK;
> +       val &= ~MX7D_USBNC_USB_CTRL2_OPMODE;
>         writel(val, usbmisc->base + MX7D_USBNC_USB_CTRL2);
>
>         val = readl(usbmisc->base + MX7D_USBNC_USB_CTRL2);
> @@ -852,8 +852,9 @@ static int imx7d_charger_detection(struct imx_usbmisc_data *data)
>          */
>         spin_lock_irqsave(&usbmisc->lock, flags);
>         val = readl(usbmisc->base + MX7D_USBNC_USB_CTRL2);
> -       val &= ~MX7D_USBNC_USB_CTRL2_OPMODE_OVERRIDE_MASK;
> -       val |= MX7D_USBNC_USB_CTRL2_OPMODE_NON_DRIVING;
> +       val &= ~MX7D_USBNC_USB_CTRL2_OPMODE;
> +       val |= FIELD_PREP(MX7D_USBNC_USB_CTRL2_OPMODE,
> +                         MX7D_USBNC_USB_CTRL2_OPMODE_NON_DRIVING);
>         writel(val, usbmisc->base + MX7D_USBNC_USB_CTRL2);
>
>         val = readl(usbmisc->base + MX7D_USBNC_USB_CTRL2);
> @@ -926,9 +927,10 @@ static int usbmisc_imx7ulp_init(struct imx_usbmisc_data *data)
>                         usbmisc->base + MX7D_USBNC_USB_CTRL2);
>         } else {
>                 reg = readl(usbmisc->base + MX7D_USBNC_USB_CTRL2);
> -               reg &= ~MX7D_USB_VBUS_WAKEUP_SOURCE_MASK;
> -               writel(reg | MX7D_USB_VBUS_WAKEUP_SOURCE_BVALID,
> -                        usbmisc->base + MX7D_USBNC_USB_CTRL2);
> +               reg &= ~MX7D_USB_VBUS_WAKEUP_SOURCE;
> +               reg |= FIELD_PREP(MX7D_USB_VBUS_WAKEUP_SOURCE,
> +                                 MX7D_USB_VBUS_WAKEUP_SOURCE_BVALID);
> +               writel(reg, usbmisc->base + MX7D_USBNC_USB_CTRL2);
>         }
>
>         spin_unlock_irqrestore(&usbmisc->lock, flags);
> --
> 2.30.2
>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH v2 1/4] usb: chipidea: usbmisc_imx: Fix i.MX53 clock sel masks
  2022-10-18 10:37 ` [PATCH v2 1/4] usb: chipidea: usbmisc_imx: Fix i.MX53 clock sel masks Sascha Hauer
@ 2022-10-22 10:36   ` Greg KH
  0 siblings, 0 replies; 7+ messages in thread
From: Greg KH @ 2022-10-22 10:36 UTC (permalink / raw)
  To: Sascha Hauer
  Cc: linux-usb, Peng Fan, Pengutronix Kernel Team, linux-arm-kernel,
	Xu Yang, Xu Yang

On Tue, Oct 18, 2022 at 12:37:22PM +0200, Sascha Hauer wrote:
> According to the reference manual the masks for the
> MX53_USB_CTRL_1_H*_XCVR_CLK_SEL bits are 0x3, not 0x11 (which were
> probably meant as 0b11).
> 
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> Reviewed-by: Xu Yang <xu.yang_2@nxp.com>
> Link: https://lore.kernel.org/r/20221011082924.884123-2-s.hauer@pengutronix.de
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> ---
>  drivers/usb/chipidea/usbmisc_imx.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

What commit id does this fix?

Should it go to stable kernels?

Same for all of the other patches in this series, please fix up with
that information and resend.

thanks,

greg k-h

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, other threads:[~2022-10-22 10:37 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-18 10:37 [PATCH v2 0/4] usb: chipidea: small bugfix and cleanup Sascha Hauer
2022-10-18 10:37 ` [PATCH v2 1/4] usb: chipidea: usbmisc_imx: Fix i.MX53 clock sel masks Sascha Hauer
2022-10-22 10:36   ` Greg KH
2022-10-18 10:37 ` [PATCH v2 2/4] usb: chipidea: usbmisc_imx: Fix setting i.MX6SX wakeup source Sascha Hauer
2022-10-18 10:37 ` [PATCH v2 3/4] usb: chipidea: usbmisc_imx: Use GENMASK/FIELD_PREP for bitfields Sascha Hauer
2022-10-18 10:51   ` Xu Yang
2022-10-18 10:37 ` [PATCH v2 4/4] usb: chipidea: usbmisc_imx: Add prefix to register defines Sascha Hauer

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