// SPDX-License-Identifier: GPL-2.0+ /* * Copyright 2019 NXP */ #include #include #include #include #include #include #include DECLARE_GLOBAL_DATA_PTR; #define UART_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_FSEL1) #define WDOG_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_ODE | PAD_CTL_PUE | PAD_CTL_PE) static iomux_v3_cfg_t const uart_pads[] = { MX8MP_PAD_UART2_RXD__UART2_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL), MX8MP_PAD_UART2_TXD__UART2_DCE_TX | MUX_PAD_CTRL(UART_PAD_CTRL), }; static iomux_v3_cfg_t const wdog_pads[] = { MX8MP_PAD_GPIO1_IO02__WDOG1_WDOG_B | MUX_PAD_CTRL(WDOG_PAD_CTRL), }; int board_early_init_f(void) { struct wdog_regs *wdog = (struct wdog_regs *)WDOG1_BASE_ADDR; imx_iomux_v3_setup_multiple_pads(wdog_pads, ARRAY_SIZE(wdog_pads)); set_wdog_reset(wdog); imx_iomux_v3_setup_multiple_pads(uart_pads, ARRAY_SIZE(uart_pads)); return 0; } int dram_init(void) { /* rom_pointer[1] contains the size of TEE occupies */ if (rom_pointer[1]) gd->ram_size = PHYS_SDRAM_SIZE - rom_pointer[1]; else gd->ram_size = PHYS_SDRAM_SIZE; #if CONFIG_NR_DRAM_BANKS > 1 gd->ram_size += PHYS_SDRAM_2_SIZE; #endif return 0; } int dram_init_banksize(void) { gd->bd->bi_dram[0].start = PHYS_SDRAM; if (rom_pointer[1]) gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE - rom_pointer[1]; else gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE; #if CONFIG_NR_DRAM_BANKS > 1 gd->bd->bi_dram[1].start = PHYS_SDRAM_2; gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE; #endif return 0; } phys_size_t get_effective_memsize(void) { if (rom_pointer[1]) return (PHYS_SDRAM_SIZE - rom_pointer[1]); else return PHYS_SDRAM_SIZE; } int board_init(void) { return 0; } int board_late_init(void) { #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG env_set("board_name", "EVK"); env_set("board_rev", "iMX8MP"); #endif return 0; }