summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorjiaheng.fan <jiaheng.fan@nxp.com>2017-04-13 10:17:37 (GMT)
committerXie Xiaobo <xiaobo.xie@nxp.com>2017-09-25 07:25:39 (GMT)
commitbf4183ac90793bb9a0c8bea60fb87bea5d803023 (patch)
tree1d9696d974ed80ec4bad5574d07220f9fb642606 /drivers
parentb2368051bf542dc0bf3336b00fdd017ce0e7b0c1 (diff)
downloadlinux-bf4183ac90793bb9a0c8bea60fb87bea5d803023.tar.xz
dma: fsl-qdma: rectify the address for some register
Signed-off-by: jiaheng.fan <jiaheng.fan@nxp.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/dma/fsl-qdma.c33
1 files changed, 20 insertions, 13 deletions
diff --git a/drivers/dma/fsl-qdma.c b/drivers/dma/fsl-qdma.c
index cd5e065..7e0d036 100644
--- a/drivers/dma/fsl-qdma.c
+++ b/drivers/dma/fsl-qdma.c
@@ -34,14 +34,14 @@
#define FSL_QDMA_DMR 0x0
#define FSL_QDMA_DSR 0x4
-#define FSL_QDMA_DEIER 0x1e00
-#define FSL_QDMA_DEDR 0x1e04
-#define FSL_QDMA_DECFDW0R 0x1e10
-#define FSL_QDMA_DECFDW1R 0x1e14
-#define FSL_QDMA_DECFDW2R 0x1e18
-#define FSL_QDMA_DECFDW3R 0x1e1c
-#define FSL_QDMA_DECFQIDR 0x1e30
-#define FSL_QDMA_DECBR 0x1e34
+#define FSL_QDMA_DEIER 0xe00
+#define FSL_QDMA_DEDR 0xe04
+#define FSL_QDMA_DECFDW0R 0xe10
+#define FSL_QDMA_DECFDW1R 0xe14
+#define FSL_QDMA_DECFDW2R 0xe18
+#define FSL_QDMA_DECFDW3R 0xe1c
+#define FSL_QDMA_DECFQIDR 0xe30
+#define FSL_QDMA_DECBR 0xe34
#define FSL_QDMA_BCQMR(x) (0xc0 + 0x100 * (x))
#define FSL_QDMA_BCQSR(x) (0xc4 + 0x100 * (x))
@@ -221,6 +221,7 @@ struct fsl_qdma_comp {
struct fsl_qdma_engine {
struct dma_device dma_dev;
void __iomem *ctrl_base;
+ void __iomem *status_base;
void __iomem *block_base;
u32 n_chans;
u32 n_queues;
@@ -714,14 +715,14 @@ static irqreturn_t fsl_qdma_error_handler(int irq, void *dev_id)
{
struct fsl_qdma_engine *fsl_qdma = dev_id;
unsigned int intr;
- void __iomem *ctrl = fsl_qdma->ctrl_base;
+ void __iomem *status = fsl_qdma->status_base;
- intr = qdma_readl(fsl_qdma, ctrl + FSL_QDMA_DEDR);
+ intr = qdma_readl(fsl_qdma, status + FSL_QDMA_DEDR);
if (intr)
dev_err(fsl_qdma->dma_dev.dev, "DMA transaction error!\n");
- qdma_writel(fsl_qdma, 0xffffffff, ctrl + FSL_QDMA_DEDR);
+ qdma_writel(fsl_qdma, 0xffffffff, status + FSL_QDMA_DEDR);
return IRQ_HANDLED;
}
@@ -780,6 +781,7 @@ static int fsl_qdma_reg_init(struct fsl_qdma_engine *fsl_qdma)
struct fsl_qdma_queue *fsl_queue = fsl_qdma->queue;
struct fsl_qdma_queue *temp;
void __iomem *ctrl = fsl_qdma->ctrl_base;
+ void __iomem *status = fsl_qdma->status_base;
void __iomem *block = fsl_qdma->block_base;
int i, ret;
u32 reg;
@@ -841,8 +843,8 @@ static int fsl_qdma_reg_init(struct fsl_qdma_engine *fsl_qdma)
qdma_writel(fsl_qdma, FSL_QDMA_CQIER_MEIE | FSL_QDMA_CQIER_TEIE,
block + FSL_QDMA_CQIER);
/* Initialize controller interrupt register. */
- qdma_writel(fsl_qdma, 0xffffffff, ctrl + FSL_QDMA_DEDR);
- qdma_writel(fsl_qdma, 0xffffffff, ctrl + FSL_QDMA_DEIER);
+ qdma_writel(fsl_qdma, 0xffffffff, status + FSL_QDMA_DEDR);
+ qdma_writel(fsl_qdma, 0xffffffff, status + FSL_QDMA_DEIER);
/* Initialize the status queue mode. */
reg = FSL_QDMA_BSQMR_EN;
@@ -1005,6 +1007,11 @@ static int fsl_qdma_probe(struct platform_device *pdev)
return PTR_ERR(fsl_qdma->ctrl_base);
res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
+ fsl_qdma->status_base = devm_ioremap_resource(&pdev->dev, res);
+ if (IS_ERR(fsl_qdma->status_base))
+ return PTR_ERR(fsl_qdma->status_base);
+
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
fsl_qdma->block_base = devm_ioremap_resource(&pdev->dev, res);
if (IS_ERR(fsl_qdma->block_base))
return PTR_ERR(fsl_qdma->block_base);