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:
parent
09a2ba2fa0
commit
21d1c7702e
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue