Skip to content

Commit

Permalink
sh: dma: Make PVR2 DMA configurable.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Paul Mundt committed Mar 17, 2009
1 parent 988f831 commit da62e71
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 9 deletions.
13 changes: 13 additions & 0 deletions arch/sh/drivers/dma/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
3 changes: 2 additions & 1 deletion arch/sh/drivers/dma/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
16 changes: 8 additions & 8 deletions drivers/video/pvr2fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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,
Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -743,7 +743,7 @@ static ssize_t pvr2fb_write(struct fb_info *info, const char *buf,

return ret;
}
#endif /* CONFIG_SH_DMA */
#endif /* CONFIG_PVR2_DMA */

/**
* pvr2fb_common_init
Expand Down Expand Up @@ -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;
Expand All @@ -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
}
Expand Down

0 comments on commit da62e71

Please sign in to comment.