aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/cris
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-02-02 13:56:31 -0500
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-02-02 13:56:31 -0500
commitc413b9b94d9a8e7548cc4b2e04b7df0439ce76fd (patch)
tree5d23110a0d1f87ad0c88fb1746194e532808eaab /drivers/ide/cris
parent1ebf74936b1fccb5b65940f99ccddd74ec4d1fef (diff)
ide: add struct ide_port_info instances to legacy host drivers
* Remove 'struct pci_dev *dev' argument from ide_hwif_setup_dma(). * Un-static ide_hwif_setup_dma() and add CONFIG_BLK_DEV_IDEDMA_PCI=n version. * Add 'const struct ide_port_info *d' argument to ide_device_add[_all](). * Factor out generic ports init from ide_pci_setup_ports() to ide_init_port(), move it to ide-probe.c and call it in in ide_device_add_all() instead of ide_pci_setup_ports(). * Move ->mate setup to ide_device_add_all() from ide_port_init(). * Add IDE_HFLAG_NO_AUTOTUNE host flag for host drivers that don't enable ->autotune currently. * Setup hwif->chipset in ide_init_port() but iff pi->chipset is set (to not override setup done by ide_hwif_configure()). * Add ETRAX host handling to ide_device_add_all(). * cmd640.c: set IDE_HFLAG_ABUSE_* also for CONFIG_BLK_DEV_CMD640_ENHANCED=n. * pmac.c: make pmac_ide_setup_dma() return an error value and move DMA masks setup to pmac_ide_setup_device(). * Add 'struct ide_port_info' instances to legacy host drivers, pass them to ide_device_add() calls and then remove open-coded ports initialization. Reviewed-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/cris')
-rw-r--r--drivers/ide/cris/ide-cris.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/ide/cris/ide-cris.c b/drivers/ide/cris/ide-cris.c
index 0640a38ff127..ac645263fd09 100644
--- a/drivers/ide/cris/ide-cris.c
+++ b/drivers/ide/cris/ide-cris.c
@@ -753,6 +753,15 @@ static void cris_set_dma_mode(ide_drive_t *drive, const u8 speed)
753 cris_ide_set_speed(TYPE_DMA, 0, strobe, hold); 753 cris_ide_set_speed(TYPE_DMA, 0, strobe, hold);
754} 754}
755 755
756static const struct ide_port_info cris_port_info __initdata = {
757 .chipset = ide_etrax100,
758 .host_flags = IDE_HFLAG_NO_ATAPI_DMA |
759 IDE_HFLAG_NO_DMA, /* no SFF-style DMA */
760 .pio_mask = ATA_PIO4,
761 .udma_mask = cris_ultra_mask,
762 .mwdma_mask = ATA_MWDMA2,
763};
764
756static int __init init_e100_ide(void) 765static int __init init_e100_ide(void)
757{ 766{
758 hw_regs_t hw; 767 hw_regs_t hw;
@@ -780,7 +789,6 @@ static int __init init_e100_ide(void)
780 ide_init_port_data(hwif, hwif->index); 789 ide_init_port_data(hwif, hwif->index);
781 ide_init_port_hw(hwif, &hw); 790 ide_init_port_hw(hwif, &hw);
782 hwif->mmio = 1; 791 hwif->mmio = 1;
783 hwif->chipset = ide_etrax100;
784 hwif->set_pio_mode = &cris_set_pio_mode; 792 hwif->set_pio_mode = &cris_set_pio_mode;
785 hwif->set_dma_mode = &cris_set_dma_mode; 793 hwif->set_dma_mode = &cris_set_dma_mode;
786 hwif->ata_input_data = &cris_ide_input_data; 794 hwif->ata_input_data = &cris_ide_input_data;
@@ -799,12 +807,6 @@ static int __init init_e100_ide(void)
799 hwif->INB = &cris_ide_inb; 807 hwif->INB = &cris_ide_inb;
800 hwif->INW = &cris_ide_inw; 808 hwif->INW = &cris_ide_inw;
801 hwif->cbl = ATA_CBL_PATA40; 809 hwif->cbl = ATA_CBL_PATA40;
802 hwif->host_flags |= IDE_HFLAG_NO_ATAPI_DMA;
803 hwif->pio_mask = ATA_PIO4,
804 hwif->drives[0].autotune = 1;
805 hwif->drives[1].autotune = 1;
806 hwif->ultra_mask = cris_ultra_mask;
807 hwif->mwdma_mask = 0x07; /* Multiword DMA 0-2 */
808 810
809 idx[h] = hwif->index; 811 idx[h] = hwif->index;
810 } 812 }
@@ -820,7 +822,7 @@ static int __init init_e100_ide(void)
820 cris_ide_set_speed(TYPE_DMA, 0, ATA_DMA2_STROBE, ATA_DMA2_HOLD); 822 cris_ide_set_speed(TYPE_DMA, 0, ATA_DMA2_STROBE, ATA_DMA2_HOLD);
821 cris_ide_set_speed(TYPE_UDMA, ATA_UDMA2_CYC, ATA_UDMA2_DVS, 0); 823 cris_ide_set_speed(TYPE_UDMA, ATA_UDMA2_CYC, ATA_UDMA2_DVS, 0);
822 824
823 ide_device_add(idx); 825 ide_device_add(idx, &cris_port_info);
824 826
825 return 0; 827 return 0;
826} 828}