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 <[email protected]>
Acked-by: Stefan Reinauer <[email protected]>

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 <[email protected]>
+##
+## 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 [email protected]
+/* Copyright 2003-2004 Tyan Computer
+ *  Yinghai Lu [email protected]
  *
+ * Copyright (C) 2010 Rudolf Marek <[email protected]>
  */
 
-
 #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

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to