dma: ipu: remove the use of ipu_platform_data
authorShawn Guo <shawn.guo@linaro.org>
Wed, 13 Jun 2012 06:07:31 +0000 (14:07 +0800)
committerShawn Guo <shawn.guo@linaro.org>
Sun, 1 Jul 2012 13:57:43 +0000 (21:57 +0800)
The struct ipu_platform_data is used by platform code to pass
MXC_IPU_IRQ_START to ipu-core driver.  We can save it by having
ipu-core driver call irq_alloc_descs to get the irq_base.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Dong Aisheng <dong.aisheng@linaro.org>
16 files changed:
arch/arm/mach-imx/devices-imx31.h
arch/arm/mach-imx/devices-imx35.h
arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c
arch/arm/mach-imx/mach-armadillo5x0.c
arch/arm/mach-imx/mach-mx31_3ds.c
arch/arm/mach-imx/mach-mx31moboard.c
arch/arm/mach-imx/mach-mx35_3ds.c
arch/arm/mach-imx/mach-pcm037.c
arch/arm/mach-imx/mach-pcm043.c
arch/arm/mach-imx/mach-vpr200.c
arch/arm/mach-imx/mx31lilly-db.c
arch/arm/plat-mxc/devices/platform-ipu-core.c
arch/arm/plat-mxc/include/mach/devices-common.h
arch/arm/plat-mxc/include/mach/ipu.h
drivers/dma/ipu/ipu_idmac.c
drivers/dma/ipu/ipu_irq.c

index 488e241a6db638b90f2da3ca38108cb0eea42a8b..911c2dac2452aa5ce88eec0e685f49f9c9ce67f5 100644 (file)
@@ -42,8 +42,8 @@ extern const struct imx_imx_uart_1irq_data imx31_imx_uart_data[];
 #define imx31_add_imx_uart4(pdata)     imx31_add_imx_uart(4, pdata)
 
 extern const struct imx_ipu_core_data imx31_ipu_core_data;
-#define imx31_add_ipu_core(pdata)      \
-       imx_add_ipu_core(&imx31_ipu_core_data, pdata)
+#define imx31_add_ipu_core()           \
+       imx_add_ipu_core(&imx31_ipu_core_data)
 #define imx31_alloc_mx3_camera(pdata)  \
        imx_alloc_mx3_camera(&imx31_ipu_core_data, pdata)
 #define imx31_add_mx3_sdc_fb(pdata)    \
index 7b99ef0bb50111f24fb97a0aca09a3a3517cabc3..6fb907290f4712c8ce48ac0eb63e1b7bb0d51bd1 100644 (file)
@@ -50,8 +50,8 @@ extern const struct imx_imx_uart_1irq_data imx35_imx_uart_data[];
 #define imx35_add_imx_uart2(pdata)     imx35_add_imx_uart(2, pdata)
 
 extern const struct imx_ipu_core_data imx35_ipu_core_data;
-#define imx35_add_ipu_core(pdata)      \
-       imx_add_ipu_core(&imx35_ipu_core_data, pdata)
+#define imx35_add_ipu_core()           \
+       imx_add_ipu_core(&imx35_ipu_core_data)
 #define imx35_alloc_mx3_camera(pdata)  \
        imx_alloc_mx3_camera(&imx35_ipu_core_data, pdata)
 #define imx35_add_mx3_sdc_fb(pdata)    \
index 557f6c4860535f7bef1d7860acd0f57e54bda7a1..6e9dd12a6961cf8bf7e6fc8cf8053a12ca13fd32 100644 (file)
@@ -95,10 +95,6 @@ static const struct fb_videomode fb_modedb[] = {
        },
 };
 
-static const struct ipu_platform_data mx3_ipu_data __initconst = {
-       .irq_base = MXC_IPU_IRQ_START,
-};
-
 static struct mx3fb_platform_data mx3fb_pdata __initdata = {
        .name           = "CMO-QVGA",
        .mode           = fb_modedb,
@@ -287,7 +283,7 @@ void __init eukrea_mbimxsd35_baseboard_init(void)
                printk(KERN_ERR "error setting mbimxsd pads !\n");
 
        imx35_add_imx_uart1(&uart_pdata);
-       imx35_add_ipu_core(&mx3_ipu_data);
+       imx35_add_ipu_core();
        imx35_add_mx3_sdc_fb(&mx3fb_pdata);
 
        imx35_add_imx_ssi(0, &eukrea_mbimxsd_ssi_pdata);
index f83c5c683575c8cc73e25d51cc9477b7476d5eb5..2c6ab3273f9e4d4a419e54a4f7cde417fdb213a6 100644 (file)
@@ -367,10 +367,6 @@ static const struct fb_videomode fb_modedb[] = {
        },
 };
 
-static const struct ipu_platform_data mx3_ipu_data __initconst = {
-       .irq_base = MXC_IPU_IRQ_START,
-};
-
 static struct mx3fb_platform_data mx3fb_pdata __initdata = {
        .name           = "CRT-VGA",
        .mode           = fb_modedb,
@@ -517,7 +513,7 @@ static void __init armadillo5x0_init(void)
        imx31_add_mxc_mmc(0, &sdhc_pdata);
 
        /* Register FB */
-       imx31_add_ipu_core(&mx3_ipu_data);
+       imx31_add_ipu_core();
        imx31_add_mx3_sdc_fb(&mx3fb_pdata);
 
        /* Register NOR Flash */
index ecdba0497e7e889574ab1a19a4fbe216ea026057..618935e1e325e246bd0f2debe7cb538e9ed65768 100644 (file)
@@ -274,10 +274,6 @@ static const struct fb_videomode fb_modedb[] = {
        },
 };
 
-static struct ipu_platform_data mx3_ipu_data = {
-       .irq_base = MXC_IPU_IRQ_START,
-};
-
 static struct mx3fb_platform_data mx3fb_pdata __initdata = {
        .name           = "Epson-VGA",
        .mode           = fb_modedb,
@@ -743,7 +739,7 @@ static void __init mx31_3ds_init(void)
        imx31_add_mxc_mmc(0, &sdhc1_pdata);
 
        imx31_add_spi_imx0(&spi0_pdata);
-       imx31_add_ipu_core(&mx3_ipu_data);
+       imx31_add_ipu_core();
        imx31_add_mx3_sdc_fb(&mx3fb_pdata);
 
        /* CSI */
index f0d26db7719eaee8c4d5ea918a4588bd70e8554d..54d9e5d9fcec2644784015c57c7a794b4ad5c369 100644 (file)
@@ -473,10 +473,6 @@ static const struct gpio_led_platform_data mx31moboard_led_pdata __initconst = {
        .leds           = mx31moboard_leds,
 };
 
-static const struct ipu_platform_data mx3_ipu_data __initconst = {
-       .irq_base = MXC_IPU_IRQ_START,
-};
-
 static struct platform_device *devices[] __initdata = {
        &mx31moboard_flash,
 };
@@ -494,7 +490,7 @@ static int __init mx31moboard_init_cam(void)
        int dma, ret = -ENOMEM;
        struct platform_device *pdev;
 
-       imx31_add_ipu_core(&mx3_ipu_data);
+       imx31_add_ipu_core();
 
        pdev = imx31_alloc_mx3_camera(&camera_pdata);
        if (IS_ERR(pdev))
index fa1ea74dfdd3ec1d0714153b39bfbd2a9e8191bd..ad63e6ebee6de0d63acda5102f5d253401582283 100644 (file)
@@ -80,10 +80,6 @@ static const struct fb_videomode fb_modedb[] = {
         },
 };
 
-static const struct ipu_platform_data mx3_ipu_data __initconst = {
-       .irq_base = MXC_IPU_IRQ_START,
-};
-
 static struct mx3fb_platform_data mx3fb_pdata __initdata = {
        .name = "Ceramate-CLAA070VC01",
        .mode = fb_modedb,
@@ -297,10 +293,6 @@ err:
        return ret;
 }
 
-static const struct ipu_platform_data mx35_3ds_ipu_data __initconst = {
-       .irq_base = MXC_IPU_IRQ_START,
-};
-
 static struct i2c_board_info mx35_3ds_i2c_camera = {
        I2C_BOARD_INFO("ov2640", 0x30),
 };
@@ -596,7 +588,7 @@ static void __init mx35_3ds_init(void)
        i2c_register_board_info(
                0, i2c_devices_3ds, ARRAY_SIZE(i2c_devices_3ds));
 
-       imx35_add_ipu_core(&mx35_3ds_ipu_data);
+       imx35_add_ipu_core();
        platform_device_register(&mx35_3ds_ov2640);
        imx35_3ds_init_camera();
 
index 551a035f0c2d5d8f986ca6d9bba72416f1440072..ded4ed9def9ea1297740b0d45a1912feaa9b46cf 100644 (file)
@@ -441,10 +441,6 @@ static struct platform_device *devices[] __initdata = {
        &pcm037_mt9v022,
 };
 
-static const struct ipu_platform_data mx3_ipu_data __initconst = {
-       .irq_base = MXC_IPU_IRQ_START,
-};
-
 static const struct fb_videomode fb_modedb[] = {
        {
                /* 240x320 @ 60 Hz Sharp */
@@ -648,7 +644,7 @@ static void __init pcm037_init(void)
 
        imx31_add_mxc_nand(&pcm037_nand_board_info);
        imx31_add_mxc_mmc(0, &sdhc_pdata);
-       imx31_add_ipu_core(&mx3_ipu_data);
+       imx31_add_ipu_core();
        imx31_add_mx3_sdc_fb(&mx3fb_pdata);
 
        /* CSI */
index 73585f55cca0c6b804351064511a69b678fc1a63..133908f94f7e2bd080323ec3fd7ab9362aac1d6e 100644 (file)
@@ -76,10 +76,6 @@ static const struct fb_videomode fb_modedb[] = {
        },
 };
 
-static const struct ipu_platform_data mx3_ipu_data __initconst = {
-       .irq_base = MXC_IPU_IRQ_START,
-};
-
 static struct mx3fb_platform_data mx3fb_pdata __initdata = {
        .name           = "Sharp-LQ035Q7",
        .mode           = fb_modedb,
@@ -376,7 +372,7 @@ static void __init pcm043_init(void)
 
        imx35_add_imx_i2c0(&pcm043_i2c0_data);
 
-       imx35_add_ipu_core(&mx3_ipu_data);
+       imx35_add_ipu_core();
        imx35_add_mx3_sdc_fb(&mx3fb_pdata);
 
        if (otg_mode_host) {
index e36eb2c40f415c854b5c3fe3a2a8c4d3f1722e47..1aa5622859607e912075ffacf0d03e54858af946 100644 (file)
@@ -87,10 +87,6 @@ static const struct fb_videomode fb_modedb[] = {
        }
 };
 
-static const struct ipu_platform_data mx3_ipu_data __initconst = {
-       .irq_base = MXC_IPU_IRQ_START,
-};
-
 static struct mx3fb_platform_data mx3fb_pdata __initdata = {
        .name           = "PT0708048",
        .mode           = fb_modedb,
@@ -290,7 +286,7 @@ static void __init vpr200_board_init(void)
        imx35_add_imx_uart0(NULL);
        imx35_add_imx_uart2(NULL);
 
-       imx35_add_ipu_core(&mx3_ipu_data);
+       imx35_add_ipu_core();
        imx35_add_mx3_sdc_fb(&mx3fb_pdata);
 
        imx35_add_fsl_usb2_udc(&otg_device_pdata);
index 2df625bdc71ee50b9eb441dff9d3ee4416df4b64..29e890f92055ef697f72f0b32b3fb7009a9a1c68 100644 (file)
@@ -162,10 +162,6 @@ static const struct imxmmc_platform_data mmc_pdata __initconst = {
 };
 
 /* Framebuffer support */
-static const struct ipu_platform_data ipu_data __initconst = {
-       .irq_base = MXC_IPU_IRQ_START,
-};
-
 static const struct fb_videomode fb_modedb = {
        /* 640x480 TFT panel (IPS-056T) */
        .name           = "CRT-VGA",
@@ -199,7 +195,7 @@ static void __init mx31lilly_init_fb(void)
                return;
        }
 
-       imx31_add_ipu_core(&ipu_data);
+       imx31_add_ipu_core();
        imx31_add_mx3_sdc_fb(&fb_pdata);
        gpio_direction_output(LCD_VCC_EN_GPIO, 1);
 }
index 79d340ae0af134eb00431fab41b2a3f55770355a..d1e33cc6f12e8cd9e5d332df58a4788ec2c61952 100644 (file)
@@ -30,8 +30,7 @@ const struct imx_ipu_core_data imx35_ipu_core_data __initconst =
 static struct platform_device *imx_ipu_coredev __initdata;
 
 struct platform_device *__init imx_add_ipu_core(
-               const struct imx_ipu_core_data *data,
-               const struct ipu_platform_data *pdata)
+               const struct imx_ipu_core_data *data)
 {
        /* The resource order is important! */
        struct resource res[] = {
@@ -55,7 +54,7 @@ struct platform_device *__init imx_add_ipu_core(
        };
 
        return imx_ipu_coredev = imx_add_platform_device("ipu-core", -1,
-                       res, ARRAY_SIZE(res), pdata, sizeof(*pdata));
+                       res, ARRAY_SIZE(res), NULL, 0);
 }
 
 struct platform_device *__init imx_alloc_mx3_camera(
index 1b2258daa05b22849cd9e028228187ee852793c2..a7f5bb1084d72da97843fb73468cdd1c8f4a70fd 100644 (file)
@@ -183,7 +183,6 @@ struct platform_device *__init imx_add_imx_udc(
                const struct imx_imx_udc_data *data,
                const struct imxusb_platform_data *pdata);
 
-#include <mach/ipu.h>
 #include <mach/mx3fb.h>
 #include <mach/mx3_camera.h>
 struct imx_ipu_core_data {
@@ -192,8 +191,7 @@ struct imx_ipu_core_data {
        resource_size_t errirq;
 };
 struct platform_device *__init imx_add_ipu_core(
-               const struct imx_ipu_core_data *data,
-               const struct ipu_platform_data *pdata);
+               const struct imx_ipu_core_data *data);
 struct platform_device *__init imx_alloc_mx3_camera(
                const struct imx_ipu_core_data *data,
                const struct mx3_camera_pdata *pdata);
index a9221f1cc1a0922a0c2dd39e285b5e50e038feae..539e559d18b2c6f1046f3909e22760d43eaea9b1 100644 (file)
@@ -110,10 +110,6 @@ enum ipu_rotate_mode {
        IPU_ROTATE_90_LEFT = 7,
 };
 
-struct ipu_platform_data {
-       unsigned int    irq_base;
-};
-
 /*
  * Enumeration of DI ports for ADC.
  */
index 5ec72044ea4c13a5849eef9675c10335c4307416..c7573e50aa14110118426c9d56c49cdb890cd651 100644 (file)
@@ -1663,7 +1663,6 @@ static void __exit ipu_idmac_exit(struct ipu *ipu)
 
 static int __init ipu_probe(struct platform_device *pdev)
 {
-       struct ipu_platform_data *pdata = pdev->dev.platform_data;
        struct resource *mem_ipu, *mem_ic;
        int ret;
 
@@ -1671,7 +1670,7 @@ static int __init ipu_probe(struct platform_device *pdev)
 
        mem_ipu = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        mem_ic  = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-       if (!pdata || !mem_ipu || !mem_ic)
+       if (!mem_ipu || !mem_ic)
                return -EINVAL;
 
        ipu_data.dev = &pdev->dev;
@@ -1688,10 +1687,9 @@ static int __init ipu_probe(struct platform_device *pdev)
                goto err_noirq;
 
        ipu_data.irq_err = ret;
-       ipu_data.irq_base = pdata->irq_base;
 
-       dev_dbg(&pdev->dev, "fn irq %u, err irq %u, irq-base %u\n",
-               ipu_data.irq_fn, ipu_data.irq_err, ipu_data.irq_base);
+       dev_dbg(&pdev->dev, "fn irq %u, err irq %u\n",
+               ipu_data.irq_fn, ipu_data.irq_err);
 
        /* Remap IPU common registers */
        ipu_data.reg_ipu = ioremap(mem_ipu->start, resource_size(mem_ipu));
index a71f55e72be9cf407217d1f164e59ac677bd46d4..fa95bcc3de1f66b107a4cddf38e97d5fa68286b2 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/clk.h>
 #include <linux/irq.h>
 #include <linux/io.h>
+#include <linux/module.h>
 
 #include <mach/ipu.h>
 
@@ -354,10 +355,12 @@ static struct irq_chip ipu_irq_chip = {
 /* Install the IRQ handler */
 int __init ipu_irq_attach_irq(struct ipu *ipu, struct platform_device *dev)
 {
-       struct ipu_platform_data *pdata = dev->dev.platform_data;
-       unsigned int irq, irq_base, i;
+       unsigned int irq, i;
+       int irq_base = irq_alloc_descs(-1, 0, CONFIG_MX3_IPU_IRQS,
+                                      numa_node_id());
 
-       irq_base = pdata->irq_base;
+       if (irq_base < 0)
+               return irq_base;
 
        for (i = 0; i < IPU_IRQ_NR_BANKS; i++)
                irq_bank[i].ipu = ipu;
@@ -387,15 +390,16 @@ int __init ipu_irq_attach_irq(struct ipu *ipu, struct platform_device *dev)
        irq_set_handler_data(ipu->irq_err, ipu);
        irq_set_chained_handler(ipu->irq_err, ipu_irq_err);
 
+       ipu->irq_base = irq_base;
+
        return 0;
 }
 
 void ipu_irq_detach_irq(struct ipu *ipu, struct platform_device *dev)
 {
-       struct ipu_platform_data *pdata = dev->dev.platform_data;
        unsigned int irq, irq_base;
 
-       irq_base = pdata->irq_base;
+       irq_base = ipu->irq_base;
 
        irq_set_chained_handler(ipu->irq_fn, NULL);
        irq_set_handler_data(ipu->irq_fn, NULL);