diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-23 13:55:56 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-23 13:55:56 -0400 |
commit | 374e042c3e767ac2e5a40b78529220e0b3de793c (patch) | |
tree | 433d258f6da9783f0cb34234af9c359353f531fe /drivers/ide/mips | |
parent | d6276b5f5cc7508124de291f3ed59c6945c17ae7 (diff) |
ide: add struct ide_tp_ops (take 2)
* Add struct ide_tp_ops for transport methods.
* Add 'const struct ide_tp_ops *tp_ops' to struct ide_port_info
and ide_hwif_t.
* Set the default hwif->tp_ops in ide_init_port_data().
* Set host driver specific hwif->tp_ops in ide_init_port().
* Export ide_exec_command(), ide_read_status(), ide_read_altstatus(),
ide_read_sff_dma_status(), ide_set_irq(), ide_tf_{load,read}()
and ata_{in,out}put_data().
* Convert host drivers and core code to use struct ide_tp_ops.
* Remove no longer needed default_hwif_transport().
* Cleanup ide_hwif_t from methods that are now in struct ide_tp_ops.
While at it:
* Use struct ide_port_info in falconide.c and q40ide.c.
* Rename ata_{in,out}put_data() to ide_{in,out}put_data().
v2:
* Fix missing convertion in ns87415.c.
There should be no functional changes caused by this patch.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/mips')
-rw-r--r-- | drivers/ide/mips/au1xxx-ide.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/drivers/ide/mips/au1xxx-ide.c b/drivers/ide/mips/au1xxx-ide.c index 475da582fd89..ed1c9a134079 100644 --- a/drivers/ide/mips/au1xxx-ide.c +++ b/drivers/ide/mips/au1xxx-ide.c | |||
@@ -519,6 +519,23 @@ static void auide_setup_ports(hw_regs_t *hw, _auide_hwif *ahwif) | |||
519 | *ata_regs = ahwif->regbase + (14 << IDE_REG_SHIFT); | 519 | *ata_regs = ahwif->regbase + (14 << IDE_REG_SHIFT); |
520 | } | 520 | } |
521 | 521 | ||
522 | #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA | ||
523 | static const struct ide_tp_ops au1xxx_tp_ops = { | ||
524 | .exec_command = ide_exec_command, | ||
525 | .read_status = ide_read_status, | ||
526 | .read_altstatus = ide_read_altstatus, | ||
527 | .read_sff_dma_status = ide_read_sff_dma_status, | ||
528 | |||
529 | .set_irq = ide_set_irq, | ||
530 | |||
531 | .tf_load = ide_tf_load, | ||
532 | .tf_read = ide_tf_read, | ||
533 | |||
534 | .input_data = au1xxx_input_data, | ||
535 | .output_data = au1xxx_output_data, | ||
536 | }; | ||
537 | #endif | ||
538 | |||
522 | static const struct ide_port_ops au1xxx_port_ops = { | 539 | static const struct ide_port_ops au1xxx_port_ops = { |
523 | .set_pio_mode = au1xxx_set_pio_mode, | 540 | .set_pio_mode = au1xxx_set_pio_mode, |
524 | .set_dma_mode = auide_set_dma_mode, | 541 | .set_dma_mode = auide_set_dma_mode, |
@@ -526,6 +543,9 @@ static const struct ide_port_ops au1xxx_port_ops = { | |||
526 | 543 | ||
527 | static const struct ide_port_info au1xxx_port_info = { | 544 | static const struct ide_port_info au1xxx_port_info = { |
528 | .init_dma = auide_ddma_init, | 545 | .init_dma = auide_ddma_init, |
546 | #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA | ||
547 | .tp_ops = &au1xxx_tp_ops, | ||
548 | #endif | ||
529 | .port_ops = &au1xxx_port_ops, | 549 | .port_ops = &au1xxx_port_ops, |
530 | #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA | 550 | #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA |
531 | .dma_ops = &au1xxx_dma_ops, | 551 | .dma_ops = &au1xxx_dma_ops, |
@@ -596,15 +616,6 @@ static int au_ide_probe(struct device *dev) | |||
596 | hw.dev = dev; | 616 | hw.dev = dev; |
597 | hw.chipset = ide_au1xxx; | 617 | hw.chipset = ide_au1xxx; |
598 | 618 | ||
599 | /* If the user has selected DDMA assisted copies, | ||
600 | then set up a few local I/O function entry points | ||
601 | */ | ||
602 | |||
603 | #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA | ||
604 | hwif->input_data = au1xxx_input_data; | ||
605 | hwif->output_data = au1xxx_output_data; | ||
606 | #endif | ||
607 | |||
608 | auide_hwif.hwif = hwif; | 619 | auide_hwif.hwif = hwif; |
609 | 620 | ||
610 | idx[0] = hwif->index; | 621 | idx[0] = hwif->index; |