[PATCH] ahci: Ensure that we don't grab both functions
When we force the chip into dual fn mode so we get PATA and AHCI we must be sure we don't then do anything dumb like try and grab both with the AHCI driver. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
5afc81427f
commit
9545b5781c
1 changed files with 11 additions and 4 deletions
|
@ -1323,6 +1323,17 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||||
if (!printed_version++)
|
if (!printed_version++)
|
||||||
dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n");
|
dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n");
|
||||||
|
|
||||||
|
/* JMicron-specific fixup: make sure we're in AHCI mode */
|
||||||
|
/* This is protected from races with ata_jmicron by the pci probe
|
||||||
|
locking */
|
||||||
|
if (pdev->vendor == PCI_VENDOR_ID_JMICRON) {
|
||||||
|
/* AHCI enable, AHCI on function 0 */
|
||||||
|
pci_write_config_byte(pdev, 0x41, 0xa1);
|
||||||
|
/* Function 1 is the PATA controller */
|
||||||
|
if (PCI_FUNC(pdev->devfn))
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
|
||||||
rc = pci_enable_device(pdev);
|
rc = pci_enable_device(pdev);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
|
@ -1378,10 +1389,6 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||||
if (have_msi)
|
if (have_msi)
|
||||||
hpriv->flags |= AHCI_FLAG_MSI;
|
hpriv->flags |= AHCI_FLAG_MSI;
|
||||||
|
|
||||||
/* JMicron-specific fixup: make sure we're in AHCI mode */
|
|
||||||
if (pdev->vendor == 0x197b)
|
|
||||||
pci_write_config_byte(pdev, 0x41, 0xa1);
|
|
||||||
|
|
||||||
/* initialize adapter */
|
/* initialize adapter */
|
||||||
rc = ahci_host_init(probe_ent);
|
rc = ahci_host_init(probe_ent);
|
||||||
if (rc)
|
if (rc)
|
||||||
|
|
Loading…
Reference in a new issue