diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-04-26 16:25:24 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-04-26 16:25:24 -0400 |
commit | 5e37bdc081a980dd0d669e6387bcf15ca9666f81 (patch) | |
tree | d842166c3bd23fbf3dfba0ccaa0f9ed5cc3096db /drivers/ide/pci/scc_pata.c | |
parent | 1fd1890594bd355a4217f5658a34763e77decee3 (diff) |
ide: add struct ide_dma_ops (take 3)
Add struct ide_dma_ops and convert core code + drivers to use it.
While at it:
* Drop "ide_" prefix from ->ide_dma_end and ->ide_dma_test_irq methods.
* Drop "ide_" "infixes" from DMA methods.
* au1xxx-ide.c:
- use auide_dma_{test_irq,end}() directly in auide_dma_timeout()
* pdc202xx_old.c:
- drop "old_" "infixes" from DMA methods
* siimage.c:
- add siimage_dma_test_irq() helper
- print SATA warning in siimage_init_one()
* Remove no longer needed ->init_hwif implementations.
v2:
* Changes based on review from Sergei:
- s/siimage_ide_dma_test_irq/siimage_dma_test_irq/
- s/drive->hwif/hwif/ in idefloppy_pc_intr().
- fix patch description w.r.t. au1xxx-ide changes
- fix au1xxx-ide build
- fix naming for cmd64*_dma_ops
- drop "ide_" and "old_" infixes
- s/hpt3xxx_dma_ops/hpt37x_dma_ops/
- s/hpt370x_dma_ops/hpt370_dma_ops/
- use correct DMA ops for HPT302/N, HPT371/N and HPT374
- s/it821x_smart_dma_ops/it821x_pass_through_dma_ops/
v3:
* Two bugs slipped in v2 (noticed by Sergei):
- use correct DMA ops for HPT374 (for real this time)
- handle HPT370/HPT370A properly
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/pci/scc_pata.c')
-rw-r--r-- | drivers/ide/pci/scc_pata.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/ide/pci/scc_pata.c b/drivers/ide/pci/scc_pata.c index c30b0c44c705..5117c11134cd 100644 --- a/drivers/ide/pci/scc_pata.c +++ b/drivers/ide/pci/scc_pata.c | |||
@@ -317,14 +317,14 @@ static int scc_dma_setup(ide_drive_t *drive) | |||
317 | 317 | ||
318 | 318 | ||
319 | /** | 319 | /** |
320 | * scc_ide_dma_end - Stop DMA | 320 | * scc_dma_end - Stop DMA |
321 | * @drive: IDE drive | 321 | * @drive: IDE drive |
322 | * | 322 | * |
323 | * Check and clear INT Status register. | 323 | * Check and clear INT Status register. |
324 | * Then call __ide_dma_end(). | 324 | * Then call __ide_dma_end(). |
325 | */ | 325 | */ |
326 | 326 | ||
327 | static int scc_ide_dma_end(ide_drive_t * drive) | 327 | static int scc_dma_end(ide_drive_t *drive) |
328 | { | 328 | { |
329 | ide_hwif_t *hwif = HWIF(drive); | 329 | ide_hwif_t *hwif = HWIF(drive); |
330 | unsigned long intsts_port = hwif->dma_base + 0x014; | 330 | unsigned long intsts_port = hwif->dma_base + 0x014; |
@@ -692,10 +692,6 @@ static void __devinit init_hwif_scc(ide_hwif_t *hwif) | |||
692 | /* PTERADD */ | 692 | /* PTERADD */ |
693 | out_be32((void __iomem *)(hwif->dma_base + 0x018), hwif->dmatable_dma); | 693 | out_be32((void __iomem *)(hwif->dma_base + 0x018), hwif->dmatable_dma); |
694 | 694 | ||
695 | hwif->dma_setup = scc_dma_setup; | ||
696 | hwif->ide_dma_end = scc_ide_dma_end; | ||
697 | hwif->ide_dma_test_irq = scc_dma_test_irq; | ||
698 | |||
699 | if (in_be32((void __iomem *)(hwif->config_data + 0xff0)) & CCKCTRL_ATACLKOEN) | 695 | if (in_be32((void __iomem *)(hwif->config_data + 0xff0)) & CCKCTRL_ATACLKOEN) |
700 | hwif->ultra_mask = ATA_UDMA6; /* 133MHz */ | 696 | hwif->ultra_mask = ATA_UDMA6; /* 133MHz */ |
701 | else | 697 | else |
@@ -709,12 +705,19 @@ static const struct ide_port_ops scc_port_ops = { | |||
709 | .cable_detect = scc_cable_detect, | 705 | .cable_detect = scc_cable_detect, |
710 | }; | 706 | }; |
711 | 707 | ||
708 | static struct ide_dma_ops scc_dma_ops = { | ||
709 | .dma_setup = scc_dma_setup, | ||
710 | .dma_end = scc_dma_end, | ||
711 | .dma_test_irq = scc_dma_test_irq, | ||
712 | }; | ||
713 | |||
712 | #define DECLARE_SCC_DEV(name_str) \ | 714 | #define DECLARE_SCC_DEV(name_str) \ |
713 | { \ | 715 | { \ |
714 | .name = name_str, \ | 716 | .name = name_str, \ |
715 | .init_iops = init_iops_scc, \ | 717 | .init_iops = init_iops_scc, \ |
716 | .init_hwif = init_hwif_scc, \ | 718 | .init_hwif = init_hwif_scc, \ |
717 | .port_ops = &scc_port_ops, \ | 719 | .port_ops = &scc_port_ops, \ |
720 | .dma_ops = &scc_dma_ops, \ | ||
718 | .host_flags = IDE_HFLAG_SINGLE, \ | 721 | .host_flags = IDE_HFLAG_SINGLE, \ |
719 | .pio_mask = ATA_PIO4, \ | 722 | .pio_mask = ATA_PIO4, \ |
720 | } | 723 | } |