aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2013-04-22 04:33:32 -0400
committerVinod Koul <vinod.koul@intel.com>2013-06-11 22:19:19 -0400
commitff0e0f4f568e8d7593e0035c0c58067bcaf4ab07 (patch)
treeb0201097850ea0f27b5f427e9208860759cd9263
parent317ddd256b9c24b0d78fa8018f80f1e495481a10 (diff)
dma: of: Remove restriction that #dma-cells can't be 0
There is no sensible reason why #dma-cells shouldn't be allowed to be 0. It is completely up to the DMA controller how many additional parameters, besides the phandle, it needs to identify a channel. E.g. for DMA controller with only one channel or for DMA controllers which don't have a restriction on which channel can be used for which peripheral it completely legitimate to not require any additional parameters. Also fixes the following warning: drivers/dma/of-dma.c: In function 'of_dma_controller_register': drivers/dma/of-dma.c:67:7: warning: 'nbcells' may be used uninitialized in this function Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
-rw-r--r--drivers/dma/of-dma.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/drivers/dma/of-dma.c b/drivers/dma/of-dma.c
index 7aa0864cd487..268cc8ab34e8 100644
--- a/drivers/dma/of-dma.c
+++ b/drivers/dma/of-dma.c
@@ -64,7 +64,6 @@ int of_dma_controller_register(struct device_node *np,
64 void *data) 64 void *data)
65{ 65{
66 struct of_dma *ofdma; 66 struct of_dma *ofdma;
67 int nbcells;
68 const __be32 *prop; 67 const __be32 *prop;
69 68
70 if (!np || !of_dma_xlate) { 69 if (!np || !of_dma_xlate) {
@@ -77,18 +76,16 @@ int of_dma_controller_register(struct device_node *np,
77 return -ENOMEM; 76 return -ENOMEM;
78 77
79 prop = of_get_property(np, "#dma-cells", NULL); 78 prop = of_get_property(np, "#dma-cells", NULL);
80 if (prop) 79 if (!prop) {
81 nbcells = be32_to_cpup(prop); 80 pr_err("%s: #dma-cells property is missing\n",
82
83 if (!prop || !nbcells) {
84 pr_err("%s: #dma-cells property is missing or invalid\n",
85 __func__); 81 __func__);
86 kfree(ofdma); 82 kfree(ofdma);
87 return -EINVAL; 83 return -EINVAL;
88 } 84 }
89 85
86
90 ofdma->of_node = np; 87 ofdma->of_node = np;
91 ofdma->of_dma_nbcells = nbcells; 88 ofdma->of_dma_nbcells = be32_to_cpup(prop);
92 ofdma->of_dma_xlate = of_dma_xlate; 89 ofdma->of_dma_xlate = of_dma_xlate;
93 ofdma->of_dma_data = data; 90 ofdma->of_dma_data = data;
94 91