get ts5300 compiling, it's mostly a copy of msm586seg
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2130 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
648e8da0c2
commit
a09ab6dc53
|
@ -30,6 +30,8 @@ static void memreset(int controllers, const struct mem_controller *ctrl)
|
|||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
static inline void activate_spd_rom(const struct mem_controller *ctrl)
|
||||
{
|
||||
/* nothing to do */
|
||||
|
@ -59,6 +61,102 @@ static inline void dumpmem(void){
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static inline void irqinit(void){
|
||||
volatile unsigned char *cp;
|
||||
#if 0
|
||||
/* these values taken from the msm board itself.
|
||||
* and they cause the board to not even come out of calibrating_delay_loop
|
||||
* if you can believe it. Our problem right now is no IDE or serial interrupts
|
||||
* So we'll try to put interrupts in, one at a time. IDE first.
|
||||
*/
|
||||
cp = (volatile unsigned char *) 0xfffefd00;
|
||||
*cp = 0x11;
|
||||
cp = (volatile unsigned char *) 0xfffefd02;
|
||||
*cp = 0x02;
|
||||
cp = (volatile unsigned char *) 0xfffefd03;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd04;
|
||||
*cp = 0xf7;
|
||||
cp = (volatile unsigned char *) 0xfffefd08;
|
||||
*cp = 0xf7;
|
||||
cp = (volatile unsigned char *) 0xfffefd0a;
|
||||
*cp = 0x8b;
|
||||
cp = (volatile unsigned char *) 0xfffefd10;
|
||||
*cp = 0x18;
|
||||
cp = (volatile unsigned char *) 0xfffefd14;
|
||||
*cp = 0x09;
|
||||
cp = (volatile unsigned char *) 0xfffefd18;
|
||||
*cp = 0x88;
|
||||
cp = (volatile unsigned char *) 0xfffefd1a;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd1b;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd1c;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd20;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd21;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd22;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd28;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd29;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd30;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd31;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd32;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd33;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd40;
|
||||
*cp = 0x10;
|
||||
cp = (volatile unsigned char *) 0xfffefd41;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd42;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd43;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd44;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd45;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd46;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd50;
|
||||
*cp = 0x37;
|
||||
cp = (volatile unsigned char *) 0xfffefd51;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd52;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd53;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd54;
|
||||
*cp = 0x37;
|
||||
cp = (volatile unsigned char *) 0xfffefd55;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd56;
|
||||
*cp = 0x37;
|
||||
cp = (volatile unsigned char *) 0xfffefd57;
|
||||
*cp = 0x00;
|
||||
cp = (volatile unsigned char *) 0xfffefd58;
|
||||
*cp = 0xff;
|
||||
cp = (volatile unsigned char *) 0xfffefd59;
|
||||
*cp = 0xff;
|
||||
cp = (volatile unsigned char *) 0xfffefd5a;
|
||||
*cp = 0xff;
|
||||
#endif
|
||||
#if 0
|
||||
/* this fails too */
|
||||
/* IDE only ... */
|
||||
cp = (volatile unsigned char *) 0xfffefd56;
|
||||
*cp = 0xe;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void main(unsigned long bist)
|
||||
{
|
||||
volatile int i;
|
||||
|
@ -67,6 +165,7 @@ static void main(unsigned long bist)
|
|||
|
||||
|
||||
setupsc520();
|
||||
irqinit();
|
||||
uart_init();
|
||||
console_init();
|
||||
for(i = 0; i < 100; i++)
|
||||
|
@ -117,11 +216,11 @@ static void main(unsigned long bist)
|
|||
// Check 32MB of memory @ 0
|
||||
ram_check(0x00000000, 0x02000000);
|
||||
#endif
|
||||
#if 0
|
||||
#if 1
|
||||
{
|
||||
volatile unsigned char *src = (unsigned char *) 0x2000000 + 0x70000;
|
||||
volatile unsigned char *src = (unsigned char *) 0x2000000 + 0x60000;
|
||||
volatile unsigned char *dst = (unsigned char *) 0x4000;
|
||||
for(i = 0; i < 0x10000; i++) {
|
||||
for(i = 0; i < 0x20000; i++) {
|
||||
/*
|
||||
print_err("Set dst "); print_err_hex32((unsigned long) dst);
|
||||
print_err(" to "); print_err_hex32(*src); print_err("\r\n");
|
||||
|
|
|
@ -1,128 +0,0 @@
|
|||
|
||||
static void print_debug_pci_dev(unsigned dev)
|
||||
{
|
||||
print_debug("PCI: ");
|
||||
print_debug_hex8((dev >> 16) & 0xff);
|
||||
print_debug_char(':');
|
||||
print_debug_hex8((dev >> 11) & 0x1f);
|
||||
print_debug_char('.');
|
||||
print_debug_hex8((dev >> 8) & 7);
|
||||
}
|
||||
|
||||
static void print_pci_devices(void)
|
||||
{
|
||||
device_t dev;
|
||||
for(dev = PCI_DEV(0, 0, 0);
|
||||
dev <= PCI_DEV(0, 0x1f, 0x7);
|
||||
dev += PCI_DEV(0,0,1)) {
|
||||
uint32_t id;
|
||||
id = pci_read_config32(dev, PCI_VENDOR_ID);
|
||||
if (((id & 0xffff) == 0x0000) || ((id & 0xffff) == 0xffff) ||
|
||||
(((id >> 16) & 0xffff) == 0xffff) ||
|
||||
(((id >> 16) & 0xffff) == 0x0000)) {
|
||||
continue;
|
||||
}
|
||||
print_debug_pci_dev(dev);
|
||||
print_debug("\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
static void dump_pci_device(unsigned dev)
|
||||
{
|
||||
int i;
|
||||
print_debug_pci_dev(dev);
|
||||
print_debug("\r\n");
|
||||
|
||||
for(i = 0; i <= 255; i++) {
|
||||
unsigned char val;
|
||||
if ((i & 0x0f) == 0) {
|
||||
print_debug_hex8(i);
|
||||
print_debug_char(':');
|
||||
}
|
||||
val = pci_read_config8(dev, i);
|
||||
print_debug_char(' ');
|
||||
print_debug_hex8(val);
|
||||
if ((i & 0x0f) == 0x0f) {
|
||||
print_debug("\r\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void dump_pci_devices(void)
|
||||
{
|
||||
device_t dev;
|
||||
for(dev = PCI_DEV(0, 0, 0);
|
||||
dev <= PCI_DEV(0, 0x1f, 0x7);
|
||||
dev += PCI_DEV(0,0,1)) {
|
||||
uint32_t id;
|
||||
id = pci_read_config32(dev, PCI_VENDOR_ID);
|
||||
if (((id & 0xffff) == 0x0000) || ((id & 0xffff) == 0xffff) ||
|
||||
(((id >> 16) & 0xffff) == 0xffff) ||
|
||||
(((id >> 16) & 0xffff) == 0x0000)) {
|
||||
continue;
|
||||
}
|
||||
dump_pci_device(dev);
|
||||
}
|
||||
}
|
||||
#if 0
|
||||
static void dump_spd_registers(const struct mem_controller *ctrl)
|
||||
{
|
||||
int i;
|
||||
print_debug("\r\n");
|
||||
for(i = 0; i < 4; i++) {
|
||||
unsigned device;
|
||||
device = ctrl->channel0[i];
|
||||
if (device) {
|
||||
int j;
|
||||
print_debug("dimm: ");
|
||||
print_debug_hex8(i);
|
||||
print_debug(".0: ");
|
||||
print_debug_hex8(device);
|
||||
for(j = 0; j < 256; j++) {
|
||||
int status;
|
||||
unsigned char byte;
|
||||
if ((j & 0xf) == 0) {
|
||||
print_debug("\r\n");
|
||||
print_debug_hex8(j);
|
||||
print_debug(": ");
|
||||
}
|
||||
status = smbus_read_byte(device, j);
|
||||
if (status < 0) {
|
||||
print_debug("bad device\r\n");
|
||||
break;
|
||||
}
|
||||
byte = status & 0xff;
|
||||
print_debug_hex8(byte);
|
||||
print_debug_char(' ');
|
||||
}
|
||||
print_debug("\r\n");
|
||||
}
|
||||
device = ctrl->channel1[i];
|
||||
if (device) {
|
||||
int j;
|
||||
print_debug("dimm: ");
|
||||
print_debug_hex8(i);
|
||||
print_debug(".1: ");
|
||||
print_debug_hex8(device);
|
||||
for(j = 0; j < 256; j++) {
|
||||
int status;
|
||||
unsigned char byte;
|
||||
if ((j & 0xf) == 0) {
|
||||
print_debug("\r\n");
|
||||
print_debug_hex8(j);
|
||||
print_debug(": ");
|
||||
}
|
||||
status = smbus_read_byte(device, j);
|
||||
if (status < 0) {
|
||||
print_debug("bad device\r\n");
|
||||
break;
|
||||
}
|
||||
byte = status & 0xff;
|
||||
print_debug_hex8(byte);
|
||||
print_debug_char(' ');
|
||||
}
|
||||
print_debug("\r\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -5,25 +5,28 @@
|
|||
#include <arch/io.h>
|
||||
#include "arch/romcc_io.h"
|
||||
#include "pc80/mc146818rtc_early.c"
|
||||
#include "cpu/p6/boot_cpu.c"
|
||||
|
||||
static void main(void)
|
||||
static unsigned long main(unsigned long bist)
|
||||
{
|
||||
/* for now, just always assume failure */
|
||||
|
||||
#if 0
|
||||
/* Is this a cpu reset? */
|
||||
if (cpu_init_detected()) {
|
||||
if (last_boot_normal()) {
|
||||
asm("jmp __normal_image");
|
||||
} else {
|
||||
asm("jmp __cpu_reset");
|
||||
}
|
||||
}
|
||||
|
||||
/* This is the primary cpu how should I boot? */
|
||||
else if (do_normal_boot()) {
|
||||
asm("jmp __normal_image");
|
||||
if (do_normal_boot()) {
|
||||
goto normal_image;
|
||||
}
|
||||
#endif
|
||||
else {
|
||||
goto fallback_image;
|
||||
}
|
||||
normal_image:
|
||||
asm volatile ("jmp __normal_image"
|
||||
: /* outputs */
|
||||
: "a" (bist) /* inputs */
|
||||
: /* clobbers */
|
||||
);
|
||||
cpu_reset:
|
||||
asm volatile ("jmp __cpu_reset"
|
||||
: /* outputs */
|
||||
: "a"(bist) /* inputs */
|
||||
: /* clobbers */
|
||||
);
|
||||
fallback_image:
|
||||
return bist;
|
||||
}
|
||||
|
|
|
@ -1,29 +1,28 @@
|
|||
// This pirq table is dummy and only here for existance.
|
||||
// It MUST be replaced as soon as LinuxBIOS is operable on this board.
|
||||
/* This file was generated by getpir.c, do not modify!
|
||||
(but if you do, please run checkpir on it to verify)
|
||||
* Contains the IRQ Routing Table dumped directly from your memory, which BIOS sets up
|
||||
*
|
||||
* Documentation at : http://www.microsoft.com/hwdev/busbios/PCIIRQ.HTM
|
||||
*/
|
||||
|
||||
#include <arch/pirq_routing.h>
|
||||
|
||||
const struct irq_routing_table intel_irq_routing_table = {
|
||||
PIRQ_SIGNATURE, /* u32 signature */
|
||||
PIRQ_VERSION, /* u16 version */
|
||||
32+16*5, /* there can be total 5 devices on the bus */
|
||||
0, /* Where the interrupt router lies (bus) */
|
||||
0x88, /* Where the interrupt router lies (dev) */
|
||||
0x1c20, /* IRQs devoted exclusively to PCI usage */
|
||||
0x1106, /* Vendor */
|
||||
0x8231, /* Device */
|
||||
0, /* Crap (miniport) */
|
||||
PIRQ_SIGNATURE, /* u32 signature */
|
||||
PIRQ_VERSION, /* u16 version */
|
||||
32+16*7, /* there can be total 7 devices on the bus */
|
||||
0x00, /* Where the interrupt router lies (bus) */
|
||||
(0x00<<3)|0x0, /* Where the interrupt router lies (dev) */
|
||||
0, /* IRQs devoted exclusively to PCI usage */
|
||||
0x8086, /* Vendor */
|
||||
0x122e, /* Device */
|
||||
0, /* Crap (miniport) */
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* u8 rfu[11] */
|
||||
0x5e, /* u8 checksum , this hase to set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */
|
||||
0x50, /* u8 checksum , this hase to set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */
|
||||
{
|
||||
/* 8231 ethernet */
|
||||
{0,0x90, {{0x1, 0xdeb8}, {0x2, 0xdeb8}, {0x3, 0xdeb8}, {0x4, 0xdeb8}}, 0x1, 0},
|
||||
/* 8231 internal */
|
||||
{0,0x88, {{0x2, 0xdeb8}, {0x3, 0xdeb8}, {0x4, 0xdeb8}, {0x1, 0xdeb8}}, 0x2, 0},
|
||||
/* PCI slot */
|
||||
{0,0xa0, {{0x3, 0xdeb8}, {0x4, 0xdeb8}, {0x1, 0xdeb8}, {0x2, 0xdeb8}}, 0, 0},
|
||||
{0,0x50, {{0x4, 0xdeb8}, {0x3, 0xdeb8}, {0x2, 0xdeb8}, {0x1, 0xdeb8}}, 0x3, 0},
|
||||
{0,0x98, {{0x4, 0xdeb8}, {0x3, 0xdeb8}, {0x2, 0xdeb8}, {0x1, 0xdeb8}}, 0x4, 0},
|
||||
/* bus, dev|fn, {link, bitmap}, {link, bitmap}, {link, bitmap}, {link, bitmap}, slot, rfu */
|
||||
{0x00,(0x12<<3)|0x0, {{0x30, 0x8000}, {0x00, 0x0}, {0x00, 0x0}, {0x00, 0x00}}, 0x0, 0x0},
|
||||
{0x00,(0x14<<3)|0x0, {{0x30, 0x8000}, {0x31, 0x0}, {0x32, 0x0}, {0x33, 0x00}}, 0x0, 0x0},
|
||||
}
|
||||
};
|
||||
unsigned long write_pirq_routing_table(unsigned long addr)
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
target technologic_ts5300
|
||||
mainboard technologic/ts5300
|
||||
|
||||
|
||||
|
||||
option DEFAULT_CONSOLE_LOGLEVEL=10
|
||||
option MAXIMUM_CONSOLE_LOGLEVEL=10
|
||||
option CONFIG_COMPRESS=0
|
||||
|
||||
option CONFIG_CONSOLE_VGA=1
|
||||
|
||||
#romimage "normal"
|
||||
# option USE_FALLBACK_IMAGE=0
|
||||
# option ROM_IMAGE_SIZE=0x10000
|
||||
# option LINUXBIOS_EXTRA_VERSION=".0Normal"
|
||||
# payload /etc/hosts
|
||||
#end
|
||||
|
||||
romimage "fallback"
|
||||
option FALLBACK_SIZE = 256 * 1024
|
||||
# option ROM_SIZE=512*1024
|
||||
# option ROM_SECTION_SIZE=512*1024
|
||||
option USE_FALLBACK_IMAGE=1
|
||||
# option ROM_IMAGE_SIZE=32 * 1024 # 0x8000
|
||||
option ROM_IMAGE_SIZE=128 * 1024 # 0x10000
|
||||
# option ROM_IMAGE_SIZE=512 * 1024 # 0x10000
|
||||
option LINUXBIOS_EXTRA_VERSION=".0Fallback"
|
||||
payload /dev/null
|
||||
end
|
||||
|
||||
buildrom ./linuxbios.rom ROM_SIZE "fallback"
|
Loading…
Reference in New Issue