ARM: sa1111: only setup DMA for DMA capable devices

It's pointless registering the PS/2 interfaces with the dmabounce code
when there's no DMA support for these in hardware, so only setup the
DMA masks for two subdevices which support DMA - the OHCI and SAC.

Acked-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
Russell King 2012-01-29 10:22:49 +00:00
parent 09a2ba2fa0
commit 21d1c7702e
1 changed files with 6 additions and 3 deletions

View File

@ -121,6 +121,7 @@ static struct sa1111 *g_sa1111;
struct sa1111_dev_info { struct sa1111_dev_info {
unsigned long offset; unsigned long offset;
unsigned long skpcr_mask; unsigned long skpcr_mask;
bool dma;
unsigned int devid; unsigned int devid;
unsigned int irq[6]; unsigned int irq[6];
}; };
@ -129,6 +130,7 @@ static struct sa1111_dev_info sa1111_devices[] = {
{ {
.offset = SA1111_USB, .offset = SA1111_USB,
.skpcr_mask = SKPCR_UCLKEN, .skpcr_mask = SKPCR_UCLKEN,
.dma = true,
.devid = SA1111_DEVID_USB, .devid = SA1111_DEVID_USB,
.irq = { .irq = {
IRQ_USBPWR, IRQ_USBPWR,
@ -142,6 +144,7 @@ static struct sa1111_dev_info sa1111_devices[] = {
{ {
.offset = 0x0600, .offset = 0x0600,
.skpcr_mask = SKPCR_I2SCLKEN | SKPCR_L3CLKEN, .skpcr_mask = SKPCR_I2SCLKEN | SKPCR_L3CLKEN,
.dma = true,
.devid = SA1111_DEVID_SAC, .devid = SA1111_DEVID_SAC,
.irq = { .irq = {
AUDXMTDMADONEA, AUDXMTDMADONEA,
@ -641,10 +644,10 @@ sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent,
dev->irq[i] = sachip->irq_base + info->irq[i]; dev->irq[i] = sachip->irq_base + info->irq[i];
/* /*
* If the parent device has a DMA mask associated with it, * If the parent device has a DMA mask associated with it, and
* propagate it down to the children. * this child supports DMA, propagate it down to the children.
*/ */
if (sachip->dev->dma_mask) { if (info->dma && sachip->dev->dma_mask) {
dev->dma_mask = *sachip->dev->dma_mask; dev->dma_mask = *sachip->dev->dma_mask;
dev->dev.dma_mask = &dev->dma_mask; dev->dev.dma_mask = &dev->dma_mask;
dev->dev.coherent_dma_mask = sachip->dev->coherent_dma_mask; dev->dev.coherent_dma_mask = sachip->dev->coherent_dma_mask;