diff options
Diffstat (limited to 'drivers/ata/pata_jmicron.c')
-rw-r--r-- | drivers/ata/pata_jmicron.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/drivers/ata/pata_jmicron.c b/drivers/ata/pata_jmicron.c index 2d661cb4df3c..d50264af2848 100644 --- a/drivers/ata/pata_jmicron.c +++ b/drivers/ata/pata_jmicron.c | |||
@@ -204,20 +204,12 @@ static int jmicron_init_one (struct pci_dev *pdev, const struct pci_device_id *i | |||
204 | 204 | ||
205 | u32 reg; | 205 | u32 reg; |
206 | 206 | ||
207 | if (id->driver_data != 368) { | 207 | /* PATA controller is fn 1, AHCI is fn 0 */ |
208 | /* Put the controller into AHCI mode in case the AHCI driver | 208 | if (id->driver_data != 368 && PCI_FUNC(pdev->devfn) != 1) |
209 | has not yet been loaded. This can be done with either | 209 | return -ENODEV; |
210 | function present */ | ||
211 | 210 | ||
212 | /* FIXME: We may want a way to override this in future */ | 211 | /* The 365/66 have two PATA channels, redirect the second */ |
213 | pci_write_config_byte(pdev, 0x41, 0xa1); | 212 | if (id->driver_data == 365 || id->driver_data == 366) { |
214 | |||
215 | /* PATA controller is fn 1, AHCI is fn 0 */ | ||
216 | if (PCI_FUNC(pdev->devfn) != 1) | ||
217 | return -ENODEV; | ||
218 | } | ||
219 | if ( id->driver_data == 365 || id->driver_data == 366) { | ||
220 | /* The 365/66 have two PATA channels, redirect the second */ | ||
221 | pci_read_config_dword(pdev, 0x80, ®); | 213 | pci_read_config_dword(pdev, 0x80, ®); |
222 | reg |= (1 << 24); /* IDE1 to PATA IDE secondary */ | 214 | reg |= (1 << 24); /* IDE1 to PATA IDE secondary */ |
223 | pci_write_config_dword(pdev, 0x80, reg); | 215 | pci_write_config_dword(pdev, 0x80, reg); |