dmaengine: omap-dma: Take DMA request number from DT if it is available
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Thu, 9 Apr 2015 09:35:51 +0000 (12:35 +0300)
committerVinod Koul <vinod.koul@intel.com>
Sat, 9 May 2015 11:41:25 +0000 (17:11 +0530)
Use the dma-requests property from DT to get the number of DMA requests.
In case of legacy boot or failure to find the property, use the default
127 as number of requests.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/omap-dma.c

index 4065963fbffbea3197d1cf0cf59df90fef2f818f..211c9c1edf08ca00bdda0513d6e78f8323930795 100644 (file)
@@ -34,6 +34,7 @@ struct omap_dmadev {
        const struct omap_dma_reg *reg_map;
        struct omap_system_dma_plat_info *plat;
        bool legacy;
        const struct omap_dma_reg *reg_map;
        struct omap_system_dma_plat_info *plat;
        bool legacy;
+       unsigned dma_requests;
        spinlock_t irq_lock;
        uint32_t irq_enable_mask;
        struct omap_chan *lch_map[OMAP_SDMA_CHANNELS];
        spinlock_t irq_lock;
        uint32_t irq_enable_mask;
        struct omap_chan *lch_map[OMAP_SDMA_CHANNELS];
@@ -1119,7 +1120,16 @@ static int omap_dma_probe(struct platform_device *pdev)
 
        tasklet_init(&od->task, omap_dma_sched, (unsigned long)od);
 
 
        tasklet_init(&od->task, omap_dma_sched, (unsigned long)od);
 
-       for (i = 0; i < OMAP_SDMA_REQUESTS; i++) {
+       od->dma_requests = OMAP_SDMA_REQUESTS;
+       if (pdev->dev.of_node && of_property_read_u32(pdev->dev.of_node,
+                                                     "dma-requests",
+                                                     &od->dma_requests)) {
+               dev_info(&pdev->dev,
+                        "Missing dma-requests property, using %u.\n",
+                        OMAP_SDMA_REQUESTS);
+       }
+
+       for (i = 0; i < od->dma_requests; i++) {
                rc = omap_dma_chan_init(od, i);
                if (rc) {
                        omap_dma_free(od);
                rc = omap_dma_chan_init(od, i);
                if (rc) {
                        omap_dma_free(od);