static noinline void warp7_start(void) { void __iomem *iomuxbase = IOMEM(MX7_IOMUXC_BASE_ADDR); void __iomem *uart = IOMEM(MX7_UART1_BASE_ADDR); void __iomem *ccmbase = IOMEM(MX7_CCM_BASE_ADDR); void *fdt; /* CCM_CCGR148_CLR, uart1 */ writel(0x3, ccmbase + 0x4000 + 16 * 148 + 0x8); /* CCM_TARGET_ROOT95 = UART1_CLK_ROOT */ writel(0x10000000, ccmbase + 0x8000 + 128 * 95); /* CCM_CCGR148_SET, uart1 */ writel(0x3, ccmbase + 0x4000 + 16 * 148 + 0x4); /* MX7D_PAD_UART1_RX_DATA__UART1_DCE_RX without daisy chaining */ writel(0x0, iomuxbase + 0x128); /* MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX */ writel(0x0, iomuxbase + 0x12c); imx7_uart_setup(uart); pbl_set_putc(imx_uart_putc, uart); pr_debug("Element14 i.MX7 Warp\n"); fdt = __dtb_imx7s_warp_start + get_runtime_offset(); barebox_arm_entry(0x80000000, SZ_512M, fdt); }
static void setup_uart(void) { void __iomem *iomuxbase = (void *)MX6_IOMUXC_BASE_ADDR; /* mux the uart */ writel(0x00000003, iomuxbase + 0x4c); writel(0x00000000, iomuxbase + 0x8fc); imx6_ungate_all_peripherals(); imx6_uart_setup((void *)MX6_UART1_BASE_ADDR); pbl_set_putc(imx_uart_putc, (void *)MX6_UART1_BASE_ADDR); pr_debug("\n"); }
static noinline void imx53_guf_vincell_init(int is_lt) { void __iomem *ccm = (void *)MX53_CCM_BASE_ADDR; void __iomem *uart = IOMEM(MX53_UART2_BASE_ADDR); void *fdt; u32 r; enum bootsource src; int instance; arm_setup_stack(MX53_IRAM_BASE_ADDR + MX53_IRAM_SIZE - 8); writel(0x0088494c, ccm + MX5_CCM_CBCDR); writel(0x02b12f0a, ccm + MX5_CCM_CSCMR2); imx53_ungate_all_peripherals(); imx53_init_lowlevel_early(800); writel(0x3, MX53_IOMUXC_BASE_ADDR + 0x27c); writel(0x3, MX53_IOMUXC_BASE_ADDR + 0x278); imx53_uart_setup(uart); pbl_set_putc(imx_uart_putc, uart); pr_debug("GuF Vincell\n"); /* Skip SDRAM initialization if we run from RAM */ r = get_pc(); if (!(r > 0x70000000 && r < 0xf0000000)) { disable_watchdog(); configure_dram_iomux(); imx_esdctlv4_init(); imx53_get_boot_source(&src, &instance); if (src == BOOTSOURCE_NAND && IS_ENABLED(CONFIG_MACH_GUF_VINCELL_XLOAD)) imx53_nand_start_image(); } if (is_lt) fdt = __dtb_imx53_guf_vincell_lt_start; else fdt = __dtb_imx53_guf_vincell_start; imx53_barebox_entry(fdt); }