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@assembler.cz Acked-by: Stefan Reinauer stepan@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@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@tyan.com +/* Copyright 2003-2004 Tyan Computer + * Yinghai Lu yhlu@tyan.com * + * Copyright (C) 2010 Rudolf Marek r.marek@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
repository service wrote:
+++ trunk/src/Kconfig Sun May 16 17:31:53 2010 (r5560) @@ -100,6 +100,10 @@
endmenu
+menu "Generic Drivers" +source src/drivers/Kconfig +endmenu
Maybe some things that are in southbridge/ but aren't really southbridges goes there as well?
+++ trunk/src/drivers/Kconfig Sun May 16 17:31:53 2010 (r5560)
..
+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.
Maybe the config is better named something that indicates which controllers it applies to?
+++ 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
I think it would be good to rearrange a little bit so that the driver is included by select CONFIG_something in mainboards with a config option that is not visible in make menuconfig, and to have a separate option, visible to the user, for actually swithing the mode of the controller. Or will noone ever want to not switch the mode?
//Peter
On Mon, May 17, 2010 at 04:01:21AM +0200, Peter Stuge wrote:
I think it would be good to rearrange a little bit so that the driver is included by select CONFIG_something in mainboards with a config option that is not visible in make menuconfig, and to have a separate option, visible to the user, for actually swithing the mode of the controller. Or will noone ever want to not switch the mode?
I don't really see a use case for switching the mode. Without the patch, the only way I've managed to boot from that controller is with a linux kernel - either in the rom image, or loaded via gpxe or some other means.
I can't imagine the use case where you would *not* want to have the mode set to make the drive bootable. Unless there is some downside to doing so that I'm totally missing?
Thanks, Ward.
Hi,
Its a selectable config option because you can for example force an add on card to select this mode and not to run its BIOS.
Rudolf