Author: rminnich
Date: 2008-10-31 19:57:37 +0100 (Fri, 31 Oct 2008)
New Revision: 973

Added:
   coreboot-v3/mainboard/via/epia-cn/cmos.layout
   coreboot-v3/mainboard/via/epia-cn/dts
   coreboot-v3/mainboard/via/epia-cn/initram.c
   coreboot-v3/mainboard/via/epia-cn/mainboard.h
   coreboot-v3/mainboard/via/epia-cn/stage1.c
Log:
new files
Signed-off-by: Ronald G. Minnich <[EMAIL PROTECTED]>
Acked-by: Ronald G. Minnich <[EMAIL PROTECTED]>



Added: coreboot-v3/mainboard/via/epia-cn/cmos.layout
===================================================================
--- coreboot-v3/mainboard/via/epia-cn/cmos.layout                               
(rev 0)
+++ coreboot-v3/mainboard/via/epia-cn/cmos.layout       2008-10-31 18:57:37 UTC 
(rev 973)
@@ -0,0 +1,131 @@
+#
+# This file is part of the coreboot project.
+# 
+# Copyright (C) 2007-2008 coresystems GmbH
+#
+# 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
+#
+
+# TODO verify that these are correct for this part on the VIA
+
+# -----------------------------------------------------------------
+entries
+
+#start-bit length  config config-ID    name
+#0            8       r       0        seconds
+#8            8       r       0        alarm_seconds
+#16           8       r       0        minutes
+#24           8       r       0        alarm_minutes
+#32           8       r       0        hours
+#40           8       r       0        alarm_hours
+#48           8       r       0        day_of_week
+#56           8       r       0        day_of_month
+#64           8       r       0        month
+#72           8       r       0        year
+# -----------------------------------------------------------------
+# Status Register A
+#80           4       r       0        rate_select
+#84           3       r       0        REF_Clock
+#87           1       r       0        UIP
+# -----------------------------------------------------------------
+# Status Register B
+#88           1       r       0        auto_switch_DST
+#89           1       r       0        24_hour_mode
+#90           1       r       0        binary_values_enable
+#91           1       r       0        square-wave_out_enable
+#92           1       r       0        update_finished_enable
+#93           1       r       0        alarm_interrupt_enable
+#94           1       r       0        periodic_interrupt_enable
+#95           1       r       0        disable_clock_updates
+# -----------------------------------------------------------------
+# Status Register C
+#96           4       r       0        status_c_rsvd
+#100          1       r       0        uf_flag
+#101          1       r       0        af_flag
+#102          1       r       0        pf_flag
+#103          1       r       0        irqf_flag
+# -----------------------------------------------------------------
+# Status Register D
+#104          7       r       0        status_d_rsvd
+#111          1       r       0        valid_cmos_ram
+# -----------------------------------------------------------------
+# Diagnostic Status Register
+#112          8       r       0        diag_rsvd1
+
+# -----------------------------------------------------------------
+0          120       r       0        reserved_memory
+#120        264       r       0        unused
+
+# -----------------------------------------------------------------
+# RTC_BOOT_BYTE (coreboot hardcoded)
+384          1       e       4        boot_option
+385          1       e       4        last_boot
+388          4       r       0        reboot_bits
+#390          2       r       0        unused?
+
+# -----------------------------------------------------------------
+# coreboot config options: console
+392          3       e       5        baud_rate
+395          4       e       6        debug_level
+#399          1       r       0        unused
+
+# coreboot config options: southbridge
+408          1       e       1        nmi
+409          1       e       1        power_on_after_fail
+#410          6       r       0        unused
+
+# coreboot config options: bootloader
+416        512       s       0        boot_devices
+#928         80       r       0        unused
+
+# coreboot config options: check sums
+984         16       h       0        check_sum
+
+# -----------------------------------------------------------------
+
+enumerations
+
+#ID value   text
+1     0     Disable
+1     1     Enable
+2     0     Enable
+2     1     Disable
+4     0     Fallback
+4     1     Normal
+5     0     115200
+5     1     57600
+5     2     38400
+5     3     19200
+5     4     9600
+5     5     4800
+5     6     2400
+5     7     1200
+6     1     Emergency
+6     2     Alert
+6     3     Critical
+6     4     Error
+6     5     Warning
+6     6     Notice
+6     7     Info
+6     8     Debug
+6     9     Spew
+
+# -----------------------------------------------------------------
+checksums
+
+checksum 392 983 984
+
+

Added: coreboot-v3/mainboard/via/epia-cn/dts
===================================================================
--- coreboot-v3/mainboard/via/epia-cn/dts                               (rev 0)
+++ coreboot-v3/mainboard/via/epia-cn/dts       2008-10-31 18:57:37 UTC (rev 
973)
@@ -0,0 +1,76 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2008 Corey Osgood <[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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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
+ */
+
+/*
+-[0000:00]-+-00.0  VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
+           +-00.1  VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
+           +-00.2  VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
+           +-00.3  VIA Technologies, Inc. PT890 Host Bridge
+           +-00.4  VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
+           +-00.7  VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge
+           +-01.0-[0000:01]----00.0  VIA Technologies, Inc. UniChrome Pro IGP
+           +-08.0  RaLink RT2561/RT61 802.11g PCI
+           +-0a.0  VIA Technologies, Inc. IEEE 1394 Host Controller
+           +-0f.0  VIA Technologies, Inc. VIA VT6420 SATA RAID Controller
+           +-0f.1  VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C 
PIPC Bus Master IDE
+           +-10.0  VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller
+           +-10.1  VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller
+           +-10.2  VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller
+           +-10.3  VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller
+           +-10.4  VIA Technologies, Inc. USB 2.0
+           +-11.0  VIA Technologies, Inc. VT8237 ISA bridge 
[KT600/K8T800/K8T890 South]
+           +-11.5  VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio 
Controller
+           \-12.0  VIA Technologies, Inc. VT6102 [Rhine-II]
+*/
+
+/{
+       mainboard_vendor = "VIA";
+       mainboard_name = "EPIA-CN";
+       mainboard_pci_subsystem_vendor = "0xdead"; /* TODO */
+       mainboard_pci_subsystem_device = "0xbeef"; /* TODO */
+       cpus { };
+       [EMAIL PROTECTED] {
+       };
+       [EMAIL PROTECTED] {
+               [EMAIL PROTECTED],0 {};
+               [EMAIL PROTECTED],1 {};
+               [EMAIL PROTECTED],2 {};
+               [EMAIL PROTECTED],3 {};
+               [EMAIL PROTECTED],4 {};
+               [EMAIL PROTECTED],7 {};
+               [EMAIL PROTECTED],0 {};
+               [EMAIL PROTECTED],0 {};
+               [EMAIL PROTECTED],0 {
+                       /config/("southbridge/via/vt8237/sata.dts");
+               };
+               [EMAIL PROTECTED],1 {
+                       /config/("southbridge/via/vt8237/ide.dts");
+               };
+               [EMAIL PROTECTED],0 {
+                       /config/("southbridge/via/vt8237/lpc.dts");
+               };
+               [EMAIL PROTECTED] {
+/*
+                       /config/("superio/via/vt1221/dts");
+                       com1enable = "1";
+*/
+               };
+       };
+};

Added: coreboot-v3/mainboard/via/epia-cn/initram.c
===================================================================
--- coreboot-v3/mainboard/via/epia-cn/initram.c                         (rev 0)
+++ coreboot-v3/mainboard/via/epia-cn/initram.c 2008-10-31 18:57:37 UTC (rev 
973)
@@ -0,0 +1,213 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2008 Corey Osgood <[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
+ */
+
+#define _MAINOBJECT
+
+#include <types.h>
+#include <lib.h>
+#include <console.h>
+#include <io.h>
+#include <spd.h>
+#include <via_c7.h>
+#include <arch/x86/pci_ops.h>
+#include <device/pci.h>
+#include <device/pci_ids.h>
+#include <superio/via/vt1211/vt1211.h>
+#include <southbridge/via/vt8237/vt8237.h>
+#include <northbridge/via/cn700/cn700.h>
+
+#define SMBUS_IO_BASE  0x0400
+
+u8 spd_read_byte(u16 dev, u8 addr)
+{
+       return smbus_read_byte(dev, addr, SMBUS_IO_BASE);
+}
+
+void find_smbus_devices(u8 min, u8 max)
+{
+       u8 dev;
+       u8 result;
+       for(dev = min; dev < max; dev++)
+       {
+               result = spd_read_byte(dev, SPD_MEMORY_TYPE);
+               switch(result)
+               {
+                       case SPD_MEMORY_TYPE_SDRAM: printk(BIOS_DEBUG,
+                               "Possible SDRAM spd at address 0x%2x\n", dev);
+                               break;
+                       case SPD_MEMORY_TYPE_SDRAM_DDR: printk(BIOS_DEBUG,
+                               "Possible DDR SDRAM spd at address 0x%2x\n", 
dev);
+                               break;
+                       case SPD_MEMORY_TYPE_SDRAM_DDR2: printk(BIOS_DEBUG,
+                               "Possible DDR2 SDRAM spd at address 0x%2x\n", 
dev);
+                               break;
+               };
+       }
+}
+
+
+void dump_smbus_registers(void)
+{
+       int device;
+       for(device = 1; device < (int)0x80; device++) {
+               int j;
+               //if(spd_read_byte(device, 0) < 0 )
+               //      continue;
+               printk(BIOS_DEBUG, "smbus: %02x", device);
+               for(j = 0; j < 256; j++) {
+                       int status;
+                       u8 byte;
+                       status = spd_read_byte(device, j);
+                       if (status < 0) {
+                               break;
+                       }
+                       if ((j & 0xf) == 0) {
+                               printk(BIOS_DEBUG, "\n%02x: ",j);
+                       }
+                       byte = status & 0xff;
+                       printk(BIOS_DEBUG, "%02x ", byte);
+               }
+               printk(BIOS_DEBUG, "\n");
+       }
+}
+
+static void enable_mainboard_devices(void) 
+{
+       u32 dev;
+
+       pci_conf1_find_device(0x1106, 0x3227, &dev);
+       /* Disable GP3 */
+       pci_conf1_write_config8(dev, 0x98, 0x00);
+
+       pci_conf1_write_config8(dev, 0x50, 0x88);//disable mc97, sata
+       pci_conf1_write_config8(dev, 0x51, 0x1f);
+       pci_conf1_write_config8(dev, 0x58, 0x60);
+       pci_conf1_write_config8(dev, 0x59, 0x80);
+       pci_conf1_write_config8(dev, 0x5b, 0x08);
+
+       pci_conf1_find_device(0x1106, 0x0571, &dev);
+
+       /* Make it respond to IO space */
+       pci_conf1_write_config8(dev, 0x04, 0x07);
+
+       /* Compatibility mode addresses */
+       //pci_conf1_write_config32(dev, 0x10, 0);
+       //pci_conf1_write_config32(dev, 0x14, 0);
+       //pci_conf1_write_config32(dev, 0x18, 0);
+       //pci_conf1_write_config32(dev, 0x1b, 0);
+
+       /* Native mode base address */
+       //pci_conf1_write_config32(dev, 0x20, BUS_MASTER_ADDR | 1);
+
+       pci_conf1_write_config8(dev, 0x40, 0x4b);//was 0x3
+       pci_conf1_write_config8(dev, 0x41, 0xf2);
+       pci_conf1_write_config8(dev, 0x42, 0x09);
+       /* I'll be damned if I know what these do */
+       pci_conf1_write_config8(dev, 0x3c, 0xff);//was 0x0e
+       pci_conf1_write_config8(dev, 0x3d, 0x00);//was 0x00
+}
+
+static void enable_shadow_ram(void) 
+{
+       u8 shadowreg;
+
+       printk(BIOS_DEBUG, "Enabling shadow ram\n");
+       /* Enable shadow ram as normal dram */
+       /* 0xc0000-0xcffff */
+       pci_conf1_write_config8(PCI_BDF(0, 0, 3), 0x80, 0xff);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x61, 0xff);
+       /* 0xd0000-0xdffff */
+       pci_conf1_write_config8(PCI_BDF(0, 0, 3), 0x81, 0xff);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x62, 0xff);
+       /* 0xe0000-0xeffff */
+       pci_conf1_write_config8(PCI_BDF(0, 0, 3), 0x82, 0xff);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x64, 0xff);
+
+       /* 0xf0000-0xfffff */
+       shadowreg = pci_conf1_read_config8(PCI_BDF(0, 0, 3), 0x83);
+       shadowreg |= 0x30;
+       pci_conf1_write_config8(PCI_BDF(0, 0, 3), 0x83, shadowreg);
+
+       /* Do it again for the vlink controller */
+       shadowreg = pci_conf1_read_config8(PCI_BDF(0, 0, 7), 0x63);
+       shadowreg |= 0x30;
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x63, shadowreg);
+}
+
+static void enable_vlink(void)
+{
+       printk(BIOS_DEBUG, "Enabling Via V-Link\n");
+
+       /* Enable V-Link statically in 8x mode, using Jetway default values */
+//40: 14 19 88 80 82 44 00 04 13 b9 88 80 82 44 00 01
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x42, 0x88);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x45, 0x44);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x46, 0x00);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x47, 0x04);
+       //pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x48, 0x13);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x4b, 0x80);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x4c, 0x82);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x4d, 0x44);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x4e, 0x00);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x4f, 0x01);
+//b0: 05 01 00 83 35 66 66 64 45 98 77 11 00 00 00 00
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0xb4, 0x35);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0xb5, 0x66);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0xb6, 0x66);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0xb7, 0x64);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0xb8, 0x45);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0xb9, 0x98);
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0xba, 0x77);
+
+       /* This has to be done last, I think */
+       pci_conf1_write_config8(PCI_BDF(0, 0, 7), 0x48, 0x13);
+}
+
+int main(void)
+{
+       struct board_info ctrl[] = {
+               {
+               .d0f2 = PCI_BDF(0, 0, 2),
+               .d0f3 = PCI_BDF(0, 0, 3),
+               .d0f4 = PCI_BDF(0, 0, 4),
+               .d0f7 = PCI_BDF(0, 0, 7),
+               .d1f0 = PCI_BDF(0, 1, 0),
+               .spd_channel0 = {0x50},
+               },
+       };
+
+       printk(BIOS_DEBUG, "In initram.c main()\n");
+
+       enable_vlink();
+       enable_mainboard_devices();
+       enable_shadow_ram();
+
+       c7_cpu_setup(PCI_BDF(0, 0, 2));
+
+       enable_smbus(SMBUS_IO_BASE);
+       //find_smbus_devices(0x00, 0xff);
+       sdram_set_registers(ctrl);
+       sdram_set_spd_registers(ctrl);
+       ddr2_sdram_enable(ctrl);
+       
+       //ram_check(0, 640*1024);
+       //ram_check((8 * 1024 * 1024), (16 * 1024 * 1024));
+
+       return 0;
+}

Added: coreboot-v3/mainboard/via/epia-cn/mainboard.h
===================================================================
--- coreboot-v3/mainboard/via/epia-cn/mainboard.h                               
(rev 0)
+++ coreboot-v3/mainboard/via/epia-cn/mainboard.h       2008-10-31 18:57:37 UTC 
(rev 973)
@@ -0,0 +1,20 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2008 Corey Osgood <[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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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
+ */
+

Added: coreboot-v3/mainboard/via/epia-cn/stage1.c
===================================================================
--- coreboot-v3/mainboard/via/epia-cn/stage1.c                          (rev 0)
+++ coreboot-v3/mainboard/via/epia-cn/stage1.c  2008-10-31 18:57:37 UTC (rev 
973)
@@ -0,0 +1,58 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2007 Advanced Micro Devices, Inc.
+ * Copyright (C) 2008 Ronald G. Minnich <[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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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
+ */
+
+#include <types.h>
+#include <lib.h>
+#include <console.h>
+#include <io.h>
+#include <arch/x86/pci_ops.h>
+#include <device/pci.h>
+#include <device/pci_ids.h>
+#include <superio/fintek/f71805f/f71805f.h>
+#include <northbridge/via/cn700/cn700.h>
+
+/* Someday, we're all going multicore. */
+void stop_ap(void)
+{
+}
+
+void hardware_stage1(void)
+{
+       void vt1211_enable_serial(u8 dev, u8 serial, u16 iobase);
+       u32 dev;
+
+       post_code(POST_START_OF_MAIN);
+       vt1211_enable_serial(0x2e, 2, 0x3f8);
+       
+       /* Enable multifunction for northbridge. */
+       pci_conf1_write_config8(0x00, 0x4f, 0x01);
+
+       printk(BIOS_SPEW, "In hardware_stage1()\n");
+       /* Disabled GP3, to keep the system from rebooting automatically */
+       //pci_conf1_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VT8237R_LPC, 
&dev);
+       dev = PCI_BDF(0, 17, 0);
+       pci_conf1_write_config8(dev, 0x98, 0x00);
+}
+
+void mainboard_pre_payload(void)
+{
+       //banner(BIOS_DEBUG, "mainboard_pre_payload: done");
+}


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

Reply via email to