aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>2014-05-08 05:01:48 -0400
committerVinod Koul <vinod.koul@intel.com>2014-05-22 06:07:24 -0400
commitd2f78e95e42a9130002c76f1a1f76e657a4b4004 (patch)
treeba270d4a8ca0666bd753f3bad9088a113730452a
parentfbeb91fe8e4107dc88df4eaa21de02c3fd9d1cd5 (diff)
dmaengine: dw: enable clock before access
hclk signal is a bus clock. So, it means we have to have it enabled during access to the DMA controller. This patch makes sure that we enable clock before access to the device, though it currently works on Intel hardware. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
-rw-r--r--drivers/dma/dw/core.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/dma/dw/core.c b/drivers/dma/dw/core.c
index 7a740769c2fa..009dc62f9437 100644
--- a/drivers/dma/dw/core.c
+++ b/drivers/dma/dw/core.c
@@ -1493,6 +1493,11 @@ int dw_dma_probe(struct dw_dma_chip *chip, struct dw_dma_platform_data *pdata)
1493 dw->regs = chip->regs; 1493 dw->regs = chip->regs;
1494 chip->dw = dw; 1494 chip->dw = dw;
1495 1495
1496 dw->clk = devm_clk_get(chip->dev, "hclk");
1497 if (IS_ERR(dw->clk))
1498 return PTR_ERR(dw->clk);
1499 clk_prepare_enable(dw->clk);
1500
1496 dw_params = dma_read_byaddr(chip->regs, DW_PARAMS); 1501 dw_params = dma_read_byaddr(chip->regs, DW_PARAMS);
1497 autocfg = dw_params >> DW_PARAMS_EN & 0x1; 1502 autocfg = dw_params >> DW_PARAMS_EN & 0x1;
1498 1503
@@ -1520,11 +1525,6 @@ int dw_dma_probe(struct dw_dma_chip *chip, struct dw_dma_platform_data *pdata)
1520 if (!dw->chan) 1525 if (!dw->chan)
1521 return -ENOMEM; 1526 return -ENOMEM;
1522 1527
1523 dw->clk = devm_clk_get(chip->dev, "hclk");
1524 if (IS_ERR(dw->clk))
1525 return PTR_ERR(dw->clk);
1526 clk_prepare_enable(dw->clk);
1527
1528 /* Get hardware configuration parameters */ 1528 /* Get hardware configuration parameters */
1529 if (autocfg) { 1529 if (autocfg) {
1530 max_blk_size = dma_readl(dw, MAX_BLK_SIZE); 1530 max_blk_size = dma_readl(dw, MAX_BLK_SIZE);