aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/dma/sh
diff options
context:
space:
mode:
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>2014-06-18 04:59:35 -0400
committerSimon Horman <horms+renesas@verge.net.au>2014-07-08 05:12:28 -0400
commit75bfa5f60a368b1ccacaf71bfc0376b8d9eb2e9f (patch)
tree9c1f272521502b7acee3d19761442ba398cd7d20 /drivers/dma/sh
parent016b10f4ea76ba2189d476b4a5f7168e57a8d7ad (diff)
dma: rcar-audmapp: don't keep audmapp_slave_config for each channeles
Current audmapp driver is keeping audmapp_slave_config for each channeles, but, nessasary information is only "chcr". Current style (= keeping audmapp_slave_config) is not good match for DT support. Keep "chcr" instead of audmapp_slave_config Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Diffstat (limited to 'drivers/dma/sh')
-rw-r--r--drivers/dma/sh/rcar-audmapp.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/drivers/dma/sh/rcar-audmapp.c b/drivers/dma/sh/rcar-audmapp.c
index 858483bce719..dd0077519e3e 100644
--- a/drivers/dma/sh/rcar-audmapp.c
+++ b/drivers/dma/sh/rcar-audmapp.c
@@ -45,9 +45,9 @@
45 45
46struct audmapp_chan { 46struct audmapp_chan {
47 struct shdma_chan shdma_chan; 47 struct shdma_chan shdma_chan;
48 struct audmapp_slave_config *config;
49 void __iomem *base; 48 void __iomem *base;
50 dma_addr_t slave_addr; 49 dma_addr_t slave_addr;
50 u32 chcr;
51}; 51};
52 52
53struct audmapp_device { 53struct audmapp_device {
@@ -103,9 +103,8 @@ static void audmapp_start_xfer(struct shdma_chan *schan,
103 struct audmapp_chan *auchan = to_chan(schan); 103 struct audmapp_chan *auchan = to_chan(schan);
104 struct audmapp_device *audev = to_dev(auchan); 104 struct audmapp_device *audev = to_dev(auchan);
105 struct audmapp_desc *desc = to_desc(sdesc); 105 struct audmapp_desc *desc = to_desc(sdesc);
106 struct audmapp_slave_config *cfg = auchan->config;
107 struct device *dev = audev->dev; 106 struct device *dev = audev->dev;
108 u32 chcr = cfg->chcr | PDMACHCR_DE; 107 u32 chcr = auchan->chcr | PDMACHCR_DE;
109 108
110 dev_dbg(dev, "src/dst/chcr = %pad/%pad/%08x\n", 109 dev_dbg(dev, "src/dst/chcr = %pad/%pad/%08x\n",
111 &desc->src, &desc->dst, chcr); 110 &desc->src, &desc->dst, chcr);
@@ -145,7 +144,7 @@ static int audmapp_set_slave(struct shdma_chan *schan, int slave_id,
145 if (try) 144 if (try)
146 return 0; 145 return 0;
147 146
148 auchan->config = cfg; 147 auchan->chcr = cfg->chcr;
149 auchan->slave_addr = slave_addr ? : cfg->dst; 148 auchan->slave_addr = slave_addr ? : cfg->dst;
150 149
151 return 0; 150 return 0;
@@ -156,11 +155,6 @@ static int audmapp_desc_setup(struct shdma_chan *schan,
156 dma_addr_t src, dma_addr_t dst, size_t *len) 155 dma_addr_t src, dma_addr_t dst, size_t *len)
157{ 156{
158 struct audmapp_desc *desc = to_desc(sdesc); 157 struct audmapp_desc *desc = to_desc(sdesc);
159 struct audmapp_chan *auchan = to_chan(schan);
160 struct audmapp_slave_config *cfg = auchan->config;
161
162 if (!cfg)
163 return -ENODEV;
164 158
165 if (*len > (size_t)AUDMAPP_LEN_MAX) 159 if (*len > (size_t)AUDMAPP_LEN_MAX)
166 *len = (size_t)AUDMAPP_LEN_MAX; 160 *len = (size_t)AUDMAPP_LEN_MAX;