diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-06-28 07:00:57 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-06-28 07:00:57 -0400 |
commit | 3e79a8a67d6f28b2b1d4344253ca612e77cca8e6 (patch) | |
tree | e33eb07f35c50458e2262b784f330bc4a32a7cb9 | |
parent | 207bc1181b1c03ab6ecb55bca5b307606dd1d6bc (diff) | |
parent | bdf0eb3a026922dbf57f6839f3184c8d2ecc5f2e (diff) |
Merge branch 'pnp'
* pnp:
pnp: restore automatic resolution of DMA conflicts
-rw-r--r-- | drivers/pnp/manager.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/pnp/manager.c b/drivers/pnp/manager.c index 95cebf0185de..9357aa779048 100644 --- a/drivers/pnp/manager.c +++ b/drivers/pnp/manager.c | |||
@@ -211,6 +211,12 @@ static int pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx) | |||
211 | res->start = -1; | 211 | res->start = -1; |
212 | res->end = -1; | 212 | res->end = -1; |
213 | 213 | ||
214 | if (!rule->map) { | ||
215 | res->flags |= IORESOURCE_DISABLED; | ||
216 | pnp_dbg(&dev->dev, " dma %d disabled\n", idx); | ||
217 | goto __add; | ||
218 | } | ||
219 | |||
214 | for (i = 0; i < 8; i++) { | 220 | for (i = 0; i < 8; i++) { |
215 | if (rule->map & (1 << xtab[i])) { | 221 | if (rule->map & (1 << xtab[i])) { |
216 | res->start = res->end = xtab[i]; | 222 | res->start = res->end = xtab[i]; |
@@ -218,11 +224,9 @@ static int pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx) | |||
218 | goto __add; | 224 | goto __add; |
219 | } | 225 | } |
220 | } | 226 | } |
221 | #ifdef MAX_DMA_CHANNELS | 227 | |
222 | res->start = res->end = MAX_DMA_CHANNELS; | 228 | pnp_dbg(&dev->dev, " couldn't assign dma %d\n", idx); |
223 | #endif | 229 | return -EBUSY; |
224 | res->flags |= IORESOURCE_DISABLED; | ||
225 | pnp_dbg(&dev->dev, " disable dma %d\n", idx); | ||
226 | 230 | ||
227 | __add: | 231 | __add: |
228 | pnp_add_dma_resource(dev, res->start, res->flags); | 232 | pnp_add_dma_resource(dev, res->start, res->flags); |