[LinuxBIOS] AMD serenade help

Jia Jianwei JJia at Fortinet.com
Fri Sep 30 23:41:37 CEST 2005


AMD serenade hangs when initialize ram.

in the function "route_dram_accesses", when write to limit register, system
just hang.  If anyone has this problem before? Please help. Thanks!



static void route_dram_accesses(const struct mem_controller *ctrl,
        unsigned long base_k, unsigned long limit_k)
{
        /* Route the addresses to the controller node */
        unsigned node_id;
        unsigned limit;
        unsigned base;
        unsigned index;
        unsigned limit_reg, base_reg;
        device_t device;

        node_id = ctrl->node_id;
        index = (node_id << 3);
        limit = (limit_k << 2);
        limit &= 0xffff0000;
        limit -= 0x00010000;
        limit |= ( 0 << 8) | (node_id << 0);
        base = (base_k << 2);
        base &= 0xffff0000;
        base |= (0 << 8) | (1<<1) | (1<<0);

        limit_reg = 0x44 + index;
        base_reg = 0x40 + index;
        for(device = PCI_DEV(0, 0x18, 1); device <= PCI_DEV(0, 0x1f, 1);
device += PCI_DEV(0, 1, 0)) {
                /* hangs here */
                pci_write_config32(device, limit_reg, limit);
                pci_write_config32(device, base_reg, base);
        }
}



Jianwei





More information about the coreboot mailing list