[coreboot] [commit] r5560 - in trunk/src: . drivers drivers/sil drivers/sil/3114 mainboard/tyan/s2881 mainboard/tyan/s2882

repository service svn at coreboot.org
Sun May 16 17:31:54 CEST 2010


Author: ruik
Date: Sun May 16 17:31:53 2010
New Revision: 5560
URL: https://tracker.coreboot.org/trac/coreboot/changeset/5560

Log:
Following patch reprograms SIL3114 into PCI IDE native mode compatible class code allowing 
legacy software to recognize it as IDE and boot from it. I think
this should be the default for two Tyan boards (k8s aka s2882 and s2881).

Rename the directory to sil prefix to match the Linux kernel naming.
(And I think it was a SiliconSystems wish to be named sil ;)

Signed-off-by: Rudolf Marek <r.marek at assembler.cz>
Acked-by: Stefan Reinauer <stepan at coresystems.de>

Added:
   trunk/src/drivers/Kconfig
   trunk/src/drivers/sil/
      - copied from r5559, trunk/src/drivers/si/
   trunk/src/drivers/sil/3114/Makefile.inc
   trunk/src/drivers/sil/3114/sil_sata.c
      - copied, changed from r5559, trunk/src/drivers/si/3114/si_sata.c
Deleted:
   trunk/src/drivers/sil/3114/si_sata.c
Modified:
   trunk/src/Kconfig
   trunk/src/drivers/Makefile.inc
   trunk/src/mainboard/tyan/s2881/Kconfig
   trunk/src/mainboard/tyan/s2882/Kconfig

Modified: trunk/src/Kconfig
==============================================================================
--- trunk/src/Kconfig	Sun May 16 16:24:41 2010	(r5559)
+++ trunk/src/Kconfig	Sun May 16 17:31:53 2010	(r5560)
@@ -100,6 +100,10 @@
 
 endmenu
 
+menu "Generic Drivers"
+source src/drivers/Kconfig
+endmenu
+
 config PCI_BUS_SEGN_BITS
 	int
 	default 0

Added: trunk/src/drivers/Kconfig
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/src/drivers/Kconfig	Sun May 16 17:31:53 2010	(r5560)
@@ -0,0 +1,25 @@
+##
+## This file is part of the coreboot project.
+##
+## Copyright (C) 2010 Rudolf Marek <r.marek at assembler.cz>
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; version 2 of the License.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+##
+
+config DRIVERS_SIL
+	bool "Silicon Image SIL3114"
+	default n
+	help
+	It sets PCI class to IDE compatible native mode, allowing
+	SeaBIOS, FILO etc... to boot from it.

Modified: trunk/src/drivers/Makefile.inc
==============================================================================
--- trunk/src/drivers/Makefile.inc	Sun May 16 16:24:41 2010	(r5559)
+++ trunk/src/drivers/Makefile.inc	Sun May 16 17:31:53 2010	(r5560)
@@ -1,2 +1,3 @@
 subdirs-y += generic/debug
 subdirs-y += ati/ragexl
+subdirs-y += sil/3114

Added: trunk/src/drivers/sil/3114/Makefile.inc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/src/drivers/sil/3114/Makefile.inc	Sun May 16 17:31:53 2010	(r5560)
@@ -0,0 +1 @@
+driver-$(CONFIG_DRIVERS_SIL) += sil_sata.o

Copied and modified: trunk/src/drivers/sil/3114/sil_sata.c (from r5559, trunk/src/drivers/si/3114/si_sata.c)
==============================================================================
--- trunk/src/drivers/si/3114/si_sata.c	Sun May 16 16:24:41 2010	(r5559, copy source)
+++ trunk/src/drivers/sil/3114/sil_sata.c	Sun May 16 17:31:53 2010	(r5560)
@@ -1,10 +1,9 @@
-/* Copyright 2003-2004 Tyan Computer*/
-
-/* Author: Yinghai Lu yhlu at tyan.com
+/* Copyright 2003-2004 Tyan Computer
+ *  Yinghai Lu yhlu at tyan.com
  *
+ * Copyright (C) 2010 Rudolf Marek <r.marek at assembler.cz>
  */
 
-
 #include <delay.h>
 #include <stdlib.h>
 #include <string.h>
@@ -16,41 +15,23 @@
 #include <device/pci_ids.h>
 #include <device/pci_ops.h>
 
-
 static void si_sata_init(struct device *dev)
 {
-	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);
-
-	        /* 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");
-
-	}
-
-
+	/* enable change device id and class id */
+	dword = pci_read_config32(dev,0x40);
+	dword |= (1<<0);
+	pci_write_config32(dev, 0x40, dword);
+	/* Set IDE Class, Native mode, two drives per channel */
+	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_INFO, "SIL3114 set to IDE compatible mode\n");
 }
+
 static struct device_operations si_sata_ops  = {
 	.read_resources   = pci_dev_read_resources,
 	.set_resources    = pci_dev_set_resources,
@@ -64,4 +45,3 @@
         .vendor = 0x1095,
         .device = 0x3114,
 };
-

Modified: trunk/src/mainboard/tyan/s2881/Kconfig
==============================================================================
--- trunk/src/mainboard/tyan/s2881/Kconfig	Sun May 16 16:24:41 2010	(r5559)
+++ trunk/src/mainboard/tyan/s2881/Kconfig	Sun May 16 17:31:53 2010	(r5560)
@@ -13,6 +13,7 @@
 	select HAVE_MP_TABLE
 	select BOARD_ROMSIZE_KB_512
 	select SB_HT_CHAIN_UNITID_OFFSET_ONLY
+	select DRIVERS_SIL
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/tyan/s2882/Kconfig
==============================================================================
--- trunk/src/mainboard/tyan/s2882/Kconfig	Sun May 16 16:24:41 2010	(r5559)
+++ trunk/src/mainboard/tyan/s2882/Kconfig	Sun May 16 17:31:53 2010	(r5560)
@@ -12,6 +12,7 @@
 	select HAVE_MP_TABLE
 	select BOARD_ROMSIZE_KB_512
 	select SB_HT_CHAIN_UNITID_OFFSET_ONLY
+	select DRIVERS_SIL
 
 config MAINBOARD_DIR
 	string




More information about the coreboot mailing list