1 // Misc function and variable declarations. 2 #ifndef __UTIL_H 3 #define __UTIL_H 4 5 #include "types.h" // u32 6 7 // apm.c 8 void apm_shutdown(void); 9 struct bregs; 10 void handle_1553(struct bregs *regs); 11 12 // bmp.c 13 struct bmp_decdata *bmp_alloc(void); 14 int bmp_decode(struct bmp_decdata *bmp, unsigned char *data, int data_size); 15 void bmp_get_size(struct bmp_decdata *bmp, int *width, int *height); 16 int bmp_show(struct bmp_decdata *bmp, unsigned char *pic, int width 17 , int height, int depth, int bytes_per_line_dest); 18 19 // boot.c 20 void boot_init(void); 21 void boot_add_bev(u16 seg, u16 bev, u16 desc, int prio); 22 void boot_add_bcv(u16 seg, u16 ip, u16 desc, int prio); 23 struct drive_s; 24 void boot_add_floppy(struct drive_s *drive_g, const char *desc, int prio); 25 void boot_add_hd(struct drive_s *drive_g, const char *desc, int prio); 26 void boot_add_cd(struct drive_s *drive_g, const char *desc, int prio); 27 void boot_add_cbfs(void *data, const char *desc, int prio); 28 void interactive_bootmenu(void); 29 void bcv_prepboot(void); 30 struct pci_device; 31 int bootprio_find_pci_device(struct pci_device *pci); 32 int bootprio_find_scsi_device(struct pci_device *pci, int target, int lun); 33 int bootprio_find_ata_device(struct pci_device *pci, int chanid, int slave); 34 int bootprio_find_fdc_device(struct pci_device *pci, int port, int fdid); 35 int bootprio_find_pci_rom(struct pci_device *pci, int instance); 36 int bootprio_find_named_rom(const char *name, int instance); 37 struct usbdevice_s; 38 int bootprio_find_usb(struct usbdevice_s *usbdev, int lun); 39 int get_keystroke(int msec); 40 41 // bootsplash.c 42 void enable_vga_console(void); 43 void enable_bootsplash(void); 44 void disable_bootsplash(void); 45 46 // cdrom.c 47 extern struct eltorito_s CDEmu; 48 extern struct drive_s *cdemu_drive_gf; 49 struct disk_op_s; 50 int cdemu_process_op(struct disk_op_s *op); 51 void cdrom_prepboot(void); 52 int cdrom_boot(struct drive_s *drive_g); 53 54 // clock.c 55 void clock_setup(void); 56 void handle_1583(struct bregs *regs); 57 void clock_poll_irq(void); 58 u32 irqtimer_calc_ticks(u32 count); 59 u32 irqtimer_calc(u32 msecs); 60 int irqtimer_check(u32 end); 61 void handle_1586(struct bregs *regs); 62 63 // fw/acpi.c 64 void acpi_setup(void); 65 66 // fw/biostable.c 67 void copy_pir(void *pos); 68 void copy_mptable(void *pos); 69 extern struct pir_header *PirAddr; 70 void copy_acpi_rsdp(void *pos); 71 extern struct rsdp_descriptor *RsdpAddr; 72 extern u32 acpi_pm1a_cnt; 73 extern u16 acpi_pm_base; 74 void *find_acpi_rsdp(void); 75 void *find_acpi_table(u32 signature); 76 u32 find_resume_vector(void); 77 void acpi_reboot(void); 78 void find_acpi_features(void); 79 extern struct smbios_entry_point *SMBiosAddr; 80 struct smbios_entry_point *get_smbios_entry_point(); 81 void copy_smbios(void *pos); 82 void display_uuid(void); 83 void copy_table(void *pos); 84 void smbios_setup(void); 85 86 // fw/coreboot.c 87 extern const char *CBvendor, *CBpart; 88 struct cbfs_file; 89 void coreboot_debug_putc(char c); 90 void cbfs_run_payload(struct cbfs_file *file); 91 void coreboot_platform_setup(void); 92 void cbfs_payload_setup(void); 93 void coreboot_preinit(void); 94 void coreboot_cbfs_init(void); 95 struct cb_header; 96 void *find_cb_subtable(struct cb_header *cbh, u32 tag); 97 struct cb_header *find_cb_table(void); 98 99 // fw/csm.c 100 int csm_bootprio_fdc(struct pci_device *pci, int port, int fdid); 101 int csm_bootprio_ata(struct pci_device *pci, int chanid, int slave); 102 int csm_bootprio_pci(struct pci_device *pci); 103 104 // fw/mptable.c 105 void mptable_setup(void); 106 107 // fw/mtrr.c 108 void mtrr_setup(void); 109 110 // fw/multiboot.c 111 void multiboot_init(void); 112 113 // fw/pciinit.c 114 extern u64 pcimem_start, pcimem_end; 115 extern u64 pcimem64_start, pcimem64_end; 116 extern const u8 pci_irqs[4]; 117 void pci_setup(void); 118 void pci_resume(void); 119 120 // fw/pirtable.c 121 void pirtable_setup(void); 122 123 // fw/shadow.c 124 void make_bios_writable(void); 125 void make_bios_readonly(void); 126 void qemu_reboot(void); 127 128 // fw/smbios.c 129 void smbios_legacy_setup(void); 130 131 // fw/smm.c 132 void smm_device_setup(void); 133 void smm_setup(void); 134 135 // fw/smp.c 136 extern u32 MaxCountCPUs; 137 void wrmsr_smp(u32 index, u64 val); 138 void smp_setup(void); 139 void smp_resume(void); 140 int apic_id_is_present(u8 apic_id); 141 142 // hw/dma.c 143 int dma_floppy(u32 addr, int count, int isWrite); 144 void dma_setup(void); 145 146 // hw/floppy.c 147 extern struct floppy_ext_dbt_s diskette_param_table2; 148 void floppy_setup(void); 149 struct drive_s *init_floppy(int floppyid, int ftype); 150 int find_floppy_type(u32 size); 151 int floppy_process_op(struct disk_op_s *op); 152 void floppy_tick(void); 153 154 // hw/ramdisk.c 155 void ramdisk_setup(void); 156 int ramdisk_process_op(struct disk_op_s *op); 157 158 // hw/sdcard.c 159 int sdcard_process_op(struct disk_op_s *op); 160 void sdcard_setup(void); 161 162 // hw/timer.c 163 void timer_setup(void); 164 void pmtimer_setup(u16 ioport); 165 u32 timer_calc(u32 msecs); 166 u32 timer_calc_usec(u32 usecs); 167 int timer_check(u32 end); 168 void ndelay(u32 count); 169 void udelay(u32 count); 170 void mdelay(u32 count); 171 void nsleep(u32 count); 172 void usleep(u32 count); 173 void msleep(u32 count); 174 u32 ticks_to_ms(u32 ticks); 175 u32 ticks_from_ms(u32 ms); 176 void pit_setup(void); 177 178 // jpeg.c 179 struct jpeg_decdata *jpeg_alloc(void); 180 int jpeg_decode(struct jpeg_decdata *jpeg, unsigned char *buf); 181 void jpeg_get_size(struct jpeg_decdata *jpeg, int *width, int *height); 182 int jpeg_show(struct jpeg_decdata *jpeg, unsigned char *pic, int width 183 , int height, int depth, int bytes_per_line_dest); 184 185 // kbd.c 186 void kbd_init(void); 187 void handle_15c2(struct bregs *regs); 188 void process_key(u8 key); 189 u8 enqueue_key(u16 keycode); 190 u16 ascii_to_keycode(u8 ascii); 191 192 // misc.c 193 extern int HaveRunPost; 194 extern struct bios_config_table_s BIOS_CONFIG_TABLE __aligned(1); 195 extern struct floppy_dbt_s diskette_param_table __aligned(1); 196 extern u8 BiosChecksum; 197 int in_post(void); 198 void mathcp_setup(void); 199 200 // mouse.c 201 void mouse_init(void); 202 void process_mouse(u8 data); 203 204 // optionroms.c 205 struct rom_header; 206 void callrom(struct rom_header *rom, u16 bdf); 207 void call_bcv(u16 seg, u16 ip); 208 int is_pci_vga(struct pci_device *pci); 209 void optionrom_setup(void); 210 void vgarom_setup(void); 211 void s3_resume_vga(void); 212 extern int ScreenAndDebug; 213 214 // pcibios.c 215 void handle_1ab1(struct bregs *regs); 216 void bios32_init(void); 217 218 // pmm.c 219 void pmm_init(void); 220 void pmm_prepboot(void); 221 222 // pnpbios.c 223 u16 get_pnp_offset(void); 224 void pnp_init(void); 225 226 // post.c 227 void interface_init(void); 228 void device_hardware_setup(void); 229 void prepareboot(void); 230 void startBoot(void); 231 void reloc_preinit(void *f, void *arg); 232 void code_mutable_preinit(void); 233 234 // sercon.c 235 void sercon_setup(void); 236 void sercon_check_event(void); 237 238 // serial.c 239 void serial_setup(void); 240 void lpt_setup(void); 241 242 // version.c 243 extern const char VERSION[], BUILDINFO[]; 244 245 // vgahooks.c 246 void handle_155f(struct bregs *regs); 247 void handle_157f(struct bregs *regs); 248 void vgahook_setup(struct pci_device *pci); 249 250 #endif // util.h 251