|
@@ -161,7 +161,7 @@ static int pnp_assign_irq(struct pnp_dev *dev, struct pnp_irq *rule, int idx)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx)
|
|
|
+static void pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx)
|
|
|
{
|
|
|
resource_size_t *start, *end;
|
|
|
unsigned long *flags;
|
|
@@ -173,15 +173,14 @@ static int pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx)
|
|
|
};
|
|
|
|
|
|
if (idx >= PNP_MAX_DMA) {
|
|
|
- pnp_err
|
|
|
- ("More than 2 dmas is incompatible with pnp specifications.");
|
|
|
- /* pretend we were successful so at least the manager won't try again */
|
|
|
- return 1;
|
|
|
+ pnp_err("More than 2 dmas is incompatible with pnp "
|
|
|
+ "specifications.");
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
/* check if this resource has been manually set, if so skip */
|
|
|
if (!(dev->res.dma_resource[idx].flags & IORESOURCE_AUTO))
|
|
|
- return 1;
|
|
|
+ return;
|
|
|
|
|
|
start = &dev->res.dma_resource[idx].start;
|
|
|
end = &dev->res.dma_resource[idx].end;
|
|
@@ -191,19 +190,17 @@ static int pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx)
|
|
|
*flags |= rule->flags | IORESOURCE_DMA;
|
|
|
*flags &= ~IORESOURCE_UNSET;
|
|
|
|
|
|
- if (!rule->map) {
|
|
|
- *flags |= IORESOURCE_DISABLED;
|
|
|
- return 1; /* skip disabled resource requests */
|
|
|
- }
|
|
|
-
|
|
|
for (i = 0; i < 8; i++) {
|
|
|
if (rule->map & (1 << xtab[i])) {
|
|
|
*start = *end = xtab[i];
|
|
|
if (pnp_check_dma(dev, idx))
|
|
|
- return 1;
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
- return 0;
|
|
|
+#ifdef MAX_DMA_CHANNELS
|
|
|
+ *start = *end = MAX_DMA_CHANNELS;
|
|
|
+#endif
|
|
|
+ *flags |= IORESOURCE_UNSET | IORESOURCE_DISABLED;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -330,8 +327,7 @@ static int pnp_assign_resources(struct pnp_dev *dev, int depnum)
|
|
|
irq = irq->next;
|
|
|
}
|
|
|
while (dma) {
|
|
|
- if (!pnp_assign_dma(dev, dma, ndma))
|
|
|
- goto fail;
|
|
|
+ pnp_assign_dma(dev, dma, ndma);
|
|
|
ndma++;
|
|
|
dma = dma->next;
|
|
|
}
|
|
@@ -367,8 +363,7 @@ static int pnp_assign_resources(struct pnp_dev *dev, int depnum)
|
|
|
irq = irq->next;
|
|
|
}
|
|
|
while (dma) {
|
|
|
- if (!pnp_assign_dma(dev, dma, ndma))
|
|
|
- goto fail;
|
|
|
+ pnp_assign_dma(dev, dma, ndma);
|
|
|
ndma++;
|
|
|
dma = dma->next;
|
|
|
}
|