static noinline void socrates_entry(void) { int ret; arm_early_mmu_cache_invalidate(); relocate_to_current_adr(); setup_c(); socfpga_lowlevel_init(&cm_default_cfg, sys_mgr_init_table, ARRAY_SIZE(sys_mgr_init_table)); puts_ll("lowlevel init done\n"); puts_ll("SDRAM setup...\n"); socfpga_sdram_mmr_init(); puts_ll("SDRAM calibration...\n"); ret = socfpga_sdram_calibration(inst_rom_init, inst_rom_init_size, ac_rom_init, ac_rom_init_size); if (ret) hang(); puts_ll("done\n"); barebox_arm_entry(0x0, SZ_1G, 0); }
static int console_std_set(struct device_d *dev, struct param_d *param, const char *val) { struct console_device *cdev = to_console_dev(dev); char active[4]; unsigned int flag = 0, i = 0; if (val) { if (strchr(val, 'i') && cdev->getc) { active[i++] = 'i'; flag |= CONSOLE_STDIN; } if (cdev->putc) { if (strchr(val, 'o')) { active[i++] = 'o'; flag |= CONSOLE_STDOUT; } if (strchr(val, 'e')) { active[i++] = 'e'; flag |= CONSOLE_STDERR; } } } if (flag && !cdev->f_active) { /* The device is being activated, set its baudrate */ if (cdev->setbrg) cdev->setbrg(cdev, cdev->baudrate); } active[i] = 0; cdev->f_active = flag; dev_param_set_generic(dev, param, active); if (initialized < CONSOLE_INIT_FULL) { char ch; initialized = CONSOLE_INIT_FULL; puts_ll("Switch to console ["); puts_ll(dev_name(dev)); puts_ll("]\n"); barebox_banner(); while (kfifo_getc(console_output_fifo, &ch) == 0) console_putc(CONSOLE_STDOUT, ch); } return 0; }
void __section(.text_entry) pbl_main_entry(void *fdt, void *fdt_end, u32 ram_size) { u32 pg_start, pg_end, pg_len, fdt_len; void *fdt_new; void (*barebox)(void *fdt, u32 fdt_len, u32 ram_size); puts_ll("pbl_main_entry()\n"); /* clear bss */ memset(__bss_start, 0, __bss_stop - __bss_start); pg_start = (u32)&input_data; pg_end = (u32)&input_data_end; pg_len = pg_end - pg_start; barebox_uncompress(&input_data, pg_len); fdt_len = (u32)fdt_end - (u32)fdt; fdt_new = (void *)PAGE_ALIGN_DOWN(TEXT_BASE - MALLOC_SIZE - STACK_SIZE - fdt_len); memcpy(fdt_new, fdt, fdt_len); barebox = (void *)TEXT_BASE; barebox(fdt_new, fdt_len, ram_size); }
ENTRY_FUNCTION(start_zii_vf610_dev, r0, r1, r2) { void *fdt; const unsigned int system_type = get_system_type(); vf610_cpu_lowlevel_init(); if (IS_ENABLED(CONFIG_DEBUG_LL)) setup_uart(); switch (system_type) { default: if (IS_ENABLED(CONFIG_DEBUG_LL)) { relocate_to_current_adr(); setup_c(); puts_ll("\n*********************************\n"); puts_ll("* Unknown system type: "); puthex_ll(system_type); puts_ll("\n* Assuming devboard revision B\n"); puts_ll("*********************************\n"); } case ZII_PLATFORM_VF610_DEV_REV_B: /* FALLTHROUGH */ fdt = __dtb_vf610_zii_dev_rev_b_start; break; case ZII_PLATFORM_VF610_SCU4_AIB: fdt = __dtb_vf610_zii_scu4_aib_start; break; case ZII_PLATFORM_VF610_DEV_REV_C: fdt = __dtb_vf610_zii_dev_rev_c_start; break; case ZII_PLATFORM_VF610_CFU1: fdt = __dtb_vf610_zii_cfu1_start; break; case ZII_PLATFORM_VF610_SSMB_SPU3: fdt = __dtb_vf610_zii_ssmb_spu3_start; break; case ZII_PLATFORM_VF610_SPB4: fdt = __dtb_vf610_zii_spb4_start; break; case ZII_PLATFORM_VF610_SSMB_DTU: fdt = __dtb_vf610_zii_ssmb_dtu_start; break; } vf610_barebox_entry(fdt + get_runtime_offset()); }
void __section(.text_entry) pbl_main_entry(void) { u32 pg_start, pg_end, pg_len; void (*barebox)(void); puts_ll("pbl_main_entry()\n"); /* clear bss */ memset(__bss_start, 0, __bss_stop - __bss_start); pg_start = (u32)&input_data; pg_end = (u32)&input_data_end; pg_len = pg_end - pg_start; barebox_uncompress(&input_data, pg_len); barebox = (void *)TEXT_BASE; barebox(); }