new from yh lu
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1136 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
1621e9303c
commit
3ff7bdaad7
|
@ -21,10 +21,11 @@ register "fixup_vga" = "1"
|
||||||
|
|
||||||
driver mainboard.o
|
driver mainboard.o
|
||||||
driver lsi_scsi.o
|
driver lsi_scsi.o
|
||||||
#driver adaptec_scsi.o
|
driver adaptec_scsi.o
|
||||||
driver promise_sata.o
|
driver promise_sata.o
|
||||||
#driver intel_nic.o
|
driver intel_nic.o
|
||||||
object static_devices.o
|
object reset.o
|
||||||
|
#object static_devices.o
|
||||||
if HAVE_MP_TABLE object mptable.o end
|
if HAVE_MP_TABLE object mptable.o end
|
||||||
if HAVE_PIRQ_TABLE object irq_tables.o end
|
if HAVE_PIRQ_TABLE object irq_tables.o end
|
||||||
#
|
#
|
||||||
|
@ -135,12 +136,46 @@ mainboardinit cpu/k8/disable_mmx_sse.inc
|
||||||
###
|
###
|
||||||
### Include the secondary Configuration files
|
### Include the secondary Configuration files
|
||||||
###
|
###
|
||||||
northbridge amd/amdk8
|
northbridge amd/amdk8 "mc0"
|
||||||
|
pci 0:18.0
|
||||||
|
pci 0:18.0
|
||||||
|
pci 0:18.0
|
||||||
|
pci 0:18.1
|
||||||
|
pci 0:18.2
|
||||||
|
pci 0:18.3
|
||||||
|
southbridge amd/amd8131 "amd8131"
|
||||||
|
pci 0:0.0
|
||||||
|
pci 0:0.1
|
||||||
|
pci 0:1.0
|
||||||
|
pci 0:1.1
|
||||||
|
end
|
||||||
|
southbridge amd/amd8111 "amd8111"
|
||||||
|
pci 0:0.0
|
||||||
|
pci 0:1.0
|
||||||
|
pci 0:1.1
|
||||||
|
pci 0:1.2
|
||||||
|
pci 0:1.3
|
||||||
|
pci 0:1.5
|
||||||
|
pci 0:1.6
|
||||||
|
end
|
||||||
end
|
end
|
||||||
southbridge amd/amd8111 "amd8111"
|
|
||||||
end
|
northbridge amd/amdk8 "mc1"
|
||||||
southbridge amd/amd8131 "amd8131"
|
pci 0:19.0
|
||||||
|
pci 0:19.0
|
||||||
|
pci 0:19.0
|
||||||
|
pci 0:19.1
|
||||||
|
pci 0:19.2
|
||||||
|
pci 0:19.3
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
#northbridge amd/amdk8
|
||||||
|
#end
|
||||||
|
#southbridge amd/amd8111 "amd8111"
|
||||||
|
#end
|
||||||
|
#southbridge amd/amd8131 "amd8131"
|
||||||
|
#end
|
||||||
#mainboardinit archi386/smp/secondary.inc
|
#mainboardinit archi386/smp/secondary.inc
|
||||||
#superio NSC/pc87360
|
#superio NSC/pc87360
|
||||||
# register "com1" = "{1}"
|
# register "com1" = "{1}"
|
||||||
|
@ -149,9 +184,9 @@ end
|
||||||
dir /pc80
|
dir /pc80
|
||||||
##dir /src/superio/winbond/w83627hf
|
##dir /src/superio/winbond/w83627hf
|
||||||
dir /bioscall
|
dir /bioscall
|
||||||
dir /cpu/k8
|
#dir /cpu/k8
|
||||||
cpu k8 "cpu0"
|
cpu k8 "cpu0"
|
||||||
register "up" = "{.chip = &amd8131, .ht_width=8, .ht_speed=200}"
|
register "up" = "{.chip = &amd8131, .ht_width=16, .ht_speed=600}"
|
||||||
end
|
end
|
||||||
|
|
||||||
cpu k8 "cpu1"
|
cpu k8 "cpu1"
|
||||||
|
|
|
@ -16,19 +16,23 @@
|
||||||
#include "northbridge/amd/amdk8/reset_test.c"
|
#include "northbridge/amd/amdk8/reset_test.c"
|
||||||
#include "debug.c"
|
#include "debug.c"
|
||||||
|
|
||||||
|
#define REV_B_RESET 0
|
||||||
static void memreset_setup(void)
|
static void memreset_setup(void)
|
||||||
{
|
{
|
||||||
/* Set the memreset low */
|
#if REV_B_RESET==1
|
||||||
// outb((0 << 7)|(0 << 6)|(0<<5)|(0<<4)|(1<<2)|(0<<0), SMBUS_IO_BASE + 0xc0 + 28);
|
outb((0 << 7)|(0 << 6)|(0<<5)|(0<<4)|(1<<2)|(0<<0), SMBUS_IO_BASE + 0xc0 + 16); //REVC_MEMRST_EN=0
|
||||||
/* Ensure the BIOS has control of the memory lines */
|
#else
|
||||||
// outb((0 << 7)|(0 << 6)|(0<<5)|(0<<4)|(1<<2)|(0<<0), SMBUS_IO_BASE + 0xc0 + 29);
|
outb((0 << 7)|(0 << 6)|(0<<5)|(0<<4)|(1<<2)|(1<<0), SMBUS_IO_BASE + 0xc0 + 16); //REVC_MEMRST_EN=1
|
||||||
|
#endif
|
||||||
|
outb((0 << 7)|(0 << 6)|(0<<5)|(0<<4)|(1<<2)|(0<<0), SMBUS_IO_BASE + 0xc0 + 17);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void memreset(int controllers, const struct mem_controller *ctrl)
|
static void memreset(int controllers, const struct mem_controller *ctrl)
|
||||||
{
|
{
|
||||||
udelay(800);
|
udelay(800);
|
||||||
/* Set memreset_high */
|
#if REV_B_RESET==1
|
||||||
// outb((0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1<<0), SMBUS_IO_BASE + 0xc0 + 28);
|
outb((0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1<<0), SMBUS_IO_BASE + 0xc0 + 17); //REVB_MEMRST_L=1
|
||||||
|
#endif
|
||||||
udelay(90);
|
udelay(90);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,10 +132,6 @@ static void stop_this_cpu(void)
|
||||||
#define TOTAL_CPUS (FIRST_CPU + SECOND_CPU)
|
#define TOTAL_CPUS (FIRST_CPU + SECOND_CPU)
|
||||||
static void main(void)
|
static void main(void)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
* GPIO28 of 8111 will control H0_MEMRESET_L
|
|
||||||
* GPIO29 of 8111 will control H1_MEMRESET_L
|
|
||||||
*/
|
|
||||||
static const struct mem_controller cpu[] = {
|
static const struct mem_controller cpu[] = {
|
||||||
#if FIRST_CPU
|
#if FIRST_CPU
|
||||||
{
|
{
|
||||||
|
@ -182,7 +182,7 @@ static void main(void)
|
||||||
memreset_setup();
|
memreset_setup();
|
||||||
sdram_initialize(sizeof(cpu)/sizeof(cpu[0]), cpu);
|
sdram_initialize(sizeof(cpu)/sizeof(cpu[0]), cpu);
|
||||||
|
|
||||||
#if 1
|
#if 0
|
||||||
dump_pci_devices();
|
dump_pci_devices();
|
||||||
#endif
|
#endif
|
||||||
#if 0
|
#if 0
|
||||||
|
|
|
@ -11,27 +11,27 @@ const struct irq_routing_table intel_irq_routing_table = {
|
||||||
PIRQ_SIGNATURE, /* u32 signature */
|
PIRQ_SIGNATURE, /* u32 signature */
|
||||||
PIRQ_VERSION, /* u16 version */
|
PIRQ_VERSION, /* u16 version */
|
||||||
32+16*13, /* there can be total 13 devices on the bus */
|
32+16*13, /* there can be total 13 devices on the bus */
|
||||||
0, /* Where the interrupt router lies (bus) */
|
1, /* Where the interrupt router lies (bus) */
|
||||||
0x3b, /* Where the interrupt router lies (dev) */
|
0x3b, /* Where the interrupt router lies (dev) */
|
||||||
0, /* IRQs devoted exclusively to PCI usage */
|
0, /* IRQs devoted exclusively to PCI usage */
|
||||||
0x1022, /* Vendor */
|
0x1022, /* Vendor */
|
||||||
0x746b, /* Device */
|
0x746b, /* Device */
|
||||||
0, /* Crap (miniport) */
|
0, /* Crap (miniport) */
|
||||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* u8 rfu[11] */
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* u8 rfu[11] */
|
||||||
0x37, /* u8 checksum , this hase to set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */
|
0x2b, /* u8 checksum , this hase to set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */
|
||||||
{
|
{
|
||||||
{0,0x38, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0, 0},
|
{0,0x38, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0, 0},
|
||||||
{0x3,0, {{0, 0}, {0, 0}, {0, 0}, {0x4, 0xdef8}}, 0, 0},
|
{0x4,0, {{0, 0}, {0, 0}, {0, 0}, {0x4, 0xdef8}}, 0, 0},
|
||||||
{0x2,0x18, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0x1, 0},
|
{0x3,0x18, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0x1, 0},
|
||||||
{0x2,0x30, {{0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}}, 0x2, 0},
|
{0x3,0x30, {{0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}}, 0x2, 0},
|
||||||
{0x1,0x40, {{0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}}, 0x3, 0},
|
{0x2,0x40, {{0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}}, 0x3, 0},
|
||||||
{0x1,0x38, {{0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}}, 0x4, 0},
|
{0x2,0x38, {{0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}}, 0x4, 0},
|
||||||
{0x3,0x30, {{0x3, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
{0x4,0x30, {{0x3, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
||||||
{0x3,0x20, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0x5, 0},
|
{0x4,0x20, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0x5, 0},
|
||||||
{0x1,0x48, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0, 0}, {0, 0}}, 0, 0},
|
{0x2,0x48, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0, 0}, {0, 0}}, 0, 0},
|
||||||
{0x1,0x50, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0, 0}, {0, 0}}, 0, 0},
|
{0x2,0x50, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0, 0}, {0, 0}}, 0, 0},
|
||||||
{0x3,0x28, {{0x2, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
{0x4,0x28, {{0x2, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
||||||
{0x2,0x20, {{0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}}, 0x6, 0},
|
{0x3,0x20, {{0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}}, 0x6, 0},
|
||||||
{0x2,0x28, {{0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}}, 0x7, 0},
|
{0x3,0x28, {{0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}}, 0x7, 0},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <device/pci.h>
|
#include <device/pci.h>
|
||||||
#include <device/pci_ids.h>
|
#include <device/pci_ids.h>
|
||||||
#include <device/pci_ops.h>
|
#include <device/pci_ops.h>
|
||||||
|
#include "../../../northbridge/amd/amdk8/northbridge.h"
|
||||||
#include "chip.h"
|
#include "chip.h"
|
||||||
//#include <part/mainboard.h>
|
//#include <part/mainboard.h>
|
||||||
//#include "lsi_scsi.c"
|
//#include "lsi_scsi.c"
|
||||||
|
@ -46,7 +47,7 @@ static void print_pci_regs(struct device *dev)
|
||||||
for(i=0;i<256;i++) {
|
for(i=0;i<256;i++) {
|
||||||
byte = pci_read_config8(dev, i);
|
byte = pci_read_config8(dev, i);
|
||||||
|
|
||||||
if((i%16)==0) printk_info("\n%02x:",i);
|
if((i%16)==0) printk_debug("\n%02x:",i);
|
||||||
printk_debug(" %02x",byte);
|
printk_debug(" %02x",byte);
|
||||||
}
|
}
|
||||||
printk_debug("\n");
|
printk_debug("\n");
|
||||||
|
@ -90,9 +91,10 @@ static void amd8111_enable_rom(void)
|
||||||
static void onboard_scsi_fixup(void)
|
static void onboard_scsi_fixup(void)
|
||||||
{
|
{
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
|
#if 0
|
||||||
unsigned char i,j,k;
|
unsigned char i,j,k;
|
||||||
#if 1
|
|
||||||
for(i=0;i<=4;i++) {
|
for(i=0;i<=6;i++) {
|
||||||
for(j=0;j<=0x1f;j++) {
|
for(j=0;j<=0x1f;j++) {
|
||||||
for (k=0;k<=6;k++){
|
for (k=0;k<=6;k++){
|
||||||
dev = dev_find_slot(i, PCI_DEVFN(j, k));
|
dev = dev_find_slot(i, PCI_DEVFN(j, k));
|
||||||
|
@ -118,7 +120,7 @@ static void onboard_scsi_fixup(void)
|
||||||
// print_mem();
|
// print_mem();
|
||||||
// amd8111_enable_rom();
|
// amd8111_enable_rom();
|
||||||
}
|
}
|
||||||
/*
|
#if 1
|
||||||
static void vga_fixup(void) {
|
static void vga_fixup(void) {
|
||||||
// we do this right here because:
|
// we do this right here because:
|
||||||
// - all the hardware is working, and some VGA bioses seem to need
|
// - all the hardware is working, and some VGA bioses seem to need
|
||||||
|
@ -135,7 +137,7 @@ static void vga_fixup(void) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
*/
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
enable(struct chip *chip, enum chip_pass pass)
|
enable(struct chip *chip, enum chip_pass pass)
|
||||||
|
@ -152,8 +154,8 @@ enable(struct chip *chip, enum chip_pass pass)
|
||||||
case CONF_PASS_PRE_BOOT:
|
case CONF_PASS_PRE_BOOT:
|
||||||
if (conf->fixup_scsi)
|
if (conf->fixup_scsi)
|
||||||
onboard_scsi_fixup();
|
onboard_scsi_fixup();
|
||||||
// if (conf->fixup_vga)
|
if (conf->fixup_vga)
|
||||||
// vga_fixup();
|
vga_fixup();
|
||||||
printk_debug("mainboard fixup pass %d done\r\n",
|
printk_debug("mainboard fixup pass %d done\r\n",
|
||||||
pass);
|
pass);
|
||||||
break;
|
break;
|
||||||
|
@ -166,9 +168,29 @@ void final_mainboard_fixup(void)
|
||||||
enable_ide_devices();
|
enable_ide_devices();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
static struct device_operations mainboard_operations = {
|
||||||
struct chip_control mainboard_tyan_s2880_control = {
|
.read_resources = root_dev_read_resources,
|
||||||
.enable= enable,
|
.set_resources = root_dev_set_resources,
|
||||||
.name= "Tyan s2880 mainboard "
|
.enable_resources = enable_childrens_resources,
|
||||||
|
.init = 0,
|
||||||
|
.scan_bus = amdk8_scan_root_bus,
|
||||||
|
.enable = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void enumerate(struct chip *chip)
|
||||||
|
{
|
||||||
|
struct chip *child;
|
||||||
|
dev_root.ops = &mainboard_operations;
|
||||||
|
chip->dev = &dev_root;
|
||||||
|
chip->bus = 0;
|
||||||
|
for(child = chip->children; child; child = child->next) {
|
||||||
|
child->bus = &dev_root.link[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
struct chip_control mainboard_tyan_s2880_control = {
|
||||||
|
.enable = enable,
|
||||||
|
.enumerate = enumerate,
|
||||||
|
.name = "Tyan s2880 mainboard ",
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -36,19 +36,21 @@ void *smp_write_config_table(void *v, unsigned long * processor_map)
|
||||||
smp_write_bus(mc, 1, "PCI ");
|
smp_write_bus(mc, 1, "PCI ");
|
||||||
smp_write_bus(mc, 2, "PCI ");
|
smp_write_bus(mc, 2, "PCI ");
|
||||||
smp_write_bus(mc, 3, "PCI ");
|
smp_write_bus(mc, 3, "PCI ");
|
||||||
smp_write_bus(mc, 4, "ISA ");
|
smp_write_bus(mc, 4, "PCI ");
|
||||||
|
smp_write_bus(mc, 5, "ISA ");
|
||||||
|
|
||||||
/*I/O APICs: APIC ID Version State Address*/
|
/*I/O APICs: APIC ID Version State Address*/
|
||||||
smp_write_ioapic(mc, 2, 0x11, 0xfec00000);
|
smp_write_ioapic(mc, 2, 0x11, 0xfec00000);
|
||||||
{
|
{
|
||||||
struct pci_dev *dev;
|
struct pci_dev *dev;
|
||||||
uint32_t base;
|
uint32_t base;
|
||||||
dev = dev_find_slot(0, PCI_DEVFN(0x1,1));
|
dev = dev_find_slot(1, PCI_DEVFN(0x1,1));
|
||||||
if (dev) {
|
if (dev) {
|
||||||
base = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
base = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
||||||
base &= PCI_BASE_ADDRESS_MEM_MASK;
|
base &= PCI_BASE_ADDRESS_MEM_MASK;
|
||||||
smp_write_ioapic(mc, 3, 0x11, base);
|
smp_write_ioapic(mc, 3, 0x11, base);
|
||||||
}
|
}
|
||||||
dev = dev_find_slot(0, PCI_DEVFN(0x2,1));
|
dev = dev_find_slot(1, PCI_DEVFN(0x2,1));
|
||||||
if (dev) {
|
if (dev) {
|
||||||
base = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
base = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
||||||
base &= PCI_BASE_ADDRESS_MEM_MASK;
|
base &= PCI_BASE_ADDRESS_MEM_MASK;
|
||||||
|
@ -57,64 +59,64 @@ void *smp_write_config_table(void *v, unsigned long * processor_map)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#
|
/*I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#
|
||||||
*/ smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x0, 0x2, 0x0);
|
*/ smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x0, 0x2, 0x0);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x1, 0x2, 0x1);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x1, 0x2, 0x1);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x0, 0x2, 0x2);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x0, 0x2, 0x2);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x3, 0x2, 0x3);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x3, 0x2, 0x3);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x4, 0x2, 0x4);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x4, 0x2, 0x4);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x6, 0x2, 0x6);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x6, 0x2, 0x6);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x7, 0x2, 0x7);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x7, 0x2, 0x7);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x8, 0x2, 0x8);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x8, 0x2, 0x8);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0xc, 0x2, 0xc);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0xc, 0x2, 0xc);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0xd, 0x2, 0xd);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0xd, 0x2, 0xd);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0xe, 0x2, 0xe);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0xe, 0x2, 0xe);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0xf, 0x2, 0xf);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0xf, 0x2, 0xf);
|
||||||
|
|
||||||
|
|
||||||
//On Board AMD USB
|
//On Board AMD USB
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x3, 0x2, 0x13);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x3, 0x2, 0x13);
|
||||||
|
|
||||||
//On Board ATI Display Adapter
|
//On Board ATI Display Adapter
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x18, 0x2, 0x12);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x18, 0x2, 0x12);
|
||||||
|
|
||||||
//Slot 5 PCI 32
|
//Slot 5 PCI 32
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x10, 0x2, 0x10);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x10, 0x2, 0x10);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x11, 0x2, 0x11);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x11, 0x2, 0x11);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x12, 0x2, 0x12); //
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x12, 0x2, 0x12); //
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x13, 0x2, 0x13); //
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x13, 0x2, 0x13); //
|
||||||
|
|
||||||
//On Board Promise Serial ATA
|
//On Board Promise Serial ATA
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x14, 0x2, 0x11);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x14, 0x2, 0x11);
|
||||||
|
|
||||||
//Slot 3 PCIX 100/66
|
//Slot 3 PCIX 100/66
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x20, 0x3, 0x3);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x20, 0x3, 0x3);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x21, 0x3, 0x0);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x21, 0x3, 0x0);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x22, 0x3, 0x1);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x22, 0x3, 0x1);//
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x23, 0x3, 0x2);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x23, 0x3, 0x2);//
|
||||||
|
|
||||||
//Slot 4 PCIX 100/66
|
//Slot 4 PCIX 100/66
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1c, 0x3, 0x2);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1c, 0x3, 0x2);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1d, 0x3, 0x3);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1d, 0x3, 0x3);//
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1e, 0x3, 0x0);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1e, 0x3, 0x0);//
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1f, 0x3, 0x1);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1f, 0x3, 0x1);//
|
||||||
|
|
||||||
//On Board NIC and LSI scsi
|
//On Board NIC and LSI scsi
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x24, 0x3, 0x0);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x24, 0x3, 0x0);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x25, 0x3, 0x1);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x25, 0x3, 0x1);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x28, 0x3, 0x0);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x28, 0x3, 0x0);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x29, 0x3, 0x1);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x29, 0x3, 0x1);
|
||||||
|
|
||||||
//Slot 1 PCI-X 133/100/66
|
//Slot 1 PCI-X 133/100/66
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0xc, 0x4, 0x0);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0xc, 0x4, 0x0);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0xd, 0x4, 0x1);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0xd, 0x4, 0x1);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0xe, 0x4, 0x2); //
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0xe, 0x4, 0x2); //
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0xf, 0x4, 0x3); //
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0xf, 0x4, 0x3); //
|
||||||
|
|
||||||
//Slot 2 PCI-X 133/100/66
|
//Slot 2 PCI-X 133/100/66
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x18, 0x4, 0x1);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x18, 0x4, 0x1);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x19, 0x4, 0x2);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x19, 0x4, 0x2);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1a, 0x4, 0x3);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x1a, 0x4, 0x3);//
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1b, 0x4, 0x0);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x1b, 0x4, 0x0);//
|
||||||
|
|
||||||
/*Local Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#*/
|
/*Local Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#*/
|
||||||
smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x0, 0x0, MP_APIC_ALL, 0x0);
|
smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x0, 0x0, MP_APIC_ALL, 0x0);
|
||||||
|
|
|
@ -21,9 +21,10 @@ register "fixup_vga" = "1"
|
||||||
|
|
||||||
driver mainboard.o
|
driver mainboard.o
|
||||||
driver adaptec_scsi.o
|
driver adaptec_scsi.o
|
||||||
#driver si_sata.o
|
driver si_sata.o
|
||||||
#driver intel_nic.o
|
driver intel_nic.o
|
||||||
object static_devices.o
|
object reset.o
|
||||||
|
#object static_devices.o
|
||||||
if HAVE_MP_TABLE object mptable.o end
|
if HAVE_MP_TABLE object mptable.o end
|
||||||
if HAVE_PIRQ_TABLE object irq_tables.o end
|
if HAVE_PIRQ_TABLE object irq_tables.o end
|
||||||
#
|
#
|
||||||
|
@ -134,12 +135,45 @@ mainboardinit cpu/k8/disable_mmx_sse.inc
|
||||||
###
|
###
|
||||||
### Include the secondary Configuration files
|
### Include the secondary Configuration files
|
||||||
###
|
###
|
||||||
northbridge amd/amdk8
|
northbridge amd/amdk8 "mc0"
|
||||||
|
pci 0:18.0
|
||||||
|
pci 0:18.0
|
||||||
|
pci 0:18.0
|
||||||
|
pci 0:18.1
|
||||||
|
pci 0:18.2
|
||||||
|
pci 0:18.3
|
||||||
|
southbridge amd/amd8131 "amd8131"
|
||||||
|
pci 0:0.0
|
||||||
|
pci 0:0.1
|
||||||
|
pci 0:1.0
|
||||||
|
pci 0:1.1
|
||||||
|
end
|
||||||
|
southbridge amd/amd8111 "amd8111"
|
||||||
|
pci 0:0.0
|
||||||
|
pci 0:1.0
|
||||||
|
pci 0:1.1
|
||||||
|
pci 0:1.2
|
||||||
|
pci 0:1.3
|
||||||
|
pci 0:1.5
|
||||||
|
pci 0:1.6
|
||||||
|
end
|
||||||
end
|
end
|
||||||
southbridge amd/amd8111 "amd8111"
|
|
||||||
end
|
northbridge amd/amdk8 "mc1"
|
||||||
southbridge amd/amd8131 "amd8131"
|
pci 0:19.0
|
||||||
|
pci 0:19.0
|
||||||
|
pci 0:19.0
|
||||||
|
pci 0:19.1
|
||||||
|
pci 0:19.2
|
||||||
|
pci 0:19.3
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#northbridge amd/amdk8
|
||||||
|
#end
|
||||||
|
#southbridge amd/amd8111 "amd8111"
|
||||||
|
#end
|
||||||
|
#southbridge amd/amd8131 "amd8131"
|
||||||
|
#end
|
||||||
#mainboardinit archi386/smp/secondary.inc
|
#mainboardinit archi386/smp/secondary.inc
|
||||||
#superio NSC/pc87360
|
#superio NSC/pc87360
|
||||||
# register "com1" = "{1}"
|
# register "com1" = "{1}"
|
||||||
|
@ -148,9 +182,9 @@ end
|
||||||
dir /pc80
|
dir /pc80
|
||||||
##dir /src/superio/winbond/w83627hf
|
##dir /src/superio/winbond/w83627hf
|
||||||
dir /bioscall
|
dir /bioscall
|
||||||
dir /cpu/k8
|
#dir /cpu/k8
|
||||||
cpu k8 "cpu0"
|
cpu k8 "cpu0"
|
||||||
register "up" = "{.chip = &amd8131, .ht_width=8, .ht_speed=200}"
|
register "up" = "{.chip = &amd8131, .ht_width=16, .ht_speed=600}"
|
||||||
end
|
end
|
||||||
|
|
||||||
cpu k8 "cpu1"
|
cpu k8 "cpu1"
|
||||||
|
|
|
@ -11,7 +11,7 @@ const struct irq_routing_table intel_irq_routing_table = {
|
||||||
PIRQ_SIGNATURE, /* u32 signature */
|
PIRQ_SIGNATURE, /* u32 signature */
|
||||||
PIRQ_VERSION, /* u16 version */
|
PIRQ_VERSION, /* u16 version */
|
||||||
32+16*15, /* there can be total 15 devices on the bus */
|
32+16*15, /* there can be total 15 devices on the bus */
|
||||||
0, /* Where the interrupt router lies (bus) */
|
1, /* Where the interrupt router lies (bus) */
|
||||||
0x3b, /* Where the interrupt router lies (dev) */
|
0x3b, /* Where the interrupt router lies (dev) */
|
||||||
0, /* IRQs devoted exclusively to PCI usage */
|
0, /* IRQs devoted exclusively to PCI usage */
|
||||||
0x1022, /* Vendor */
|
0x1022, /* Vendor */
|
||||||
|
@ -21,19 +21,19 @@ const struct irq_routing_table intel_irq_routing_table = {
|
||||||
0x8d, /* u8 checksum , this hase to set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */
|
0x8d, /* u8 checksum , this hase to set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */
|
||||||
{
|
{
|
||||||
{0,0x38, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0, 0},
|
{0,0x38, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0, 0},
|
||||||
{0x3,0, {{0, 0}, {0, 0}, {0, 0}, {0x4, 0xdef8}}, 0, 0},
|
{0x4,0, {{0, 0}, {0, 0}, {0, 0}, {0x4, 0xdef8}}, 0, 0},
|
||||||
{0x3,0x30, {{0x3, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
{0x4,0x30, {{0x3, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
||||||
{0x2,0x18, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0x1, 0},
|
{0x3,0x18, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0x1, 0},
|
||||||
{0x2,0x8, {{0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}}, 0x2, 0},
|
{0x3,0x8, {{0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}}, 0x2, 0},
|
||||||
{0x1,0x18, {{0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}}, 0x3, 0},
|
{0x2,0x18, {{0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}}, 0x3, 0},
|
||||||
{0x1,0x10, {{0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}}, 0x4, 0},
|
{0x2,0x10, {{0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}}, 0x4, 0},
|
||||||
{0x3,0x20, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0x5, 0},
|
{0x4,0x20, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0x5, 0},
|
||||||
{0x3,0x28, {{0x4, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
{0x4,0x28, {{0x4, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
||||||
{0x3,0x40, {{0x3, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
{0x4,0x40, {{0x3, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
||||||
{0x1,0x30, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0, 0}, {0, 0}}, 0, 0},
|
{0x2,0x30, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0, 0}, {0, 0}}, 0, 0},
|
||||||
{0x2,0x20, {{0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}}, 0x6, 0},
|
{0x3,0x20, {{0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}}, 0x6, 0},
|
||||||
{0x2,0x28, {{0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}}, 0x7, 0},
|
{0x3,0x28, {{0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}}, 0x7, 0},
|
||||||
{0x1,0x28, {{0x3, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
{0x2,0x28, {{0x3, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
||||||
{0x1,0x48, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0, 0}, {0, 0}}, 0, 0},
|
{0x2,0x48, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0, 0}, {0, 0}}, 0, 0},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <device/pci.h>
|
#include <device/pci.h>
|
||||||
#include <device/pci_ids.h>
|
#include <device/pci_ids.h>
|
||||||
#include <device/pci_ops.h>
|
#include <device/pci_ops.h>
|
||||||
|
#include "../../../northbridge/amd/amdk8/northbridge.h"
|
||||||
#include "chip.h"
|
#include "chip.h"
|
||||||
//#include <part/mainboard.h>
|
//#include <part/mainboard.h>
|
||||||
//#include "lsi_scsi.c"
|
//#include "lsi_scsi.c"
|
||||||
|
@ -91,7 +92,7 @@ static void onboard_scsi_fixup(void)
|
||||||
{
|
{
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
unsigned char i,j,k;
|
unsigned char i,j,k;
|
||||||
#if 1
|
#if 0
|
||||||
for(i=0;i<=4;i++) {
|
for(i=0;i<=4;i++) {
|
||||||
for(j=0;j<=0x1f;j++) {
|
for(j=0;j<=0x1f;j++) {
|
||||||
for (k=0;k<=6;k++){
|
for (k=0;k<=6;k++){
|
||||||
|
@ -166,9 +167,28 @@ void final_mainboard_fixup(void)
|
||||||
enable_ide_devices();
|
enable_ide_devices();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
static struct device_operations mainboard_operations = {
|
||||||
struct chip_control mainboard_tyan_s2882_control = {
|
.read_resources = root_dev_read_resources,
|
||||||
.enable= enable,
|
.set_resources = root_dev_set_resources,
|
||||||
.name= "Tyan s2882 mainboard "
|
.enable_resources = enable_childrens_resources,
|
||||||
|
.init = 0,
|
||||||
|
.scan_bus = amdk8_scan_root_bus,
|
||||||
|
.enable = 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
static void enumerate(struct chip *chip)
|
||||||
|
{
|
||||||
|
struct chip *child;
|
||||||
|
dev_root.ops = &mainboard_operations;
|
||||||
|
chip->dev = &dev_root;
|
||||||
|
chip->bus = 0;
|
||||||
|
for(child = chip->children; child; child = child->next) {
|
||||||
|
child->bus = &dev_root.link[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
struct chip_control mainboard_tyan_s2882_control = {
|
||||||
|
.enable = enable,
|
||||||
|
.enumerate = enumerate,
|
||||||
|
.name = "Tyan s2882 mainboard ",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -36,19 +36,20 @@ void *smp_write_config_table(void *v, unsigned long * processor_map)
|
||||||
smp_write_bus(mc, 1, "PCI ");
|
smp_write_bus(mc, 1, "PCI ");
|
||||||
smp_write_bus(mc, 2, "PCI ");
|
smp_write_bus(mc, 2, "PCI ");
|
||||||
smp_write_bus(mc, 3, "PCI ");
|
smp_write_bus(mc, 3, "PCI ");
|
||||||
smp_write_bus(mc, 4, "ISA ");
|
smp_write_bus(mc, 4, "PCI ");
|
||||||
|
smp_write_bus(mc, 5, "ISA ");
|
||||||
/*I/O APICs: APIC ID Version State Address*/
|
/*I/O APICs: APIC ID Version State Address*/
|
||||||
smp_write_ioapic(mc, 2, 0x11, 0xfec00000);
|
smp_write_ioapic(mc, 2, 0x11, 0xfec00000);
|
||||||
{
|
{
|
||||||
struct pci_dev *dev;
|
struct pci_dev *dev;
|
||||||
uint32_t base;
|
uint32_t base;
|
||||||
dev = dev_find_slot(0, PCI_DEVFN(0x1,1));
|
dev = dev_find_slot(1, PCI_DEVFN(0x1,1));
|
||||||
if (dev) {
|
if (dev) {
|
||||||
base = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
base = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
||||||
base &= PCI_BASE_ADDRESS_MEM_MASK;
|
base &= PCI_BASE_ADDRESS_MEM_MASK;
|
||||||
smp_write_ioapic(mc, 3, 0x11, base);
|
smp_write_ioapic(mc, 3, 0x11, base);
|
||||||
}
|
}
|
||||||
dev = dev_find_slot(0, PCI_DEVFN(0x2,1));
|
dev = dev_find_slot(1, PCI_DEVFN(0x2,1));
|
||||||
if (dev) {
|
if (dev) {
|
||||||
base = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
base = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
||||||
base &= PCI_BASE_ADDRESS_MEM_MASK;
|
base &= PCI_BASE_ADDRESS_MEM_MASK;
|
||||||
|
@ -57,67 +58,67 @@ void *smp_write_config_table(void *v, unsigned long * processor_map)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#
|
/*I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#
|
||||||
*/ smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x0, 0x2, 0x0);
|
*/ smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x0, 0x2, 0x0);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x1, 0x2, 0x1);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x1, 0x2, 0x1);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x0, 0x2, 0x2);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x0, 0x2, 0x2);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x3, 0x2, 0x3);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x3, 0x2, 0x3);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x4, 0x2, 0x4);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x4, 0x2, 0x4);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x6, 0x2, 0x6);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x6, 0x2, 0x6);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x7, 0x2, 0x7);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x7, 0x2, 0x7);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0x8, 0x2, 0x8);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0x8, 0x2, 0x8);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0xc, 0x2, 0xc);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0xc, 0x2, 0xc);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0xd, 0x2, 0xd);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0xd, 0x2, 0xd);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0xe, 0x2, 0xe);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0xe, 0x2, 0xe);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x4, 0xf, 0x2, 0xf);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x5, 0xf, 0x2, 0xf);
|
||||||
|
|
||||||
//??? smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x0, 0x1f, 0x2, 0x13);
|
//??? smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x0, 0x1f, 0x2, 0x13);
|
||||||
|
|
||||||
|
|
||||||
//On Board AMD USB
|
//On Board AMD USB
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x3, 0x2, 0x13);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x3, 0x2, 0x13);
|
||||||
|
|
||||||
//On Board ATI Display Adapter
|
//On Board ATI Display Adapter
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x18, 0x2, 0x12);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x18, 0x2, 0x12);
|
||||||
#if 0
|
#if 0
|
||||||
//Slot 5 PCI 32
|
//Slot 5 PCI 32
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x10, 0x2, 0x10);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x10, 0x2, 0x10);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x11, 0x2, 0x11);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x11, 0x2, 0x11);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x12, 0x2, 0x12); //
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x12, 0x2, 0x12); //
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x13, 0x2, 0x13); //
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x13, 0x2, 0x13); //
|
||||||
#endif
|
#endif
|
||||||
//Onboard SI Serial ATA
|
//Onboard SI Serial ATA
|
||||||
// smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x14, 0x2, 0x11);
|
// smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x14, 0x2, 0x11);
|
||||||
#if 0
|
#if 0
|
||||||
//Slot 3 PCIX 100/66
|
//Slot 3 PCIX 100/66
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x20, 0x3, 0x3);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x20, 0x3, 0x3);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x21, 0x3, 0x0);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x21, 0x3, 0x0);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x22, 0x3, 0x1);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x22, 0x3, 0x1);//
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x23, 0x3, 0x2);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x23, 0x3, 0x2);//
|
||||||
|
|
||||||
//Slot 4 PCIX 100/66
|
//Slot 4 PCIX 100/66
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1c, 0x3, 0x2);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1c, 0x3, 0x2);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1d, 0x3, 0x3);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1d, 0x3, 0x3);//
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1e, 0x3, 0x0);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1e, 0x3, 0x0);//
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1f, 0x3, 0x1);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1f, 0x3, 0x1);//
|
||||||
#endif
|
#endif
|
||||||
//Onboard adaptec scsi
|
//Onboard adaptec scsi
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x18, 0x3, 0x0);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x18, 0x3, 0x0);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x19, 0x3, 0x1);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x19, 0x3, 0x1);
|
||||||
//On Board NIC
|
//On Board NIC
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x24, 0x3, 0x0);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x24, 0x3, 0x0);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x25, 0x3, 0x1);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x25, 0x3, 0x1);
|
||||||
#if 0
|
#if 0
|
||||||
//Slot 1 PCI-X 133/100/66
|
//Slot 1 PCI-X 133/100/66
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0xc, 0x4, 0x0);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0xc, 0x4, 0x0);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0xd, 0x4, 0x1);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0xd, 0x4, 0x1);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0xe, 0x4, 0x2); //
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0xe, 0x4, 0x2); //
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0xf, 0x4, 0x3); //
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0xf, 0x4, 0x3); //
|
||||||
|
|
||||||
//Slot 2 PCI-X 133/100/66
|
//Slot 2 PCI-X 133/100/66
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x18, 0x4, 0x1);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x18, 0x4, 0x1);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x19, 0x4, 0x2);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x19, 0x4, 0x2);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1a, 0x4, 0x3);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x1a, 0x4, 0x3);//
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1b, 0x4, 0x0);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x1b, 0x4, 0x0);//
|
||||||
#endif
|
#endif
|
||||||
/*Local Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#*/
|
/*Local Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#*/
|
||||||
smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x0, 0x0, MP_APIC_ALL, 0x0);
|
smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x0, 0x0, MP_APIC_ALL, 0x0);
|
||||||
|
|
|
@ -24,7 +24,8 @@ driver ti_firewire.o
|
||||||
driver adaptec_scsi.o
|
driver adaptec_scsi.o
|
||||||
driver si_sata.o
|
driver si_sata.o
|
||||||
driver intel_nic.o
|
driver intel_nic.o
|
||||||
object static_devices.o
|
#object static_devices.o
|
||||||
|
object reset.o
|
||||||
if HAVE_MP_TABLE object mptable.o end
|
if HAVE_MP_TABLE object mptable.o end
|
||||||
if HAVE_PIRQ_TABLE object irq_tables.o end
|
if HAVE_PIRQ_TABLE object irq_tables.o end
|
||||||
#
|
#
|
||||||
|
@ -135,14 +136,52 @@ mainboardinit cpu/k8/disable_mmx_sse.inc
|
||||||
###
|
###
|
||||||
### Include the secondary Configuration files
|
### Include the secondary Configuration files
|
||||||
###
|
###
|
||||||
northbridge amd/amdk8
|
northbridge amd/amdk8 "mc0"
|
||||||
|
pci 0:18.0
|
||||||
|
pci 0:18.0
|
||||||
|
pci 0:18.0
|
||||||
|
pci 0:18.1
|
||||||
|
pci 0:18.2
|
||||||
|
pci 0:18.3
|
||||||
|
southbridge amd/amd8131 "amd8131"
|
||||||
|
pci 0:0.0
|
||||||
|
pci 0:0.1
|
||||||
|
pci 0:1.0
|
||||||
|
pci 0:1.1
|
||||||
|
end
|
||||||
|
southbridge amd/amd8111 "amd8111"
|
||||||
|
pci 0:0.0
|
||||||
|
pci 0:1.0
|
||||||
|
pci 0:1.1
|
||||||
|
pci 0:1.2
|
||||||
|
pci 0:1.3
|
||||||
|
pci 0:1.5
|
||||||
|
pci 0:1.6
|
||||||
|
end
|
||||||
|
southbridge amd/amd8151 "amd8151"
|
||||||
|
pci 2:0.0
|
||||||
|
pci 2:1.0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
southbridge amd/amd8111 "amd8111"
|
|
||||||
end
|
northbridge amd/amdk8 "mc1"
|
||||||
southbridge amd/amd8131 "amd8131"
|
pci 0:19.0
|
||||||
end
|
pci 0:19.0
|
||||||
southbridge amd/amd8151 "amd8151"
|
pci 0:19.0
|
||||||
|
pci 0:19.1
|
||||||
|
pci 0:19.2
|
||||||
|
pci 0:19.3
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#northbridge amd/amdk8
|
||||||
|
#end
|
||||||
|
#southbridge amd/amd8111 "amd8111"
|
||||||
|
#end
|
||||||
|
#southbridge amd/amd8131 "amd8131"
|
||||||
|
#end
|
||||||
|
#southbridge amd/amd8151 "amd8151"
|
||||||
|
#end
|
||||||
|
|
||||||
#mainboardinit archi386/smp/secondary.inc
|
#mainboardinit archi386/smp/secondary.inc
|
||||||
#superio NSC/pc87360
|
#superio NSC/pc87360
|
||||||
# register "com1" = "{1}"
|
# register "com1" = "{1}"
|
||||||
|
@ -150,7 +189,8 @@ end
|
||||||
#end
|
#end
|
||||||
dir /pc80
|
dir /pc80
|
||||||
##dir /src/superio/winbond/w83627hf
|
##dir /src/superio/winbond/w83627hf
|
||||||
dir /cpu/k8
|
dir /bioscall
|
||||||
|
#dir /cpu/k8
|
||||||
cpu k8 "cpu0"
|
cpu k8 "cpu0"
|
||||||
register "up" = "{.chip = &amd8151, .ht_width=16, .ht_speed=600}"
|
register "up" = "{.chip = &amd8151, .ht_width=16, .ht_speed=600}"
|
||||||
register "down" = "{.chip = &amd8131, .ht_width=16, .ht_speed=600}"
|
register "down" = "{.chip = &amd8131, .ht_width=16, .ht_speed=600}"
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#define ASSEMBLY 1
|
#define ASSEMBLY 1
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <device/pci_def.h>
|
#include <device/pci_def.h>
|
||||||
#include <cpu/p6/apic.h>
|
#include <cpu/p6/apic.h>
|
||||||
|
@ -16,19 +17,23 @@
|
||||||
#include "northbridge/amd/amdk8/reset_test.c"
|
#include "northbridge/amd/amdk8/reset_test.c"
|
||||||
#include "debug.c"
|
#include "debug.c"
|
||||||
|
|
||||||
|
#define REV_B_RESET 0
|
||||||
static void memreset_setup(void)
|
static void memreset_setup(void)
|
||||||
{
|
{
|
||||||
/* Set the memreset low */
|
#if REV_B_RESET==1
|
||||||
outb((0 << 7)|(0 << 6)|(0<<5)|(0<<4)|(1<<2)|(1<<0), SMBUS_IO_BASE + 0xc0 + 16); // BY LYH 28->16 0<<0 --> 1<<0
|
outb((0 << 7)|(0 << 6)|(0<<5)|(0<<4)|(1<<2)|(0<<0), SMBUS_IO_BASE + 0xc0 + 16); //REVC_MEMRST_EN=0
|
||||||
/* Ensure the BIOS has control of the memory lines */
|
#else
|
||||||
outb((0 << 7)|(0 << 6)|(0<<5)|(0<<4)|(1<<2)|(0<<0), SMBUS_IO_BASE + 0xc0 + 17); // BY LYH 29->17
|
outb((0 << 7)|(0 << 6)|(0<<5)|(0<<4)|(1<<2)|(1<<0), SMBUS_IO_BASE + 0xc0 + 16); //REVC_MEMRST_EN=1
|
||||||
|
#endif
|
||||||
|
outb((0 << 7)|(0 << 6)|(0<<5)|(0<<4)|(1<<2)|(0<<0), SMBUS_IO_BASE + 0xc0 + 17);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void memreset(int controllers, const struct mem_controller *ctrl)
|
static void memreset(int controllers, const struct mem_controller *ctrl)
|
||||||
{
|
{
|
||||||
udelay(800);
|
udelay(800);
|
||||||
/* Set memreset_high */
|
#if REV_B_RESET==1
|
||||||
// outb((0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1<<0), SMBUS_IO_BASE + 0xc0 + 17); // BY LYH 28->17
|
outb((0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1<<0), SMBUS_IO_BASE + 0xc0 + 17); //REVB_MEMRST_L=1
|
||||||
|
#endif
|
||||||
udelay(90);
|
udelay(90);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,10 +135,6 @@ static void stop_this_cpu(void)
|
||||||
#define TOTAL_CPUS (FIRST_CPU + SECOND_CPU)
|
#define TOTAL_CPUS (FIRST_CPU + SECOND_CPU)
|
||||||
static void main(void)
|
static void main(void)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
* GPIO28 of 8111 will control H0_MEMRESET_L
|
|
||||||
* GPIO29 of 8111 will control H1_MEMRESET_L
|
|
||||||
*/
|
|
||||||
static const struct mem_controller cpu[] = {
|
static const struct mem_controller cpu[] = {
|
||||||
#if FIRST_CPU
|
#if FIRST_CPU
|
||||||
{
|
{
|
||||||
|
@ -172,8 +173,6 @@ static void main(void)
|
||||||
setup_s2885_resource_map();
|
setup_s2885_resource_map();
|
||||||
setup_coherent_ht_domain();
|
setup_coherent_ht_domain();
|
||||||
enumerate_ht_chain(0);
|
enumerate_ht_chain(0);
|
||||||
//setup_resource_map_x();
|
|
||||||
//enumerate_ht_chain(0);
|
|
||||||
distinguish_cpu_resets(0);
|
distinguish_cpu_resets(0);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -186,7 +185,7 @@ static void main(void)
|
||||||
memreset_setup();
|
memreset_setup();
|
||||||
sdram_initialize(sizeof(cpu)/sizeof(cpu[0]), cpu);
|
sdram_initialize(sizeof(cpu)/sizeof(cpu[0]), cpu);
|
||||||
|
|
||||||
#if 1
|
#if 0
|
||||||
dump_pci_devices();
|
dump_pci_devices();
|
||||||
#endif
|
#endif
|
||||||
#if 0
|
#if 0
|
||||||
|
|
|
@ -11,7 +11,7 @@ const struct irq_routing_table intel_irq_routing_table = {
|
||||||
PIRQ_SIGNATURE, /* u32 signature */
|
PIRQ_SIGNATURE, /* u32 signature */
|
||||||
PIRQ_VERSION, /* u16 version */
|
PIRQ_VERSION, /* u16 version */
|
||||||
32+16*11, /* there can be total 11 devices on the bus */
|
32+16*11, /* there can be total 11 devices on the bus */
|
||||||
0, /* Where the interrupt router lies (bus) */
|
1, /* Where the interrupt router lies (bus) */
|
||||||
0x3b, /* Where the interrupt router lies (dev) */
|
0x3b, /* Where the interrupt router lies (dev) */
|
||||||
0, /* IRQs devoted exclusively to PCI usage */
|
0, /* IRQs devoted exclusively to PCI usage */
|
||||||
0x1022, /* Vendor */
|
0x1022, /* Vendor */
|
||||||
|
@ -21,15 +21,15 @@ const struct irq_routing_table intel_irq_routing_table = {
|
||||||
0x35, /* u8 checksum , this hase to set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */
|
0x35, /* u8 checksum , this hase to set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */
|
||||||
{
|
{
|
||||||
{0,0x38, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0, 0},
|
{0,0x38, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0, 0},
|
||||||
{0x3,0, {{0, 0}, {0, 0}, {0, 0}, {0x4, 0xdef8}}, 0, 0},
|
{0x4,0, {{0, 0}, {0, 0}, {0, 0}, {0x4, 0xdef8}}, 0, 0},
|
||||||
{0x5,0, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0, 0}, {0, 0}}, 0x6, 0},
|
{0x6,0, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0, 0}, {0, 0}}, 0x6, 0},
|
||||||
{0x2,0x18, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0x1, 0},
|
{0x3,0x18, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0x1, 0},
|
||||||
{0x2,0x30, {{0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}}, 0x2, 0},
|
{0x3,0x30, {{0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}}, 0x2, 0},
|
||||||
{0x1,0x40, {{0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}}, 0x3, 0},
|
{0x2,0x40, {{0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}}, 0x3, 0},
|
||||||
{0x1,0x38, {{0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}}, 0x4, 0},
|
{0x2,0x38, {{0x3, 0xdef8}, {0x4, 0xdef8}, {0x1, 0xdef8}, {0x2, 0xdef8}}, 0x4, 0},
|
||||||
{0x3,0x50, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0x5, 0},
|
{0x4,0x50, {{0x1, 0xdef8}, {0x2, 0xdef8}, {0x3, 0xdef8}, {0x4, 0xdef8}}, 0x5, 0},
|
||||||
{0x1,0x48, {{0x1, 0xdef8}, {2, 0xdef8}, {0, 0}, {0, 0}}, 0, 0},
|
{0x2,0x48, {{0x1, 0xdef8}, {2, 0xdef8}, {0, 0}, {0, 0}}, 0, 0},
|
||||||
{0x3,0x58, {{0x2, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
{0x4,0x58, {{0x2, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
||||||
{0x3,0x60, {{0x4, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
{0x4,0x60, {{0x4, 0xdef8}, {0, 0}, {0, 0}, {0, 0}}, 0, 0},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
#include <device/pci.h>
|
#include <device/pci.h>
|
||||||
#include <device/pci_ids.h>
|
#include <device/pci_ids.h>
|
||||||
#include <device/pci_ops.h>
|
#include <device/pci_ops.h>
|
||||||
|
#include "../../../northbridge/amd/amdk8/northbridge.h"
|
||||||
#include "chip.h"
|
#include "chip.h"
|
||||||
//#include <part/mainboard.h>
|
//#include <part/mainboard.h>
|
||||||
//#include "lsi_scsi.c"
|
|
||||||
unsigned long initial_apicid[CONFIG_MAX_CPUS] =
|
unsigned long initial_apicid[CONFIG_MAX_CPUS] =
|
||||||
{
|
{
|
||||||
0,1
|
0,1
|
||||||
|
@ -46,7 +46,7 @@ static void print_pci_regs(struct device *dev)
|
||||||
for(i=0;i<256;i++) {
|
for(i=0;i<256;i++) {
|
||||||
byte = pci_read_config8(dev, i);
|
byte = pci_read_config8(dev, i);
|
||||||
|
|
||||||
if((i%16)==0) printk_info("\n%02x:",i);
|
if((i%16)==0) printk_debug("\n%02x:",i);
|
||||||
printk_debug(" %02x",byte);
|
printk_debug(" %02x",byte);
|
||||||
}
|
}
|
||||||
printk_debug("\n");
|
printk_debug("\n");
|
||||||
|
@ -90,9 +90,10 @@ static void amd8111_enable_rom(void)
|
||||||
static void onboard_scsi_fixup(void)
|
static void onboard_scsi_fixup(void)
|
||||||
{
|
{
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
|
#if 0
|
||||||
unsigned char i,j,k;
|
unsigned char i,j,k;
|
||||||
#if 1
|
|
||||||
for(i=0;i<=4;i++) {
|
for(i=0;i<=6;i++) {
|
||||||
for(j=0;j<=0x1f;j++) {
|
for(j=0;j<=0x1f;j++) {
|
||||||
for (k=0;k<=6;k++){
|
for (k=0;k<=6;k++){
|
||||||
dev = dev_find_slot(i, PCI_DEVFN(j, k));
|
dev = dev_find_slot(i, PCI_DEVFN(j, k));
|
||||||
|
@ -118,7 +119,7 @@ static void onboard_scsi_fixup(void)
|
||||||
// print_mem();
|
// print_mem();
|
||||||
// amd8111_enable_rom();
|
// amd8111_enable_rom();
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
static void vga_fixup(void) {
|
static void vga_fixup(void) {
|
||||||
// we do this right here because:
|
// we do this right here because:
|
||||||
// - all the hardware is working, and some VGA bioses seem to need
|
// - all the hardware is working, and some VGA bioses seem to need
|
||||||
|
@ -130,12 +131,12 @@ static void vga_fixup(void) {
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG_VGABIOS == 1
|
#if CONFIG_VGABIOS == 1
|
||||||
printk_debug("DO THE VGA BIOS\n");
|
printk_debug("DO THE VGA BIOS\n");
|
||||||
do_vgabios();
|
do_vgabios(0x0600);
|
||||||
post_code(0x93);
|
post_code(0x93);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
enable(struct chip *chip, enum chip_pass pass)
|
enable(struct chip *chip, enum chip_pass pass)
|
||||||
|
@ -152,8 +153,8 @@ enable(struct chip *chip, enum chip_pass pass)
|
||||||
case CONF_PASS_PRE_BOOT:
|
case CONF_PASS_PRE_BOOT:
|
||||||
if (conf->fixup_scsi)
|
if (conf->fixup_scsi)
|
||||||
onboard_scsi_fixup();
|
onboard_scsi_fixup();
|
||||||
// if (conf->fixup_vga)
|
if (conf->fixup_vga)
|
||||||
// vga_fixup();
|
vga_fixup();
|
||||||
printk_debug("mainboard fixup pass %d done\r\n",
|
printk_debug("mainboard fixup pass %d done\r\n",
|
||||||
pass);
|
pass);
|
||||||
break;
|
break;
|
||||||
|
@ -166,9 +167,27 @@ void final_mainboard_fixup(void)
|
||||||
enable_ide_devices();
|
enable_ide_devices();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
static struct device_operations mainboard_operations = {
|
||||||
struct chip_control mainboard_tyan_s2885_control = {
|
.read_resources = root_dev_read_resources,
|
||||||
.enable= enable,
|
.set_resources = root_dev_set_resources,
|
||||||
.name= "Tyan s2885 mainboard "
|
.enable_resources = enable_childrens_resources,
|
||||||
|
.init = 0,
|
||||||
|
.scan_bus = amdk8_scan_root_bus,
|
||||||
|
.enable = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void enumerate(struct chip *chip)
|
||||||
|
{
|
||||||
|
struct chip *child;
|
||||||
|
dev_root.ops = &mainboard_operations;
|
||||||
|
chip->dev = &dev_root;
|
||||||
|
chip->bus = 0;
|
||||||
|
for(child = chip->children; child; child = child->next) {
|
||||||
|
child->bus = &dev_root.link[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
struct chip_control mainboard_tyan_s2885_control = {
|
||||||
|
.enable = enable,
|
||||||
|
.enumerate = enumerate,
|
||||||
|
.name = "Tyan s2885 mainboard ",
|
||||||
|
};
|
||||||
|
|
|
@ -37,12 +37,13 @@ void *smp_write_config_table(void *v, unsigned long * processor_map)
|
||||||
smp_write_bus(mc, 1, "PCI ");
|
smp_write_bus(mc, 1, "PCI ");
|
||||||
smp_write_bus(mc, 2, "PCI ");
|
smp_write_bus(mc, 2, "PCI ");
|
||||||
smp_write_bus(mc, 3, "PCI ");
|
smp_write_bus(mc, 3, "PCI ");
|
||||||
|
smp_write_bus(mc, 4, "PCI ");
|
||||||
#if 1
|
#if 1
|
||||||
isa_bus = 6;
|
isa_bus = 7;
|
||||||
smp_write_bus(mc, 4, "PCI "); //8151 1022/7454 1022/7455
|
smp_write_bus(mc, 5, "PCI "); //8151 1022/7454 1022/7455
|
||||||
smp_write_bus(mc, 5, "PCI "); //Bridge
|
smp_write_bus(mc, 6, "PCI "); //Bridge
|
||||||
#else
|
#else
|
||||||
isa_bus = 4;
|
isa_bus = 5;
|
||||||
#endif
|
#endif
|
||||||
smp_write_bus(mc, isa_bus, "ISA ");
|
smp_write_bus(mc, isa_bus, "ISA ");
|
||||||
/*I/O APICs: APIC ID Version State Address*/
|
/*I/O APICs: APIC ID Version State Address*/
|
||||||
|
@ -50,13 +51,13 @@ void *smp_write_config_table(void *v, unsigned long * processor_map)
|
||||||
{
|
{
|
||||||
struct pci_dev *dev;
|
struct pci_dev *dev;
|
||||||
uint32_t base;
|
uint32_t base;
|
||||||
dev = dev_find_slot(0, PCI_DEVFN(0x1,1));
|
dev = dev_find_slot(1, PCI_DEVFN(0x1,1));
|
||||||
if (dev) {
|
if (dev) {
|
||||||
base = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
base = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
||||||
base &= PCI_BASE_ADDRESS_MEM_MASK;
|
base &= PCI_BASE_ADDRESS_MEM_MASK;
|
||||||
smp_write_ioapic(mc, 3, 0x11, base);
|
smp_write_ioapic(mc, 3, 0x11, base);
|
||||||
}
|
}
|
||||||
dev = dev_find_slot(0, PCI_DEVFN(0x2,1));
|
dev = dev_find_slot(1, PCI_DEVFN(0x2,1));
|
||||||
if (dev) {
|
if (dev) {
|
||||||
base = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
base = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
||||||
base &= PCI_BASE_ADDRESS_MEM_MASK;
|
base &= PCI_BASE_ADDRESS_MEM_MASK;
|
||||||
|
@ -79,51 +80,51 @@ void *smp_write_config_table(void *v, unsigned long * processor_map)
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, isa_bus, 0xe, 0x2, 0xe);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, isa_bus, 0xe, 0x2, 0xe);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, isa_bus, 0xf, 0x2, 0xf);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, isa_bus, 0xf, 0x2, 0xf);
|
||||||
//??? What
|
//??? What
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x0, 0x1f, 0x2, 0x13);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1f, 0x2, 0x13);
|
||||||
//Onboard AMD AC97 Audio
|
//Onboard AMD AC97 Audio
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x0, 0x1d, 0x2, 0x11);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1d, 0x2, 0x11);
|
||||||
// Onboard AMD USB
|
// Onboard AMD USB
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x3, 0x2, 0x13);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x3, 0x2, 0x13);
|
||||||
|
|
||||||
// AGP Display Adapter
|
// AGP Display Adapter
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x5, 0x0, 0x2, 0x10);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x6, 0x0, 0x2, 0x10);
|
||||||
|
|
||||||
// Onboard Serial ATA
|
// Onboard Serial ATA
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x2c, 0x2, 0x11);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x2c, 0x2, 0x11);
|
||||||
//Onboard Firewire
|
//Onboard Firewire
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x30, 0x2, 0x13);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x30, 0x2, 0x13);
|
||||||
//Onboard Broadcom NIC
|
//Onboard Broadcom NIC
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x24, 0x3, 0x0);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x24, 0x3, 0x0);
|
||||||
|
|
||||||
//Slot 5 PCI 32
|
//Slot 5 PCI 32
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x28, 0x2, 0x10);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x28, 0x2, 0x10);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x29, 0x2, 0x11);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x29, 0x2, 0x11);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x2a, 0x2, 0x12); //
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x2a, 0x2, 0x12); //
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x2b, 0x2, 0x13); //
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x4, 0x2b, 0x2, 0x13); //
|
||||||
|
|
||||||
//Slot 3 PCIX 100/66
|
//Slot 3 PCIX 100/66
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x20, 0x3, 0x3);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x20, 0x3, 0x3);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x21, 0x3, 0x0);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x21, 0x3, 0x0);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x22, 0x3, 0x1);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x22, 0x3, 0x1);//
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x23, 0x3, 0x2);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x23, 0x3, 0x2);//
|
||||||
|
|
||||||
//Slot 4 PCIX 100/66
|
//Slot 4 PCIX 100/66
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1c, 0x3, 0x2);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1c, 0x3, 0x2);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1d, 0x3, 0x3);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1d, 0x3, 0x3);//
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1e, 0x3, 0x0);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1e, 0x3, 0x0);//
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x1f, 0x3, 0x1);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1f, 0x3, 0x1);//
|
||||||
|
|
||||||
//Slot 1 PCI-X 133/100/66
|
//Slot 1 PCI-X 133/100/66
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0xc, 0x4, 0x0);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0xc, 0x4, 0x0);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0xd, 0x4, 0x1);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0xd, 0x4, 0x1);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0xe, 0x4, 0x2); //
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0xe, 0x4, 0x2); //
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0xf, 0x4, 0x3); //
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0xf, 0x4, 0x3); //
|
||||||
|
|
||||||
//Slot 2 PCI-X 133/100/66
|
//Slot 2 PCI-X 133/100/66
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x18, 0x4, 0x1);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x18, 0x4, 0x1);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x19, 0x4, 0x2);
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x19, 0x4, 0x2);
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1a, 0x4, 0x3);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x1a, 0x4, 0x3);//
|
||||||
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x2, 0x1b, 0x4, 0x0);//
|
smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x3, 0x1b, 0x4, 0x0);//
|
||||||
|
|
||||||
/*Local Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#*/
|
/*Local Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#*/
|
||||||
smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x0, 0x0, MP_APIC_ALL, 0x0);
|
smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x0, 0x0, MP_APIC_ALL, 0x0);
|
||||||
|
|
|
@ -252,8 +252,8 @@ static void setup_s2885_resource_map(void)
|
||||||
* [31:24] Bus Number Limit i
|
* [31:24] Bus Number Limit i
|
||||||
* This field defines the highest bus number in configuration regin i
|
* This field defines the highest bus number in configuration regin i
|
||||||
*/
|
*/
|
||||||
PCI_ADDR(0, 0x18, 1, 0xE0), 0x0000FC88, 0x03000203,
|
PCI_ADDR(0, 0x18, 1, 0xE0), 0x0000FC88, 0x04000203,
|
||||||
PCI_ADDR(0, 0x18, 1, 0xE4), 0x0000FC88, 0x05040003,
|
PCI_ADDR(0, 0x18, 1, 0xE4), 0x0000FC88, 0x06050003,
|
||||||
PCI_ADDR(0, 0x18, 1, 0xE8), 0x0000FC88, 0x00000000,
|
PCI_ADDR(0, 0x18, 1, 0xE8), 0x0000FC88, 0x00000000,
|
||||||
PCI_ADDR(0, 0x18, 1, 0xEC), 0x0000FC88, 0x00000000,
|
PCI_ADDR(0, 0x18, 1, 0xEC), 0x0000FC88, 0x00000000,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue