* [PATCH v4 0/4] Add Aspeed AST2700 uhci support
@ 2025-09-22 5:20 Ryan Chen
2025-09-22 5:20 ` [PATCH v4 1/4] dt-bindings: usb: uhci: Add reset property Ryan Chen
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Ryan Chen @ 2025-09-22 5:20 UTC (permalink / raw)
To: ryan_chen, Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Alan Stern, Philipp Zabel, linux-usb, devicetree,
linux-kernel
This patch series adds support for the UHCI controller found on the
Aspeed AST2700 SoC.
Compared to earlier SoCs (AST2400/2500/2600), AST2700 UHCI:
- requires a reset line to be deasserted before use
- supports 64-bit DMA addressing
This series updates the bindings and platform driver accordingly.
v4:
- usb-uhci.yaml
- fix errors 'make dt_binding_check'
- uhci-platform.c
- remove IS_ERR_OR_NULL(uhci->rsts) check, due to reset_control_assert
will return 0, when uhci->rsts is null.
- use dma_mask_32 as default, and just add aspeed,ast2700-uhci for dma_64.
v3:
- uhci-platform.c
- add reset_control_assert in uhci_hcd_platform_remove.
v2:
- usb-uhci.yaml
- add required resets for aspeed,ast2700-uhci
- uhci-platform.c
- change the err_clk before err_reset.
Ryan Chen (4):
dt-bindings: usb: uhci: Add reset property
usb: uhci: Add reset control support
dt-bindings: usb: uhci: Add Aspeed AST2700 compatible
usb: uhci: Add Aspeed AST2700 support
.../devicetree/bindings/usb/usb-uhci.yaml | 13 ++++++++
drivers/usb/host/uhci-hcd.h | 1 +
drivers/usb/host/uhci-platform.c | 31 ++++++++++++++++---
3 files changed, 41 insertions(+), 4 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v4 1/4] dt-bindings: usb: uhci: Add reset property
2025-09-22 5:20 [PATCH v4 0/4] Add Aspeed AST2700 uhci support Ryan Chen
@ 2025-09-22 5:20 ` Ryan Chen
2025-09-22 5:20 ` [PATCH v4 2/4] usb: uhci: Add reset control support Ryan Chen
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Ryan Chen @ 2025-09-22 5:20 UTC (permalink / raw)
To: ryan_chen, Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Alan Stern, Philipp Zabel, linux-usb, devicetree,
linux-kernel
Cc: Conor Dooley
The UHCI controller on Aspeed SoCs (including AST2700) requires
its reset line to be deasserted before the controller can be used.
Add an optional "resets" property to the UHCI device tree bindings
to describe the phandle to the reset controller.
This property is optional for platforms which do not require
explicit reset handling.
Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
---
Documentation/devicetree/bindings/usb/usb-uhci.yaml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/usb/usb-uhci.yaml b/Documentation/devicetree/bindings/usb/usb-uhci.yaml
index d8336f72dc1f..b1f2b9bd7921 100644
--- a/Documentation/devicetree/bindings/usb/usb-uhci.yaml
+++ b/Documentation/devicetree/bindings/usb/usb-uhci.yaml
@@ -28,6 +28,9 @@ properties:
interrupts:
maxItems: 1
+ resets:
+ maxItems: 1
+
'#ports':
$ref: /schemas/types.yaml#/definitions/uint32
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 2/4] usb: uhci: Add reset control support
2025-09-22 5:20 [PATCH v4 0/4] Add Aspeed AST2700 uhci support Ryan Chen
2025-09-22 5:20 ` [PATCH v4 1/4] dt-bindings: usb: uhci: Add reset property Ryan Chen
@ 2025-09-22 5:20 ` Ryan Chen
2025-09-22 5:20 ` [PATCH v4 3/4] dt-bindings: usb: uhci: Add Aspeed AST2700 compatible Ryan Chen
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Ryan Chen @ 2025-09-22 5:20 UTC (permalink / raw)
To: ryan_chen, Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Alan Stern, Philipp Zabel, linux-usb, devicetree,
linux-kernel
Some SoCs, such as the Aspeed AST2700, require the UHCI controller
to be taken out of reset before it can operate. Add optional reset
control support to the UHCI platform driver.
The driver now acquires an optional reset line from device tree,
deasserts it during probe, and asserts it again in the error path
and shutdown.
Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com>
---
drivers/usb/host/uhci-hcd.h | 1 +
drivers/usb/host/uhci-platform.c | 17 +++++++++++++++--
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/host/uhci-hcd.h b/drivers/usb/host/uhci-hcd.h
index 13ee2a6144b2..4326d1f3ca76 100644
--- a/drivers/usb/host/uhci-hcd.h
+++ b/drivers/usb/host/uhci-hcd.h
@@ -445,6 +445,7 @@ struct uhci_hcd {
short load[MAX_PHASE]; /* Periodic allocations */
struct clk *clk; /* (optional) clock source */
+ struct reset_control *rsts; /* (optional) clock reset */
/* Reset host controller */
void (*reset_hc) (struct uhci_hcd *uhci);
diff --git a/drivers/usb/host/uhci-platform.c b/drivers/usb/host/uhci-platform.c
index 62318291f566..aa75b546672b 100644
--- a/drivers/usb/host/uhci-platform.c
+++ b/drivers/usb/host/uhci-platform.c
@@ -11,6 +11,7 @@
#include <linux/of.h>
#include <linux/device.h>
#include <linux/platform_device.h>
+#include <linux/reset.h>
static int uhci_platform_init(struct usb_hcd *hcd)
{
@@ -132,17 +133,28 @@ static int uhci_hcd_platform_probe(struct platform_device *pdev)
goto err_rmr;
}
+ uhci->rsts = devm_reset_control_array_get_optional_shared(&pdev->dev);
+ if (IS_ERR(uhci->rsts)) {
+ ret = PTR_ERR(uhci->rsts);
+ goto err_clk;
+ }
+ ret = reset_control_deassert(uhci->rsts);
+ if (ret)
+ goto err_clk;
+
ret = platform_get_irq(pdev, 0);
if (ret < 0)
- goto err_clk;
+ goto err_reset;
ret = usb_add_hcd(hcd, ret, IRQF_SHARED);
if (ret)
- goto err_clk;
+ goto err_reset;
device_wakeup_enable(hcd->self.controller);
return 0;
+err_reset:
+ reset_control_assert(uhci->rsts);
err_clk:
clk_disable_unprepare(uhci->clk);
err_rmr:
@@ -156,6 +168,7 @@ static void uhci_hcd_platform_remove(struct platform_device *pdev)
struct usb_hcd *hcd = platform_get_drvdata(pdev);
struct uhci_hcd *uhci = hcd_to_uhci(hcd);
+ reset_control_assert(uhci->rsts);
clk_disable_unprepare(uhci->clk);
usb_remove_hcd(hcd);
usb_put_hcd(hcd);
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 3/4] dt-bindings: usb: uhci: Add Aspeed AST2700 compatible
2025-09-22 5:20 [PATCH v4 0/4] Add Aspeed AST2700 uhci support Ryan Chen
2025-09-22 5:20 ` [PATCH v4 1/4] dt-bindings: usb: uhci: Add reset property Ryan Chen
2025-09-22 5:20 ` [PATCH v4 2/4] usb: uhci: Add reset control support Ryan Chen
@ 2025-09-22 5:20 ` Ryan Chen
2025-09-22 5:20 ` [PATCH v4 4/4] usb: uhci: Add Aspeed AST2700 support Ryan Chen
2025-09-22 13:58 ` [PATCH v4 0/4] Add Aspeed AST2700 uhci support Alan Stern
4 siblings, 0 replies; 7+ messages in thread
From: Ryan Chen @ 2025-09-22 5:20 UTC (permalink / raw)
To: ryan_chen, Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Alan Stern, Philipp Zabel, linux-usb, devicetree,
linux-kernel
Cc: Conor Dooley
Add the compatible string for Aspeed AST2700 SoC.
Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
---
Documentation/devicetree/bindings/usb/usb-uhci.yaml | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/Documentation/devicetree/bindings/usb/usb-uhci.yaml b/Documentation/devicetree/bindings/usb/usb-uhci.yaml
index b1f2b9bd7921..e050ca203945 100644
--- a/Documentation/devicetree/bindings/usb/usb-uhci.yaml
+++ b/Documentation/devicetree/bindings/usb/usb-uhci.yaml
@@ -20,6 +20,7 @@ properties:
- aspeed,ast2400-uhci
- aspeed,ast2500-uhci
- aspeed,ast2600-uhci
+ - aspeed,ast2700-uhci
- const: generic-uhci
reg:
@@ -53,6 +54,15 @@ allOf:
required:
- clocks
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: aspeed,ast2700-uhci
+ then:
+ required:
+ - resets
+
unevaluatedProperties: false
examples:
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 4/4] usb: uhci: Add Aspeed AST2700 support
2025-09-22 5:20 [PATCH v4 0/4] Add Aspeed AST2700 uhci support Ryan Chen
` (2 preceding siblings ...)
2025-09-22 5:20 ` [PATCH v4 3/4] dt-bindings: usb: uhci: Add Aspeed AST2700 compatible Ryan Chen
@ 2025-09-22 5:20 ` Ryan Chen
2025-09-22 13:58 ` [PATCH v4 0/4] Add Aspeed AST2700 uhci support Alan Stern
4 siblings, 0 replies; 7+ messages in thread
From: Ryan Chen @ 2025-09-22 5:20 UTC (permalink / raw)
To: ryan_chen, Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Alan Stern, Philipp Zabel, linux-usb, devicetree,
linux-kernel
Unlike earlier Aspeed SoCs (AST2400/2500/2600) which are limited to
32-bit DMA addressing, the UHCI controller in AST2700 supports 64-bit
DMA. Update the platform UHCI driver to select the appropriate DMA
mask based on the device tree compatible string.
Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com>
---
drivers/usb/host/uhci-platform.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/host/uhci-platform.c b/drivers/usb/host/uhci-platform.c
index aa75b546672b..37607f985cc0 100644
--- a/drivers/usb/host/uhci-platform.c
+++ b/drivers/usb/host/uhci-platform.c
@@ -65,9 +65,13 @@ static const struct hc_driver uhci_platform_hc_driver = {
.hub_control = uhci_hub_control,
};
+static const u64 dma_mask_32 = DMA_BIT_MASK(32);
+static const u64 dma_mask_64 = DMA_BIT_MASK(64);
+
static int uhci_hcd_platform_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
+ const u64 *dma_mask_ptr;
struct usb_hcd *hcd;
struct uhci_hcd *uhci;
struct resource *res;
@@ -81,7 +85,11 @@ static int uhci_hcd_platform_probe(struct platform_device *pdev)
* Since shared usb code relies on it, set it here for now.
* Once we have dma capability bindings this can go away.
*/
- ret = dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
+ dma_mask_ptr = (u64 *)of_device_get_match_data(&pdev->dev);
+ if (!dma_mask_ptr)
+ dma_mask_ptr = &dma_mask_32;
+
+ ret = dma_coerce_mask_and_coherent(&pdev->dev, *dma_mask_ptr);
if (ret)
return ret;
@@ -114,7 +122,8 @@ static int uhci_hcd_platform_probe(struct platform_device *pdev)
}
if (of_device_is_compatible(np, "aspeed,ast2400-uhci") ||
of_device_is_compatible(np, "aspeed,ast2500-uhci") ||
- of_device_is_compatible(np, "aspeed,ast2600-uhci")) {
+ of_device_is_compatible(np, "aspeed,ast2600-uhci") ||
+ of_device_is_compatible(np, "aspeed,ast2700-uhci")) {
uhci->is_aspeed = 1;
dev_info(&pdev->dev,
"Enabled Aspeed implementation workarounds\n");
@@ -191,6 +200,7 @@ static void uhci_hcd_platform_shutdown(struct platform_device *op)
static const struct of_device_id platform_uhci_ids[] = {
{ .compatible = "generic-uhci", },
{ .compatible = "platform-uhci", },
+ { .compatible = "aspeed,ast2700-uhci", .data = &dma_mask_64},
{}
};
MODULE_DEVICE_TABLE(of, platform_uhci_ids);
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v4 0/4] Add Aspeed AST2700 uhci support
2025-09-22 5:20 [PATCH v4 0/4] Add Aspeed AST2700 uhci support Ryan Chen
` (3 preceding siblings ...)
2025-09-22 5:20 ` [PATCH v4 4/4] usb: uhci: Add Aspeed AST2700 support Ryan Chen
@ 2025-09-22 13:58 ` Alan Stern
2025-09-23 0:28 ` Ryan Chen
4 siblings, 1 reply; 7+ messages in thread
From: Alan Stern @ 2025-09-22 13:58 UTC (permalink / raw)
To: Ryan Chen
Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Philipp Zabel, linux-usb, devicetree, linux-kernel
On Mon, Sep 22, 2025 at 01:20:41PM +0800, Ryan Chen wrote:
> This patch series adds support for the UHCI controller found on the
> Aspeed AST2700 SoC.
>
> Compared to earlier SoCs (AST2400/2500/2600), AST2700 UHCI:
> - requires a reset line to be deasserted before use
> - supports 64-bit DMA addressing
>
> This series updates the bindings and platform driver accordingly.
For patches 2/4 and 4/4:
Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
Alan Stern
> v4:
> - usb-uhci.yaml
> - fix errors 'make dt_binding_check'
> - uhci-platform.c
> - remove IS_ERR_OR_NULL(uhci->rsts) check, due to reset_control_assert
> will return 0, when uhci->rsts is null.
> - use dma_mask_32 as default, and just add aspeed,ast2700-uhci for dma_64.
>
> v3:
> - uhci-platform.c
> - add reset_control_assert in uhci_hcd_platform_remove.
>
> v2:
> - usb-uhci.yaml
> - add required resets for aspeed,ast2700-uhci
> - uhci-platform.c
> - change the err_clk before err_reset.
>
> Ryan Chen (4):
> dt-bindings: usb: uhci: Add reset property
> usb: uhci: Add reset control support
> dt-bindings: usb: uhci: Add Aspeed AST2700 compatible
> usb: uhci: Add Aspeed AST2700 support
>
> .../devicetree/bindings/usb/usb-uhci.yaml | 13 ++++++++
> drivers/usb/host/uhci-hcd.h | 1 +
> drivers/usb/host/uhci-platform.c | 31 ++++++++++++++++---
> 3 files changed, 41 insertions(+), 4 deletions(-)
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH v4 0/4] Add Aspeed AST2700 uhci support
2025-09-22 13:58 ` [PATCH v4 0/4] Add Aspeed AST2700 uhci support Alan Stern
@ 2025-09-23 0:28 ` Ryan Chen
0 siblings, 0 replies; 7+ messages in thread
From: Ryan Chen @ 2025-09-23 0:28 UTC (permalink / raw)
To: Alan Stern
Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Philipp Zabel, linux-usb@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
> Subject: Re: [PATCH v4 0/4] Add Aspeed AST2700 uhci support
>
> On Mon, Sep 22, 2025 at 01:20:41PM +0800, Ryan Chen wrote:
> > This patch series adds support for the UHCI controller found on the
> > Aspeed AST2700 SoC.
> >
> > Compared to earlier SoCs (AST2400/2500/2600), AST2700 UHCI:
> > - requires a reset line to be deasserted before use
> > - supports 64-bit DMA addressing
> >
> > This series updates the bindings and platform driver accordingly.
>
> For patches 2/4 and 4/4:
>
> Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
>
> Alan Stern
Thanks your review, I am wondering about the progress,
should I submit a patch for patches 2/4, 4/4 with your reviewed-by?
Or just leave it?
Ryan
>
> > v4:
> > - usb-uhci.yaml
> > - fix errors 'make dt_binding_check'
> > - uhci-platform.c
> > - remove IS_ERR_OR_NULL(uhci->rsts) check, due to reset_control_assert
> > will return 0, when uhci->rsts is null.
> > - use dma_mask_32 as default, and just add aspeed,ast2700-uhci for
> dma_64.
> >
> > v3:
> > - uhci-platform.c
> > - add reset_control_assert in uhci_hcd_platform_remove.
> >
> > v2:
> > - usb-uhci.yaml
> > - add required resets for aspeed,ast2700-uhci
> > - uhci-platform.c
> > - change the err_clk before err_reset.
> >
> > Ryan Chen (4):
> > dt-bindings: usb: uhci: Add reset property
> > usb: uhci: Add reset control support
> > dt-bindings: usb: uhci: Add Aspeed AST2700 compatible
> > usb: uhci: Add Aspeed AST2700 support
> >
> > .../devicetree/bindings/usb/usb-uhci.yaml | 13 ++++++++
> > drivers/usb/host/uhci-hcd.h | 1 +
> > drivers/usb/host/uhci-platform.c | 31
> ++++++++++++++++---
> > 3 files changed, 41 insertions(+), 4 deletions(-)
> >
> > --
> > 2.34.1
> >
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-09-23 0:28 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-22 5:20 [PATCH v4 0/4] Add Aspeed AST2700 uhci support Ryan Chen
2025-09-22 5:20 ` [PATCH v4 1/4] dt-bindings: usb: uhci: Add reset property Ryan Chen
2025-09-22 5:20 ` [PATCH v4 2/4] usb: uhci: Add reset control support Ryan Chen
2025-09-22 5:20 ` [PATCH v4 3/4] dt-bindings: usb: uhci: Add Aspeed AST2700 compatible Ryan Chen
2025-09-22 5:20 ` [PATCH v4 4/4] usb: uhci: Add Aspeed AST2700 support Ryan Chen
2025-09-22 13:58 ` [PATCH v4 0/4] Add Aspeed AST2700 uhci support Alan Stern
2025-09-23 0:28 ` Ryan Chen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).