--- linux/drivers/ide/alim15x3.c~ 2002-08-03 03:06:10.000000000 +0900 +++ linux/drivers/ide/alim15x3.c 2002-08-03 03:07:15.000000000 +0900 @@ -37,6 +37,7 @@ static int ali_get_info(char *buffer, char **addr, off_t offset, int count); extern int (*ali_display_info)(char *, char **, off_t, int); /* ide-proc.c */ static struct pci_dev *bmide_dev; +static int enable_south = 0; char *fifo[4] = { "FIFO Off", @@ -605,6 +606,7 @@ pci_read_config_byte(dev, 0x4b, &tmpbyte); pci_write_config_byte(dev, 0x4b, tmpbyte | 0x08); + if( enable_south ){ /* * set south-bridge's enable bit, m1533, 0x79 */ @@ -620,6 +622,7 @@ */ pci_write_config_byte(isa_dev, 0x79, tmpbyte | 0x02); } + } } else { /* * revision 0x20 (1543-E, 1543-F) @@ -671,6 +674,7 @@ pci_read_config_byte(dev, 0x4b, &tmpbyte); pci_write_config_byte(dev, 0x4b, tmpbyte | 0x08); + if( enable_south ){ /* * set south-bridge's enable bit, m1533, 0x79 */ @@ -686,6 +690,7 @@ */ pci_write_config_byte(isa_dev, 0x79, tmpbyte | 0x02); } + } #endif /* ALI_INIT_CODE_TEST */ /* * Ultra66 cable detection (from Host View) @@ -821,3 +826,13 @@ ide_setup_pci_device(dev, d); } +static int __init enable_south_setup(char *str) +{ +/* printk("ALI15X3: enable_south_setup %d\n", str); */ + if(strcmp(str, "enable_south") == 0) + enable_south = 1; + return 1; +} + +__setup("alim15x3=", enable_south_setup); +