Esempio n. 1
0
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");
}
Esempio n. 2
0
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");
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
}