From: Paul M. <pau...@re...> - 2007-07-09 16:59:01
|
On Sat, Jul 07, 2007 at 12:11:52PM +0100, Adrian McMenamin wrote: > I think I have been over this before, but cannot find the emails on any > search... > > The Dreamcast afaics is a plain SH7750 machine and this is what the > kernel configuration says: > Not quite, it's an SH7091, but as far as the DMAC is concerned, they're the same. > CONFIG_NR_ONCHIP_DMA_CHANNELS: > This allows you to specify the number of channels that the on-chip > DMAC supports. This will be 4 for SH7750/SH7751 and 8 for the > SH7750R/SH7751R. > > Yet if you actually set this to 4 the DC won't boot, but it will boot if > set to 8. > If it won't boot at 4, then it's a bug. Bumping up the channels to a value not reflected by hardware is not the way you want to go. > On top of this, I am trying to get the pvr2 driver to work properly now > and it fails here.... > > #ifdef CONFIG_SH_DMA > if (request_dma(pvr2dma, "pvr2") != 0) { > printk(KERN_ERR "PVR2 failed to get DMA channel\n"); > free_irq(HW_EVENT_VSYNC, 0); > return -EBUSY; > } > #endif > > pvr2dma is static unsigned int pvr2dma = ONCHIP_NR_DMA_CHANNELS; > > And ONCHIP_NR_DMA_CHANNELS is #define ONCHIP_NR_DMA_CHANNELS 4 for a > Dreamcast > That's likely due to the fact you're hitting a bogus channel as a result of having bumped the on-chip channels to 8. I suppose leaving this configurable was not what we wanted to do, but again, driver model refactoring takes care of a lot of this. Please post the oops when this is at 4, so we can debug that a bit further. |