OSDN Git Service

dmaengine: hsu: remove platform data
authorHeikki Krogerus <heikki.krogerus@linux.intel.com>
Tue, 13 Oct 2015 10:29:05 +0000 (13:29 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 18 Oct 2015 04:22:08 +0000 (21:22 -0700)
There are no platforms where it's not possible to calculate
the number of channels based on IO space length, and since
that is the only purpose for struct hsu_dma_platform_data,
removing it.

Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/dma/hsu/hsu.c
drivers/dma/hsu/hsu.h
drivers/dma/hsu/pci.c
include/linux/dma/hsu.h
include/linux/platform_data/dma-hsu.h

index 7669c7d..823ad72 100644 (file)
@@ -146,7 +146,7 @@ irqreturn_t hsu_dma_irq(struct hsu_dma_chip *chip, unsigned short nr)
        u32 sr;
 
        /* Sanity check */
-       if (nr >= chip->pdata->nr_channels)
+       if (nr >= chip->hsu->nr_channels)
                return IRQ_NONE;
 
        hsuc = &chip->hsu->chan[nr];
@@ -375,7 +375,6 @@ static void hsu_dma_free_chan_resources(struct dma_chan *chan)
 int hsu_dma_probe(struct hsu_dma_chip *chip)
 {
        struct hsu_dma *hsu;
-       struct hsu_dma_platform_data *pdata = chip->pdata;
        void __iomem *addr = chip->regs + chip->offset;
        unsigned short i;
        int ret;
@@ -386,25 +385,16 @@ int hsu_dma_probe(struct hsu_dma_chip *chip)
 
        chip->hsu = hsu;
 
-       if (!pdata) {
-               pdata = devm_kzalloc(chip->dev, sizeof(*pdata), GFP_KERNEL);
-               if (!pdata)
-                       return -ENOMEM;
+       /* Calculate nr_channels from the IO space length */
+       hsu->nr_channels = (chip->length - chip->offset) / HSU_DMA_CHAN_LENGTH;
 
-               chip->pdata = pdata;
-
-               /* Guess nr_channels from the IO space length */
-               pdata->nr_channels = (chip->length - chip->offset) /
-                                    HSU_DMA_CHAN_LENGTH;
-       }
-
-       hsu->chan = devm_kcalloc(chip->dev, pdata->nr_channels,
+       hsu->chan = devm_kcalloc(chip->dev, hsu->nr_channels,
                                 sizeof(*hsu->chan), GFP_KERNEL);
        if (!hsu->chan)
                return -ENOMEM;
 
        INIT_LIST_HEAD(&hsu->dma.channels);
-       for (i = 0; i < pdata->nr_channels; i++) {
+       for (i = 0; i < hsu->nr_channels; i++) {
                struct hsu_dma_chan *hsuc = &hsu->chan[i];
 
                hsuc->vchan.desc_free = hsu_dma_desc_free;
@@ -440,7 +430,7 @@ int hsu_dma_probe(struct hsu_dma_chip *chip)
        if (ret)
                return ret;
 
-       dev_info(chip->dev, "Found HSU DMA, %d channels\n", pdata->nr_channels);
+       dev_info(chip->dev, "Found HSU DMA, %d channels\n", hsu->nr_channels);
        return 0;
 }
 EXPORT_SYMBOL_GPL(hsu_dma_probe);
@@ -452,7 +442,7 @@ int hsu_dma_remove(struct hsu_dma_chip *chip)
 
        dma_async_device_unregister(&hsu->dma);
 
-       for (i = 0; i < chip->pdata->nr_channels; i++) {
+       for (i = 0; i < hsu->nr_channels; i++) {
                struct hsu_dma_chan *hsuc = &hsu->chan[i];
 
                tasklet_kill(&hsuc->vchan.task);
index eeb9fff..f06579c 100644 (file)
@@ -107,6 +107,7 @@ struct hsu_dma {
 
        /* channels */
        struct hsu_dma_chan             *chan;
+       unsigned short                  nr_channels;
 };
 
 static inline struct hsu_dma *to_hsu_dma(struct dma_device *ddev)
index 77879e6..e2db76b 100644 (file)
@@ -31,7 +31,7 @@ static irqreturn_t hsu_pci_irq(int irq, void *dev)
        irqreturn_t ret = IRQ_NONE;
 
        dmaisr = readl(chip->regs + HSU_PCI_DMAISR);
-       for (i = 0; i < chip->pdata->nr_channels; i++) {
+       for (i = 0; i < chip->hsu->nr_channels; i++) {
                if (dmaisr & 0x1)
                        ret |= hsu_dma_irq(chip, i);
                dmaisr >>= 1;
index 765b414..79df69d 100644 (file)
@@ -35,7 +35,6 @@ struct hsu_dma_chip {
        unsigned int                    length;
        unsigned int                    offset;
        struct hsu_dma                  *hsu;
-       struct hsu_dma_platform_data    *pdata;
 };
 
 #if IS_ENABLED(CONFIG_HSU_DMA)
index 8a1f6a4..3453fa6 100644 (file)
@@ -18,8 +18,4 @@ struct hsu_dma_slave {
        int             chan_id;
 };
 
-struct hsu_dma_platform_data {
-       unsigned short  nr_channels;
-};
-
 #endif /* _PLATFORM_DATA_DMA_HSU_H */