* [PATCH v3 1/2] dt-bindings: usb: Add Marvell ac5
2024-01-09 8:10 [PATCH v3 0/2] usb: host: Add ac5 to EHCI Orion Elad Nachman
@ 2024-01-09 8:10 ` Elad Nachman
2024-01-09 16:20 ` Conor Dooley
2024-01-09 8:10 ` [PATCH v3 2/2] usb: host: Add ac5 to EHCI Orion Elad Nachman
1 sibling, 1 reply; 4+ messages in thread
From: Elad Nachman @ 2024-01-09 8:10 UTC (permalink / raw)
To: gregkh, rowland.harvard.edu, robh+dt, krzysztof.kozlowski+dt,
conor+dt, devicetree, linux-usb, linux-kernel
Cc: enachman
From: Elad Nachman <enachman@marvell.com>
Add Marvell ac5 device tree bindings to generic EHCI.
This compatible enables the Marvell Orion platform code
to properly configure the DMA mask for the Marvell AC5 SOC.
Signed-off-by: Elad Nachman <enachman@marvell.com>
---
Documentation/devicetree/bindings/usb/generic-ehci.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/usb/generic-ehci.yaml b/Documentation/devicetree/bindings/usb/generic-ehci.yaml
index 87986c45be88..2ed178f16a78 100644
--- a/Documentation/devicetree/bindings/usb/generic-ehci.yaml
+++ b/Documentation/devicetree/bindings/usb/generic-ehci.yaml
@@ -77,6 +77,7 @@ properties:
- const: usb-ehci
- enum:
- generic-ehci
+ - marvell,ac5-ehci
- marvell,armada-3700-ehci
- marvell,orion-ehci
- nuvoton,npcm750-ehci
--
2.25.1
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH v3 2/2] usb: host: Add ac5 to EHCI Orion
2024-01-09 8:10 [PATCH v3 0/2] usb: host: Add ac5 to EHCI Orion Elad Nachman
2024-01-09 8:10 ` [PATCH v3 1/2] dt-bindings: usb: Add Marvell ac5 Elad Nachman
@ 2024-01-09 8:10 ` Elad Nachman
1 sibling, 0 replies; 4+ messages in thread
From: Elad Nachman @ 2024-01-09 8:10 UTC (permalink / raw)
To: gregkh, rowland.harvard.edu, robh+dt, krzysztof.kozlowski+dt,
conor+dt, devicetree, linux-usb, linux-kernel
Cc: enachman
From: Elad Nachman <enachman@marvell.com>
Add support for ac5 to the EHCI Orion platform driver.
The ac5 SOC has DDR starting at offset 0x2_0000_0000,
Hence it requires a larger than 32-bit DMA mask to operate.
Move the dma mask to be pointed by the OF match data, and
use that match data when initializng the DMA mask.
Signed-off-by: Elad Nachman <enachman@marvell.com>
---
drivers/usb/host/ehci-orion.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/host/ehci-orion.c b/drivers/usb/host/ehci-orion.c
index 6c47ab0a491d..58883664c884 100644
--- a/drivers/usb/host/ehci-orion.c
+++ b/drivers/usb/host/ehci-orion.c
@@ -65,6 +65,15 @@ struct orion_ehci_hcd {
static struct hc_driver __read_mostly ehci_orion_hc_driver;
+/*
+ * Legacy DMA mask is 32 bit.
+ * AC5 has the DDR starting at 8GB, hence it requires
+ * a larger (34-bit) DMA mask, in order for DMA allocations
+ * to succeed:
+ */
+static const u64 dma_mask_orion = DMA_BIT_MASK(32);
+static const u64 dma_mask_ac5 = DMA_BIT_MASK(34);
+
/*
* Implement Orion USB controller specification guidelines
*/
@@ -211,6 +220,7 @@ static int ehci_orion_drv_probe(struct platform_device *pdev)
int irq, err;
enum orion_ehci_phy_ver phy_version;
struct orion_ehci_hcd *priv;
+ u64 *dma_mask_ptr;
if (usb_disabled())
return -ENODEV;
@@ -228,7 +238,8 @@ static int ehci_orion_drv_probe(struct platform_device *pdev)
* set. Since shared usb code relies on it, set it here for
* now. Once we have dma capability bindings this can go away.
*/
- err = dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
+ dma_mask_ptr = (u64 *)of_device_get_match_data(&pdev->dev);
+ err = dma_coerce_mask_and_coherent(&pdev->dev, *dma_mask_ptr);
if (err)
goto err;
@@ -332,9 +343,9 @@ static void ehci_orion_drv_remove(struct platform_device *pdev)
}
static const struct of_device_id ehci_orion_dt_ids[] = {
- { .compatible = "marvell,orion-ehci", },
- { .compatible = "marvell,armada-3700-ehci", },
- {},
+ { .compatible = "marvell,orion-ehci", .data = &dma_mask_orion},
+ { .compatible = "marvell,armada-3700-ehci", .data = &dma_mask_orion},
+ { .compatible = "marvell,ac5-ehci", .data = &dma_mask_ac5},
};
MODULE_DEVICE_TABLE(of, ehci_orion_dt_ids);
--
2.25.1
^ permalink raw reply related [flat|nested] 4+ messages in thread