diff options
Diffstat (limited to 'drivers/ide/pci/it8213.c')
-rw-r--r-- | drivers/ide/pci/it8213.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/drivers/ide/pci/it8213.c b/drivers/ide/pci/it8213.c index df74e588a530..e3427eaab430 100644 --- a/drivers/ide/pci/it8213.c +++ b/drivers/ide/pci/it8213.c | |||
@@ -10,13 +10,10 @@ | |||
10 | #include <linux/types.h> | 10 | #include <linux/types.h> |
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/pci.h> | 12 | #include <linux/pci.h> |
13 | #include <linux/delay.h> | ||
14 | #include <linux/hdreg.h> | 13 | #include <linux/hdreg.h> |
15 | #include <linux/ide.h> | 14 | #include <linux/ide.h> |
16 | #include <linux/init.h> | 15 | #include <linux/init.h> |
17 | 16 | ||
18 | #include <asm/io.h> | ||
19 | |||
20 | /** | 17 | /** |
21 | * it8213_set_pio_mode - set host controller for PIO mode | 18 | * it8213_set_pio_mode - set host controller for PIO mode |
22 | * @drive: drive | 19 | * @drive: drive |
@@ -143,6 +140,16 @@ static void it8213_set_dma_mode(ide_drive_t *drive, const u8 speed) | |||
143 | } | 140 | } |
144 | } | 141 | } |
145 | 142 | ||
143 | static u8 __devinit it8213_cable_detect(ide_hwif_t *hwif) | ||
144 | { | ||
145 | struct pci_dev *dev = to_pci_dev(hwif->dev); | ||
146 | u8 reg42h = 0; | ||
147 | |||
148 | pci_read_config_byte(dev, 0x42, ®42h); | ||
149 | |||
150 | return (reg42h & 0x02) ? ATA_CBL_PATA40 : ATA_CBL_PATA80; | ||
151 | } | ||
152 | |||
146 | /** | 153 | /** |
147 | * init_hwif_it8213 - set up hwif structs | 154 | * init_hwif_it8213 - set up hwif structs |
148 | * @hwif: interface to set up | 155 | * @hwif: interface to set up |
@@ -152,19 +159,10 @@ static void it8213_set_dma_mode(ide_drive_t *drive, const u8 speed) | |||
152 | 159 | ||
153 | static void __devinit init_hwif_it8213(ide_hwif_t *hwif) | 160 | static void __devinit init_hwif_it8213(ide_hwif_t *hwif) |
154 | { | 161 | { |
155 | struct pci_dev *dev = to_pci_dev(hwif->dev); | ||
156 | u8 reg42h = 0; | ||
157 | |||
158 | hwif->set_dma_mode = &it8213_set_dma_mode; | 162 | hwif->set_dma_mode = &it8213_set_dma_mode; |
159 | hwif->set_pio_mode = &it8213_set_pio_mode; | 163 | hwif->set_pio_mode = &it8213_set_pio_mode; |
160 | 164 | ||
161 | if (!hwif->dma_base) | 165 | 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 | } | 166 | } |
169 | 167 | ||
170 | 168 | ||