diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-10-19 18:32:32 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-10-19 18:32:32 -0400 |
commit | 86f3a492bb09eee5745b93af35f2212179c251fd (patch) | |
tree | 45d0f4725943fe0d0f16d44db3e643ce1f4d4553 | |
parent | 8f173b5bf460a85791c131e774dc992f8cd578c1 (diff) |
icside: use ec->dma directly
* hwif->hwif_data contains pointer to struct expansion_card so use ec->dma
directly instead of caching it in hwif->hw.dma.
* Remove no longer needed hw_regs_t.dma and NO_DMA define.
Cc: Russell King <rmk@arm.linux.org.uk>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
-rw-r--r-- | drivers/ide/arm/icside.c | 20 | ||||
-rw-r--r-- | drivers/ide/h8300/ide-h8300.c | 1 | ||||
-rw-r--r-- | drivers/ide/ide-pnp.c | 1 | ||||
-rw-r--r-- | drivers/ide/ide.c | 1 | ||||
-rw-r--r-- | drivers/ide/legacy/ide_platform.c | 1 | ||||
-rw-r--r-- | drivers/ide/legacy/q40ide.c | 3 | ||||
-rw-r--r-- | include/linux/ide.h | 5 |
7 files changed, 11 insertions, 21 deletions
diff --git a/drivers/ide/arm/icside.c b/drivers/ide/arm/icside.c index fda3f870d7cd..22fc46d63448 100644 --- a/drivers/ide/arm/icside.c +++ b/drivers/ide/arm/icside.c | |||
@@ -316,27 +316,29 @@ static int icside_dma_end(ide_drive_t *drive) | |||
316 | 316 | ||
317 | drive->waiting_for_dma = 0; | 317 | drive->waiting_for_dma = 0; |
318 | 318 | ||
319 | disable_dma(hwif->hw.dma); | 319 | disable_dma(state->dev->dma); |
320 | 320 | ||
321 | /* Teardown mappings after DMA has completed. */ | 321 | /* Teardown mappings after DMA has completed. */ |
322 | dma_unmap_sg(state->dev, hwif->sg_table, hwif->sg_nents, | 322 | dma_unmap_sg(state->dev, hwif->sg_table, hwif->sg_nents, |
323 | hwif->sg_dma_direction); | 323 | hwif->sg_dma_direction); |
324 | 324 | ||
325 | return get_dma_residue(hwif->hw.dma) != 0; | 325 | return get_dma_residue(state->dev->dma) != 0; |
326 | } | 326 | } |
327 | 327 | ||
328 | static void icside_dma_start(ide_drive_t *drive) | 328 | static void icside_dma_start(ide_drive_t *drive) |
329 | { | 329 | { |
330 | ide_hwif_t *hwif = HWIF(drive); | 330 | ide_hwif_t *hwif = HWIF(drive); |
331 | struct icside_state *state = hwif->hwif_data; | ||
331 | 332 | ||
332 | /* We can not enable DMA on both channels simultaneously. */ | 333 | /* We can not enable DMA on both channels simultaneously. */ |
333 | BUG_ON(dma_channel_active(hwif->hw.dma)); | 334 | BUG_ON(dma_channel_active(state->dev->dma)); |
334 | enable_dma(hwif->hw.dma); | 335 | enable_dma(state->dev->dma); |
335 | } | 336 | } |
336 | 337 | ||
337 | static int icside_dma_setup(ide_drive_t *drive) | 338 | static int icside_dma_setup(ide_drive_t *drive) |
338 | { | 339 | { |
339 | ide_hwif_t *hwif = HWIF(drive); | 340 | ide_hwif_t *hwif = HWIF(drive); |
341 | struct icside_state *state = hwif->hwif_data; | ||
340 | struct request *rq = hwif->hwgroup->rq; | 342 | struct request *rq = hwif->hwgroup->rq; |
341 | unsigned int dma_mode; | 343 | unsigned int dma_mode; |
342 | 344 | ||
@@ -348,7 +350,7 @@ static int icside_dma_setup(ide_drive_t *drive) | |||
348 | /* | 350 | /* |
349 | * We can not enable DMA on both channels. | 351 | * We can not enable DMA on both channels. |
350 | */ | 352 | */ |
351 | BUG_ON(dma_channel_active(hwif->hw.dma)); | 353 | BUG_ON(dma_channel_active(state->dev->dma)); |
352 | 354 | ||
353 | icside_build_sglist(drive, rq); | 355 | icside_build_sglist(drive, rq); |
354 | 356 | ||
@@ -365,14 +367,14 @@ static int icside_dma_setup(ide_drive_t *drive) | |||
365 | /* | 367 | /* |
366 | * Select the correct timing for this drive. | 368 | * Select the correct timing for this drive. |
367 | */ | 369 | */ |
368 | set_dma_speed(hwif->hw.dma, drive->drive_data); | 370 | set_dma_speed(state->dev->dma, drive->drive_data); |
369 | 371 | ||
370 | /* | 372 | /* |
371 | * Tell the DMA engine about the SG table and | 373 | * Tell the DMA engine about the SG table and |
372 | * data direction. | 374 | * data direction. |
373 | */ | 375 | */ |
374 | set_dma_sg(hwif->hw.dma, hwif->sg_table, hwif->sg_nents); | 376 | set_dma_sg(state->dev->dma, hwif->sg_table, hwif->sg_nents); |
375 | set_dma_mode(hwif->hw.dma, dma_mode); | 377 | set_dma_mode(state->dev->dma, dma_mode); |
376 | 378 | ||
377 | drive->waiting_for_dma = 1; | 379 | drive->waiting_for_dma = 1; |
378 | 380 | ||
@@ -572,7 +574,6 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec) | |||
572 | hwif->serialized = 1; | 574 | hwif->serialized = 1; |
573 | hwif->config_data = (unsigned long)ioc_base; | 575 | hwif->config_data = (unsigned long)ioc_base; |
574 | hwif->select_data = sel; | 576 | hwif->select_data = sel; |
575 | hwif->hw.dma = ec->dma; | ||
576 | 577 | ||
577 | mate->maskproc = icside_maskproc; | 578 | mate->maskproc = icside_maskproc; |
578 | mate->channel = 1; | 579 | mate->channel = 1; |
@@ -581,7 +582,6 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec) | |||
581 | mate->serialized = 1; | 582 | mate->serialized = 1; |
582 | mate->config_data = (unsigned long)ioc_base; | 583 | mate->config_data = (unsigned long)ioc_base; |
583 | mate->select_data = sel | 1; | 584 | mate->select_data = sel | 1; |
584 | mate->hw.dma = ec->dma; | ||
585 | 585 | ||
586 | if (ec->dma != NO_DMA && !request_dma(ec->dma, hwif->name)) { | 586 | if (ec->dma != NO_DMA && !request_dma(ec->dma, hwif->name)) { |
587 | icside_dma_init(hwif); | 587 | icside_dma_init(hwif); |
diff --git a/drivers/ide/h8300/ide-h8300.c b/drivers/ide/h8300/ide-h8300.c index 37b9174a7edc..4a49b5c59acb 100644 --- a/drivers/ide/h8300/ide-h8300.c +++ b/drivers/ide/h8300/ide-h8300.c | |||
@@ -68,7 +68,6 @@ static inline void hw_setup(hw_regs_t *hw) | |||
68 | hw->io_ports[i] = CONFIG_H8300_IDE_BASE + H8300_IDE_GAP*i; | 68 | hw->io_ports[i] = CONFIG_H8300_IDE_BASE + H8300_IDE_GAP*i; |
69 | hw->io_ports[IDE_CONTROL_OFFSET] = CONFIG_H8300_IDE_ALT; | 69 | hw->io_ports[IDE_CONTROL_OFFSET] = CONFIG_H8300_IDE_ALT; |
70 | hw->irq = EXT_IRQ0 + CONFIG_H8300_IDE_IRQ; | 70 | hw->irq = EXT_IRQ0 + CONFIG_H8300_IDE_IRQ; |
71 | hw->dma = NO_DMA; | ||
72 | hw->chipset = ide_generic; | 71 | hw->chipset = ide_generic; |
73 | } | 72 | } |
74 | 73 | ||
diff --git a/drivers/ide/ide-pnp.c b/drivers/ide/ide-pnp.c index 2afaa87022e3..e245521af7b5 100644 --- a/drivers/ide/ide-pnp.c +++ b/drivers/ide/ide-pnp.c | |||
@@ -40,7 +40,6 @@ static int idepnp_probe(struct pnp_dev * dev, const struct pnp_device_id *dev_id | |||
40 | ide_std_init_ports(&hw, pnp_port_start(dev, 0), | 40 | ide_std_init_ports(&hw, pnp_port_start(dev, 0), |
41 | pnp_port_start(dev, 1)); | 41 | pnp_port_start(dev, 1)); |
42 | hw.irq = pnp_irq(dev, 0); | 42 | hw.irq = pnp_irq(dev, 0); |
43 | hw.dma = NO_DMA; | ||
44 | 43 | ||
45 | index = ide_register_hw(&hw, NULL, 1, &hwif); | 44 | index = ide_register_hw(&hw, NULL, 1, &hwif); |
46 | 45 | ||
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index 9284f64bc2ee..4a668d51965d 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c | |||
@@ -678,7 +678,6 @@ void ide_setup_ports ( hw_regs_t *hw, | |||
678 | } | 678 | } |
679 | } | 679 | } |
680 | hw->irq = irq; | 680 | hw->irq = irq; |
681 | hw->dma = NO_DMA; | ||
682 | hw->ack_intr = ack_intr; | 681 | hw->ack_intr = ack_intr; |
683 | /* | 682 | /* |
684 | * hw->iops = iops; | 683 | * hw->iops = iops; |
diff --git a/drivers/ide/legacy/ide_platform.c b/drivers/ide/legacy/ide_platform.c index d1e76fa7869e..1bc9a57b6198 100644 --- a/drivers/ide/legacy/ide_platform.c +++ b/drivers/ide/legacy/ide_platform.c | |||
@@ -51,7 +51,6 @@ static ide_hwif_t *__devinit plat_ide_locate_hwif(void __iomem *base, | |||
51 | memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->hw.io_ports)); | 51 | memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->hw.io_ports)); |
52 | hwif->hw.irq = hwif->irq = irq; | 52 | hwif->hw.irq = hwif->irq = irq; |
53 | 53 | ||
54 | hwif->hw.dma = NO_DMA; | ||
55 | hwif->chipset = hwif->hw.chipset = ide_generic; | 54 | hwif->chipset = hwif->hw.chipset = ide_generic; |
56 | 55 | ||
57 | if (mmio) { | 56 | if (mmio) { |
diff --git a/drivers/ide/legacy/q40ide.c b/drivers/ide/legacy/q40ide.c index a530d6de194a..44cdb745a6ff 100644 --- a/drivers/ide/legacy/q40ide.c +++ b/drivers/ide/legacy/q40ide.c | |||
@@ -89,9 +89,8 @@ void q40_ide_setup_ports ( hw_regs_t *hw, | |||
89 | else | 89 | else |
90 | hw->io_ports[i] = Q40_ISA_IO_B(base + offsets[i]); | 90 | hw->io_ports[i] = Q40_ISA_IO_B(base + offsets[i]); |
91 | } | 91 | } |
92 | 92 | ||
93 | hw->irq = irq; | 93 | hw->irq = irq; |
94 | hw->dma = NO_DMA; | ||
95 | hw->ack_intr = ack_intr; | 94 | hw->ack_intr = ack_intr; |
96 | /* | 95 | /* |
97 | * hw->iops = iops; | 96 | * hw->iops = iops; |
diff --git a/include/linux/ide.h b/include/linux/ide.h index 39b76aaaa129..9686cb47eee1 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -192,10 +192,6 @@ typedef unsigned char byte; /* used everywhere */ | |||
192 | struct hwif_s; | 192 | struct hwif_s; |
193 | typedef int (ide_ack_intr_t)(struct hwif_s *); | 193 | typedef int (ide_ack_intr_t)(struct hwif_s *); |
194 | 194 | ||
195 | #ifndef NO_DMA | ||
196 | #define NO_DMA 255 | ||
197 | #endif | ||
198 | |||
199 | /* | 195 | /* |
200 | * hwif_chipset_t is used to keep track of the specific hardware | 196 | * hwif_chipset_t is used to keep track of the specific hardware |
201 | * chipset used by each IDE interface, if known. | 197 | * chipset used by each IDE interface, if known. |
@@ -217,7 +213,6 @@ typedef u8 hwif_chipset_t; | |||
217 | typedef struct hw_regs_s { | 213 | typedef struct hw_regs_s { |
218 | unsigned long io_ports[IDE_NR_PORTS]; /* task file registers */ | 214 | unsigned long io_ports[IDE_NR_PORTS]; /* task file registers */ |
219 | int irq; /* our irq number */ | 215 | int irq; /* our irq number */ |
220 | int dma; /* our dma entry */ | ||
221 | ide_ack_intr_t *ack_intr; /* acknowledge interrupt */ | 216 | ide_ack_intr_t *ack_intr; /* acknowledge interrupt */ |
222 | hwif_chipset_t chipset; | 217 | hwif_chipset_t chipset; |
223 | struct device *dev; | 218 | struct device *dev; |