Yeeloong firmware port.
* boot/mips/yeeloong/fwstart.S: New file. * bus/cs5536.c (gpiodump): New const. (set_io_space): New function. (set_iod): Likewise. (set_p2d): Likewise. (grub_cs5536_init_geode): Likewise. * commands/mips/yeeloong/lsspd.c: New file. * conf/mips-qemu-mips.rmk (pkglib_MODULES): Add serial.mod. (serial_mod_SOURCES): New variable. (serial_mod_CFLAGS): Likewise. (serial_mod_LDFLAGS): Likewise. * conf/mips-yeeloong.rmk (kernel_img_SOURCES): Add term/serial.c, term/terminfo.c and term/tparm.c. (pkglib_IMAGES): Add fwstart.img. (fwstart_img_SOURCES): New variable. (fwstart_img_CFLAGS): Likewise. (fwstart_img_ASFLAGS): Likewise. (fwstart_img_LDFLAGS): Likewise. (fwstart_img_FORMAT): Likewise. (pkglib_MODULES): Add lsspd.mod. (lsspd_mod_SOURCES): New variable. (lsspd_mod_CFLAGS): Likewise. (lsspd_mod_LDFLAGS): Likewise. (pkglib_MODULES): Add halt.mod. (halt_mod_SOURCES): New variable. (halt_mod_CFLAGS): Likewise. (halt_mod_LDFLAGS): Likewise. * conf/mips.rmk (pkglib_MODULES): Remove serial.mod. (serial_mod_SOURCES): Removed. (serial_mod_CFLAGS): Likewise. (serial_mod_LDFLAGS): Likewise. * disk/ata.c (check_device): New function. (grub_ata_device_initialize): Use check_device. (grub_ata_iterate): Recheck devices. (grub_ata_open): Likewise. (grub_atapi_iterate): Likewise. (grub_atapi_open): Likewise. * include/grub/ata.h (GRUB_ATA_CH0_PORT1): New macro. (GRUB_ATA_CH1_PORT1): Likewise. (GRUB_ATA_CH0_PORT2): Likewise. (GRUB_ATA_CH1_PORT2): Likewise. * include/grub/mips/loongson.h: New file. * include/grub/mips/yeeloong/ec.h: Likewise. * include/grub/mips/yeeloong/serial.h (GRUB_MACHINE_SERIAL_PORT): New definition. (GRUB_MACHINE_SERIAL_DIVISOR_115200): Likewise. (GRUB_MACHINE_SERIAL_PORTS) [ASM_FILE]: Remove. * include/grub/misc.h (grub_halt): Declare as noreturn. * include/grub/serial.h (UART_ENABLE_FIFO): Renamed to ... (UART_ENABLE_FIFO_TRIGGER14): ... this. All users updated. (UART_ENABLE_FIFO_TRIGGER1): New definition. (UART_ENABLE_DTRRTS): Likewise. (UART_ENABLE_MODEM): Removed. (UART_ENABLE_OUT2): New const. * include/grub/term.h (grub_term_register_input_active): New function. (grub_term_register_output_active): Likewise. * kern/mips/startup.S [GRUB_MACHINE_MIPS_YEELOONG]: Handle 0xffffffff argument. * kern/mips/yeeloong/init.c (grub_get_rtc): Macroify. (init_pci): New function. (grub_machine_init): Execute platform init when firmware. Init serial. (grub_halt): Implement. (grub_exit): Likewise. (grub_reboot): Likewise. * term/serial.c (serial_hw_init): Update macros. [GRUB_MACHINE_MIPS_YEELOONG]: Init on startup. * util/grub-mkimage.c (image_target_desc): New id IMAGE_YEELOONG_FLASH. (image_targets): New target mipsel-yeeloong-flash. (generate_image): Support IMAGE_YEELOONG_FLASH. * video/sm712.c (GRUB_SM712_TOTAL_MEMORY_SPACE): New definition. (grub_video_sm712_setup): Init card. (grub_video_sm712_set_palette): Removed. * video/sm712_init.c: New file.
This commit is contained in:
commit
ec1d04f1de
22 changed files with 2063 additions and 78 deletions
|
@ -53,7 +53,7 @@ struct image_target_desc
|
|||
enum {
|
||||
IMAGE_I386_PC, IMAGE_EFI, IMAGE_COREBOOT,
|
||||
IMAGE_SPARC64_AOUT, IMAGE_SPARC64_RAW, IMAGE_I386_IEEE1275,
|
||||
IMAGE_YEELOONG_ELF, IMAGE_QEMU, IMAGE_PPC
|
||||
IMAGE_YEELOONG_ELF, IMAGE_QEMU, IMAGE_PPC, IMAGE_YEELOONG_FLASH
|
||||
} id;
|
||||
enum
|
||||
{
|
||||
|
@ -223,6 +223,26 @@ struct image_target_desc image_targets[] =
|
|||
.install_dos_part = TARGET_NO_FIELD,
|
||||
.install_bsd_part = TARGET_NO_FIELD,
|
||||
},
|
||||
{
|
||||
.name = "mipsel-yeeloong-flash",
|
||||
.voidp_sizeof = 4,
|
||||
.bigendian = 0,
|
||||
.id = IMAGE_YEELOONG_FLASH,
|
||||
.flags = PLATFORM_FLAGS_NONE,
|
||||
.prefix = GRUB_KERNEL_MIPS_YEELOONG_PREFIX,
|
||||
.data_end = GRUB_KERNEL_MIPS_YEELOONG_DATA_END,
|
||||
.raw_size = GRUB_KERNEL_MIPS_YEELOONG_RAW_SIZE,
|
||||
.total_module_size = GRUB_KERNEL_MIPS_YEELOONG_TOTAL_MODULE_SIZE,
|
||||
.compressed_size = GRUB_KERNEL_MIPS_YEELOONG_COMPRESSED_SIZE,
|
||||
.kernel_image_size = GRUB_KERNEL_MIPS_YEELOONG_KERNEL_IMAGE_SIZE,
|
||||
.section_align = 1,
|
||||
.vaddr_offset = 0,
|
||||
.install_dos_part = TARGET_NO_FIELD,
|
||||
.install_bsd_part = TARGET_NO_FIELD,
|
||||
.link_addr = GRUB_KERNEL_MIPS_YEELOONG_LINK_ADDR,
|
||||
.elf_target = EM_MIPS,
|
||||
.link_align = GRUB_KERNEL_MIPS_YEELOONG_LINK_ALIGN
|
||||
},
|
||||
{
|
||||
.name = "mipsel-yeeloong-elf",
|
||||
.voidp_sizeof = 4,
|
||||
|
@ -984,6 +1004,34 @@ generate_image (const char *dir, char *prefix, FILE *out, char *mods[],
|
|||
free (boot_path);
|
||||
}
|
||||
break;
|
||||
case IMAGE_YEELOONG_FLASH:
|
||||
{
|
||||
char *rom_img;
|
||||
size_t rom_size;
|
||||
char *boot_path, *boot_img;
|
||||
size_t boot_size;
|
||||
|
||||
boot_path = grub_util_get_path (dir, "fwstart.img");
|
||||
boot_size = grub_util_get_image_size (boot_path);
|
||||
boot_img = grub_util_read_image (boot_path);
|
||||
|
||||
rom_size = ALIGN_UP (core_size + boot_size, 512 * 1024);
|
||||
|
||||
rom_img = xmalloc (rom_size);
|
||||
memset (rom_img, 0, rom_size);
|
||||
|
||||
memcpy (rom_img, boot_img, boot_size);
|
||||
|
||||
memcpy (rom_img + boot_size, core_img, core_size);
|
||||
|
||||
memset (rom_img + boot_size + core_size, 0,
|
||||
rom_size - (boot_size + core_size));
|
||||
|
||||
free (core_img);
|
||||
core_img = rom_img;
|
||||
core_size = rom_size;
|
||||
}
|
||||
break;
|
||||
case IMAGE_YEELOONG_ELF:
|
||||
case IMAGE_PPC:
|
||||
case IMAGE_COREBOOT:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue