|
@@ -1253,7 +1253,9 @@ static int fsl_dma_chan_probe(struct fsldma_device *fdev,
|
|
|
WARN_ON(fdev->feature != chan->feature);
|
|
|
|
|
|
chan->dev = fdev->dev;
|
|
|
- chan->id = ((res.start - 0x100) & 0xfff) >> 7;
|
|
|
+ chan->id = (res.start & 0xfff) < 0x300 ?
|
|
|
+ ((res.start - 0x100) & 0xfff) >> 7 :
|
|
|
+ ((res.start - 0x200) & 0xfff) >> 7;
|
|
|
if (chan->id >= FSL_DMA_MAX_CHANS_PER_DEVICE) {
|
|
|
dev_err(fdev->dev, "too many channels for device\n");
|
|
|
err = -EINVAL;
|
|
@@ -1426,6 +1428,7 @@ static int fsldma_of_remove(struct platform_device *op)
|
|
|
}
|
|
|
|
|
|
static const struct of_device_id fsldma_of_ids[] = {
|
|
|
+ { .compatible = "fsl,elo3-dma", },
|
|
|
{ .compatible = "fsl,eloplus-dma", },
|
|
|
{ .compatible = "fsl,elo-dma", },
|
|
|
{}
|
|
@@ -1447,7 +1450,7 @@ static struct platform_driver fsldma_of_driver = {
|
|
|
|
|
|
static __init int fsldma_init(void)
|
|
|
{
|
|
|
- pr_info("Freescale Elo / Elo Plus DMA driver\n");
|
|
|
+ pr_info("Freescale Elo series DMA driver\n");
|
|
|
return platform_driver_register(&fsldma_of_driver);
|
|
|
}
|
|
|
|
|
@@ -1459,5 +1462,5 @@ static void __exit fsldma_exit(void)
|
|
|
subsys_initcall(fsldma_init);
|
|
|
module_exit(fsldma_exit);
|
|
|
|
|
|
-MODULE_DESCRIPTION("Freescale Elo / Elo Plus DMA driver");
|
|
|
+MODULE_DESCRIPTION("Freescale Elo series DMA driver");
|
|
|
MODULE_LICENSE("GPL");
|