public inbox for linux-usb@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/4] dt-bindings: usb: mtk-xhci: add support mt8196
@ 2025-01-21 14:50 Chunfeng Yun
  2025-01-21 14:50 ` [PATCH v2 2/4] dt-bindings: usb: mtu3: " Chunfeng Yun
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Chunfeng Yun @ 2025-01-21 14:50 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Rob Herring, AngeloGioacchino Del Regno
  Cc: Chunfeng Yun, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
	Mathias Nyman, linux-usb, linux-arm-kernel, linux-mediatek,
	devicetree, linux-kernel

There are three USB controllers on mt8196, each controller's wakeup
control is different, add some specific versions for them, and add
a new compatilbe for mt8196.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v2: no changes
---
 .../devicetree/bindings/usb/mediatek,mtk-xhci.yaml          | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
index ef3143f4b794..cacb3d3dc4ac 100644
--- a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
+++ b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
@@ -36,6 +36,7 @@ properties:
           - mediatek,mt8188-xhci
           - mediatek,mt8192-xhci
           - mediatek,mt8195-xhci
+          - mediatek,mt8196-xhci
           - mediatek,mt8365-xhci
       - const: mediatek,mtk-xhci
 
@@ -164,7 +165,10 @@ properties:
             104 - used by mt8195, IP1, specific 1.04;
             105 - used by mt8195, IP2, specific 1.05;
             106 - used by mt8195, IP3, specific 1.06;
-          enum: [1, 2, 101, 102, 103, 104, 105, 106]
+            107 - used by mt8196, IP0, specific 1.07;
+            108 - used by mt8196, IP1, specific 1.08;
+            109 - used by mt8196, IP2, specific 1.09;
+          enum: [1, 2, 101, 102, 103, 104, 105, 106, 107, 108, 109]
 
   mediatek,u3p-dis-msk:
     $ref: /schemas/types.yaml#/definitions/uint32
-- 
2.46.0


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

* [PATCH v2 2/4] dt-bindings: usb: mtu3: add support mt8196
  2025-01-21 14:50 [PATCH v2 1/4] dt-bindings: usb: mtk-xhci: add support mt8196 Chunfeng Yun
@ 2025-01-21 14:50 ` Chunfeng Yun
  2025-01-21 17:25   ` Conor Dooley
  2025-01-21 14:50 ` [PATCH v2 3/4] usb: mtk-xhci: add support remote wakeup of mt8196 Chunfeng Yun
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Chunfeng Yun @ 2025-01-21 14:50 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Rob Herring, AngeloGioacchino Del Regno
  Cc: Chunfeng Yun, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
	Mathias Nyman, linux-usb, linux-arm-kernel, linux-mediatek,
	devicetree, linux-kernel

There are three USB controllers on mt8196, each controller's wakeup
control is different, add some specific versions for them, and add
compatilbe for mt8196.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v2: new patch for dual-role controllers
---
 Documentation/devicetree/bindings/usb/mediatek,mtu3.yaml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/usb/mediatek,mtu3.yaml b/Documentation/devicetree/bindings/usb/mediatek,mtu3.yaml
index d4e187c78a0b..4566e67dd5d7 100644
--- a/Documentation/devicetree/bindings/usb/mediatek,mtu3.yaml
+++ b/Documentation/devicetree/bindings/usb/mediatek,mtu3.yaml
@@ -28,6 +28,7 @@ properties:
           - mediatek,mt8188-mtu3
           - mediatek,mt8192-mtu3
           - mediatek,mt8195-mtu3
+          - mediatek,mt8196-mtu3
           - mediatek,mt8365-mtu3
       - const: mediatek,mtu3
 
@@ -188,7 +189,9 @@ properties:
             103 - used by mt8195, IP0, specific 1.03;
             105 - used by mt8195, IP2, specific 1.05;
             106 - used by mt8195, IP3, specific 1.06;
-          enum: [1, 2, 101, 102, 103, 105, 106]
+            107 - used by mt8196, IP0, specific 1.07;
+            108 - used by mt8196, IP1, specific 1.08;
+            enum: [1, 2, 101, 102, 103, 105, 106, 107, 108]
 
   mediatek,u3p-dis-msk:
     $ref: /schemas/types.yaml#/definitions/uint32
-- 
2.46.0


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

* [PATCH v2 3/4] usb: mtk-xhci: add support remote wakeup of mt8196
  2025-01-21 14:50 [PATCH v2 1/4] dt-bindings: usb: mtk-xhci: add support mt8196 Chunfeng Yun
  2025-01-21 14:50 ` [PATCH v2 2/4] dt-bindings: usb: mtu3: " Chunfeng Yun
@ 2025-01-21 14:50 ` Chunfeng Yun
  2025-01-21 14:50 ` [PATCH v2 4/4] usb: mtu3: " Chunfeng Yun
  2025-01-21 17:25 ` [PATCH v2 1/4] dt-bindings: usb: mtk-xhci: add support mt8196 Conor Dooley
  3 siblings, 0 replies; 10+ messages in thread
From: Chunfeng Yun @ 2025-01-21 14:50 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Rob Herring, AngeloGioacchino Del Regno
  Cc: Chunfeng Yun, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
	Mathias Nyman, linux-usb, linux-arm-kernel, linux-mediatek,
	devicetree, linux-kernel

There are three USB controllers on mt8196, each controller's wakeup
control is different, add some specific versions for them.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v2: modify marcos name
---
 drivers/usb/host/xhci-mtk.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c
index 904831344440..3f8e37b25322 100644
--- a/drivers/usb/host/xhci-mtk.c
+++ b/drivers/usb/host/xhci-mtk.c
@@ -113,6 +113,14 @@
 #define WC1_IS_P_95		BIT(12)
 #define WC1_IS_EN_P0_95		BIT(6)
 
+/* mt8196 */
+#define PERI_WK_CTRL0_8196	0x08
+#define WC0_IS_EN_P0_96		BIT(0)
+#define WC0_IS_EN_P1_96		BIT(7)
+
+#define PERI_WK_CTRL1_8196	0x10
+#define WC1_IS_EN_P2_96		BIT(0)
+
 /* mt2712 etc */
 #define PERI_SSUSB_SPM_CTRL	0x0
 #define SSC_IP_SLEEP_EN	BIT(4)
@@ -129,6 +137,9 @@ enum ssusb_uwk_vers {
 	SSUSB_UWK_V1_4,		/* mt8195 IP1 */
 	SSUSB_UWK_V1_5,		/* mt8195 IP2 */
 	SSUSB_UWK_V1_6,		/* mt8195 IP3 */
+	SSUSB_UWK_V1_7,		/* mt8196 IP0 */
+	SSUSB_UWK_V1_8,		/* mt8196 IP1 */
+	SSUSB_UWK_V1_9,		/* mt8196 IP2 */
 };
 
 /*
@@ -381,6 +392,21 @@ static void usb_wakeup_ip_sleep_set(struct xhci_hcd_mtk *mtk, bool enable)
 		msk = WC0_IS_EN_P3_95 | WC0_IS_C_95(0x7) | WC0_IS_P_95;
 		val = enable ? (WC0_IS_EN_P3_95 | WC0_IS_C_95(0x1)) : 0;
 		break;
+	case SSUSB_UWK_V1_7:
+		reg = mtk->uwk_reg_base + PERI_WK_CTRL0_8196;
+		msk = WC0_IS_EN_P0_96;
+		val = enable ? msk : 0;
+		break;
+	case SSUSB_UWK_V1_8:
+		reg = mtk->uwk_reg_base + PERI_WK_CTRL0_8196;
+		msk = WC0_IS_EN_P1_96;
+		val = enable ? msk : 0;
+		break;
+	case SSUSB_UWK_V1_9:
+		reg = mtk->uwk_reg_base + PERI_WK_CTRL1_8196;
+		msk = WC1_IS_EN_P2_96;
+		val = enable ? msk : 0;
+		break;
 	case SSUSB_UWK_V2:
 		reg = mtk->uwk_reg_base + PERI_SSUSB_SPM_CTRL;
 		msk = SSC_IP_SLEEP_EN | SSC_SPM_INT_EN;
-- 
2.46.0


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

* [PATCH v2 4/4] usb: mtu3: add support remote wakeup of mt8196
  2025-01-21 14:50 [PATCH v2 1/4] dt-bindings: usb: mtk-xhci: add support mt8196 Chunfeng Yun
  2025-01-21 14:50 ` [PATCH v2 2/4] dt-bindings: usb: mtu3: " Chunfeng Yun
  2025-01-21 14:50 ` [PATCH v2 3/4] usb: mtk-xhci: add support remote wakeup of mt8196 Chunfeng Yun
@ 2025-01-21 14:50 ` Chunfeng Yun
  2025-01-22  9:30   ` AngeloGioacchino Del Regno
  2025-01-21 17:25 ` [PATCH v2 1/4] dt-bindings: usb: mtk-xhci: add support mt8196 Conor Dooley
  3 siblings, 1 reply; 10+ messages in thread
From: Chunfeng Yun @ 2025-01-21 14:50 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Rob Herring, AngeloGioacchino Del Regno
  Cc: Chunfeng Yun, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
	Mathias Nyman, linux-usb, linux-arm-kernel, linux-mediatek,
	devicetree, linux-kernel

There are three USB controllers on mt8196, each controller's wakeup
control is different, add some specific versions for them.
Here add only for dual-role controllers.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v2: add wakeup for dual-role controllers
---
 drivers/usb/mtu3/mtu3_host.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/usb/mtu3/mtu3_host.c b/drivers/usb/mtu3/mtu3_host.c
index 7c657ea2dabd..d65b0f318436 100644
--- a/drivers/usb/mtu3/mtu3_host.c
+++ b/drivers/usb/mtu3/mtu3_host.c
@@ -46,6 +46,11 @@
 #define WC1_IS_P_95		BIT(12)
 #define WC1_IS_EN_P0_95		BIT(6)
 
+/* mt8196 */
+#define PERI_WK_CTRL0_8196	0x08
+#define WC0_IS_EN_P0_96		BIT(0)
+#define WC0_IS_EN_P1_96		BIT(7)
+
 /* mt2712 etc */
 #define PERI_SSUSB_SPM_CTRL	0x0
 #define SSC_IP_SLEEP_EN	BIT(4)
@@ -59,6 +64,8 @@ enum ssusb_uwk_vers {
 	SSUSB_UWK_V1_3,		/* mt8195 IP0 */
 	SSUSB_UWK_V1_5 = 105,	/* mt8195 IP2 */
 	SSUSB_UWK_V1_6,		/* mt8195 IP3 */
+	SSUSB_UWK_V1_7, 	/* mt8196 IP0 */
+	SSUSB_UWK_V1_8, 	/* mt8196 IP1 */
 };
 
 /*
@@ -100,6 +107,16 @@ static void ssusb_wakeup_ip_sleep_set(struct ssusb_mtk *ssusb, bool enable)
 		msk = WC0_IS_EN_P3_95 | WC0_IS_C_95(0x7) | WC0_IS_P_95;
 		val = enable ? (WC0_IS_EN_P3_95 | WC0_IS_C_95(0x1)) : 0;
 		break;
+	case SSUSB_UWK_V1_7:
+		reg = ssusb->uwk_reg_base + PERI_WK_CTRL0_8196;
+		msk = WC0_IS_EN_P0_96;
+		val = enable ? msk : 0;
+		break;
+	case SSUSB_UWK_V1_8:
+		reg = ssusb->uwk_reg_base + PERI_WK_CTRL0_8196;
+		msk = WC0_IS_EN_P1_96;
+		val = enable ? msk : 0;
+		break;
 	case SSUSB_UWK_V2:
 		reg = ssusb->uwk_reg_base + PERI_SSUSB_SPM_CTRL;
 		msk = SSC_IP_SLEEP_EN | SSC_SPM_INT_EN;
-- 
2.46.0


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

* Re: [PATCH v2 2/4] dt-bindings: usb: mtu3: add support mt8196
  2025-01-21 14:50 ` [PATCH v2 2/4] dt-bindings: usb: mtu3: " Chunfeng Yun
@ 2025-01-21 17:25   ` Conor Dooley
  0 siblings, 0 replies; 10+ messages in thread
From: Conor Dooley @ 2025-01-21 17:25 UTC (permalink / raw)
  To: Chunfeng Yun
  Cc: Greg Kroah-Hartman, Rob Herring, AngeloGioacchino Del Regno,
	Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
	Mathias Nyman, linux-usb, linux-arm-kernel, linux-mediatek,
	devicetree, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 348 bytes --]

On Tue, Jan 21, 2025 at 10:50:06PM +0800, Chunfeng Yun wrote:
> There are three USB controllers on mt8196, each controller's wakeup
> control is different, add some specific versions for them, and add
> compatilbe for mt8196.
> 
> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>

Acked-by: Conor Dooley <conor.dooley@microchip.com>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH v2 1/4] dt-bindings: usb: mtk-xhci: add support mt8196
  2025-01-21 14:50 [PATCH v2 1/4] dt-bindings: usb: mtk-xhci: add support mt8196 Chunfeng Yun
                   ` (2 preceding siblings ...)
  2025-01-21 14:50 ` [PATCH v2 4/4] usb: mtu3: " Chunfeng Yun
@ 2025-01-21 17:25 ` Conor Dooley
  3 siblings, 0 replies; 10+ messages in thread
From: Conor Dooley @ 2025-01-21 17:25 UTC (permalink / raw)
  To: Chunfeng Yun
  Cc: Greg Kroah-Hartman, Rob Herring, AngeloGioacchino Del Regno,
	Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
	Mathias Nyman, linux-usb, linux-arm-kernel, linux-mediatek,
	devicetree, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 354 bytes --]

On Tue, Jan 21, 2025 at 10:50:05PM +0800, Chunfeng Yun wrote:
> There are three USB controllers on mt8196, each controller's wakeup
> control is different, add some specific versions for them, and add
> a new compatilbe for mt8196.
> 
> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>

Acked-by: Conor Dooley <conor.dooley@microchip.com>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH v2 4/4] usb: mtu3: add support remote wakeup of mt8196
  2025-01-21 14:50 ` [PATCH v2 4/4] usb: mtu3: " Chunfeng Yun
@ 2025-01-22  9:30   ` AngeloGioacchino Del Regno
  2025-02-09  3:31     ` Chunfeng Yun (云春峰)
  0 siblings, 1 reply; 10+ messages in thread
From: AngeloGioacchino Del Regno @ 2025-01-22  9:30 UTC (permalink / raw)
  To: Chunfeng Yun, Greg Kroah-Hartman, Rob Herring
  Cc: Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
	Mathias Nyman, linux-usb, linux-arm-kernel, linux-mediatek,
	devicetree, linux-kernel

Il 21/01/25 15:50, Chunfeng Yun ha scritto:
> There are three USB controllers on mt8196, each controller's wakeup
> control is different, add some specific versions for them.
> Here add only for dual-role controllers.
> 
> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>

 From the datasheets, I can read the following:

IP0: host -> 0x1670_0000  device(mtu3) -> 0x1670_1000
IP1: host -> 0x1671_0000  device(mtu3) -> 0x1671_1000
IP2: host -> 0x1672_0000  device(mtu3) -> 0x1672_1000

...this means that you're missing the IP2 here, which you did not miss in the
commit adding the wakeup control in mtk-xhci instead.

So, since I see that all of the USB IPs are behind MTU3, and that there is no
USB IP that does *not* support gadget mode (so, there's no USB IP that does NOT
support MTU3), you shall add all three here, and you shall drop the commit that
adds the wakeup control in mtk-xhci entirely.

This is because there will be no DT node declaring only XHCI.

Since after the proposed change all controllers will be MTU3 -> XHCI, there's
no need to add the same in the mtk-xhci driver.

Cheers,
Angelo

> ---
> v2: add wakeup for dual-role controllers
> ---
>   drivers/usb/mtu3/mtu3_host.c | 17 +++++++++++++++++
>   1 file changed, 17 insertions(+)
> 
> diff --git a/drivers/usb/mtu3/mtu3_host.c b/drivers/usb/mtu3/mtu3_host.c
> index 7c657ea2dabd..d65b0f318436 100644
> --- a/drivers/usb/mtu3/mtu3_host.c
> +++ b/drivers/usb/mtu3/mtu3_host.c
> @@ -46,6 +46,11 @@
>   #define WC1_IS_P_95		BIT(12)
>   #define WC1_IS_EN_P0_95		BIT(6)
>   
> +/* mt8196 */
> +#define PERI_WK_CTRL0_8196	0x08
> +#define WC0_IS_EN_P0_96		BIT(0)
> +#define WC0_IS_EN_P1_96		BIT(7)
> +
>   /* mt2712 etc */
>   #define PERI_SSUSB_SPM_CTRL	0x0
>   #define SSC_IP_SLEEP_EN	BIT(4)
> @@ -59,6 +64,8 @@ enum ssusb_uwk_vers {
>   	SSUSB_UWK_V1_3,		/* mt8195 IP0 */
>   	SSUSB_UWK_V1_5 = 105,	/* mt8195 IP2 */
>   	SSUSB_UWK_V1_6,		/* mt8195 IP3 */
> +	SSUSB_UWK_V1_7, 	/* mt8196 IP0 */
> +	SSUSB_UWK_V1_8, 	/* mt8196 IP1 */
>   };
>   
>   /*
> @@ -100,6 +107,16 @@ static void ssusb_wakeup_ip_sleep_set(struct ssusb_mtk *ssusb, bool enable)
>   		msk = WC0_IS_EN_P3_95 | WC0_IS_C_95(0x7) | WC0_IS_P_95;
>   		val = enable ? (WC0_IS_EN_P3_95 | WC0_IS_C_95(0x1)) : 0;
>   		break;
> +	case SSUSB_UWK_V1_7:
> +		reg = ssusb->uwk_reg_base + PERI_WK_CTRL0_8196;
> +		msk = WC0_IS_EN_P0_96;
> +		val = enable ? msk : 0;
> +		break;
> +	case SSUSB_UWK_V1_8:
> +		reg = ssusb->uwk_reg_base + PERI_WK_CTRL0_8196;
> +		msk = WC0_IS_EN_P1_96;
> +		val = enable ? msk : 0;
> +		break;
>   	case SSUSB_UWK_V2:
>   		reg = ssusb->uwk_reg_base + PERI_SSUSB_SPM_CTRL;
>   		msk = SSC_IP_SLEEP_EN | SSC_SPM_INT_EN;



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

* Re: [PATCH v2 4/4] usb: mtu3: add support remote wakeup of mt8196
  2025-01-22  9:30   ` AngeloGioacchino Del Regno
@ 2025-02-09  3:31     ` Chunfeng Yun (云春峰)
  2025-02-18  9:26       ` AngeloGioacchino Del Regno
  0 siblings, 1 reply; 10+ messages in thread
From: Chunfeng Yun (云春峰) @ 2025-02-09  3:31 UTC (permalink / raw)
  To: robh@kernel.org, AngeloGioacchino Del Regno,
	gregkh@linuxfoundation.org
  Cc: linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org,
	linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
	mathias.nyman@intel.com, conor+dt@kernel.org,
	linux-arm-kernel@lists.infradead.org, matthias.bgg@gmail.com,
	krzk+dt@kernel.org

On Wed, 2025-01-22 at 10:30 +0100, AngeloGioacchino Del Regno wrote:
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
> 
> 
> Il 21/01/25 15:50, Chunfeng Yun ha scritto:
> > There are three USB controllers on mt8196, each controller's wakeup
> > control is different, add some specific versions for them.
> > Here add only for dual-role controllers.
> > 
> > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> 
>  From the datasheets, I can read the following:
> 
> IP0: host -> 0x1670_0000  device(mtu3) -> 0x1670_1000
> IP1: host -> 0x1671_0000  device(mtu3) -> 0x1671_1000
> IP2: host -> 0x1672_0000  device(mtu3) -> 0x1672_1000
> 
I'll check it.

> ...this means that you're missing the IP2 here, which you did not
> miss in the
> commit adding the wakeup control in mtk-xhci instead.
> 
> So, since I see that all of the USB IPs are behind MTU3, and that
> there is no
> USB IP that does *not* support gadget mode (so, there's no USB IP
> that does NOT
> support MTU3), you shall add all three here, and you shall drop the
> commit that
> adds the wakeup control in mtk-xhci entirely.
No, I'll still add them in mtk-xhci driver as before for the cases that
only use xhci only, no need use mtu3 driver.

As I said before, event the controller supports dual-role mode, which
don't mean that it can use this upstream mtu3 driver, some SoC have
limitation and can't support the dual-role mode switch used in upstream
driver. but all SoC can use upstream xhci-mtk driver. that why I add
some SoC's wakeup control in xhci-mtk, but not in mtu3 driver.

> 
> This is because there will be no DT node declaring only XHCI.
> 
> Since after the proposed change all controllers will be MTU3 -> XHCI,
> there's
> no need to add the same in the mtk-xhci driver.
I think it's better to leave the selection to the customer, for
example, on chromebook, we only use xhci driver and do not enable mtu3.

Thanks

> 
> Cheers,
> Angelo
> 
> > ---
> > v2: add wakeup for dual-role controllers
> > ---
> >   drivers/usb/mtu3/mtu3_host.c | 17 +++++++++++++++++
> >   1 file changed, 17 insertions(+)
> > 
> > diff --git a/drivers/usb/mtu3/mtu3_host.c
> > b/drivers/usb/mtu3/mtu3_host.c
> > index 7c657ea2dabd..d65b0f318436 100644
> > --- a/drivers/usb/mtu3/mtu3_host.c
> > +++ b/drivers/usb/mtu3/mtu3_host.c
> > @@ -46,6 +46,11 @@
> >   #define WC1_IS_P_95         BIT(12)
> >   #define WC1_IS_EN_P0_95             BIT(6)
> > 
> > +/* mt8196 */
> > +#define PERI_WK_CTRL0_8196   0x08
> > +#define WC0_IS_EN_P0_96              BIT(0)
> > +#define WC0_IS_EN_P1_96              BIT(7)
> > +
> >   /* mt2712 etc */
> >   #define PERI_SSUSB_SPM_CTRL 0x0
> >   #define SSC_IP_SLEEP_EN     BIT(4)
> > @@ -59,6 +64,8 @@ enum ssusb_uwk_vers {
> >       SSUSB_UWK_V1_3,         /* mt8195 IP0 */
> >       SSUSB_UWK_V1_5 = 105,   /* mt8195 IP2 */
> >       SSUSB_UWK_V1_6,         /* mt8195 IP3 */
> > +     SSUSB_UWK_V1_7,         /* mt8196 IP0 */
> > +     SSUSB_UWK_V1_8,         /* mt8196 IP1 */
> >   };
> > 
> >   /*
> > @@ -100,6 +107,16 @@ static void ssusb_wakeup_ip_sleep_set(struct
> > ssusb_mtk *ssusb, bool enable)
> >               msk = WC0_IS_EN_P3_95 | WC0_IS_C_95(0x7) |
> > WC0_IS_P_95;
> >               val = enable ? (WC0_IS_EN_P3_95 | WC0_IS_C_95(0x1)) :
> > 0;
> >               break;
> > +     case SSUSB_UWK_V1_7:
> > +             reg = ssusb->uwk_reg_base + PERI_WK_CTRL0_8196;
> > +             msk = WC0_IS_EN_P0_96;
> > +             val = enable ? msk : 0;
> > +             break;
> > +     case SSUSB_UWK_V1_8:
> > +             reg = ssusb->uwk_reg_base + PERI_WK_CTRL0_8196;
> > +             msk = WC0_IS_EN_P1_96;
> > +             val = enable ? msk : 0;
> > +             break;
> >       case SSUSB_UWK_V2:
> >               reg = ssusb->uwk_reg_base + PERI_SSUSB_SPM_CTRL;
> >               msk = SSC_IP_SLEEP_EN | SSC_SPM_INT_EN;
> 
> 
> 

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

* Re: [PATCH v2 4/4] usb: mtu3: add support remote wakeup of mt8196
  2025-02-09  3:31     ` Chunfeng Yun (云春峰)
@ 2025-02-18  9:26       ` AngeloGioacchino Del Regno
  2025-02-22  8:24         ` Chunfeng Yun (云春峰)
  0 siblings, 1 reply; 10+ messages in thread
From: AngeloGioacchino Del Regno @ 2025-02-18  9:26 UTC (permalink / raw)
  To: Chunfeng Yun (云春峰), robh@kernel.org,
	gregkh@linuxfoundation.org
  Cc: linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org,
	linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
	mathias.nyman@intel.com, conor+dt@kernel.org,
	linux-arm-kernel@lists.infradead.org, matthias.bgg@gmail.com,
	krzk+dt@kernel.org

Il 09/02/25 04:31, Chunfeng Yun (云春峰) ha scritto:
> On Wed, 2025-01-22 at 10:30 +0100, AngeloGioacchino Del Regno wrote:
>> External email : Please do not click links or open attachments until
>> you have verified the sender or the content.
>>
>>
>> Il 21/01/25 15:50, Chunfeng Yun ha scritto:
>>> There are three USB controllers on mt8196, each controller's wakeup
>>> control is different, add some specific versions for them.
>>> Here add only for dual-role controllers.
>>>
>>> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
>>
>>   From the datasheets, I can read the following:
>>
>> IP0: host -> 0x1670_0000  device(mtu3) -> 0x1670_1000
>> IP1: host -> 0x1671_0000  device(mtu3) -> 0x1671_1000
>> IP2: host -> 0x1672_0000  device(mtu3) -> 0x1672_1000
>>
> I'll check it.
> 
>> ...this means that you're missing the IP2 here, which you did not
>> miss in the
>> commit adding the wakeup control in mtk-xhci instead.
>>
>> So, since I see that all of the USB IPs are behind MTU3, and that
>> there is no
>> USB IP that does *not* support gadget mode (so, there's no USB IP
>> that does NOT
>> support MTU3), you shall add all three here, and you shall drop the
>> commit that
>> adds the wakeup control in mtk-xhci entirely.
> No, I'll still add them in mtk-xhci driver as before for the cases that
> only use xhci only, no need use mtu3 driver.
> 
> As I said before, event the controller supports dual-role mode, which
> don't mean that it can use this upstream mtu3 driver, some SoC have
> limitation and can't support the dual-role mode switch used in upstream
> driver. but all SoC can use upstream xhci-mtk driver. that why I add
> some SoC's wakeup control in xhci-mtk, but not in mtu3 driver.
> 
>>
>> This is because there will be no DT node declaring only XHCI.
>>
>> Since after the proposed change all controllers will be MTU3 -> XHCI,
>> there's
>> no need to add the same in the mtk-xhci driver.
> I think it's better to leave the selection to the customer, for
> example, on chromebook, we only use xhci driver and do not enable mtu3.
> 

Chromebooks can use MTU3 and lock it in HOST mode only.

The MTU3 hardware is there - don't hide it.

Regards,
Angelo

> Thanks
> 
>>
>> Cheers,
>> Angelo
>>
>>> ---
>>> v2: add wakeup for dual-role controllers
>>> ---
>>>    drivers/usb/mtu3/mtu3_host.c | 17 +++++++++++++++++
>>>    1 file changed, 17 insertions(+)
>>>
>>> diff --git a/drivers/usb/mtu3/mtu3_host.c
>>> b/drivers/usb/mtu3/mtu3_host.c
>>> index 7c657ea2dabd..d65b0f318436 100644
>>> --- a/drivers/usb/mtu3/mtu3_host.c
>>> +++ b/drivers/usb/mtu3/mtu3_host.c
>>> @@ -46,6 +46,11 @@
>>>    #define WC1_IS_P_95         BIT(12)
>>>    #define WC1_IS_EN_P0_95             BIT(6)
>>>
>>> +/* mt8196 */
>>> +#define PERI_WK_CTRL0_8196   0x08
>>> +#define WC0_IS_EN_P0_96              BIT(0)
>>> +#define WC0_IS_EN_P1_96              BIT(7)
>>> +
>>>    /* mt2712 etc */
>>>    #define PERI_SSUSB_SPM_CTRL 0x0
>>>    #define SSC_IP_SLEEP_EN     BIT(4)
>>> @@ -59,6 +64,8 @@ enum ssusb_uwk_vers {
>>>        SSUSB_UWK_V1_3,         /* mt8195 IP0 */
>>>        SSUSB_UWK_V1_5 = 105,   /* mt8195 IP2 */
>>>        SSUSB_UWK_V1_6,         /* mt8195 IP3 */
>>> +     SSUSB_UWK_V1_7,         /* mt8196 IP0 */
>>> +     SSUSB_UWK_V1_8,         /* mt8196 IP1 */
>>>    };
>>>
>>>    /*
>>> @@ -100,6 +107,16 @@ static void ssusb_wakeup_ip_sleep_set(struct
>>> ssusb_mtk *ssusb, bool enable)
>>>                msk = WC0_IS_EN_P3_95 | WC0_IS_C_95(0x7) |
>>> WC0_IS_P_95;
>>>                val = enable ? (WC0_IS_EN_P3_95 | WC0_IS_C_95(0x1)) :
>>> 0;
>>>                break;
>>> +     case SSUSB_UWK_V1_7:
>>> +             reg = ssusb->uwk_reg_base + PERI_WK_CTRL0_8196;
>>> +             msk = WC0_IS_EN_P0_96;
>>> +             val = enable ? msk : 0;
>>> +             break;
>>> +     case SSUSB_UWK_V1_8:
>>> +             reg = ssusb->uwk_reg_base + PERI_WK_CTRL0_8196;
>>> +             msk = WC0_IS_EN_P1_96;
>>> +             val = enable ? msk : 0;
>>> +             break;
>>>        case SSUSB_UWK_V2:
>>>                reg = ssusb->uwk_reg_base + PERI_SSUSB_SPM_CTRL;
>>>                msk = SSC_IP_SLEEP_EN | SSC_SPM_INT_EN;
>>
>>
>>



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

* Re: [PATCH v2 4/4] usb: mtu3: add support remote wakeup of mt8196
  2025-02-18  9:26       ` AngeloGioacchino Del Regno
@ 2025-02-22  8:24         ` Chunfeng Yun (云春峰)
  0 siblings, 0 replies; 10+ messages in thread
From: Chunfeng Yun (云春峰) @ 2025-02-22  8:24 UTC (permalink / raw)
  To: robh@kernel.org, AngeloGioacchino Del Regno,
	gregkh@linuxfoundation.org
  Cc: linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org,
	linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
	mathias.nyman@intel.com, conor+dt@kernel.org,
	linux-arm-kernel@lists.infradead.org, matthias.bgg@gmail.com,
	krzk+dt@kernel.org

On Tue, 2025-02-18 at 10:26 +0100, AngeloGioacchino Del Regno wrote:
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
> 
> 
> Il 09/02/25 04:31, Chunfeng Yun (云春峰) ha scritto:
> > On Wed, 2025-01-22 at 10:30 +0100, AngeloGioacchino Del Regno
> > wrote:
> > > External email : Please do not click links or open attachments
> > > until
> > > you have verified the sender or the content.
> > > 
> > > 
> > > Il 21/01/25 15:50, Chunfeng Yun ha scritto:
> > > > There are three USB controllers on mt8196, each controller's
> > > > wakeup
> > > > control is different, add some specific versions for them.
> > > > Here add only for dual-role controllers.
> > > > 
> > > > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> > > 
> > >   From the datasheets, I can read the following:
> > > 
> > > IP0: host -> 0x1670_0000  device(mtu3) -> 0x1670_1000
> > > IP1: host -> 0x1671_0000  device(mtu3) -> 0x1671_1000
> > > IP2: host -> 0x1672_0000  device(mtu3) -> 0x1672_1000
> > > 
> > 
> > I'll check it.
> > 
> > > ...this means that you're missing the IP2 here, which you did not
> > > miss in the
> > > commit adding the wakeup control in mtk-xhci instead.
> > > 
> > > So, since I see that all of the USB IPs are behind MTU3, and that
> > > there is no
> > > USB IP that does *not* support gadget mode (so, there's no USB IP
> > > that does NOT
> > > support MTU3), you shall add all three here, and you shall drop
> > > the
> > > commit that
> > > adds the wakeup control in mtk-xhci entirely.
> > 
> > No, I'll still add them in mtk-xhci driver as before for the cases
> > that
> > only use xhci only, no need use mtu3 driver.
> > 
> > As I said before, event the controller supports dual-role mode,
> > which
> > don't mean that it can use this upstream mtu3 driver, some SoC have
> > limitation and can't support the dual-role mode switch used in
> > upstream
> > driver. but all SoC can use upstream xhci-mtk driver. that why I
> > add
> > some SoC's wakeup control in xhci-mtk, but not in mtu3 driver.
> > 
> > > 
> > > This is because there will be no DT node declaring only XHCI.
> > > 
> > > Since after the proposed change all controllers will be MTU3 ->
> > > XHCI,
> > > there's
> > > no need to add the same in the mtk-xhci driver.
> > 
> > I think it's better to leave the selection to the customer, for
> > example, on chromebook, we only use xhci driver and do not enable
> > mtu3.
> > 
> 
> Chromebooks can use MTU3 and lock it in HOST mode only.
> 
> The MTU3 hardware is there - don't hide it.
I don't want to hide it, the dts binding support two ways to use xhci-
mtk driver. And we can't force customers to use the module he don't
need it, right? that will be easier to encounter more problems.

On more MediaTek SoCs, we support dual-role controller and host only
controller at the same, then we will add the wakeup function on both
mtu3 and xhci-mtk drivers. So for the SoCs that only supports dual-role 
controller, we also want to add them as the same way. This can be
treated as a common practice.


Thanks

> 
> Regards,
> Angelo
> 
> > Thanks
> > 
> > > 
> > > Cheers,
> > > Angelo
> > > 
> > > > ---
> > > > v2: add wakeup for dual-role controllers
> > > > ---
> > > >    drivers/usb/mtu3/mtu3_host.c | 17 +++++++++++++++++
> > > >    1 file changed, 17 insertions(+)
> > > > 
> > > > diff --git a/drivers/usb/mtu3/mtu3_host.c
> > > > b/drivers/usb/mtu3/mtu3_host.c
> > > > index 7c657ea2dabd..d65b0f318436 100644
> > > > --- a/drivers/usb/mtu3/mtu3_host.c
> > > > +++ b/drivers/usb/mtu3/mtu3_host.c
> > > > @@ -46,6 +46,11 @@
> > > >    #define WC1_IS_P_95         BIT(12)
> > > >    #define WC1_IS_EN_P0_95             BIT(6)
> > > > 
> > > > +/* mt8196 */
> > > > +#define PERI_WK_CTRL0_8196   0x08
> > > > +#define WC0_IS_EN_P0_96              BIT(0)
> > > > +#define WC0_IS_EN_P1_96              BIT(7)
> > > > +
> > > >    /* mt2712 etc */
> > > >    #define PERI_SSUSB_SPM_CTRL 0x0
> > > >    #define SSC_IP_SLEEP_EN     BIT(4)
> > > > @@ -59,6 +64,8 @@ enum ssusb_uwk_vers {
> > > >        SSUSB_UWK_V1_3,         /* mt8195 IP0 */
> > > >        SSUSB_UWK_V1_5 = 105,   /* mt8195 IP2 */
> > > >        SSUSB_UWK_V1_6,         /* mt8195 IP3 */
> > > > +     SSUSB_UWK_V1_7,         /* mt8196 IP0 */
> > > > +     SSUSB_UWK_V1_8,         /* mt8196 IP1 */
> > > >    };
> > > > 
> > > >    /*
> > > > @@ -100,6 +107,16 @@ static void
> > > > ssusb_wakeup_ip_sleep_set(struct
> > > > ssusb_mtk *ssusb, bool enable)
> > > >                msk = WC0_IS_EN_P3_95 | WC0_IS_C_95(0x7) |
> > > > WC0_IS_P_95;
> > > >                val = enable ? (WC0_IS_EN_P3_95 |
> > > > WC0_IS_C_95(0x1)) :
> > > > 0;
> > > >                break;
> > > > +     case SSUSB_UWK_V1_7:
> > > > +             reg = ssusb->uwk_reg_base + PERI_WK_CTRL0_8196;
> > > > +             msk = WC0_IS_EN_P0_96;
> > > > +             val = enable ? msk : 0;
> > > > +             break;
> > > > +     case SSUSB_UWK_V1_8:
> > > > +             reg = ssusb->uwk_reg_base + PERI_WK_CTRL0_8196;
> > > > +             msk = WC0_IS_EN_P1_96;
> > > > +             val = enable ? msk : 0;
> > > > +             break;
> > > >        case SSUSB_UWK_V2:
> > > >                reg = ssusb->uwk_reg_base + PERI_SSUSB_SPM_CTRL;
> > > >                msk = SSC_IP_SLEEP_EN | SSC_SPM_INT_EN;
> > > 
> > > 
> > > 
> 
> 

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

end of thread, other threads:[~2025-02-22  8:24 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-21 14:50 [PATCH v2 1/4] dt-bindings: usb: mtk-xhci: add support mt8196 Chunfeng Yun
2025-01-21 14:50 ` [PATCH v2 2/4] dt-bindings: usb: mtu3: " Chunfeng Yun
2025-01-21 17:25   ` Conor Dooley
2025-01-21 14:50 ` [PATCH v2 3/4] usb: mtk-xhci: add support remote wakeup of mt8196 Chunfeng Yun
2025-01-21 14:50 ` [PATCH v2 4/4] usb: mtu3: " Chunfeng Yun
2025-01-22  9:30   ` AngeloGioacchino Del Regno
2025-02-09  3:31     ` Chunfeng Yun (云春峰)
2025-02-18  9:26       ` AngeloGioacchino Del Regno
2025-02-22  8:24         ` Chunfeng Yun (云春峰)
2025-01-21 17:25 ` [PATCH v2 1/4] dt-bindings: usb: mtk-xhci: add support mt8196 Conor Dooley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox