[libata] pata_via: support VX855, future chips whose IDE controller use 0x0571
It supports VX855 and future chips whose IDE controller uses PCI ID 0x0571. Signed-off-by: Joseph Chan <josephchan@via.com.tw> Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
parent
f9228c7ffa
commit
e4d866cdea
@ -86,6 +86,10 @@ enum {
|
|||||||
VIA_SATA_PATA = 0x800, /* SATA/PATA combined configuration */
|
VIA_SATA_PATA = 0x800, /* SATA/PATA combined configuration */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
VIA_IDFLAG_SINGLE = (1 << 0), /* single channel controller) */
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* VIA SouthBridge chips.
|
* VIA SouthBridge chips.
|
||||||
*/
|
*/
|
||||||
@ -97,8 +101,12 @@ static const struct via_isa_bridge {
|
|||||||
u8 rev_max;
|
u8 rev_max;
|
||||||
u16 flags;
|
u16 flags;
|
||||||
} via_isa_bridges[] = {
|
} via_isa_bridges[] = {
|
||||||
|
{ "vx855", PCI_DEVICE_ID_VIA_VX855, 0x00, 0x2f,
|
||||||
|
VIA_UDMA_133 | VIA_BAD_AST | VIA_SATA_PATA },
|
||||||
{ "vx800", PCI_DEVICE_ID_VIA_VX800, 0x00, 0x2f, VIA_UDMA_133 |
|
{ "vx800", PCI_DEVICE_ID_VIA_VX800, 0x00, 0x2f, VIA_UDMA_133 |
|
||||||
VIA_BAD_AST | VIA_SATA_PATA },
|
VIA_BAD_AST | VIA_SATA_PATA },
|
||||||
|
{ "vt8261", PCI_DEVICE_ID_VIA_8261, 0x00, 0x2f,
|
||||||
|
VIA_UDMA_133 | VIA_BAD_AST },
|
||||||
{ "vt8237s", PCI_DEVICE_ID_VIA_8237S, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
|
{ "vt8237s", PCI_DEVICE_ID_VIA_8237S, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
|
||||||
{ "vt8251", PCI_DEVICE_ID_VIA_8251, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
|
{ "vt8251", PCI_DEVICE_ID_VIA_8251, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
|
||||||
{ "cx700", PCI_DEVICE_ID_VIA_CX700, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST | VIA_SATA_PATA },
|
{ "cx700", PCI_DEVICE_ID_VIA_CX700, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST | VIA_SATA_PATA },
|
||||||
@ -122,6 +130,8 @@ static const struct via_isa_bridge {
|
|||||||
{ "vt82c586", PCI_DEVICE_ID_VIA_82C586_0, 0x00, 0x0f, VIA_UDMA_NONE | VIA_SET_FIFO },
|
{ "vt82c586", PCI_DEVICE_ID_VIA_82C586_0, 0x00, 0x0f, VIA_UDMA_NONE | VIA_SET_FIFO },
|
||||||
{ "vt82c576", PCI_DEVICE_ID_VIA_82C576, 0x00, 0x2f, VIA_UDMA_NONE | VIA_SET_FIFO | VIA_NO_UNMASK },
|
{ "vt82c576", PCI_DEVICE_ID_VIA_82C576, 0x00, 0x2f, VIA_UDMA_NONE | VIA_SET_FIFO | VIA_NO_UNMASK },
|
||||||
{ "vt82c576", PCI_DEVICE_ID_VIA_82C576, 0x00, 0x2f, VIA_UDMA_NONE | VIA_SET_FIFO | VIA_NO_UNMASK | VIA_BAD_ID },
|
{ "vt82c576", PCI_DEVICE_ID_VIA_82C576, 0x00, 0x2f, VIA_UDMA_NONE | VIA_SET_FIFO | VIA_NO_UNMASK | VIA_BAD_ID },
|
||||||
|
{ "vtxxxx", PCI_DEVICE_ID_VIA_ANON, 0x00, 0x2f,
|
||||||
|
VIA_UDMA_133 | VIA_BAD_AST },
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -460,6 +470,7 @@ static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||||||
static int printed_version;
|
static int printed_version;
|
||||||
u8 enable;
|
u8 enable;
|
||||||
u32 timing;
|
u32 timing;
|
||||||
|
unsigned long flags = id->driver_data;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if (!printed_version++)
|
if (!printed_version++)
|
||||||
@ -469,9 +480,13 @@ static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
|
if (flags & VIA_IDFLAG_SINGLE)
|
||||||
|
ppi[1] = &ata_dummy_port_info;
|
||||||
|
|
||||||
/* To find out how the IDE will behave and what features we
|
/* To find out how the IDE will behave and what features we
|
||||||
actually have to look at the bridge not the IDE controller */
|
actually have to look at the bridge not the IDE controller */
|
||||||
for (config = via_isa_bridges; config->id; config++)
|
for (config = via_isa_bridges; config->id != PCI_DEVICE_ID_VIA_ANON;
|
||||||
|
config++)
|
||||||
if ((isa = pci_get_device(PCI_VENDOR_ID_VIA +
|
if ((isa = pci_get_device(PCI_VENDOR_ID_VIA +
|
||||||
!!(config->flags & VIA_BAD_ID),
|
!!(config->flags & VIA_BAD_ID),
|
||||||
config->id, NULL))) {
|
config->id, NULL))) {
|
||||||
@ -482,10 +497,6 @@ static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||||||
pci_dev_put(isa);
|
pci_dev_put(isa);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!config->id) {
|
|
||||||
printk(KERN_WARNING "via: Unknown VIA SouthBridge, disabling.\n");
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
pci_dev_put(isa);
|
pci_dev_put(isa);
|
||||||
|
|
||||||
if (!(config->flags & VIA_NO_ENABLES)) {
|
if (!(config->flags & VIA_NO_ENABLES)) {
|
||||||
@ -587,6 +598,7 @@ static const struct pci_device_id via[] = {
|
|||||||
{ PCI_VDEVICE(VIA, 0x1571), },
|
{ PCI_VDEVICE(VIA, 0x1571), },
|
||||||
{ PCI_VDEVICE(VIA, 0x3164), },
|
{ PCI_VDEVICE(VIA, 0x3164), },
|
||||||
{ PCI_VDEVICE(VIA, 0x5324), },
|
{ PCI_VDEVICE(VIA, 0x5324), },
|
||||||
|
{ PCI_VDEVICE(VIA, 0xC409), VIA_IDFLAG_SINGLE },
|
||||||
|
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
|
@ -1357,6 +1357,7 @@
|
|||||||
#define PCI_DEVICE_ID_VIA_8783_0 0x3208
|
#define PCI_DEVICE_ID_VIA_8783_0 0x3208
|
||||||
#define PCI_DEVICE_ID_VIA_8237 0x3227
|
#define PCI_DEVICE_ID_VIA_8237 0x3227
|
||||||
#define PCI_DEVICE_ID_VIA_8251 0x3287
|
#define PCI_DEVICE_ID_VIA_8251 0x3287
|
||||||
|
#define PCI_DEVICE_ID_VIA_8261 0x3402
|
||||||
#define PCI_DEVICE_ID_VIA_8237A 0x3337
|
#define PCI_DEVICE_ID_VIA_8237A 0x3337
|
||||||
#define PCI_DEVICE_ID_VIA_8237S 0x3372
|
#define PCI_DEVICE_ID_VIA_8237S 0x3372
|
||||||
#define PCI_DEVICE_ID_VIA_SATA_EIDE 0x5324
|
#define PCI_DEVICE_ID_VIA_SATA_EIDE 0x5324
|
||||||
@ -1366,10 +1367,13 @@
|
|||||||
#define PCI_DEVICE_ID_VIA_CX700 0x8324
|
#define PCI_DEVICE_ID_VIA_CX700 0x8324
|
||||||
#define PCI_DEVICE_ID_VIA_CX700_IDE 0x0581
|
#define PCI_DEVICE_ID_VIA_CX700_IDE 0x0581
|
||||||
#define PCI_DEVICE_ID_VIA_VX800 0x8353
|
#define PCI_DEVICE_ID_VIA_VX800 0x8353
|
||||||
|
#define PCI_DEVICE_ID_VIA_VX855 0x8409
|
||||||
#define PCI_DEVICE_ID_VIA_8371_1 0x8391
|
#define PCI_DEVICE_ID_VIA_8371_1 0x8391
|
||||||
#define PCI_DEVICE_ID_VIA_82C598_1 0x8598
|
#define PCI_DEVICE_ID_VIA_82C598_1 0x8598
|
||||||
#define PCI_DEVICE_ID_VIA_838X_1 0xB188
|
#define PCI_DEVICE_ID_VIA_838X_1 0xB188
|
||||||
#define PCI_DEVICE_ID_VIA_83_87XX_1 0xB198
|
#define PCI_DEVICE_ID_VIA_83_87XX_1 0xB198
|
||||||
|
#define PCI_DEVICE_ID_VIA_C409_IDE 0XC409
|
||||||
|
#define PCI_DEVICE_ID_VIA_ANON 0xFFFF
|
||||||
|
|
||||||
#define PCI_VENDOR_ID_SIEMENS 0x110A
|
#define PCI_VENDOR_ID_SIEMENS 0x110A
|
||||||
#define PCI_DEVICE_ID_SIEMENS_DSCC4 0x2102
|
#define PCI_DEVICE_ID_SIEMENS_DSCC4 0x2102
|
||||||
|
Loading…
x
Reference in New Issue
Block a user