diff options
Diffstat (limited to 'drivers/ide/legacy/dtc2278.c')
-rw-r--r-- | drivers/ide/legacy/dtc2278.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/ide/legacy/dtc2278.c b/drivers/ide/legacy/dtc2278.c index 5f69cd2ea6f7..9c6b3249a004 100644 --- a/drivers/ide/legacy/dtc2278.c +++ b/drivers/ide/legacy/dtc2278.c | |||
@@ -102,15 +102,9 @@ static int __init dtc2278_probe(void) | |||
102 | { | 102 | { |
103 | unsigned long flags; | 103 | unsigned long flags; |
104 | ide_hwif_t *hwif, *mate; | 104 | ide_hwif_t *hwif, *mate; |
105 | static u8 idx[4] = { 0, 1, 0xff, 0xff }; | 105 | static u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; |
106 | hw_regs_t hw[2]; | 106 | hw_regs_t hw[2]; |
107 | 107 | ||
108 | hwif = &ide_hwifs[0]; | ||
109 | mate = &ide_hwifs[1]; | ||
110 | |||
111 | if (hwif->chipset != ide_unknown || mate->chipset != ide_unknown) | ||
112 | return 1; | ||
113 | |||
114 | local_irq_save(flags); | 108 | local_irq_save(flags); |
115 | /* | 109 | /* |
116 | * This enables the second interface | 110 | * This enables the second interface |
@@ -137,10 +131,18 @@ static int __init dtc2278_probe(void) | |||
137 | ide_std_init_ports(&hw[1], 0x170, 0x376); | 131 | ide_std_init_ports(&hw[1], 0x170, 0x376); |
138 | hw[1].irq = 15; | 132 | hw[1].irq = 15; |
139 | 133 | ||
140 | ide_init_port_hw(hwif, &hw[0]); | 134 | hwif = ide_find_port(); |
141 | ide_init_port_hw(mate, &hw[1]); | 135 | if (hwif) { |
136 | ide_init_port_hw(hwif, &hw[0]); | ||
137 | hwif->set_pio_mode = dtc2278_set_pio_mode; | ||
138 | idx[0] = hwif->index; | ||
139 | } | ||
142 | 140 | ||
143 | hwif->set_pio_mode = &dtc2278_set_pio_mode; | 141 | mate = ide_find_port(); |
142 | if (mate) { | ||
143 | ide_init_port_hw(mate, &hw[1]); | ||
144 | idx[1] = mate->index; | ||
145 | } | ||
144 | 146 | ||
145 | ide_device_add(idx, &dtc2278_port_info); | 147 | ide_device_add(idx, &dtc2278_port_info); |
146 | 148 | ||