1# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 2# 1 "<built-in>" 3# 1 "<command line>" 4# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 5 6# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/arch/i386/include/stdint.h" 1 7# 11 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/arch/i386/include/stdint.h" 8typedef unsigned char uint8_t; 9typedef signed char int8_t; 10 11typedef unsigned short uint16_t; 12typedef signed short int16_t; 13 14typedef unsigned int uint32_t; 15typedef signed int int32_t; 16 17 18 19 20 21 22 23typedef unsigned char uint_least8_t; 24typedef signed char int_least8_t; 25 26typedef unsigned short uint_least16_t; 27typedef signed short int_least16_t; 28 29typedef unsigned int uint_least32_t; 30typedef signed int int_least32_t; 31 32 33 34 35 36 37 38typedef unsigned char uint_fast8_t; 39typedef signed char int_fast8_t; 40 41typedef unsigned int uint_fast16_t; 42typedef signed int int_fast16_t; 43 44typedef unsigned int uint_fast32_t; 45typedef signed int int_fast32_t; 46 47 48 49 50 51 52 53typedef int intptr_t; 54typedef unsigned int uintptr_t; 55 56 57 58 59 60 61typedef long int intmax_t; 62typedef unsigned long int uintmax_t; 63# 3 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 2 64# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/include/device/pci_def.h" 1 65# 4 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 2 66# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/arch/i386/include/arch/romcc_io.h" 1 67static void outb(unsigned char value, unsigned short port) 68{ 69 __builtin_outb(value, port); 70} 71 72static void outw(unsigned short value, unsigned short port) 73{ 74 __builtin_outw(value, port); 75} 76 77static void outl(unsigned int value, unsigned short port) 78{ 79 __builtin_outl(value, port); 80} 81 82 83static unsigned char inb(unsigned short port) 84{ 85 return __builtin_inb(port); 86} 87 88 89static unsigned char inw(unsigned short port) 90{ 91 return __builtin_inw(port); 92} 93 94static unsigned char inl(unsigned short port) 95{ 96 return __builtin_inl(port); 97} 98 99static void hlt(void) 100{ 101 __builtin_hlt(); 102} 103 104typedef __builtin_msr_t msr_t; 105 106static msr_t rdmsr(unsigned long index) 107{ 108 return __builtin_rdmsr(index); 109} 110 111static void wrmsr(unsigned long index, msr_t msr) 112{ 113 __builtin_wrmsr(index, msr.lo, msr.hi); 114} 115# 64 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/arch/i386/include/arch/romcc_io.h" 116typedef unsigned device_t; 117 118static unsigned char pci_read_config8(device_t dev, unsigned where) 119{ 120 unsigned addr; 121 addr = dev | where; 122 outl(0x80000000 | (addr & ~3), 0xCF8); 123 return inb(0xCFC + (addr & 3)); 124} 125 126static unsigned short pci_read_config16(device_t dev, unsigned where) 127{ 128 unsigned addr; 129 addr = dev | where; 130 outl(0x80000000 | (addr & ~3), 0xCF8); 131 return inw(0xCFC + (addr & 2)); 132} 133 134static unsigned int pci_read_config32(device_t dev, unsigned where) 135{ 136 unsigned addr; 137 addr = dev | where; 138 outl(0x80000000 | (addr & ~3), 0xCF8); 139 return inl(0xCFC); 140} 141 142static void pci_write_config8(device_t dev, unsigned where, unsigned char value) 143{ 144 unsigned addr; 145 addr = dev | where; 146 outl(0x80000000 | (addr & ~3), 0xCF8); 147 outb(value, 0xCFC + (addr & 3)); 148} 149 150static void pci_write_config16(device_t dev, unsigned where, unsigned short value) 151{ 152 unsigned addr; 153 addr = dev | where; 154 outl(0x80000000 | (addr & ~3), 0xCF8); 155 outw(value, 0xCFC + (addr & 2)); 156} 157 158static void pci_write_config32(device_t dev, unsigned where, unsigned int value) 159{ 160 unsigned addr; 161 addr = dev | where; 162 outl(0x80000000 | (addr & ~3), 0xCF8); 163 outl(value, 0xCFC); 164} 165 166 167static device_t pci_locate_device(unsigned pci_id, device_t dev) 168{ 169 for(; dev <= ( (((255) & 0xFF) << 16) | (((31) & 0x1f) << 11) | (((7) & 0x7) << 8)); dev += ( (((0) & 0xFF) << 16) | (((0) & 0x1f) << 11) | (((1) & 0x7) << 8))) { 170 unsigned int id; 171 id = pci_read_config32(dev, 0); 172 if (id == pci_id) { 173 return dev; 174 } 175 } 176 return (0xffffffffU); 177} 178# 5 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 2 179# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/pc80/serial.c" 1 180# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/include/part/fallback_boot.h" 1 181# 2 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/pc80/serial.c" 2 182# 44 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/pc80/serial.c" 183static int uart_can_tx_byte(void) 184{ 185 return inb(0x3f8 + 0x05) & 0x20; 186} 187 188static void uart_wait_to_tx_byte(void) 189{ 190 while(!uart_can_tx_byte()) 191 ; 192} 193 194static void uart_wait_until_sent(void) 195{ 196 while(!(inb(0x3f8 + 0x05) & 0x40)) 197 ; 198} 199 200static void uart_tx_byte(unsigned char data) 201{ 202 uart_wait_to_tx_byte(); 203 outb(data, 0x3f8 + 0x00); 204 205 uart_wait_until_sent(); 206} 207 208static void uart_init(void) 209{ 210 211 outb(0x0, 0x3f8 + 0x01); 212 213 outb(0x01, 0x3f8 + 0x02); 214 215 outb(0x80 | 0x3, 0x3f8 + 0x03); 216# 87 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/pc80/serial.c" 217 outb((115200/9600) & 0xFF, 0x3f8 + 0x00); 218 outb(((115200/9600) >> 8) & 0xFF, 0x3f8 + 0x01); 219 220 outb(0x3, 0x3f8 + 0x03); 221} 222# 6 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 2 223# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/arch/i386/lib/console.c" 1 224# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/include/console/loglevel.h" 1 225# 2 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/arch/i386/lib/console.c" 2 226 227static void __console_tx_byte(unsigned char byte) 228{ 229 uart_tx_byte(byte); 230} 231 232static void __console_tx_nibble(unsigned nibble) 233{ 234 unsigned char digit; 235 digit = nibble + '0'; 236 if (digit > '9') { 237 digit += 39; 238 } 239 __console_tx_byte(digit); 240} 241 242static void __console_tx_char(int loglevel, unsigned char byte) 243{ 244 if (8 > loglevel) { 245 uart_tx_byte(byte); 246 } 247} 248 249static void __console_tx_hex8(int loglevel, unsigned char value) 250{ 251 if (8 > loglevel) { 252 __console_tx_nibble((value >> 4U) & 0x0fU); 253 __console_tx_nibble(value & 0x0fU); 254 } 255} 256 257static void __console_tx_hex16(int loglevel, unsigned short value) 258{ 259 if (8 > loglevel) { 260 __console_tx_nibble((value >> 12U) & 0x0fU); 261 __console_tx_nibble((value >> 8U) & 0x0fU); 262 __console_tx_nibble((value >> 4U) & 0x0fU); 263 __console_tx_nibble(value & 0x0fU); 264 } 265} 266 267static void __console_tx_hex32(int loglevel, unsigned int value) 268{ 269 if (8 > loglevel) { 270 __console_tx_nibble((value >> 28U) & 0x0fU); 271 __console_tx_nibble((value >> 24U) & 0x0fU); 272 __console_tx_nibble((value >> 20U) & 0x0fU); 273 __console_tx_nibble((value >> 16U) & 0x0fU); 274 __console_tx_nibble((value >> 12U) & 0x0fU); 275 __console_tx_nibble((value >> 8U) & 0x0fU); 276 __console_tx_nibble((value >> 4U) & 0x0fU); 277 __console_tx_nibble(value & 0x0fU); 278 } 279} 280 281static void __console_tx_string(int loglevel, const char *str) 282{ 283 if (8 > loglevel) { 284 unsigned char ch; 285 while((ch = *str++) != '\0') { 286 __console_tx_byte(ch); 287 } 288 } 289} 290 291static void print_emerg_char(unsigned char byte) { __console_tx_char(0, byte); } 292static void print_emerg_hex8(unsigned char value){ __console_tx_hex8(0, value); } 293static void print_emerg_hex16(unsigned short value){ __console_tx_hex16(0, value); } 294static void print_emerg_hex32(unsigned int value) { __console_tx_hex32(0, value); } 295static void print_emerg(const char *str) { __console_tx_string(0, str); } 296 297static void print_alert_char(unsigned char byte) { __console_tx_char(1, byte); } 298static void print_alert_hex8(unsigned char value) { __console_tx_hex8(1, value); } 299static void print_alert_hex16(unsigned short value){ __console_tx_hex16(1, value); } 300static void print_alert_hex32(unsigned int value) { __console_tx_hex32(1, value); } 301static void print_alert(const char *str) { __console_tx_string(1, str); } 302 303static void print_crit_char(unsigned char byte) { __console_tx_char(2, byte); } 304static void print_crit_hex8(unsigned char value) { __console_tx_hex8(2, value); } 305static void print_crit_hex16(unsigned short value){ __console_tx_hex16(2, value); } 306static void print_crit_hex32(unsigned int value) { __console_tx_hex32(2, value); } 307static void print_crit(const char *str) { __console_tx_string(2, str); } 308 309static void print_err_char(unsigned char byte) { __console_tx_char(3, byte); } 310static void print_err_hex8(unsigned char value) { __console_tx_hex8(3, value); } 311static void print_err_hex16(unsigned short value){ __console_tx_hex16(3, value); } 312static void print_err_hex32(unsigned int value) { __console_tx_hex32(3, value); } 313static void print_err(const char *str) { __console_tx_string(3, str); } 314 315static void print_warning_char(unsigned char byte) { __console_tx_char(4, byte); } 316static void print_warning_hex8(unsigned char value) { __console_tx_hex8(4, value); } 317static void print_warning_hex16(unsigned short value){ __console_tx_hex16(4, value); } 318static void print_warning_hex32(unsigned int value) { __console_tx_hex32(4, value); } 319static void print_warning(const char *str) { __console_tx_string(4, str); } 320 321static void print_notice_char(unsigned char byte) { __console_tx_char(5, byte); } 322static void print_notice_hex8(unsigned char value) { __console_tx_hex8(5, value); } 323static void print_notice_hex16(unsigned short value){ __console_tx_hex16(5, value); } 324static void print_notice_hex32(unsigned int value) { __console_tx_hex32(5, value); } 325static void print_notice(const char *str) { __console_tx_string(5, str); } 326 327static void print_info_char(unsigned char byte) { __console_tx_char(6, byte); } 328static void print_info_hex8(unsigned char value) { __console_tx_hex8(6, value); } 329static void print_info_hex16(unsigned short value){ __console_tx_hex16(6, value); } 330static void print_info_hex32(unsigned int value) { __console_tx_hex32(6, value); } 331static void print_info(const char *str) { __console_tx_string(6, str); } 332 333static void print_debug_char(unsigned char byte) { __console_tx_char(7, byte); } 334static void print_debug_hex8(unsigned char value) { __console_tx_hex8(7, value); } 335static void print_debug_hex16(unsigned short value){ __console_tx_hex16(7, value); } 336static void print_debug_hex32(unsigned int value) { __console_tx_hex32(7, value); } 337static void print_debug(const char *str) { __console_tx_string(7, str); } 338 339static void print_spew_char(unsigned char byte) { __console_tx_char(8, byte); } 340static void print_spew_hex8(unsigned char value) { __console_tx_hex8(8, value); } 341static void print_spew_hex16(unsigned short value){ __console_tx_hex16(8, value); } 342static void print_spew_hex32(unsigned int value) { __console_tx_hex32(8, value); } 343static void print_spew(const char *str) { __console_tx_string(8, str); } 344# 128 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/arch/i386/lib/console.c" 345static void console_init(void) 346{ 347 static const char console_test[] = 348 "\r\n\r\nLinuxBIOS-" 349 "1.1.0" 350 ".0Fallback" 351 " " 352 "Fri Jun 13 21:02:41 MDT 2003" 353 " starting...\r\n"; 354 print_info(console_test); 355} 356 357 358static void die(const char *str) 359{ 360 print_emerg(str); 361 do { 362 hlt(); 363 } while(1); 364} 365# 7 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 2 366# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/ram/ramtest.c" 1 367static void write_phys(unsigned long addr, unsigned long value) 368{ 369 volatile unsigned long *ptr; 370 ptr = (void *)addr; 371 *ptr = value; 372} 373 374static unsigned long read_phys(unsigned long addr) 375{ 376 volatile unsigned long *ptr; 377 ptr = (void *)addr; 378 return *ptr; 379} 380 381void ram_fill(unsigned long start, unsigned long stop) 382{ 383 unsigned long addr; 384 385 386 387 print_debug("DRAM fill: "); 388 print_debug_hex32(start); 389 print_debug("-"); 390 print_debug_hex32(stop); 391 print_debug("\r\n"); 392 for(addr = start; addr < stop ; addr += 4) { 393 394 if ((addr & 0xffff) == 0) { 395 print_debug_hex32(addr); 396 print_debug("\r"); 397 } 398 write_phys(addr, addr); 399 }; 400 401 print_debug_hex32(addr); 402 print_debug("\r\nDRAM filled\r\n"); 403} 404 405void ram_verify(unsigned long start, unsigned long stop) 406{ 407 unsigned long addr; 408 409 410 411 print_debug("DRAM verify: "); 412 print_debug_hex32(start); 413 print_debug_char('-'); 414 print_debug_hex32(stop); 415 print_debug("\r\n"); 416 for(addr = start; addr < stop ; addr += 4) { 417 unsigned long value; 418 419 if ((addr & 0xffff) == 0) { 420 print_debug_hex32(addr); 421 print_debug("\r"); 422 } 423 value = read_phys(addr); 424 if (value != addr) { 425 426 print_err_hex32(addr); 427 print_err_char(':'); 428 print_err_hex32(value); 429 print_err("\r\n"); 430 } 431 } 432 433 print_debug_hex32(addr); 434 print_debug("\r\nDRAM verified\r\n"); 435} 436 437 438void ram_check(unsigned long start, unsigned long stop) 439{ 440 int result; 441 442 443 444 445 446 print_debug("Testing DRAM : "); 447 print_debug_hex32(start); 448 print_debug("-"); 449 print_debug_hex32(stop); 450 print_debug("\r\n"); 451 ram_fill(start, stop); 452 ram_verify(start, stop); 453 print_debug("Done.\n"); 454} 455# 8 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 2 456# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/early_ht.c" 1 457static void enumerate_ht_chain(void) 458{ 459 460 461 462 463 464 unsigned next_unitid, last_unitid;; 465 next_unitid = 1; 466 do { 467 uint32_t id; 468 uint8_t hdr_type, pos; 469 last_unitid = next_unitid; 470 471 id = pci_read_config32(( (((0) & 0xFF) << 16) | (((0) & 0x1f) << 11) | (((0) & 0x7) << 8)), 0x00); 472 473 if (((id & 0xffff) == 0x0000) || ((id & 0xffff) == 0xffff) || 474 (((id >> 16) & 0xffff) == 0xffff) || 475 (((id >> 16) & 0xffff) == 0x0000)) { 476 break; 477 } 478 hdr_type = pci_read_config8(( (((0) & 0xFF) << 16) | (((0) & 0x1f) << 11) | (((0) & 0x7) << 8)), 0x0e); 479 pos = 0; 480 hdr_type &= 0x7f; 481 482 if ((hdr_type == 0) || 483 (hdr_type == 1)) { 484 pos = pci_read_config8(( (((0) & 0xFF) << 16) | (((0) & 0x1f) << 11) | (((0) & 0x7) << 8)), 0x34); 485 } 486 while(pos != 0) { 487 uint8_t cap; 488 cap = pci_read_config8(( (((0) & 0xFF) << 16) | (((0) & 0x1f) << 11) | (((0) & 0x7) << 8)), pos + 0); 489 if (cap == 0x08) { 490 uint16_t flags; 491 flags = pci_read_config16(( (((0) & 0xFF) << 16) | (((0) & 0x1f) << 11) | (((0) & 0x7) << 8)), pos + 2); 492 if ((flags >> 13) == 0) { 493 unsigned count; 494 flags &= ~0x1f; 495 flags |= next_unitid & 0x1f; 496 count = (flags >> 5) & 0x1f; 497 pci_write_config16(( (((0) & 0xFF) << 16) | (((0) & 0x1f) << 11) | (((0) & 0x7) << 8)), pos + 2, flags); 498 next_unitid += count; 499 break; 500 } 501 } 502 pos = pci_read_config8(( (((0) & 0xFF) << 16) | (((0) & 0x1f) << 11) | (((0) & 0x7) << 8)), pos + 1); 503 } 504 } while((last_unitid != next_unitid) && (next_unitid <= 0x1f)); 505} 506# 9 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 2 507# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/southbridge/amd/amd8111/amd8111_early_smbus.c" 1 508# 12 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/southbridge/amd/amd8111/amd8111_early_smbus.c" 509static void enable_smbus(void) 510{ 511 device_t dev; 512 dev = pci_locate_device(((((0x746b) & 0xFFFF) << 16) | ((0x1022) & 0xFFFF)), 0); 513 if (dev == (0xffffffffU)) { 514 die("SMBUS controller not found\r\n"); 515 } 516 uint8_t enable; 517 print_debug("SMBus controller enabled\r\n"); 518 pci_write_config32(dev, 0x58, 0x1000 | 1); 519 enable = pci_read_config8(dev, 0x41); 520 pci_write_config8(dev, 0x41, enable | (1 << 7)); 521} 522 523 524static inline void smbus_delay(void) 525{ 526 outb(0x80, 0x80); 527} 528 529static int smbus_wait_until_ready(void) 530{ 531 unsigned long loops; 532 loops = (100*1000*10); 533 do { 534 unsigned short val; 535 smbus_delay(); 536 val = inw(0x1000 + 0xe0); 537 if ((val & 0x800) == 0) { 538 break; 539 } 540 } while(--loops); 541 return loops?0:-1; 542} 543 544static int smbus_wait_until_done(void) 545{ 546 unsigned long loops; 547 loops = (100*1000*10); 548 do { 549 unsigned short val; 550 smbus_delay(); 551 552 val = inw(0x1000 + 0xe0); 553 if (((val & 0x8) == 0) || ((val & 0x437) != 0)) { 554 break; 555 } 556 } while(--loops); 557 return loops?0:-1; 558} 559 560static int smbus_read_byte(unsigned device, unsigned address) 561{ 562 unsigned char global_control_register; 563 unsigned char global_status_register; 564 unsigned char byte; 565 566 if (smbus_wait_until_ready() < 0) { 567 return -1; 568 } 569 570 571 572 outw(inw(0x1000 + 0xe2) & ~((1<<10)|(1<<9)|(1<<8)|(1<<4)), 0x1000 + 0xe2); 573 574 outw(((device & 0x7f) << 1) | 1, 0x1000 + 0xe4); 575 576 outb(address & 0xFF, 0x1000 + 0xe8); 577 578 outw((inw(0x1000 + 0xe2) & ~7) | (0x2), 0x1000 + 0xe2); 579 580 581 582 outw(inw(0x1000 + 0xe0), 0x1000 + 0xe0); 583 584 585 outw(0, 0x1000 + 0xe6); 586 587 588 outw((inw(0x1000 + 0xe2) | (1 << 3)), 0x1000 + 0xe2); 589 590 591 592 if (smbus_wait_until_done() < 0) { 593 return -1; 594 } 595 596 global_status_register = inw(0x1000 + 0xe0); 597 598 599 byte = inw(0x1000 + 0xe6) & 0xff; 600 601 if (global_status_register != (1 << 4)) { 602 return -1; 603 } 604 return byte; 605} 606# 10 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 2 607# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 1 608# 10 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 609static void setup_resource_map(const unsigned int *register_values, int max) 610{ 611 int i; 612 print_debug("setting up resource map....\r\n"); 613 for(i = 0; i < max; i += 3) { 614 device_t dev; 615 unsigned where; 616 unsigned long reg; 617 618 619 620 621 622 623 dev = register_values[i] & ~0xff; 624 where = register_values[i] & 0xff; 625 reg = pci_read_config32(dev, where); 626 reg &= register_values[i+1]; 627 reg |= register_values[i+2]; 628 pci_write_config32(dev, where, reg); 629 630 631 632 633 634 635 } 636 print_debug("done.\r\n"); 637} 638 639static void setup_default_resource_map(void) 640{ 641 static const unsigned int register_values[] = { 642# 70 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 643 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x44) & 0xFF)), 0x0000f8f8, 0x00000000, 644 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x4C) & 0xFF)), 0x0000f8f8, 0x00000001, 645 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x54) & 0xFF)), 0x0000f8f8, 0x00000002, 646 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x5C) & 0xFF)), 0x0000f8f8, 0x00000003, 647 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x64) & 0xFF)), 0x0000f8f8, 0x00000004, 648 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x6C) & 0xFF)), 0x0000f8f8, 0x00000005, 649 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x74) & 0xFF)), 0x0000f8f8, 0x00000006, 650 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x7C) & 0xFF)), 0x0000f8f8, 0x00000007, 651# 108 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 652 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x40) & 0xFF)), 0x0000f8fc, 0x00000000, 653 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x48) & 0xFF)), 0x0000f8fc, 0x00000000, 654 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x50) & 0xFF)), 0x0000f8fc, 0x00000000, 655 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x58) & 0xFF)), 0x0000f8fc, 0x00000000, 656 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x60) & 0xFF)), 0x0000f8fc, 0x00000000, 657 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x68) & 0xFF)), 0x0000f8fc, 0x00000000, 658 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x70) & 0xFF)), 0x0000f8fc, 0x00000000, 659 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x78) & 0xFF)), 0x0000f8fc, 0x00000000, 660# 149 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 661 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x84) & 0xFF)), 0x00000048, 0x00000000, 662 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x8C) & 0xFF)), 0x00000048, 0x00000000, 663 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x94) & 0xFF)), 0x00000048, 0x00000000, 664 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x9C) & 0xFF)), 0x00000048, 0x00000000, 665 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xA4) & 0xFF)), 0x00000048, 0x00000000, 666 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xAC) & 0xFF)), 0x00000048, 0x00000000, 667 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xB4) & 0xFF)), 0x00000048, 0x00000000, 668 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xBC) & 0xFF)), 0x00000048, 0x00000000, 669# 184 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 670 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x80) & 0xFF)), 0x000000f0, 0x00000000, 671 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x88) & 0xFF)), 0x000000f0, 0x00000000, 672 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x90) & 0xFF)), 0x000000f0, 0x00000000, 673 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x98) & 0xFF)), 0x000000f0, 0x00000000, 674 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xA0) & 0xFF)), 0x000000f0, 0x00000000, 675 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xA8) & 0xFF)), 0x000000f0, 0x00000000, 676 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xB0) & 0xFF)), 0x000000f0, 0x00000000, 677 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xB8) & 0xFF)), 0x000000f0, 0x00000000, 678# 218 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 679 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xC4) & 0xFF)), 0xFE000FC8, 0x01fff000, 680 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xCC) & 0xFF)), 0xFE000FC8, 0x00000000, 681 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xD4) & 0xFF)), 0xFE000FC8, 0x00000000, 682 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xDC) & 0xFF)), 0xFE000FC8, 0x00000000, 683# 248 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 684 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xC0) & 0xFF)), 0xFE000FCC, 0x00000003, 685 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xC8) & 0xFF)), 0xFE000FCC, 0x00000000, 686 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xD0) & 0xFF)), 0xFE000FCC, 0x00000000, 687 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xD8) & 0xFF)), 0xFE000FCC, 0x00000000, 688# 289 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 689 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xE0) & 0xFF)), 0x0000FC88, 0xff000003, 690 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xE4) & 0xFF)), 0x0000FC88, 0x00000000, 691 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xE8) & 0xFF)), 0x0000FC88, 0x00000000, 692 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xEC) & 0xFF)), 0x0000FC88, 0x00000000, 693 }; 694 int max; 695 max = sizeof(register_values)/sizeof(register_values[0]); 696 setup_resource_map(register_values, max); 697} 698 699static void sdram_set_registers(void) 700{ 701 static const unsigned int register_values[] = { 702# 339 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 703 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x44) & 0xFF)), 0x0000f8f8, 0x003f0000, 704 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x4C) & 0xFF)), 0x0000f8f8, 0x007f0001, 705 706 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x54) & 0xFF)), 0x0000f8f8, 0x00000002, 707 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x5C) & 0xFF)), 0x0000f8f8, 0x00000003, 708 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x64) & 0xFF)), 0x0000f8f8, 0x00000004, 709 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x6C) & 0xFF)), 0x0000f8f8, 0x00000005, 710 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x74) & 0xFF)), 0x0000f8f8, 0x00000006, 711 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x7C) & 0xFF)), 0x0000f8f8, 0x00000007, 712# 378 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 713 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x40) & 0xFF)), 0x0000f8fc, 0x00000003, 714# 398 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 715 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x48) & 0xFF)), 0x0000f8fc, 0x00400003, 716 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x50) & 0xFF)), 0x0000f8fc, 0x00800000, 717 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x58) & 0xFF)), 0x0000f8fc, 0x00800000, 718 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x60) & 0xFF)), 0x0000f8fc, 0x00800000, 719 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x68) & 0xFF)), 0x0000f8fc, 0x00800000, 720 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x70) & 0xFF)), 0x0000f8fc, 0x00800000, 721 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x78) & 0xFF)), 0x0000f8fc, 0x00800000, 722 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x78) & 0xFF)), 0x0000f8fc, 0x00800000, 723# 451 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 724 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x84) & 0xFF)), 0x00000048, 0x00fe2f00, 725 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x8C) & 0xFF)), 0x00000048, 0x00000000, 726 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x94) & 0xFF)), 0x00000048, 0x00000000, 727 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x9C) & 0xFF)), 0x00000048, 0x00000000, 728 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xA4) & 0xFF)), 0x00000048, 0x00fec000, 729 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xAC) & 0xFF)), 0x00000048, 0x0000b000, 730 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xB4) & 0xFF)), 0x00000048, 0x00000000, 731 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xBC) & 0xFF)), 0x00000048, 0x00000000, 732# 503 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 733 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x80) & 0xFF)), 0x000000f0, 0x00fc0003, 734 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x88) & 0xFF)), 0x000000f0, 0x00000000, 735 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x90) & 0xFF)), 0x000000f0, 0x00000000, 736 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0x98) & 0xFF)), 0x000000f0, 0x00000000, 737 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xA0) & 0xFF)), 0x000000f0, 0x00fec00e, 738 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xA8) & 0xFF)), 0x000000f0, 0x00000a03, 739 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xB0) & 0xFF)), 0x000000f0, 0x00000000, 740 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xB8) & 0xFF)), 0x000000f0, 0x00000000, 741# 545 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 742 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xC4) & 0xFF)), 0xFE000FC8, 0x01fff000, 743 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xCC) & 0xFF)), 0xFE000FC8, 0x00000000, 744 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xD4) & 0xFF)), 0xFE000FC8, 0x00000000, 745 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xDC) & 0xFF)), 0xFE000FC8, 0x00000000, 746# 583 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 747 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xC0) & 0xFF)), 0xFE000FCC, 0x00000033, 748 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xC8) & 0xFF)), 0xFE000FCC, 0x00000000, 749 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xD0) & 0xFF)), 0xFE000FCC, 0x00000000, 750 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xD8) & 0xFF)), 0xFE000FCC, 0x00000000, 751# 632 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 752 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xE0) & 0xFF)), 0x0000FC88, 0xff000003, 753 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xE4) & 0xFF)), 0x0000FC88, 0x00000000, 754 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xE8) & 0xFF)), 0x0000FC88, 0x00000000, 755 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((1) & 0x07) << 8) | ((0xEC) & 0xFF)), 0x0000FC88, 0x00000000, 756# 659 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 757 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x40) & 0xFF)), 0x001f01fe, 0x00000001, 758# 671 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 759 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x44) & 0xFF)), 0x001f01fe, 0x00001001, 760 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x48) & 0xFF)), 0x001f01fe, 0x00000000, 761 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x4C) & 0xFF)), 0x001f01fe, 0x00000000, 762 763 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x50) & 0xFF)), 0x001f01fe, 0x00000000, 764 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x54) & 0xFF)), 0x001f01fe, 0x00000000, 765 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x58) & 0xFF)), 0x001f01fe, 0x00000000, 766 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x5C) & 0xFF)), 0x001f01fe, 0x00000000, 767# 711 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 768 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x60) & 0xFF)), 0xC01f01ff, 0x03e0ee00, 769 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x64) & 0xFF)), 0xC01f01ff, 0x03e0ee00, 770 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x68) & 0xFF)), 0xC01f01ff, 0x00000000, 771 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x6C) & 0xFF)), 0xC01f01ff, 0x00000000, 772 773 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x70) & 0xFF)), 0xC01f01ff, 0x00000000, 774 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x74) & 0xFF)), 0xC01f01ff, 0x00000000, 775 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x78) & 0xFF)), 0xC01f01ff, 0x00000000, 776 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x7C) & 0xFF)), 0xC01f01ff, 0x00000000, 777# 747 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 778 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x80) & 0xFF)), 0xffff8888, 0x00000003, 779# 817 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 780 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x88) & 0xFF)), 0xe8088008, 0x13723335, 781# 855 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 782 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x8c) & 0xFF)), 0xff8fe08e, 0x00100a20, 783# 937 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 784 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x90) & 0xFF)), 0xf0000000, 785 (4 << 25)|(0 << 24)| 786 (0 << 23)|(0 << 22)|(0 << 21)|(0 << 20)| 787 (0 << 19)|(0 << 18)|(0 << 17)|(1 << 16)| 788 (2 << 14)|(0 << 13)|(0 << 12)| 789 (0 << 11)|(0 << 10)|(0 << 9)|(0 << 8)| 790 (0 << 3) |(0 << 1) |(0 << 0), 791# 1016 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 792 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x94) & 0xFF)), 0xc180f0f0, 0x065b0b08, 793# 1033 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 794 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x07) << 8) | ((0x98) & 0xFF)), 0xfc00ffff, 0x00000000, 795# 1067 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 796 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((3) & 0x07) << 8) | ((0x58) & 0xFF)), 0xffe0e0e0, 0x00000000, 797# 1076 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 798 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((3) & 0x07) << 8) | ((0x5C) & 0xFF)), 0x0000003e, 0x00000000, 799 800 801 802 803 804 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((3) & 0x07) << 8) | ((0x60) & 0xFF)), 0xffffff00, 0x00000000, 805 }; 806 int i; 807 int max; 808 print_debug("setting up CPU0 northbridge registers\r\n"); 809 max = sizeof(register_values)/sizeof(register_values[0]); 810 for(i = 0; i < max; i += 3) { 811 device_t dev; 812 unsigned where; 813 unsigned long reg; 814 815 816 817 818 819 820 dev = register_values[i] & ~0xff; 821 where = register_values[i] & 0xff; 822 reg = pci_read_config32(dev, where); 823 reg &= register_values[i+1]; 824 reg |= register_values[i+2]; 825 pci_write_config32(dev, where, reg); 826 827 828 829 830 831 832 833 } 834 print_debug("done.\r\n"); 835} 836# 1132 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 837static void sdram_set_spd_registers(void) 838{ 839 unsigned long dcl; 840 dcl = pci_read_config32(( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x7) << 8)), 0x90); 841 842 dcl &= ~(1<<17); 843 pci_write_config32(( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x7) << 8)), 0x90, dcl); 844} 845 846 847static void sdram_enable(void) 848{ 849 unsigned long dcl; 850 851 852 dcl = pci_read_config32(( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x7) << 8)), 0x90); 853 print_debug("dcl: "); 854 print_debug_hex32(dcl); 855 print_debug("\r\n"); 856 dcl |= (1<<3); 857 pci_write_config32(( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x7) << 8)), 0x90, dcl); 858 dcl &= ~(1<<3); 859 dcl &= ~(1<<0); 860 dcl &= ~(1<<1); 861 dcl &= ~(1<<2); 862 dcl |= (1<<8); 863 pci_write_config32(( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x7) << 8)), 0x90, dcl); 864 865 print_debug("Initializing memory: "); 866 int loops = 0; 867 do { 868 dcl = pci_read_config32(( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((2) & 0x7) << 8)), 0x90); 869 loops += 1; 870 if ((loops & 1023) == 0) { 871 print_debug("."); 872 } 873 } while(((dcl & (1<<8)) != 0) && (loops < 300000)); 874 if (loops >= 300000) { 875 print_debug(" failed\r\n"); 876 } else { 877 print_debug(" done\r\n"); 878 } 879# 1192 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/raminit.c" 880} 881 882static void sdram_first_normal_reference(void) {} 883static void sdram_enable_refresh(void) {} 884static void sdram_special_finishup(void) {} 885# 11 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 2 886# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/coherent_ht.c" 1 887# 9 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/coherent_ht.c" 888static void setup_coherent_ht_domain(void) 889{ 890 static const unsigned int register_values[] = { 891# 37 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/coherent_ht.c" 892 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x07) << 8) | ((0x40) & 0xFF)), 0xfff0f0f0, 0x00010101, 893 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x07) << 8) | ((0x44) & 0xFF)), 0xfff0f0f0, 0x00010101, 894 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x07) << 8) | ((0x48) & 0xFF)), 0xfff0f0f0, 0x00010101, 895 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x07) << 8) | ((0x4c) & 0xFF)), 0xfff0f0f0, 0x00010101, 896 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x07) << 8) | ((0x50) & 0xFF)), 0xfff0f0f0, 0x00010101, 897 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x07) << 8) | ((0x54) & 0xFF)), 0xfff0f0f0, 0x00010101, 898 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x07) << 8) | ((0x58) & 0xFF)), 0xfff0f0f0, 0x00010101, 899 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x07) << 8) | ((0x5c) & 0xFF)), 0xfff0f0f0, 0x00010101, 900# 136 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/coherent_ht.c" 901 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x07) << 8) | ((0x68) & 0xFF)), 0x00800000, 0x0f00840f, 902# 158 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/coherent_ht.c" 903 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x07) << 8) | ((0x6C) & 0xFF)), 0xffffff8c, 0x00000000 | (1 << 6) |(1 << 5)| (1 << 4), 904# 235 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/coherent_ht.c" 905 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x07) << 8) | ((0x84) & 0xFF)), 0x00009c05, 0x11110020, 906# 280 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/coherent_ht.c" 907 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x07) << 8) | ((0x88) & 0xFF)), 0xfffff0ff, 0x00000200, 908# 301 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/northbridge/amd/amdk8/coherent_ht.c" 909 ( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x07) << 8) | ((0x94) & 0xFF)), 0xff000000, 0x00ff0000, 910 911 912 913 914 915 }; 916 int i; 917 int max; 918 print_debug("setting up coherent ht domain....\r\n"); 919 max = sizeof(register_values)/sizeof(register_values[0]); 920 for(i = 0; i < max; i += 3) { 921 device_t dev; 922 unsigned where; 923 unsigned long reg; 924 925 926 927 928 929 930 dev = register_values[i] & ~0xff; 931 where = register_values[i] & 0xff; 932 reg = pci_read_config32(dev, where); 933 reg &= register_values[i+1]; 934 reg |= register_values[i+2]; 935 pci_write_config32(dev, where, reg); 936 937 938 939 940 941 942 } 943 print_debug("done.\r\n"); 944} 945# 12 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 2 946# 1 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/sdram/generic_sdram.c" 1 947void sdram_no_memory(void) 948{ 949 print_err("No memory!!\r\n"); 950 while(1) { 951 hlt(); 952 } 953} 954 955 956void sdram_initialize(void) 957{ 958 print_debug("Ram1\r\n"); 959 960 sdram_set_registers(); 961 962 print_debug("Ram2\r\n"); 963 964 sdram_set_spd_registers(); 965 966 print_debug("Ram3\r\n"); 967 968 969 970 971 sdram_enable(); 972 973 print_debug("Ram4\r\n"); 974 sdram_first_normal_reference(); 975 976 print_debug("Ram5\r\n"); 977 sdram_enable_refresh(); 978 sdram_special_finishup(); 979 980 print_debug("Ram6\r\n"); 981} 982# 13 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 2 983 984static int boot_cpu(void) 985{ 986 volatile unsigned long *local_apic; 987 unsigned long apic_id; 988 int bsp; 989 msr_t msr; 990 msr = rdmsr(0x1b); 991 bsp = !!(msr.lo & (1 << 8)); 992 if (bsp) { 993 print_debug("Bootstrap cpu\r\n"); 994 } 995 996 return bsp; 997} 998 999static int cpu_init_detected(void) 1000{
1001 unsigned long dcl; 1002 int cpu_init; 1003 1004 unsigned long htic; 1005 1006 htic = pci_read_config32(( (((0) & 0xFF) << 16) | (((0x18) & 0x1f) << 11) | (((0) & 0x7) << 8)), 0x6c); 1007# 52 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 1008 cpu_init = (htic & (1<<6)); 1009 if (cpu_init) { 1010 print_debug("CPU INIT Detected.\r\n"); 1011 } 1012 return cpu_init; 1013} 1014 1015 1016static void print_pci_devices(void) 1017{ 1018 device_t dev; 1019 for(dev = ( (((0) & 0xFF) << 16) | (((0) & 0x1f) << 11) | (((0) & 0x7) << 8)); 1020 dev <= ( (((0) & 0xFF) << 16) | (((0x1f) & 0x1f) << 11) | (((0x7) & 0x7) << 8)); 1021 dev += ( (((0) & 0xFF) << 16) | (((0) & 0x1f) << 11) | (((1) & 0x7) << 8))) { 1022 uint32_t id; 1023 id = pci_read_config32(dev, 0x00); 1024 if (((id & 0xffff) == 0x0000) || ((id & 0xffff) == 0xffff) || 1025 (((id >> 16) & 0xffff) == 0xffff) || 1026 (((id >> 16) & 0xffff) == 0x0000)) { 1027 continue; 1028 } 1029 print_debug("PCI: 00:"); 1030 print_debug_hex8(dev >> 11); 1031 print_debug_char('.'); 1032 print_debug_hex8((dev >> 8) & 7); 1033 print_debug("\r\n"); 1034 } 1035} 1036 1037 1038static void dump_spd_registers(void) 1039{ 1040 unsigned device; 1041 device = (0xa << 3); 1042 print_debug("\r\n"); 1043 while(device <= ((0xa << 3) +7)) { 1044 int i; 1045 print_debug("dimm: "); 1046 print_debug_hex8(device); 1047 for(i = 0; i < 256; i++) { 1048 int status; 1049 unsigned char byte; 1050 if ((i & 0xf) == 0) { 1051 print_debug("\r\n"); 1052 print_debug_hex8(i); 1053 print_debug(": "); 1054 } 1055 status = smbus_read_byte(device, i); 1056 if (status < 0) { 1057 print_debug("bad device\r\n"); 1058 break; 1059 } 1060 byte = status & 0xff; 1061 print_debug_hex8(byte); 1062 print_debug_char(' '); 1063 } 1064 device += 1; 1065 print_debug("\r\n"); 1066 } 1067} 1068 1069static void pnp_write_config(unsigned char port, unsigned char value, unsigned char reg) 1070{ 1071 outb(reg, port); 1072 outb(value, port +1); 1073} 1074 1075static unsigned char pnp_read_config(unsigned char port, unsigned char reg) 1076{ 1077 outb(reg, port); 1078 return inb(port +1); 1079} 1080 1081static void pnp_set_logical_device(unsigned char port, int device) 1082{ 1083 pnp_write_config(port, device, 0x07); 1084} 1085 1086static void pnp_set_enable(unsigned char port, int enable) 1087{ 1088 pnp_write_config(port, enable?0x1:0x0, 0x30); 1089} 1090 1091static int pnp_read_enable(unsigned char port) 1092{ 1093 return !!pnp_read_config(port, 0x30); 1094} 1095 1096static void pnp_set_iobase0(unsigned char port, unsigned iobase) 1097{ 1098 pnp_write_config(port, (iobase >> 8) & 0xff, 0x60); 1099 pnp_write_config(port, iobase & 0xff, 0x61); 1100} 1101 1102static void pnp_set_iobase1(unsigned char port, unsigned iobase) 1103{ 1104 pnp_write_config(port, (iobase >> 8) & 0xff, 0x62); 1105 pnp_write_config(port, iobase & 0xff, 0x63); 1106} 1107 1108static void pnp_set_irq0(unsigned char port, unsigned irq) 1109{ 1110 pnp_write_config(port, irq, 0x70); 1111} 1112 1113static void pnp_set_irq1(unsigned char port, unsigned irq) 1114{ 1115 pnp_write_config(port, irq, 0x72); 1116} 1117 1118static void pnp_set_drq(unsigned char port, unsigned drq) 1119{ 1120 pnp_write_config(port, drq & 0xff, 0x74); 1121} 1122# 179 "/home/eric/projects/linuxbios/checkin/hdama/freebios2/src/mainboard/arima/hdama/auto.c" 1123static void pc87360_enable_serial(void) 1124{ 1125 pnp_set_logical_device(0x2e, 0x03); 1126 pnp_set_enable(0x2e, 1); 1127 pnp_set_iobase0(0x2e, 0x3f8); 1128} 1129 1130static void main(void) 1131{ 1132 pc87360_enable_serial(); 1133 uart_init(); 1134 console_init(); 1135 if (boot_cpu() && !cpu_init_detected()) { 1136 setup_coherent_ht_domain(); 1137 enumerate_ht_chain(); 1138 print_pci_devices(); 1139 enable_smbus(); 1140 sdram_initialize(); 1141 1142 dump_spd_registers(); 1143 1144 ram_check(0x00000000, 0x00001000); 1145 ram_check(0x00000000, 0x00180000); 1146 } 1147} 1148

