> > > Also all the second port stuff is unneeded: Just do > > > > if (has_one_port) > > ppi[1] = &ata_dummy_port_info; > > > > and only the first port will be probed. > > > > We will check it out. Thanks. :) How about this one? Thanks. --- a/drivers/ata/pata_via.c 2008-12-25 07:26:37.000000000 +0800 +++ b/drivers/ata/pata_via.c 2009-01-17 03:34:55.000000000 +0800 @@ -63,6 +63,7 @@ #define DRV_NAME "pata_via" #define DRV_VERSION "0.3.3" +#define SINGLE 1 /* To identify single channel controllers */ /* * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx @@ -97,6 +98,8 @@ u8 rev_max; u16 flags; } via_isa_bridges[] = { + { "vtxxxx", PCI_DEVICE_ID_VIA_ANON, 0x00, 0x2f, VIA_UDMA_133 | + VIA_BAD_AST }, { "vx800", PCI_DEVICE_ID_VIA_VX800, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST | VIA_SATA_PATA }, { "vt8237s", PCI_DEVICE_ID_VIA_8237S, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, @@ -460,6 +463,7 @@ static int printed_version; u8 enable; u32 timing; + int single_port = (int) id->driver_data; int rc; if (!printed_version++) @@ -469,6 +473,9 @@ if (rc) return rc; + if (single_port) + ppi[1] = &ata_dummy_port_info; + /* To find out how the IDE will behave and what features we actually have to look at the bridge not the IDE controller */ for (config = via_isa_bridges; config->id; config++) @@ -483,10 +490,10 @@ } if (!config->id) { - printk(KERN_WARNING "via: Unknown VIA SouthBridge, disabling.\n"); - return -ENODEV; - } - pci_dev_put(isa); + printk(KERN_WARNING "via: Unknown VIA SouthBridge.\n"); + config = via_isa_bridges; + } else + pci_dev_put(isa); if (!(config->flags & VIA_NO_ENABLES)) { /* 0x40 low bits indicate enabled channels */ @@ -587,6 +594,7 @@ { PCI_VDEVICE(VIA, 0x1571), }, { PCI_VDEVICE(VIA, 0x3164), }, { PCI_VDEVICE(VIA, 0x5324), }, + { PCI_VDEVICE(VIA, 0xC409), SINGLE }, { }, }; ��.n��������+%������w��{.n�����{��'^�)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥