|
@@ -1173,8 +1173,9 @@ static u8 hpt3xx_cable_detect(ide_hwif_t *hwif)
|
|
u16 mcr;
|
|
u16 mcr;
|
|
|
|
|
|
pci_read_config_word(dev, mcr_addr, &mcr);
|
|
pci_read_config_word(dev, mcr_addr, &mcr);
|
|
- pci_write_config_word(dev, mcr_addr, (mcr | 0x8000));
|
|
|
|
- /* now read cable id register */
|
|
|
|
|
|
+ pci_write_config_word(dev, mcr_addr, mcr | 0x8000);
|
|
|
|
+ /* Debounce, then read cable ID register */
|
|
|
|
+ udelay(10);
|
|
pci_read_config_byte(dev, 0x5a, &scr1);
|
|
pci_read_config_byte(dev, 0x5a, &scr1);
|
|
pci_write_config_word(dev, mcr_addr, mcr);
|
|
pci_write_config_word(dev, mcr_addr, mcr);
|
|
} else if (chip_type >= HPT370) {
|
|
} else if (chip_type >= HPT370) {
|
|
@@ -1185,10 +1186,11 @@ static u8 hpt3xx_cable_detect(ide_hwif_t *hwif)
|
|
u8 scr2 = 0;
|
|
u8 scr2 = 0;
|
|
|
|
|
|
pci_read_config_byte(dev, 0x5b, &scr2);
|
|
pci_read_config_byte(dev, 0x5b, &scr2);
|
|
- pci_write_config_byte(dev, 0x5b, (scr2 & ~1));
|
|
|
|
- /* now read cable id register */
|
|
|
|
|
|
+ pci_write_config_byte(dev, 0x5b, scr2 & ~1);
|
|
|
|
+ /* Debounce, then read cable ID register */
|
|
|
|
+ udelay(10);
|
|
pci_read_config_byte(dev, 0x5a, &scr1);
|
|
pci_read_config_byte(dev, 0x5a, &scr1);
|
|
- pci_write_config_byte(dev, 0x5b, scr2);
|
|
|
|
|
|
+ pci_write_config_byte(dev, 0x5b, scr2);
|
|
} else
|
|
} else
|
|
pci_read_config_byte(dev, 0x5a, &scr1);
|
|
pci_read_config_byte(dev, 0x5a, &scr1);
|
|
|
|
|