-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

The sil3114 chip has a class code set to something else then IDE by strap
resistor. It took me long time to figure out that this chip is otherwise IDE
compatible ;)

Try attached patch for coreboot which reprograms it back to IDE mode ;)

It should start to work - booting from FILO and from Seabios.

Rudolf
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkvl5s0ACgkQ3J9wPJqZRNU8fwCg0ImG+JeZyuIpAjBB0OQBxu32
OP0AnjzRNyz6DRdLHLnyfAS+wseQn6a3
=Mc1w
-----END PGP SIGNATURE-----
Index: src/drivers/Makefile.inc
===================================================================
--- src/drivers/Makefile.inc	(revision 5511)
+++ src/drivers/Makefile.inc	(working copy)
@@ -1,2 +1,4 @@
 subdirs-y += generic/debug
 subdirs-y += ati/ragexl
+#subdirs-y += si/3114
+driver-y += si/3114/si_sata.c 
Index: src/drivers/si/3114/si_sata.c
===================================================================
--- src/drivers/si/3114/si_sata.c	(revision 5511)
+++ src/drivers/si/3114/si_sata.c	(working copy)
@@ -21,33 +21,23 @@
 {
 	uint16_t word;
 	uint32_t dword;
-#if 0
-        word = pci_read_config16(dev, 0x4);
-        word |= ((1 << 2) |(1<<4)); // Command: 3--> 17
-        pci_write_config16(dev, 0x4, word);
-#endif
 
-	/* some driver change class code to 0x104, but not change deviceid without reason*/
-        /* restore it so we don't need to unplug AC power to restore it*/
-
-	word = pci_read_config16(dev, 0x0a);
-	if(word!=0x0180) {
 		 /* enble change device id and class id*/
 	        dword = pci_read_config32(dev,0x40);
 	        dword |= (1<<0);
         	pci_write_config32(dev, 0x40, dword);
 
-		word = 0x0180;
-		pci_write_config16(dev, 0x0a, word);
+		dword = 0x01018f00;
+		pci_write_config32(dev, 0x08, dword);
 
 	        /* disable change device id and class id*/
         	dword = pci_read_config32(dev,0x40);
         	dword &= ~(1<<0);
         	pci_write_config32(dev, 0x40, dword);
 
-		printk(BIOS_DEBUG, "Class code restored.\n");
+		printk(BIOS_DEBUG, "SIL Class code programmed to 2 channels IDE.\n");
 
-	}
+	
 
 
 }

Attachment: fix_sil.patch.sig
Description: Binary data

-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to