void arm_board_linux_default_cmdline(char *cmdline, u32 cmdline_sz) { arm_strcpy(cmdline, "root=/dev/ram rw earlyprintk console=ttyAMA0"); /* VirtIO Network Device */ arm_strcat(cmdline, " virtio_mmio.device=4K@0x40100000:50"); /* VirtIO Block Device */ arm_strcat(cmdline, " virtio_mmio.device=4K@0x40200000:51"); /* VirtIO Console Device */ arm_strcat(cmdline, " virtio_mmio.device=4K@0x40300000:52"); }
void arm_board_linux_default_cmdline(char *cmdline, u32 cmdline_sz) { arm_strcpy(cmdline, "root=/dev/ram rw earlyprintk"); /* VirtIO Network Device */ arm_strcat(cmdline, " virtio_mmio.device=64K@0x20100000:42"); /* SabreLite/Nitrogen6X specific */ arm_strcat(cmdline, " enable_wait_mode=off " "video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666 video=mxcfb1:off " "video=mxcfb2:off video=mxcfb3:off fbmem=10M " "console=ttymxc1,115200 vmalloc=400M consoleblank=0 " "mxc_hdmi.only_cea=1"); }
void arm_cmd_linux_cmdline(int argc, char **argv) { if (argc >= 2) { int cnt = 1; linux_cmdline[0] = 0; while (cnt < argc) { arm_strcat(linux_cmdline, argv[cnt]); arm_strcat(linux_cmdline, " "); cnt++; } } arm_puts ("linux_cmdline = \""); arm_puts(linux_cmdline); arm_puts ("\"\n"); return; }
void arm_cmd_start_linux(int argc, char **argv) { u64 kernel_addr, fdt_addr; u64 initrd_addr, initrd_size; int err; char cfg_str[10]; u64 meminfo[2]; if (argc != 5) { arm_puts ("start_linux: must provide <kernel_addr>, <initrd_addr>, <initrd_size> and <fdt_addr>\n"); return; } /* Parse the arguments from command line */ kernel_addr = arm_hexstr2ulonglong(argv[1]); initrd_addr = arm_hexstr2ulonglong(argv[2]); initrd_size = arm_hexstr2ulonglong(argv[3]); fdt_addr = arm_hexstr2ulonglong(argv[4]); meminfo[0] = arm_board_ram_start(); meminfo[1] = arm_board_ram_size(); /* Fillup/fixup the fdt blob with following: * - initrd start, end * - kernel cmd line * - number of cpus */ if ((err = fdt_fixup_memory_banks((void *)fdt_addr, (&meminfo[0]), (&meminfo[1]), 1))) { arm_printf("%s: fdt_fixup_memory_banks() failed: %s\n", __func__, fdt_strerror(err)); return; } sprintf(cfg_str, " mem=%dM maxcpus=%d", (int)(meminfo[1] >> 20), CONFIG_NR_CPUS); arm_strcat(linux_cmdline, cfg_str); if ((err = fdt_chosen((void *)fdt_addr, 1))) { arm_printf("%s: fdt_chosen() failed: %s\n", __func__, fdt_strerror(err)); return; } if ((err = fdt_initrd((void *)fdt_addr, initrd_addr, initrd_addr + initrd_size, 1))) { arm_printf("%s: fdt_initrd() failed: %s\n", __func__, fdt_strerror(err)); return; } /* Disable interrupts and timer */ arm_board_timer_disable(); arm_irq_disable(); arm_mmu_cleanup(); /* Jump to Linux Kernel * r0 -> dtb address */ arm_puts("Jumping into linux ...\n"); ((linux_entry_t)kernel_addr)(fdt_addr); /* We should never reach here */ while (1); return; }