diff options
Diffstat (limited to 'drivers/ide/pci/it8213.c')
-rw-r--r-- | drivers/ide/pci/it8213.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/ide/pci/it8213.c b/drivers/ide/pci/it8213.c index df74e588a530..c781ea6502d6 100644 --- a/drivers/ide/pci/it8213.c +++ b/drivers/ide/pci/it8213.c | |||
@@ -143,6 +143,16 @@ static void it8213_set_dma_mode(ide_drive_t *drive, const u8 speed) | |||
143 | } | 143 | } |
144 | } | 144 | } |
145 | 145 | ||
146 | static u8 __devinit it8213_cable_detect(ide_hwif_t *hwif) | ||
147 | { | ||
148 | struct pci_dev *dev = to_pci_dev(hwif->dev); | ||
149 | u8 reg42h = 0; | ||
150 | |||
151 | pci_read_config_byte(dev, 0x42, ®42h); | ||
152 | |||
153 | return (reg42h & 0x02) ? ATA_CBL_PATA40 : ATA_CBL_PATA80; | ||
154 | } | ||
155 | |||
146 | /** | 156 | /** |
147 | * init_hwif_it8213 - set up hwif structs | 157 | * init_hwif_it8213 - set up hwif structs |
148 | * @hwif: interface to set up | 158 | * @hwif: interface to set up |
@@ -152,19 +162,10 @@ static void it8213_set_dma_mode(ide_drive_t *drive, const u8 speed) | |||
152 | 162 | ||
153 | static void __devinit init_hwif_it8213(ide_hwif_t *hwif) | 163 | static void __devinit init_hwif_it8213(ide_hwif_t *hwif) |
154 | { | 164 | { |
155 | struct pci_dev *dev = to_pci_dev(hwif->dev); | ||
156 | u8 reg42h = 0; | ||
157 | |||
158 | hwif->set_dma_mode = &it8213_set_dma_mode; | 165 | hwif->set_dma_mode = &it8213_set_dma_mode; |
159 | hwif->set_pio_mode = &it8213_set_pio_mode; | 166 | hwif->set_pio_mode = &it8213_set_pio_mode; |
160 | 167 | ||
161 | if (!hwif->dma_base) | 168 | hwif->cable_detect = it8213_cable_detect; |
162 | return; | ||
163 | |||
164 | pci_read_config_byte(dev, 0x42, ®42h); | ||
165 | |||
166 | if (hwif->cbl != ATA_CBL_PATA40_SHORT) | ||
167 | hwif->cbl = (reg42h & 0x02) ? ATA_CBL_PATA40 : ATA_CBL_PATA80; | ||
168 | } | 169 | } |
169 | 170 | ||
170 | 171 | ||