]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
sh: dma: Make PVR2 DMA configurable.
authorPaul Mundt <lethal@linux-sh.org>
Tue, 17 Mar 2009 00:30:36 +0000 (09:30 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Tue, 17 Mar 2009 00:30:36 +0000 (09:30 +0900)
With arch/sh/drivers/dma/ always being built, the Dreamcast DMA engines
are being unconditionally built in, regardless of whether the DMA API is
enabled or not. This is a regression from previous behaviour, but there
is not much advantage in building them all in unconditionally regardless.
Add a new config option to make it optional, and update the only user of
it to reflect that.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/drivers/dma/Kconfig
arch/sh/drivers/dma/Makefile
drivers/video/pvr2fb.c

index 32bb8fa605c2e805337b8b372bc2042494040b96..ae26610837b2b14839ec8bc9262b72ac1af4b8cc 100644 (file)
@@ -54,4 +54,17 @@ config SH_DMABRG
          of the SH7760.
          Say Y if you want to use Audio/USB DMA on your SH7760 board.
 
+config PVR2_DMA
+       tristate "PowerVR 2 DMAC support"
+       depends on SH_DREAMCAST && SH_DMA
+       help
+         Selecting this will enable support for the PVR2 DMA controller.
+         As this chains off of the on-chip DMAC, that must also be
+         enabled by default.
+
+         This is primarily used by the pvr2fb framebuffer driver for
+         certain optimizations, but is not necessary for functionality.
+
+         If in doubt, say N.
+
 endmenu
index ab956adacb47688505f53061a105eae22134eb38..cff52cb6ac71c672324a63b07788deaab8cbfa35 100644 (file)
@@ -4,5 +4,6 @@
 
 obj-$(CONFIG_SH_DMA_API)       += dma-api.o dma-sysfs.o
 obj-$(CONFIG_SH_DMA)           += dma-sh.o
-obj-$(CONFIG_SH_DREAMCAST)     += dma-pvr2.o dma-g2.o
+obj-$(CONFIG_SH_DREAMCAST)     += dma-g2.o
+obj-$(CONFIG_PVR2_DMA)         += dma-pvr2.o
 obj-$(CONFIG_SH_DMABRG)                += dmabrg.o
index 0a0fd48a856696eee0e84a6b37b4368b56ba7c89..53f8f1100e81c671cc63c10814467dcb1e0275d9 100644 (file)
@@ -61,7 +61,7 @@
 #include <mach-dreamcast/mach/sysasic.h>
 #endif
 
-#ifdef CONFIG_SH_DMA
+#ifdef CONFIG_PVR2_DMA
 #include <linux/pagemap.h>
 #include <mach/dma.h>
 #include <asm/dma.h>
@@ -188,7 +188,7 @@ static unsigned int is_blanked = 0;         /* Is the screen blanked? */
 static unsigned long pvr2fb_map;
 #endif
 
-#ifdef CONFIG_SH_DMA
+#ifdef CONFIG_PVR2_DMA
 static unsigned int shdma = PVR2_CASCADE_CHAN;
 static unsigned int pvr2dma = ONCHIP_NR_DMA_CHANNELS;
 #endif
@@ -207,7 +207,7 @@ static irqreturn_t pvr2fb_interrupt(int irq, void *dev_id);
 static int pvr2_init_cable(void);
 static int pvr2_get_param(const struct pvr2_params *p, const char *s,
                             int val, int size);
-#ifdef CONFIG_SH_DMA
+#ifdef CONFIG_PVR2_DMA
 static ssize_t pvr2fb_write(struct fb_info *info, const char *buf,
                            size_t count, loff_t *ppos);
 #endif
@@ -218,7 +218,7 @@ static struct fb_ops pvr2fb_ops = {
        .fb_blank       = pvr2fb_blank,
        .fb_check_var   = pvr2fb_check_var,
        .fb_set_par     = pvr2fb_set_par,
-#ifdef CONFIG_SH_DMA
+#ifdef CONFIG_PVR2_DMA
        .fb_write       = pvr2fb_write,
 #endif
        .fb_fillrect    = cfb_fillrect,
@@ -671,7 +671,7 @@ static int pvr2_init_cable(void)
        return cable_type;
 }
 
-#ifdef CONFIG_SH_DMA
+#ifdef CONFIG_PVR2_DMA
 static ssize_t pvr2fb_write(struct fb_info *info, const char *buf,
                            size_t count, loff_t *ppos)
 {
@@ -743,7 +743,7 @@ out_unmap:
 
        return ret;
 }
-#endif /* CONFIG_SH_DMA */
+#endif /* CONFIG_PVR2_DMA */
 
 /**
  * pvr2fb_common_init
@@ -893,7 +893,7 @@ static int __init pvr2fb_dc_init(void)
                return -EBUSY;
        }
 
-#ifdef CONFIG_SH_DMA
+#ifdef CONFIG_PVR2_DMA
        if (request_dma(pvr2dma, "pvr2") != 0) {
                free_irq(HW_EVENT_VSYNC, 0);
                return -EBUSY;
@@ -915,7 +915,7 @@ static void __exit pvr2fb_dc_exit(void)
        }
 
        free_irq(HW_EVENT_VSYNC, 0);
-#ifdef CONFIG_SH_DMA
+#ifdef CONFIG_PVR2_DMA
        free_dma(pvr2dma);
 #endif
 }