diff options
-rw-r--r-- | drivers/ide/arm/icside.c | 2 | ||||
-rw-r--r-- | drivers/ide/arm/palm_bk3710.c | 2 | ||||
-rw-r--r-- | drivers/ide/cris/ide-cris.c | 4 | ||||
-rw-r--r-- | drivers/ide/ide-dma.c | 33 | ||||
-rw-r--r-- | drivers/ide/ide-taskfile.c | 2 | ||||
-rw-r--r-- | drivers/ide/mips/au1xxx-ide.c | 2 | ||||
-rw-r--r-- | drivers/ide/pci/alim15x3.c | 11 | ||||
-rw-r--r-- | drivers/ide/pci/cmd64x.c | 25 | ||||
-rw-r--r-- | drivers/ide/pci/cs5520.c | 9 | ||||
-rw-r--r-- | drivers/ide/pci/hpt366.c | 26 | ||||
-rw-r--r-- | drivers/ide/pci/ns87415.c | 8 | ||||
-rw-r--r-- | drivers/ide/pci/pdc202xx_old.c | 12 | ||||
-rw-r--r-- | drivers/ide/pci/sc1200.c | 9 | ||||
-rw-r--r-- | drivers/ide/pci/scc_pata.c | 7 | ||||
-rw-r--r-- | drivers/ide/pci/sgiioc4.c | 2 | ||||
-rw-r--r-- | drivers/ide/pci/sl82c105.c | 6 | ||||
-rw-r--r-- | drivers/ide/pci/tc86c001.c | 9 | ||||
-rw-r--r-- | drivers/ide/pci/trm290.c | 2 | ||||
-rw-r--r-- | drivers/ide/ppc/pmac.c | 4 | ||||
-rw-r--r-- | drivers/ide/setup-pci.c | 2 | ||||
-rw-r--r-- | include/linux/ide.h | 8 |
21 files changed, 130 insertions, 55 deletions
diff --git a/drivers/ide/arm/icside.c b/drivers/ide/arm/icside.c index adfeed45f4c0..7d642f44e35b 100644 --- a/drivers/ide/arm/icside.c +++ b/drivers/ide/arm/icside.c | |||
@@ -392,7 +392,7 @@ static int icside_dma_init(ide_hwif_t *hwif, const struct ide_port_info *d) | |||
392 | return 0; | 392 | return 0; |
393 | } | 393 | } |
394 | 394 | ||
395 | static struct ide_dma_ops icside_v6_dma_ops = { | 395 | static const struct ide_dma_ops icside_v6_dma_ops = { |
396 | .dma_host_set = icside_dma_host_set, | 396 | .dma_host_set = icside_dma_host_set, |
397 | .dma_setup = icside_dma_setup, | 397 | .dma_setup = icside_dma_setup, |
398 | .dma_exec_cmd = icside_dma_exec_cmd, | 398 | .dma_exec_cmd = icside_dma_exec_cmd, |
diff --git a/drivers/ide/arm/palm_bk3710.c b/drivers/ide/arm/palm_bk3710.c index 5853f1109807..8fa34e26443a 100644 --- a/drivers/ide/arm/palm_bk3710.c +++ b/drivers/ide/arm/palm_bk3710.c | |||
@@ -328,7 +328,7 @@ static int __devinit palm_bk3710_init_dma(ide_hwif_t *hwif, | |||
328 | if (ide_allocate_dma_engine(hwif)) | 328 | if (ide_allocate_dma_engine(hwif)) |
329 | return -1; | 329 | return -1; |
330 | 330 | ||
331 | ide_setup_dma(hwif, base, d); | 331 | ide_setup_dma(hwif, base); |
332 | 332 | ||
333 | return 0; | 333 | return 0; |
334 | } | 334 | } |
diff --git a/drivers/ide/cris/ide-cris.c b/drivers/ide/cris/ide-cris.c index 12d9842dc7cc..a62ca75c7e28 100644 --- a/drivers/ide/cris/ide-cris.c +++ b/drivers/ide/cris/ide-cris.c | |||
@@ -782,7 +782,7 @@ static const struct ide_port_ops cris_port_ops = { | |||
782 | .set_dma_mode = cris_set_dma_mode, | 782 | .set_dma_mode = cris_set_dma_mode, |
783 | }; | 783 | }; |
784 | 784 | ||
785 | static struct ide_dma_ops cris_dma_ops; | 785 | static const struct ide_dma_ops cris_dma_ops; |
786 | 786 | ||
787 | static const struct ide_port_info cris_port_info __initdata = { | 787 | static const struct ide_port_info cris_port_info __initdata = { |
788 | .chipset = ide_etrax100, | 788 | .chipset = ide_etrax100, |
@@ -1072,7 +1072,7 @@ static void cris_dma_start(ide_drive_t *drive) | |||
1072 | } | 1072 | } |
1073 | } | 1073 | } |
1074 | 1074 | ||
1075 | static struct ide_dma_ops cris_dma_ops = { | 1075 | static const struct ide_dma_ops cris_dma_ops = { |
1076 | .dma_host_set = cris_dma_host_set, | 1076 | .dma_host_set = cris_dma_host_set, |
1077 | .dma_setup = cris_dma_setup, | 1077 | .dma_setup = cris_dma_setup, |
1078 | .dma_exec_cmd = cris_dma_exec_cmd, | 1078 | .dma_exec_cmd = cris_dma_exec_cmd, |
diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c index a00d2598ec7f..c352cf27b6e7 100644 --- a/drivers/ide/ide-dma.c +++ b/drivers/ide/ide-dma.c | |||
@@ -482,11 +482,12 @@ int ide_dma_setup(ide_drive_t *drive) | |||
482 | 482 | ||
483 | EXPORT_SYMBOL_GPL(ide_dma_setup); | 483 | EXPORT_SYMBOL_GPL(ide_dma_setup); |
484 | 484 | ||
485 | static void ide_dma_exec_cmd(ide_drive_t *drive, u8 command) | 485 | void ide_dma_exec_cmd(ide_drive_t *drive, u8 command) |
486 | { | 486 | { |
487 | /* issue cmd to drive */ | 487 | /* issue cmd to drive */ |
488 | ide_execute_command(drive, command, &ide_dma_intr, 2*WAIT_CMD, dma_timer_expiry); | 488 | ide_execute_command(drive, command, &ide_dma_intr, 2*WAIT_CMD, dma_timer_expiry); |
489 | } | 489 | } |
490 | EXPORT_SYMBOL_GPL(ide_dma_exec_cmd); | ||
490 | 491 | ||
491 | void ide_dma_start(ide_drive_t *drive) | 492 | void ide_dma_start(ide_drive_t *drive) |
492 | { | 493 | { |
@@ -532,7 +533,7 @@ int __ide_dma_end (ide_drive_t *drive) | |||
532 | EXPORT_SYMBOL(__ide_dma_end); | 533 | EXPORT_SYMBOL(__ide_dma_end); |
533 | 534 | ||
534 | /* returns 1 if dma irq issued, 0 otherwise */ | 535 | /* returns 1 if dma irq issued, 0 otherwise */ |
535 | static int __ide_dma_test_irq(ide_drive_t *drive) | 536 | int ide_dma_test_irq(ide_drive_t *drive) |
536 | { | 537 | { |
537 | ide_hwif_t *hwif = HWIF(drive); | 538 | ide_hwif_t *hwif = HWIF(drive); |
538 | u8 dma_stat = hwif->INB(hwif->dma_status); | 539 | u8 dma_stat = hwif->INB(hwif->dma_status); |
@@ -545,6 +546,7 @@ static int __ide_dma_test_irq(ide_drive_t *drive) | |||
545 | drive->name, __func__); | 546 | drive->name, __func__); |
546 | return 0; | 547 | return 0; |
547 | } | 548 | } |
549 | EXPORT_SYMBOL_GPL(ide_dma_test_irq); | ||
548 | #else | 550 | #else |
549 | static inline int config_drive_for_dma(ide_drive_t *drive) { return 0; } | 551 | static inline int config_drive_for_dma(ide_drive_t *drive) { return 0; } |
550 | #endif /* CONFIG_BLK_DEV_IDEDMA_SFF */ | 552 | #endif /* CONFIG_BLK_DEV_IDEDMA_SFF */ |
@@ -839,21 +841,19 @@ int ide_allocate_dma_engine(ide_hwif_t *hwif) | |||
839 | } | 841 | } |
840 | EXPORT_SYMBOL_GPL(ide_allocate_dma_engine); | 842 | EXPORT_SYMBOL_GPL(ide_allocate_dma_engine); |
841 | 843 | ||
842 | static struct ide_dma_ops sff_dma_ops = { | 844 | static const struct ide_dma_ops sff_dma_ops = { |
843 | .dma_host_set = ide_dma_host_set, | 845 | .dma_host_set = ide_dma_host_set, |
844 | .dma_setup = ide_dma_setup, | 846 | .dma_setup = ide_dma_setup, |
845 | .dma_exec_cmd = ide_dma_exec_cmd, | 847 | .dma_exec_cmd = ide_dma_exec_cmd, |
846 | .dma_start = ide_dma_start, | 848 | .dma_start = ide_dma_start, |
847 | .dma_end = __ide_dma_end, | 849 | .dma_end = __ide_dma_end, |
848 | .dma_test_irq = __ide_dma_test_irq, | 850 | .dma_test_irq = ide_dma_test_irq, |
849 | .dma_timeout = ide_dma_timeout, | 851 | .dma_timeout = ide_dma_timeout, |
850 | .dma_lost_irq = ide_dma_lost_irq, | 852 | .dma_lost_irq = ide_dma_lost_irq, |
851 | }; | 853 | }; |
852 | 854 | ||
853 | void ide_setup_dma(ide_hwif_t *hwif, unsigned long base, | 855 | void ide_setup_dma(ide_hwif_t *hwif, unsigned long base) |
854 | const struct ide_port_info *d) | ||
855 | { | 856 | { |
856 | struct ide_dma_ops *dma_ops = d->dma_ops ? d->dma_ops : &sff_dma_ops; | ||
857 | hwif->dma_base = base; | 857 | hwif->dma_base = base; |
858 | 858 | ||
859 | if (!hwif->dma_command) | 859 | if (!hwif->dma_command) |
@@ -867,24 +867,7 @@ void ide_setup_dma(ide_hwif_t *hwif, unsigned long base, | |||
867 | if (!hwif->dma_prdtable) | 867 | if (!hwif->dma_prdtable) |
868 | hwif->dma_prdtable = hwif->dma_base + 4; | 868 | hwif->dma_prdtable = hwif->dma_base + 4; |
869 | 869 | ||
870 | hwif->dma_ops = dma_ops; | 870 | hwif->dma_ops = &sff_dma_ops; |
871 | |||
872 | if (dma_ops->dma_host_set == NULL) | ||
873 | dma_ops->dma_host_set = ide_dma_host_set; | ||
874 | if (dma_ops->dma_setup == NULL) | ||
875 | dma_ops->dma_setup = ide_dma_setup; | ||
876 | if (dma_ops->dma_exec_cmd == NULL) | ||
877 | dma_ops->dma_exec_cmd = ide_dma_exec_cmd; | ||
878 | if (dma_ops->dma_start == NULL) | ||
879 | dma_ops->dma_start = ide_dma_start; | ||
880 | if (dma_ops->dma_end == NULL) | ||
881 | dma_ops->dma_end = __ide_dma_end; | ||
882 | if (dma_ops->dma_test_irq == NULL) | ||
883 | dma_ops->dma_test_irq = __ide_dma_test_irq; | ||
884 | if (dma_ops->dma_timeout == NULL) | ||
885 | dma_ops->dma_timeout = ide_dma_timeout; | ||
886 | if (dma_ops->dma_lost_irq == NULL) | ||
887 | dma_ops->dma_lost_irq = ide_dma_lost_irq; | ||
888 | } | 871 | } |
889 | 872 | ||
890 | EXPORT_SYMBOL_GPL(ide_setup_dma); | 873 | EXPORT_SYMBOL_GPL(ide_setup_dma); |
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c index 9504aa54c33b..a317ca9c46e5 100644 --- a/drivers/ide/ide-taskfile.c +++ b/drivers/ide/ide-taskfile.c | |||
@@ -135,7 +135,7 @@ ide_startstop_t do_rw_taskfile (ide_drive_t *drive, ide_task_t *task) | |||
135 | ide_hwif_t *hwif = HWIF(drive); | 135 | ide_hwif_t *hwif = HWIF(drive); |
136 | struct ide_taskfile *tf = &task->tf; | 136 | struct ide_taskfile *tf = &task->tf; |
137 | ide_handler_t *handler = NULL; | 137 | ide_handler_t *handler = NULL; |
138 | struct ide_dma_ops *dma_ops = hwif->dma_ops; | 138 | const struct ide_dma_ops *dma_ops = hwif->dma_ops; |
139 | 139 | ||
140 | if (task->data_phase == TASKFILE_MULTI_IN || | 140 | if (task->data_phase == TASKFILE_MULTI_IN || |
141 | task->data_phase == TASKFILE_MULTI_OUT) { | 141 | task->data_phase == TASKFILE_MULTI_OUT) { |
diff --git a/drivers/ide/mips/au1xxx-ide.c b/drivers/ide/mips/au1xxx-ide.c index 579caa3b06f4..3485a310c95b 100644 --- a/drivers/ide/mips/au1xxx-ide.c +++ b/drivers/ide/mips/au1xxx-ide.c | |||
@@ -380,7 +380,7 @@ static void auide_dma_timeout(ide_drive_t *drive) | |||
380 | auide_dma_end(drive); | 380 | auide_dma_end(drive); |
381 | } | 381 | } |
382 | 382 | ||
383 | static struct ide_dma_ops au1xxx_dma_ops = { | 383 | static const struct ide_dma_ops au1xxx_dma_ops = { |
384 | .dma_host_set = auide_dma_host_set, | 384 | .dma_host_set = auide_dma_host_set, |
385 | .dma_setup = auide_dma_setup, | 385 | .dma_setup = auide_dma_setup, |
386 | .dma_exec_cmd = auide_dma_exec_cmd, | 386 | .dma_exec_cmd = auide_dma_exec_cmd, |
diff --git a/drivers/ide/pci/alim15x3.c b/drivers/ide/pci/alim15x3.c index 987db35199e6..b5a3bc33e167 100644 --- a/drivers/ide/pci/alim15x3.c +++ b/drivers/ide/pci/alim15x3.c | |||
@@ -731,7 +731,7 @@ static int __devinit init_dma_ali15x3(ide_hwif_t *hwif, | |||
731 | if (ide_allocate_dma_engine(hwif)) | 731 | if (ide_allocate_dma_engine(hwif)) |
732 | return -1; | 732 | return -1; |
733 | 733 | ||
734 | ide_setup_dma(hwif, base, d); | 734 | ide_setup_dma(hwif, base); |
735 | 735 | ||
736 | return 0; | 736 | return 0; |
737 | } | 737 | } |
@@ -743,8 +743,15 @@ static const struct ide_port_ops ali_port_ops = { | |||
743 | .cable_detect = ali_cable_detect, | 743 | .cable_detect = ali_cable_detect, |
744 | }; | 744 | }; |
745 | 745 | ||
746 | static struct ide_dma_ops ali_dma_ops = { | 746 | static const struct ide_dma_ops ali_dma_ops = { |
747 | .dma_host_set = ide_dma_host_set, | ||
747 | .dma_setup = ali15x3_dma_setup, | 748 | .dma_setup = ali15x3_dma_setup, |
749 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
750 | .dma_start = ide_dma_start, | ||
751 | .dma_end = __ide_dma_end, | ||
752 | .dma_test_irq = ide_dma_test_irq, | ||
753 | .dma_lost_irq = ide_dma_lost_irq, | ||
754 | .dma_timeout = ide_dma_timeout, | ||
748 | }; | 755 | }; |
749 | 756 | ||
750 | static const struct ide_port_info ali15x3_chipset __devinitdata = { | 757 | static const struct ide_port_info ali15x3_chipset __devinitdata = { |
diff --git a/drivers/ide/pci/cmd64x.c b/drivers/ide/pci/cmd64x.c index 5fd252e6ed08..006fb62656bc 100644 --- a/drivers/ide/pci/cmd64x.c +++ b/drivers/ide/pci/cmd64x.c | |||
@@ -391,18 +391,37 @@ static const struct ide_port_ops cmd64x_port_ops = { | |||
391 | .cable_detect = cmd64x_cable_detect, | 391 | .cable_detect = cmd64x_cable_detect, |
392 | }; | 392 | }; |
393 | 393 | ||
394 | static struct ide_dma_ops cmd64x_dma_ops = { | 394 | static const struct ide_dma_ops cmd64x_dma_ops = { |
395 | .dma_host_set = ide_dma_host_set, | ||
396 | .dma_setup = ide_dma_setup, | ||
397 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
398 | .dma_start = ide_dma_start, | ||
395 | .dma_end = cmd64x_dma_end, | 399 | .dma_end = cmd64x_dma_end, |
396 | .dma_test_irq = cmd64x_dma_test_irq, | 400 | .dma_test_irq = cmd64x_dma_test_irq, |
401 | .dma_lost_irq = ide_dma_lost_irq, | ||
402 | .dma_timeout = ide_dma_timeout, | ||
397 | }; | 403 | }; |
398 | 404 | ||
399 | static struct ide_dma_ops cmd646_rev1_dma_ops = { | 405 | static const struct ide_dma_ops cmd646_rev1_dma_ops = { |
406 | .dma_host_set = ide_dma_host_set, | ||
407 | .dma_setup = ide_dma_setup, | ||
408 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
409 | .dma_start = ide_dma_start, | ||
400 | .dma_end = cmd646_1_dma_end, | 410 | .dma_end = cmd646_1_dma_end, |
411 | .dma_test_irq = ide_dma_test_irq, | ||
412 | .dma_lost_irq = ide_dma_lost_irq, | ||
413 | .dma_timeout = ide_dma_timeout, | ||
401 | }; | 414 | }; |
402 | 415 | ||
403 | static struct ide_dma_ops cmd648_dma_ops = { | 416 | static const struct ide_dma_ops cmd648_dma_ops = { |
417 | .dma_host_set = ide_dma_host_set, | ||
418 | .dma_setup = ide_dma_setup, | ||
419 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
420 | .dma_start = ide_dma_start, | ||
404 | .dma_end = cmd648_dma_end, | 421 | .dma_end = cmd648_dma_end, |
405 | .dma_test_irq = cmd648_dma_test_irq, | 422 | .dma_test_irq = cmd648_dma_test_irq, |
423 | .dma_lost_irq = ide_dma_lost_irq, | ||
424 | .dma_timeout = ide_dma_timeout, | ||
406 | }; | 425 | }; |
407 | 426 | ||
408 | static const struct ide_port_info cmd64x_chipsets[] __devinitdata = { | 427 | static const struct ide_port_info cmd64x_chipsets[] __devinitdata = { |
diff --git a/drivers/ide/pci/cs5520.c b/drivers/ide/pci/cs5520.c index 467d331c8109..17669a434438 100644 --- a/drivers/ide/pci/cs5520.c +++ b/drivers/ide/pci/cs5520.c | |||
@@ -108,8 +108,15 @@ static const struct ide_port_ops cs5520_port_ops = { | |||
108 | .set_dma_mode = cs5520_set_dma_mode, | 108 | .set_dma_mode = cs5520_set_dma_mode, |
109 | }; | 109 | }; |
110 | 110 | ||
111 | static struct ide_dma_ops cs5520_dma_ops = { | 111 | static const struct ide_dma_ops cs5520_dma_ops = { |
112 | .dma_host_set = cs5520_dma_host_set, | 112 | .dma_host_set = cs5520_dma_host_set, |
113 | .dma_setup = ide_dma_setup, | ||
114 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
115 | .dma_start = ide_dma_start, | ||
116 | .dma_end = __ide_dma_end, | ||
117 | .dma_test_irq = ide_dma_test_irq, | ||
118 | .dma_lost_irq = ide_dma_lost_irq, | ||
119 | .dma_timeout = ide_dma_timeout, | ||
113 | }; | 120 | }; |
114 | 121 | ||
115 | #define DECLARE_CS_DEV(name_str) \ | 122 | #define DECLARE_CS_DEV(name_str) \ |
diff --git a/drivers/ide/pci/hpt366.c b/drivers/ide/pci/hpt366.c index 5030bda1adeb..8c02961d0188 100644 --- a/drivers/ide/pci/hpt366.c +++ b/drivers/ide/pci/hpt366.c | |||
@@ -1347,7 +1347,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif, | |||
1347 | if (ide_allocate_dma_engine(hwif)) | 1347 | if (ide_allocate_dma_engine(hwif)) |
1348 | return -1; | 1348 | return -1; |
1349 | 1349 | ||
1350 | ide_setup_dma(hwif, base, d); | 1350 | ide_setup_dma(hwif, base); |
1351 | 1351 | ||
1352 | return 0; | 1352 | return 0; |
1353 | } | 1353 | } |
@@ -1415,19 +1415,37 @@ static const struct ide_port_ops hpt3xx_port_ops = { | |||
1415 | .cable_detect = hpt3xx_cable_detect, | 1415 | .cable_detect = hpt3xx_cable_detect, |
1416 | }; | 1416 | }; |
1417 | 1417 | ||
1418 | static struct ide_dma_ops hpt37x_dma_ops = { | 1418 | static const struct ide_dma_ops hpt37x_dma_ops = { |
1419 | .dma_host_set = ide_dma_host_set, | ||
1420 | .dma_setup = ide_dma_setup, | ||
1421 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
1422 | .dma_start = ide_dma_start, | ||
1419 | .dma_end = hpt374_dma_end, | 1423 | .dma_end = hpt374_dma_end, |
1420 | .dma_test_irq = hpt374_dma_test_irq, | 1424 | .dma_test_irq = hpt374_dma_test_irq, |
1425 | .dma_lost_irq = ide_dma_lost_irq, | ||
1426 | .dma_timeout = ide_dma_timeout, | ||
1421 | }; | 1427 | }; |
1422 | 1428 | ||
1423 | static struct ide_dma_ops hpt370_dma_ops = { | 1429 | static const struct ide_dma_ops hpt370_dma_ops = { |
1430 | .dma_host_set = ide_dma_host_set, | ||
1431 | .dma_setup = ide_dma_setup, | ||
1432 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
1424 | .dma_start = hpt370_dma_start, | 1433 | .dma_start = hpt370_dma_start, |
1425 | .dma_end = hpt370_dma_end, | 1434 | .dma_end = hpt370_dma_end, |
1435 | .dma_test_irq = ide_dma_test_irq, | ||
1436 | .dma_lost_irq = ide_dma_lost_irq, | ||
1426 | .dma_timeout = hpt370_dma_timeout, | 1437 | .dma_timeout = hpt370_dma_timeout, |
1427 | }; | 1438 | }; |
1428 | 1439 | ||
1429 | static struct ide_dma_ops hpt36x_dma_ops = { | 1440 | static const struct ide_dma_ops hpt36x_dma_ops = { |
1441 | .dma_host_set = ide_dma_host_set, | ||
1442 | .dma_setup = ide_dma_setup, | ||
1443 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
1444 | .dma_start = ide_dma_start, | ||
1445 | .dma_end = __ide_dma_end, | ||
1446 | .dma_test_irq = ide_dma_test_irq, | ||
1430 | .dma_lost_irq = hpt366_dma_lost_irq, | 1447 | .dma_lost_irq = hpt366_dma_lost_irq, |
1448 | .dma_timeout = ide_dma_timeout, | ||
1431 | }; | 1449 | }; |
1432 | 1450 | ||
1433 | static const struct ide_port_info hpt366_chipsets[] __devinitdata = { | 1451 | static const struct ide_port_info hpt366_chipsets[] __devinitdata = { |
diff --git a/drivers/ide/pci/ns87415.c b/drivers/ide/pci/ns87415.c index 5a6dec0e1f4d..e1b0c9a9ab9c 100644 --- a/drivers/ide/pci/ns87415.c +++ b/drivers/ide/pci/ns87415.c | |||
@@ -258,9 +258,15 @@ static const struct ide_port_ops ns87415_port_ops = { | |||
258 | .selectproc = ns87415_selectproc, | 258 | .selectproc = ns87415_selectproc, |
259 | }; | 259 | }; |
260 | 260 | ||
261 | static struct ide_dma_ops ns87415_dma_ops = { | 261 | static const struct ide_dma_ops ns87415_dma_ops = { |
262 | .dma_host_set = ide_dma_host_set, | ||
262 | .dma_setup = ns87415_dma_setup, | 263 | .dma_setup = ns87415_dma_setup, |
264 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
265 | .dma_start = ide_dma_start, | ||
263 | .dma_end = ns87415_dma_end, | 266 | .dma_end = ns87415_dma_end, |
267 | .dma_test_irq = ide_dma_test_irq, | ||
268 | .dma_lost_irq = ide_dma_lost_irq, | ||
269 | .dma_timeout = ide_dma_timeout, | ||
264 | }; | 270 | }; |
265 | 271 | ||
266 | static const struct ide_port_info ns87415_chipset __devinitdata = { | 272 | static const struct ide_port_info ns87415_chipset __devinitdata = { |
diff --git a/drivers/ide/pci/pdc202xx_old.c b/drivers/ide/pci/pdc202xx_old.c index 9c490fd63fde..fca89eda5c02 100644 --- a/drivers/ide/pci/pdc202xx_old.c +++ b/drivers/ide/pci/pdc202xx_old.c | |||
@@ -329,13 +329,21 @@ static const struct ide_port_ops pdc2026x_port_ops = { | |||
329 | .cable_detect = pdc2026x_cable_detect, | 329 | .cable_detect = pdc2026x_cable_detect, |
330 | }; | 330 | }; |
331 | 331 | ||
332 | static struct ide_dma_ops pdc20246_dma_ops = { | 332 | static const struct ide_dma_ops pdc20246_dma_ops = { |
333 | .dma_host_set = ide_dma_host_set, | ||
334 | .dma_setup = ide_dma_setup, | ||
335 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
336 | .dma_start = ide_dma_start, | ||
337 | .dma_end = __ide_dma_end, | ||
333 | .dma_test_irq = pdc202xx_dma_test_irq, | 338 | .dma_test_irq = pdc202xx_dma_test_irq, |
334 | .dma_lost_irq = pdc202xx_dma_lost_irq, | 339 | .dma_lost_irq = pdc202xx_dma_lost_irq, |
335 | .dma_timeout = pdc202xx_dma_timeout, | 340 | .dma_timeout = pdc202xx_dma_timeout, |
336 | }; | 341 | }; |
337 | 342 | ||
338 | static struct ide_dma_ops pdc2026x_dma_ops = { | 343 | static const struct ide_dma_ops pdc2026x_dma_ops = { |
344 | .dma_host_set = ide_dma_host_set, | ||
345 | .dma_setup = ide_dma_setup, | ||
346 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
339 | .dma_start = pdc202xx_dma_start, | 347 | .dma_start = pdc202xx_dma_start, |
340 | .dma_end = pdc202xx_dma_end, | 348 | .dma_end = pdc202xx_dma_end, |
341 | .dma_test_irq = pdc202xx_dma_test_irq, | 349 | .dma_test_irq = pdc202xx_dma_test_irq, |
diff --git a/drivers/ide/pci/sc1200.c b/drivers/ide/pci/sc1200.c index 303bcfb2a441..14c787b5d95f 100644 --- a/drivers/ide/pci/sc1200.c +++ b/drivers/ide/pci/sc1200.c | |||
@@ -292,8 +292,15 @@ static const struct ide_port_ops sc1200_port_ops = { | |||
292 | .udma_filter = sc1200_udma_filter, | 292 | .udma_filter = sc1200_udma_filter, |
293 | }; | 293 | }; |
294 | 294 | ||
295 | static struct ide_dma_ops sc1200_dma_ops = { | 295 | static const struct ide_dma_ops sc1200_dma_ops = { |
296 | .dma_host_set = ide_dma_host_set, | ||
297 | .dma_setup = ide_dma_setup, | ||
298 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
299 | .dma_start = ide_dma_start, | ||
296 | .dma_end = sc1200_dma_end, | 300 | .dma_end = sc1200_dma_end, |
301 | .dma_test_irq = ide_dma_test_irq, | ||
302 | .dma_lost_irq = ide_dma_lost_irq, | ||
303 | .dma_timeout = ide_dma_timeout, | ||
297 | }; | 304 | }; |
298 | 305 | ||
299 | static const struct ide_port_info sc1200_chipset __devinitdata = { | 306 | static const struct ide_port_info sc1200_chipset __devinitdata = { |
diff --git a/drivers/ide/pci/scc_pata.c b/drivers/ide/pci/scc_pata.c index 5117c11134cd..17cf86490d59 100644 --- a/drivers/ide/pci/scc_pata.c +++ b/drivers/ide/pci/scc_pata.c | |||
@@ -705,10 +705,15 @@ static const struct ide_port_ops scc_port_ops = { | |||
705 | .cable_detect = scc_cable_detect, | 705 | .cable_detect = scc_cable_detect, |
706 | }; | 706 | }; |
707 | 707 | ||
708 | static struct ide_dma_ops scc_dma_ops = { | 708 | static const struct ide_dma_ops scc_dma_ops = { |
709 | .dma_host_set = ide_dma_host_set, | ||
709 | .dma_setup = scc_dma_setup, | 710 | .dma_setup = scc_dma_setup, |
711 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
712 | .dma_start = ide_dma_start, | ||
710 | .dma_end = scc_dma_end, | 713 | .dma_end = scc_dma_end, |
711 | .dma_test_irq = scc_dma_test_irq, | 714 | .dma_test_irq = scc_dma_test_irq, |
715 | .dma_lost_irq = ide_dma_lost_irq, | ||
716 | .dma_timeout = ide_dma_timeout, | ||
712 | }; | 717 | }; |
713 | 718 | ||
714 | #define DECLARE_SCC_DEV(name_str) \ | 719 | #define DECLARE_SCC_DEV(name_str) \ |
diff --git a/drivers/ide/pci/sgiioc4.c b/drivers/ide/pci/sgiioc4.c index 2cbb7fd1ddec..321a4e28ac19 100644 --- a/drivers/ide/pci/sgiioc4.c +++ b/drivers/ide/pci/sgiioc4.c | |||
@@ -558,7 +558,7 @@ static const struct ide_port_ops sgiioc4_port_ops = { | |||
558 | .maskproc = sgiioc4_maskproc, | 558 | .maskproc = sgiioc4_maskproc, |
559 | }; | 559 | }; |
560 | 560 | ||
561 | static struct ide_dma_ops sgiioc4_dma_ops = { | 561 | static const struct ide_dma_ops sgiioc4_dma_ops = { |
562 | .dma_host_set = sgiioc4_dma_host_set, | 562 | .dma_host_set = sgiioc4_dma_host_set, |
563 | .dma_setup = sgiioc4_dma_setup, | 563 | .dma_setup = sgiioc4_dma_setup, |
564 | .dma_start = sgiioc4_dma_start, | 564 | .dma_start = sgiioc4_dma_start, |
diff --git a/drivers/ide/pci/sl82c105.c b/drivers/ide/pci/sl82c105.c index 635d607bc0cf..ce84fa045d39 100644 --- a/drivers/ide/pci/sl82c105.c +++ b/drivers/ide/pci/sl82c105.c | |||
@@ -288,9 +288,13 @@ static const struct ide_port_ops sl82c105_port_ops = { | |||
288 | .resetproc = sl82c105_resetproc, | 288 | .resetproc = sl82c105_resetproc, |
289 | }; | 289 | }; |
290 | 290 | ||
291 | static struct ide_dma_ops sl82c105_dma_ops = { | 291 | static const struct ide_dma_ops sl82c105_dma_ops = { |
292 | .dma_host_set = ide_dma_host_set, | ||
293 | .dma_setup = ide_dma_setup, | ||
294 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
292 | .dma_start = sl82c105_dma_start, | 295 | .dma_start = sl82c105_dma_start, |
293 | .dma_end = sl82c105_dma_end, | 296 | .dma_end = sl82c105_dma_end, |
297 | .dma_test_irq = ide_dma_test_irq, | ||
294 | .dma_lost_irq = sl82c105_dma_lost_irq, | 298 | .dma_lost_irq = sl82c105_dma_lost_irq, |
295 | .dma_timeout = sl82c105_dma_timeout, | 299 | .dma_timeout = sl82c105_dma_timeout, |
296 | }; | 300 | }; |
diff --git a/drivers/ide/pci/tc86c001.c b/drivers/ide/pci/tc86c001.c index 4ce240db3263..9b4b27a4c711 100644 --- a/drivers/ide/pci/tc86c001.c +++ b/drivers/ide/pci/tc86c001.c | |||
@@ -186,8 +186,15 @@ static const struct ide_port_ops tc86c001_port_ops = { | |||
186 | .cable_detect = tc86c001_cable_detect, | 186 | .cable_detect = tc86c001_cable_detect, |
187 | }; | 187 | }; |
188 | 188 | ||
189 | static struct ide_dma_ops tc86c001_dma_ops = { | 189 | static const struct ide_dma_ops tc86c001_dma_ops = { |
190 | .dma_host_set = ide_dma_host_set, | ||
191 | .dma_setup = ide_dma_setup, | ||
192 | .dma_exec_cmd = ide_dma_exec_cmd, | ||
190 | .dma_start = tc86c001_dma_start, | 193 | .dma_start = tc86c001_dma_start, |
194 | .dma_end = __ide_dma_end, | ||
195 | .dma_test_irq = ide_dma_test_irq, | ||
196 | .dma_lost_irq = ide_dma_lost_irq, | ||
197 | .dma_timeout = ide_dma_timeout, | ||
191 | }; | 198 | }; |
192 | 199 | ||
193 | static const struct ide_port_info tc86c001_chipset __devinitdata = { | 200 | static const struct ide_port_info tc86c001_chipset __devinitdata = { |
diff --git a/drivers/ide/pci/trm290.c b/drivers/ide/pci/trm290.c index c506e97cd716..15ee38f7ad3f 100644 --- a/drivers/ide/pci/trm290.c +++ b/drivers/ide/pci/trm290.c | |||
@@ -320,6 +320,8 @@ static struct ide_dma_ops trm290_dma_ops = { | |||
320 | .dma_start = trm290_dma_start, | 320 | .dma_start = trm290_dma_start, |
321 | .dma_end = trm290_dma_end, | 321 | .dma_end = trm290_dma_end, |
322 | .dma_test_irq = trm290_dma_test_irq, | 322 | .dma_test_irq = trm290_dma_test_irq, |
323 | .dma_lost_irq = ide_dma_lost_irq, | ||
324 | .dma_timeout = ide_dma_timeout, | ||
323 | }; | 325 | }; |
324 | 326 | ||
325 | static const struct ide_port_info trm290_chipset __devinitdata = { | 327 | static const struct ide_port_info trm290_chipset __devinitdata = { |
diff --git a/drivers/ide/ppc/pmac.c b/drivers/ide/ppc/pmac.c index 0ee16acfdf29..185faa0dce94 100644 --- a/drivers/ide/ppc/pmac.c +++ b/drivers/ide/ppc/pmac.c | |||
@@ -930,7 +930,7 @@ static const struct ide_port_ops pmac_ide_port_ops = { | |||
930 | .selectproc = pmac_ide_selectproc, | 930 | .selectproc = pmac_ide_selectproc, |
931 | }; | 931 | }; |
932 | 932 | ||
933 | static struct ide_dma_ops pmac_dma_ops; | 933 | static const struct ide_dma_ops pmac_dma_ops; |
934 | 934 | ||
935 | static const struct ide_port_info pmac_port_info = { | 935 | static const struct ide_port_info pmac_port_info = { |
936 | .init_dma = pmac_ide_init_dma, | 936 | .init_dma = pmac_ide_init_dma, |
@@ -1675,7 +1675,7 @@ pmac_ide_dma_lost_irq (ide_drive_t *drive) | |||
1675 | printk(KERN_ERR "ide-pmac lost interrupt, dma status: %lx\n", status); | 1675 | printk(KERN_ERR "ide-pmac lost interrupt, dma status: %lx\n", status); |
1676 | } | 1676 | } |
1677 | 1677 | ||
1678 | static struct ide_dma_ops pmac_dma_ops = { | 1678 | static const struct ide_dma_ops pmac_dma_ops = { |
1679 | .dma_host_set = pmac_ide_dma_host_set, | 1679 | .dma_host_set = pmac_ide_dma_host_set, |
1680 | .dma_setup = pmac_ide_dma_setup, | 1680 | .dma_setup = pmac_ide_dma_setup, |
1681 | .dma_exec_cmd = pmac_ide_dma_exec_cmd, | 1681 | .dma_exec_cmd = pmac_ide_dma_exec_cmd, |
diff --git a/drivers/ide/setup-pci.c b/drivers/ide/setup-pci.c index 9a1e01e176f0..5171601fb255 100644 --- a/drivers/ide/setup-pci.c +++ b/drivers/ide/setup-pci.c | |||
@@ -385,7 +385,7 @@ int ide_hwif_setup_dma(ide_hwif_t *hwif, const struct ide_port_info *d) | |||
385 | if (ide_allocate_dma_engine(hwif)) | 385 | if (ide_allocate_dma_engine(hwif)) |
386 | return -1; | 386 | return -1; |
387 | 387 | ||
388 | ide_setup_dma(hwif, base, d); | 388 | ide_setup_dma(hwif, base); |
389 | } | 389 | } |
390 | 390 | ||
391 | return 0; | 391 | return 0; |
diff --git a/include/linux/ide.h b/include/linux/ide.h index 079b6f9405ed..f0af504dfa42 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -462,7 +462,7 @@ typedef struct hwif_s { | |||
462 | void (*rw_disk)(ide_drive_t *, struct request *); | 462 | void (*rw_disk)(ide_drive_t *, struct request *); |
463 | 463 | ||
464 | const struct ide_port_ops *port_ops; | 464 | const struct ide_port_ops *port_ops; |
465 | struct ide_dma_ops *dma_ops; | 465 | const struct ide_dma_ops *dma_ops; |
466 | 466 | ||
467 | void (*ata_input_data)(ide_drive_t *, void *, u32); | 467 | void (*ata_input_data)(ide_drive_t *, void *, u32); |
468 | void (*ata_output_data)(ide_drive_t *, void *, u32); | 468 | void (*ata_output_data)(ide_drive_t *, void *, u32); |
@@ -1118,7 +1118,7 @@ struct ide_port_info { | |||
1118 | const struct ide_port_info *); | 1118 | const struct ide_port_info *); |
1119 | 1119 | ||
1120 | const struct ide_port_ops *port_ops; | 1120 | const struct ide_port_ops *port_ops; |
1121 | struct ide_dma_ops *dma_ops; | 1121 | const struct ide_dma_ops *dma_ops; |
1122 | 1122 | ||
1123 | ide_pci_enablebit_t enablebits[2]; | 1123 | ide_pci_enablebit_t enablebits[2]; |
1124 | hwif_chipset_t chipset; | 1124 | hwif_chipset_t chipset; |
@@ -1170,12 +1170,14 @@ void ide_destroy_dmatable(ide_drive_t *); | |||
1170 | extern int ide_build_dmatable(ide_drive_t *, struct request *); | 1170 | extern int ide_build_dmatable(ide_drive_t *, struct request *); |
1171 | int ide_allocate_dma_engine(ide_hwif_t *); | 1171 | int ide_allocate_dma_engine(ide_hwif_t *); |
1172 | void ide_release_dma_engine(ide_hwif_t *); | 1172 | void ide_release_dma_engine(ide_hwif_t *); |
1173 | void ide_setup_dma(ide_hwif_t *, unsigned long, const struct ide_port_info *); | 1173 | void ide_setup_dma(ide_hwif_t *, unsigned long); |
1174 | 1174 | ||
1175 | void ide_dma_host_set(ide_drive_t *, int); | 1175 | void ide_dma_host_set(ide_drive_t *, int); |
1176 | extern int ide_dma_setup(ide_drive_t *); | 1176 | extern int ide_dma_setup(ide_drive_t *); |
1177 | void ide_dma_exec_cmd(ide_drive_t *, u8); | ||
1177 | extern void ide_dma_start(ide_drive_t *); | 1178 | extern void ide_dma_start(ide_drive_t *); |
1178 | extern int __ide_dma_end(ide_drive_t *); | 1179 | extern int __ide_dma_end(ide_drive_t *); |
1180 | int ide_dma_test_irq(ide_drive_t *); | ||
1179 | extern void ide_dma_lost_irq(ide_drive_t *); | 1181 | extern void ide_dma_lost_irq(ide_drive_t *); |
1180 | extern void ide_dma_timeout(ide_drive_t *); | 1182 | extern void ide_dma_timeout(ide_drive_t *); |
1181 | #endif /* CONFIG_BLK_DEV_IDEDMA_SFF */ | 1183 | #endif /* CONFIG_BLK_DEV_IDEDMA_SFF */ |