|
@@ -455,23 +455,21 @@ static struct ata_port_operations ali_c5_port_ops = {
|
|
|
|
|
|
static void ali_init_chipset(struct pci_dev *pdev)
|
|
static void ali_init_chipset(struct pci_dev *pdev)
|
|
{
|
|
{
|
|
- u8 rev, tmp;
|
|
|
|
|
|
+ u8 tmp;
|
|
struct pci_dev *north, *isa_bridge;
|
|
struct pci_dev *north, *isa_bridge;
|
|
|
|
|
|
- pci_read_config_byte(pdev, PCI_REVISION_ID, &rev);
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* The chipset revision selects the driver operations and
|
|
* The chipset revision selects the driver operations and
|
|
* mode data.
|
|
* mode data.
|
|
*/
|
|
*/
|
|
|
|
|
|
- if (rev >= 0x20 && rev < 0xC2) {
|
|
|
|
|
|
+ if (pdev->revision >= 0x20 && pdev->revision < 0xC2) {
|
|
/* 1543-E/F, 1543C-C, 1543C-D, 1543C-E */
|
|
/* 1543-E/F, 1543C-C, 1543C-D, 1543C-E */
|
|
pci_read_config_byte(pdev, 0x4B, &tmp);
|
|
pci_read_config_byte(pdev, 0x4B, &tmp);
|
|
/* Clear CD-ROM DMA write bit */
|
|
/* Clear CD-ROM DMA write bit */
|
|
tmp &= 0x7F;
|
|
tmp &= 0x7F;
|
|
pci_write_config_byte(pdev, 0x4B, tmp);
|
|
pci_write_config_byte(pdev, 0x4B, tmp);
|
|
- } else if (rev >= 0xC2) {
|
|
|
|
|
|
+ } else if (pdev->revision >= 0xC2) {
|
|
/* Enable cable detection logic */
|
|
/* Enable cable detection logic */
|
|
pci_read_config_byte(pdev, 0x4B, &tmp);
|
|
pci_read_config_byte(pdev, 0x4B, &tmp);
|
|
pci_write_config_byte(pdev, 0x4B, tmp | 0x08);
|
|
pci_write_config_byte(pdev, 0x4B, tmp | 0x08);
|
|
@@ -483,21 +481,21 @@ static void ali_init_chipset(struct pci_dev *pdev)
|
|
/* Configure the ALi bridge logic. For non ALi rely on BIOS.
|
|
/* Configure the ALi bridge logic. For non ALi rely on BIOS.
|
|
Set the south bridge enable bit */
|
|
Set the south bridge enable bit */
|
|
pci_read_config_byte(isa_bridge, 0x79, &tmp);
|
|
pci_read_config_byte(isa_bridge, 0x79, &tmp);
|
|
- if (rev == 0xC2)
|
|
|
|
|
|
+ if (pdev->revision == 0xC2)
|
|
pci_write_config_byte(isa_bridge, 0x79, tmp | 0x04);
|
|
pci_write_config_byte(isa_bridge, 0x79, tmp | 0x04);
|
|
- else if (rev > 0xC2 && rev < 0xC5)
|
|
|
|
|
|
+ else if (pdev->revision > 0xC2 && pdev->revision < 0xC5)
|
|
pci_write_config_byte(isa_bridge, 0x79, tmp | 0x02);
|
|
pci_write_config_byte(isa_bridge, 0x79, tmp | 0x02);
|
|
}
|
|
}
|
|
- if (rev >= 0x20) {
|
|
|
|
|
|
+ if (pdev->revision >= 0x20) {
|
|
/*
|
|
/*
|
|
* CD_ROM DMA on (0x53 bit 0). Enable this even if we want
|
|
* CD_ROM DMA on (0x53 bit 0). Enable this even if we want
|
|
* to use PIO. 0x53 bit 1 (rev 20 only) - enable FIFO control
|
|
* to use PIO. 0x53 bit 1 (rev 20 only) - enable FIFO control
|
|
* via 0x54/55.
|
|
* via 0x54/55.
|
|
*/
|
|
*/
|
|
pci_read_config_byte(pdev, 0x53, &tmp);
|
|
pci_read_config_byte(pdev, 0x53, &tmp);
|
|
- if (rev <= 0x20)
|
|
|
|
|
|
+ if (pdev->revision <= 0x20)
|
|
tmp &= ~0x02;
|
|
tmp &= ~0x02;
|
|
- if (rev >= 0xc7)
|
|
|
|
|
|
+ if (pdev->revision >= 0xc7)
|
|
tmp |= 0x03;
|
|
tmp |= 0x03;
|
|
else
|
|
else
|
|
tmp |= 0x01; /* CD_ROM enable for DMA */
|
|
tmp |= 0x01; /* CD_ROM enable for DMA */
|
|
@@ -579,25 +577,23 @@ static int ali_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
|
};
|
|
};
|
|
|
|
|
|
const struct ata_port_info *ppi[] = { NULL, NULL };
|
|
const struct ata_port_info *ppi[] = { NULL, NULL };
|
|
- u8 rev, tmp;
|
|
|
|
|
|
+ u8 tmp;
|
|
struct pci_dev *isa_bridge;
|
|
struct pci_dev *isa_bridge;
|
|
|
|
|
|
- pci_read_config_byte(pdev, PCI_REVISION_ID, &rev);
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* The chipset revision selects the driver operations and
|
|
* The chipset revision selects the driver operations and
|
|
* mode data.
|
|
* mode data.
|
|
*/
|
|
*/
|
|
|
|
|
|
- if (rev < 0x20) {
|
|
|
|
|
|
+ if (pdev->revision < 0x20) {
|
|
ppi[0] = &info_early;
|
|
ppi[0] = &info_early;
|
|
- } else if (rev < 0xC2) {
|
|
|
|
|
|
+ } else if (pdev->revision < 0xC2) {
|
|
ppi[0] = &info_20;
|
|
ppi[0] = &info_20;
|
|
- } else if (rev == 0xC2) {
|
|
|
|
|
|
+ } else if (pdev->revision == 0xC2) {
|
|
ppi[0] = &info_c2;
|
|
ppi[0] = &info_c2;
|
|
- } else if (rev == 0xC3) {
|
|
|
|
|
|
+ } else if (pdev->revision == 0xC3) {
|
|
ppi[0] = &info_c3;
|
|
ppi[0] = &info_c3;
|
|
- } else if (rev == 0xC4) {
|
|
|
|
|
|
+ } else if (pdev->revision == 0xC4) {
|
|
ppi[0] = &info_c4;
|
|
ppi[0] = &info_c4;
|
|
} else
|
|
} else
|
|
ppi[0] = &info_c5;
|
|
ppi[0] = &info_c5;
|
|
@@ -605,7 +601,7 @@ static int ali_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
|
ali_init_chipset(pdev);
|
|
ali_init_chipset(pdev);
|
|
|
|
|
|
isa_bridge = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL);
|
|
isa_bridge = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL);
|
|
- if (isa_bridge && rev >= 0x20 && rev < 0xC2) {
|
|
|
|
|
|
+ if (isa_bridge && pdev->revision >= 0x20 && pdev->revision < 0xC2) {
|
|
/* Are we paired with a UDMA capable chip */
|
|
/* Are we paired with a UDMA capable chip */
|
|
pci_read_config_byte(isa_bridge, 0x5E, &tmp);
|
|
pci_read_config_byte(isa_bridge, 0x5E, &tmp);
|
|
if ((tmp & 0x1E) == 0x12)
|
|
if ((tmp & 0x1E) == 0x12)
|