mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
usb: host: Add ac5 to EHCI Orion
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> Link: https://lore.kernel.org/r/20240114172154.2622275-3-enachman@marvell.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2fa5c7e531
commit
c63fe1cc70
@ -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,8 +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);
|
||||
|
Loading…
Reference in New Issue
Block a user