]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
net: pxaficp_ir: add irq resources
authorRob Herring <rob.herring@calxeda.com>
Wed, 29 Aug 2012 15:31:14 +0000 (10:31 -0500)
committerRob Herring <rob.herring@calxeda.com>
Fri, 14 Sep 2012 14:21:57 +0000 (09:21 -0500)
In order to remove dependency on mach/irqs.h, add platform device
resources for irqs.

Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Samuel Ortiz <samuel@sortiz.org>
Acked-by: Eric Miao <eric.y.miao@gmail.com>
Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
Cc: netdev@vger.kernel.org
Acked-by: David S. Miller <davem@davemloft.net>
arch/arm/mach-pxa/devices.c
drivers/net/irda/pxaficp_ir.c

index 166eee5b8a70fe8f4bc555543ea8027564ee0392..339eb2a73681d148b37886b0263ba3a78c4f6bc3 100644 (file)
@@ -384,9 +384,24 @@ struct platform_device pxa_device_asoc_platform = {
 
 static u64 pxaficp_dmamask = ~(u32)0;
 
+static struct resource pxa_ir_resources[] = {
+       [0] = {
+               .start  = IRQ_STUART,
+               .end    = IRQ_STUART,
+               .flags  = IORESOURCE_IRQ,
+       },
+       [1] = {
+               .start  = IRQ_ICP,
+               .end    = IRQ_ICP,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
 struct platform_device pxa_device_ficp = {
        .name           = "pxa2xx-ir",
        .id             = -1,
+       .num_resources  = ARRAY_SIZE(pxa_ir_resources),
+       .resource       = pxa_ir_resources,
        .dev            = {
                .dma_mask = &pxaficp_dmamask,
                .coherent_dma_mask = 0xffffffff,
index 8d5476707912a0dd031d190e9102026c68fef127..cb0a5d3c0b641978a69ec7a10310b061a48e53b1 100644 (file)
@@ -29,8 +29,8 @@
 
 #include <mach/dma.h>
 #include <mach/irda.h>
-#include <mach/regs-uart.h>
 #include <mach/regs-ost.h>
+#include <mach/regs-uart.h>
 
 #define FICP           __REG(0x40800000)  /* Start of FICP area */
 #define ICCR0          __REG(0x40800000)  /* ICP Control Register 0 */
@@ -112,6 +112,9 @@ struct pxa_irda {
        int                     txdma;
        int                     rxdma;
 
+       int                     uart_irq;
+       int                     icp_irq;
+
        struct irlap_cb         *irlap;
        struct qos_info         qos;
 
@@ -672,19 +675,19 @@ static int pxa_irda_start(struct net_device *dev)
 
        si->speed = 9600;
 
-       err = request_irq(IRQ_STUART, pxa_irda_sir_irq, 0, dev->name, dev);
+       err = request_irq(si->uart_irq, pxa_irda_sir_irq, 0, dev->name, dev);
        if (err)
                goto err_irq1;
 
-       err = request_irq(IRQ_ICP, pxa_irda_fir_irq, 0, dev->name, dev);
+       err = request_irq(si->icp_irq, pxa_irda_fir_irq, 0, dev->name, dev);
        if (err)
                goto err_irq2;
 
        /*
         * The interrupt must remain disabled for now.
         */
-       disable_irq(IRQ_STUART);
-       disable_irq(IRQ_ICP);
+       disable_irq(si->uart_irq);
+       disable_irq(si->icp_irq);
 
        err = -EBUSY;
        si->rxdma = pxa_request_dma("FICP_RX",DMA_PRIO_LOW, pxa_irda_fir_dma_rx_irq, dev);
@@ -720,8 +723,8 @@ static int pxa_irda_start(struct net_device *dev)
        /*
         * Now enable the interrupt and start the queue
         */
-       enable_irq(IRQ_STUART);
-       enable_irq(IRQ_ICP);
+       enable_irq(si->uart_irq);
+       enable_irq(si->icp_irq);
        netif_start_queue(dev);
 
        printk(KERN_DEBUG "pxa_ir: irda driver opened\n");
@@ -738,9 +741,9 @@ err_dma_rx_buff:
 err_tx_dma:
        pxa_free_dma(si->rxdma);
 err_rx_dma:
-       free_irq(IRQ_ICP, dev);
+       free_irq(si->icp_irq, dev);
 err_irq2:
-       free_irq(IRQ_STUART, dev);
+       free_irq(si->uart_irq, dev);
 err_irq1:
 
        return err;
@@ -760,8 +763,8 @@ static int pxa_irda_stop(struct net_device *dev)
                si->irlap = NULL;
        }
 
-       free_irq(IRQ_STUART, dev);
-       free_irq(IRQ_ICP, dev);
+       free_irq(si->uart_irq, dev);
+       free_irq(si->icp_irq, dev);
 
        pxa_free_dma(si->rxdma);
        pxa_free_dma(si->txdma);
@@ -851,6 +854,9 @@ static int pxa_irda_probe(struct platform_device *pdev)
        si->dev = &pdev->dev;
        si->pdata = pdev->dev.platform_data;
 
+       si->uart_irq = platform_get_irq(pdev, 0);
+       si->icp_irq = platform_get_irq(pdev, 1);
+
        si->sir_clk = clk_get(&pdev->dev, "UARTCLK");
        si->fir_clk = clk_get(&pdev->dev, "FICPCLK");
        if (IS_ERR(si->sir_clk) || IS_ERR(si->fir_clk)) {