sc520 support -- ethernet works
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2047 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
a25120a30f
commit
87888630b2
|
@ -37,11 +37,31 @@ static void cpu_init(device_t dev)
|
|||
}
|
||||
|
||||
|
||||
/* Ollie says: make a northbridge/amd/sc520. Ron sez:
|
||||
* there is no real northbridge, keep it here in cpu.
|
||||
* Ron wins, he's writing the code.
|
||||
*/
|
||||
void sc520_enable_resources(struct device *dev) {
|
||||
unsigned char command;
|
||||
|
||||
printk_spew("%s\n", __FUNCTION__);
|
||||
command = pci_read_config8(dev, PCI_COMMAND);
|
||||
printk_spew("========>%s, command 0x%x\n", __FUNCTION__, command);
|
||||
command |= PCI_COMMAND_MEMORY | PCI_COMMAND_PARITY | PCI_COMMAND_SERR;
|
||||
printk_spew("========>%s, command 0x%x\n", __FUNCTION__, command);
|
||||
pci_write_config8(dev, PCI_COMMAND, command);
|
||||
command = pci_read_config8(dev, PCI_COMMAND);
|
||||
printk_spew("========>%s, command 0x%x\n", __FUNCTION__, command);
|
||||
/*
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
static struct device_operations cpu_operations = {
|
||||
.read_resources = pci_dev_read_resources,
|
||||
.set_resources = pci_dev_set_resources,
|
||||
.enable_resources = pci_dev_enable_resources,
|
||||
.enable_resources = sc520_enable_resources,
|
||||
.init = cpu_init,
|
||||
.enable = 0,
|
||||
.ops_pci = 0,
|
||||
|
@ -166,10 +186,29 @@ static unsigned int pci_domain_scan_bus(device_t dev, unsigned int max)
|
|||
return max;
|
||||
}
|
||||
|
||||
|
||||
static void enable_resources(device_t dev) {
|
||||
|
||||
printk_spew("%s\n", __FUNCTION__);
|
||||
printk_spew("THIS IS FOR THE SC520 =============================\n");
|
||||
|
||||
/*
|
||||
command = pci_read_config8(dev, PCI_COMMAND);
|
||||
printk_spew("%s, command 0x%x\n", __FUNCTION__, command);
|
||||
command |= PCI_COMMAND_MEMORY;
|
||||
printk_spew("%s, command 0x%x\n", __FUNCTION__, command);
|
||||
pci_write_config8(dev, PCI_COMMAND, command);
|
||||
command = pci_read_config8(dev, PCI_COMMAND);
|
||||
printk_spew("%s, command 0x%x\n", __FUNCTION__, command);
|
||||
*/
|
||||
enable_childrens_resources(dev);
|
||||
printk_spew("%s\n", __FUNCTION__);
|
||||
}
|
||||
|
||||
static struct device_operations pci_domain_ops = {
|
||||
.read_resources = pci_domain_read_resources,
|
||||
.set_resources = pci_domain_set_resources,
|
||||
.enable_resources = enable_childrens_resources,
|
||||
.enable_resources = enable_resources,
|
||||
.init = 0,
|
||||
.scan_bus = pci_domain_scan_bus,
|
||||
};
|
||||
|
|
|
@ -134,6 +134,9 @@ chip cpu/amd/sc520
|
|||
device pci_domain 0 on
|
||||
device pci 0.0 on end
|
||||
|
||||
chip drivers/pci/onboard
|
||||
device pci 12.0 on end # enet
|
||||
end
|
||||
chip drivers/pci/onboard
|
||||
device pci 14.0 on end # 69000
|
||||
register "rom_address" = "0x2000000"
|
||||
|
|
|
@ -21,13 +21,8 @@ const struct irq_routing_table intel_irq_routing_table = {
|
|||
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) */
|
||||
{
|
||||
/* bus, dev|fn, {link, bitmap}, {link, bitmap}, {link, bitmap}, {link, bitmap}, slot, rfu */
|
||||
{0x00,(0x09<<3)|0x0, {{0x30, 0x8e80}, {0x31, 0x8e80}, {0x32, 0x8e80}, {0x33, 0x08e80}}, 0x1, 0x0},
|
||||
{0x00,(0x0a<<3)|0x0, {{0x31, 0x8e80}, {0x32, 0x8e80}, {0x33, 0x8e80}, {0x30, 0x08e80}}, 0x2, 0x0},
|
||||
{0x00,(0x0b<<3)|0x0, {{0x32, 0x8e80}, {0x33, 0x8e80}, {0x30, 0x8e80}, {0x31, 0x08e80}}, 0x3, 0x0},
|
||||
{0x00,(0x0c<<3)|0x0, {{0x33, 0x8e80}, {0x30, 0x8e80}, {0x31, 0x8e80}, {0x32, 0x08e80}}, 0x4, 0x0},
|
||||
{0x00,(0x0f<<3)|0x0, {{0x32, 0x8e80}, {0x00, 0x8e80}, {0x00, 0x8e80}, {0x00, 0x08e80}}, 0x0, 0x0},
|
||||
{0x00,(0x12<<3)|0x0, {{0x30, 0x8e80}, {0x00, 0x8e80}, {0x00, 0x8e80}, {0x00, 0x08e80}}, 0x0, 0x0},
|
||||
{0x00,(0x14<<3)|0x0, {{0x30, 0x8e80}, {0x31, 0x8e80}, {0x32, 0x8e80}, {0x33, 0x08e80}}, 0x0, 0x0},
|
||||
{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)
|
||||
|
|
|
@ -35,6 +35,7 @@ static void irqdump()
|
|||
- set ADDDECTL (now done in raminit.c in cpu/amd/sc520
|
||||
*/
|
||||
static void enable_dev(struct device *dev) {
|
||||
extern unsigned char *rom_start, *rom_end;
|
||||
volatile struct mmcrpic *pic = MMCRPIC;
|
||||
volatile struct mmcr *mmcr = MMCRDEFAULT;
|
||||
|
||||
|
@ -132,6 +133,12 @@ static void enable_dev(struct device *dev) {
|
|||
*/
|
||||
/* follow fuctory here */
|
||||
mmcr->dmacontrol.extchanmapa = 0x3210;
|
||||
|
||||
/* hack for IDIOTIC need to fix rom_start */
|
||||
printk_err("Patching rom_start due to sc520 limits\n");
|
||||
rom_start = 0x2000000 + 0x40000;
|
||||
rom_end = rom_start + PAYLOAD_SIZE - 1;
|
||||
|
||||
|
||||
}
|
||||
struct chip_operations mainboard_digitallogic_msm586seg_ops = {
|
||||
|
|
|
@ -9,8 +9,18 @@
|
|||
#define CONFIG_ROM_STREAM_START 0xffff0000UL
|
||||
#endif
|
||||
|
||||
static const unsigned char *rom_start = (void *)CONFIG_ROM_STREAM_START;
|
||||
static const unsigned char *rom_end = (void *)(CONFIG_ROM_STREAM_START + PAYLOAD_SIZE - 1);
|
||||
/* well, this is a mess, and it will get fixed, but not right away.
|
||||
* until we stop using 'ld' for building the rom image, that is.
|
||||
* problem is, that on the sc520, ROM_STREAM_START has to be at 0x2000000.
|
||||
* but if you set CONFIG_ROM_STREAM_START to that, then ld will try to
|
||||
* build a giant image: 0x0-0x2000000, i.e. almost 4 GB.
|
||||
* so make this non-static, non-const for now.
|
||||
*/
|
||||
|
||||
/*XXXXXXXXXXXXXX */
|
||||
/*static const */unsigned char *rom_start = (void *)CONFIG_ROM_STREAM_START;
|
||||
/*static const */unsigned char *rom_end = (void *)(CONFIG_ROM_STREAM_START + PAYLOAD_SIZE - 1);
|
||||
/*XXXXXXXXXXXXXX */
|
||||
static const unsigned char *rom;
|
||||
|
||||
int stream_init(void)
|
||||
|
|
Loading…
Reference in New Issue