The current parameter situation of post_code() is rather mixed between numeric constants and #defines for such constants. Since grepping the tree shouldn't be necessary to find a POST code and we already have too many duplicated POST codes, gather almost all of them in a common header file.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Index: LinuxBIOSv3-postcode/include/post_code.h =================================================================== --- LinuxBIOSv3-postcode/include/post_code.h (Revision 548) +++ LinuxBIOSv3-postcode/include/post_code.h (Arbeitskopie) @@ -25,6 +25,41 @@
SHARED(post_code, void, u8 value);
-#define POST_START_OF_MAIN 0x01 +/* This is a collection of existing POST values used by post_code(). + * port80_post() and Geode specific codes are not (yet?) listed here. + * FIXME: Conflicts remain. + */ +#define POST_START_OF_MAIN 0x01 +#define POST_KBD_EMPTY_INPUT_BUFFER 0x00 +#define POST_KBD_EMPTY_OUTPUT_BUFFER 0x00 +#define POST_STAGE1_STOP_AP 0xf0 +#define POST_STAGE1_ENABLE_ROM 0xf2 +#define POST_STAGE1_MAIN 0x02 +#define POST_STAGE2_BEGIN 0x20 +#define POST_STAGE2_PHASE1_START 0x30 +#define POST_STAGE2_PHASE1_ENTER 0x31 +#define POST_STAGE2_PHASE1_DONE 0x3e +#define POST_STAGE2_PHASE1_EXIT 0x3f +#define POST_STAGE2_PHASE2_PCI_SET_METHOD 0x5f +#define POST_STAGE2_PHASE2_START 0x40 +#define POST_STAGE2_PHASE2_ENTER 0x41 +#define POST_STAGE2_PHASE2_DONE 0x4e +#define POST_STAGE2_PHASE2_EXIT 0x4f +#define POST_STAGE2_PHASE3_START 0x30 +#define POST_STAGE2_PHASE3_MIDDLE 0x41 +#define POST_STAGE2_PHASE3_SCAN_ENTER 0x42 +#define POST_STAGE2_PHASE3_SCAN_EXIT 0x4e +#define POST_STAGE2_PHASE4_START 0x40 +#define POST_STAGE2_PHASE5_START 0x50 +#define POST_STAGE2_PHASE6_START 0x60 +#define POST_STAGE2_WRITE_TABLES 0x70 +#define POST_STAGE2_ARCH_WRITE_TABLES_ENTER 0x9a +#define POST_STAGE2_ARCH_WRITE_TABLES_MIDDLE 0x96 +#define POST_STAGE2_PCISCANBUS_ENTER 0x24 +#define POST_STAGE2_PCISCANBUS_DONEFORLOOP 0x25 +#define POST_STAGE2_PCISCANBUS_EXIT 0x55 +#define POST_ELFBOOT_JUMPING_TO_BOOTCODE 0xfe +#define POST_ELFBOOT_LOADER_STARTED 0xf8 +#define POST_ELFBOOT_LOADER_IMAGE_FAILED 0xff
#endif /* POST_CODE_H */ Index: LinuxBIOSv3-postcode/device/device.c =================================================================== --- LinuxBIOSv3-postcode/device/device.c (Revision 548) +++ LinuxBIOSv3-postcode/device/device.c (Arbeitskopie) @@ -698,16 +698,16 @@ { struct device *dev;
- post_code(0x31); + post_code(POST_STAGE2_PHASE1_ENTER); printk(BIOS_DEBUG, "Phase 1: Very early setup...\n"); for (dev = all_devices; dev; dev = dev->next) { if (dev->ops && dev->ops->phase1_set_device_operations) { dev->ops->phase1_set_device_operations(dev); } } - post_code(0x3e); + post_code(POST_STAGE2_PHASE1_DONE); printk(BIOS_DEBUG, "Phase 1: done\n"); - post_code(0x3f); + post_code(POST_STAGE2_PHASE1_EXIT); }
/** @@ -721,7 +721,7 @@ { struct device *dev;
- post_code(0x41); + post_code(POST_STAGE2_PHASE2_ENTER); printk(BIOS_DEBUG, "Phase 2: Early setup...\n"); for (dev = all_devices; dev; dev = dev->next) { printk(BIOS_SPEW, "%s: dev %s: ", __FUNCTION__, dev->dtsname); @@ -734,9 +734,9 @@ printk(BIOS_SPEW, "\n"); }
- post_code(0x4e); + post_code(POST_STAGE2_PHASE2_DONE); printk(BIOS_DEBUG, "Phase 2: Done.\n"); - post_code(0x4f); + post_code(POST_STAGE2_PHASE2_EXIT); }
/** @@ -754,7 +754,7 @@ { unsigned int new_max; int do_phase3; - post_code(0x42); + post_code(POST_STAGE2_PHASE3_SCAN_ENTER); if (!busdevice || !busdevice->enabled || !busdevice->ops || !busdevice->ops->phase3_scan) { printk(BIOS_INFO, "%s: %s: busdevice %p enabled %d ops %p\n", @@ -786,7 +786,7 @@ } } } - post_code(0x4e); + post_code(POST_STAGE2_PHASE3_SCAN_EXIT); printk(BIOS_INFO, "%s: returning %d\n", __FUNCTION__, max); return new_max; } @@ -825,7 +825,7 @@ if (root->ops && root->ops->phase3_enable_scan) { root->ops->phase3_enable_scan(root); } - post_code(0x41); + post_code(POST_STAGE2_PHASE3_MIDDLE); if (!root->ops) { printk(BIOS_ERR, "dev_root_phase3 missing 'ops' initialization\nPhase 3: Failed.\n"); Index: LinuxBIOSv3-postcode/device/pci_device.c =================================================================== --- LinuxBIOSv3-postcode/device/pci_device.c (Revision 548) +++ LinuxBIOSv3-postcode/device/pci_device.c (Arbeitskopie) @@ -1096,7 +1096,7 @@ __func__, old_devices, bus->dev, bus->dev->dtsname); bus->children = 0;
- post_code(0x24); + post_code(POST_STAGE2_PCISCANBUS_ENTER); printk(BIOS_SPEW, "PCI: scan devfn 0x%x to 0x%x\n", min_devfn, max_devfn); /* Probe all devices/functions on this bus with some optimization for @@ -1129,7 +1129,7 @@ } } printk(BIOS_SPEW, "PCI: Done for loop\n"); - post_code(0x25); + post_code(POST_STAGE2_PCISCANBUS_DONEFORLOOP);
/* Die if any leftover static devices are are found. * There's probably a problem in the Config.lb. @@ -1155,7 +1155,7 @@ * Return how far we've got finding sub-buses. */ printk(BIOS_DEBUG, "PCI: pci_scan_bus returning with max=%03x\n", max); - post_code(0x55); + post_code(POST_STAGE2_PCISCANBUS_EXIT); return max; }
Index: LinuxBIOSv3-postcode/lib/stage2.c =================================================================== --- LinuxBIOSv3-postcode/lib/stage2.c (Revision 548) +++ LinuxBIOSv3-postcode/lib/stage2.c (Arbeitskopie) @@ -46,13 +46,13 @@ /* TODO: Add comment. */ void show_all_devs(void);
- post_code(0x20); + post_code(POST_STAGE2_BEGIN); dev_init();
/* Phase 1 was console init and making printk work. Both functions are * now performed by stage 1 code. Phase 1 is now without purpose. */ - post_code(0x30); + post_code(POST_STAGE2_PHASE1_START); dev_phase1(); show_all_devs();
@@ -60,34 +60,34 @@ * done. This is for ANYTHING that might have to happen before * device enumeration but that needs a printk. */ - post_code(0x40); + post_code(POST_STAGE2_PHASE2_START); dev_phase2(); show_all_devs();
/* Walk physical devices and add any dynamic devices to the * device tree. */ - post_code(0x30); + post_code(POST_STAGE2_PHASE3_START); dev_root_phase3(); show_all_devs();
/* Compute and assign the bus resources. */ - post_code(0x40); + post_code(POST_STAGE2_PHASE4_START); dev_phase4(); show_all_devs();
/* Now actually enable devices on the bus. */ - post_code(0x50); + post_code(POST_STAGE2_PHASE5_START); dev_root_phase5(); show_all_devs();
/* Initialize devices on the bus. */ - post_code(0x60); + post_code(POST_STAGE2_PHASE6_START); dev_phase6(); show_all_devs();
/* TODO: Add comment. */ - post_code(0x70); + post_code(POST_STAGE2_WRITE_TABLES); write_tables(); show_all_devs();
Index: LinuxBIOSv3-postcode/lib/elfboot.c =================================================================== --- LinuxBIOSv3-postcode/lib/elfboot.c (Revision 548) +++ LinuxBIOSv3-postcode/lib/elfboot.c (Arbeitskopie) @@ -146,7 +146,7 @@ //boot_successful();
printk(BIOS_DEBUG, "Jumping to boot code at %p\n", entry); - post_code(0xfe); + post_code(POST_ELFBOOT_JUMPING_TO_BOOTCODE);
/* Jump to kernel */ /* most of the time, jmp_to_elf_entry is just a call. But this hook gives us @@ -169,7 +169,7 @@
result = 0; printk(BIOS_INFO, "ELF loader started.\n"); - post_code(0xf8); + post_code(POST_ELFBOOT_LOADER_STARTED);
/* Scan for an elf header */ header_offset = -1; @@ -209,7 +209,7 @@
printk(BIOS_ERR, "Cannot load ELF image\n");
- post_code(0xff); + post_code(POST_ELFBOOT_LOADER_IMAGE_FAILED); } return 0; } Index: LinuxBIOSv3-postcode/arch/x86/keyboard.c =================================================================== --- LinuxBIOSv3-postcode/arch/x86/keyboard.c (Revision 548) +++ LinuxBIOSv3-postcode/arch/x86/keyboard.c (Arbeitskopie) @@ -7,7 +7,7 @@ { unsigned long timeout; for(timeout = 1000000; timeout && (inb(0x64) & 0x02); timeout--) { - post_code(0); + post_code(POST_KBD_EMPTY_INPUT_BUFFER); } return !!timeout; } @@ -16,7 +16,7 @@ { unsigned long timeout; for(timeout = 1000000; timeout && ((inb(0x64) & 0x01) == 0); timeout--) { - post_code(0); + post_code(POST_KBD_EMPTY_OUTPUT_BUFFER); } return !!timeout; } Index: LinuxBIOSv3-postcode/arch/x86/archtables.c =================================================================== --- LinuxBIOSv3-postcode/arch/x86/archtables.c (Revision 548) +++ LinuxBIOSv3-postcode/arch/x86/archtables.c (Arbeitskopie) @@ -77,7 +77,7 @@ low_table_start = 0; low_table_end = 16;
- post_code(0x9a); + post_code(POST_STAGE2_ARCH_WRITE_TABLES_ENTER);
/* This table must be betweeen 0xf0000 & 0x100000 */ // rom_table_end = write_pirq_routing_table(rom_table_end); @@ -92,7 +92,7 @@ // rom_table_end = (rom_table_end+1023) & ~1023;
/* copy the smp block to address 0 */ - post_code(0x96); + post_code(POST_STAGE2_ARCH_WRITE_TABLES_MIDDLE);
/* The smp table must be in 0-1K, 639K-640K, or 960K-1M */ // new_low_table_end = write_smp_table(low_table_end); Index: LinuxBIOSv3-postcode/arch/x86/pci_ops_auto.c =================================================================== --- LinuxBIOSv3-postcode/arch/x86/pci_ops_auto.c (Revision 548) +++ LinuxBIOSv3-postcode/arch/x86/pci_ops_auto.c (Arbeitskopie) @@ -88,5 +88,5 @@ { printk(BIOS_INFO, "Finding PCI configuration type.\n"); dev->ops->ops_pci_bus = pci_check_direct(); - post_code(0x5f); + post_code(POST_STAGE2_PHASE2_PCI_SET_METHOD); } Index: LinuxBIOSv3-postcode/arch/x86/stage1.c =================================================================== --- LinuxBIOSv3-postcode/arch/x86/stage1.c (Revision 548) +++ LinuxBIOSv3-postcode/arch/x86/stage1.c (Arbeitskopie) @@ -41,13 +41,13 @@ static void stop_ap(void) { // nothing yet - post_code(0xf0); + post_code(POST_STAGE1_STOP_AP); }
static void enable_rom(void) { // nothing here yet - post_code(0xf2); + post_code(POST_STAGE1_ENABLE_ROM); }
@@ -90,7 +90,7 @@ mem->map[0].type = LB_MEM_RAM;
- post_code(0x02); + post_code(POST_STAGE1_MAIN);
// before we do anything, we want to stop if we dont run // on the bootstrap processor.