blob: 18e83d90a08d653dd629bb773ffd11f50532f4b9 [file] [log] [blame]
Peng Fanaeb9c062018-11-20 10:20:00 +00001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright 2018 NXP
4 */
5
Peng Fan03d77502025-01-09 11:29:13 +08006#include <asm/arch/clock.h>
Peng Fanaeb9c062018-11-20 10:20:00 +00007#include <asm/arch/imx8mq_pins.h>
8#include <asm/arch/sys_proto.h>
Peng Fan03d77502025-01-09 11:29:13 +08009#include <asm/mach-imx/iomux-v3.h>
10#include <env.h>
Peng Fanaeb9c062018-11-20 10:20:00 +000011
Peng Fanaeb9c062018-11-20 10:20:00 +000012#define UART_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_FSEL1)
13
14#define WDOG_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE)
15
16static iomux_v3_cfg_t const wdog_pads[] = {
17 IMX8MQ_PAD_GPIO1_IO02__WDOG1_WDOG_B | MUX_PAD_CTRL(WDOG_PAD_CTRL),
18};
19
20static iomux_v3_cfg_t const uart_pads[] = {
21 IMX8MQ_PAD_UART1_RXD__UART1_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
22 IMX8MQ_PAD_UART1_TXD__UART1_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
23};
24
25int board_early_init_f(void)
26{
27 struct wdog_regs *wdog = (struct wdog_regs *)WDOG1_BASE_ADDR;
28
29 imx_iomux_v3_setup_multiple_pads(wdog_pads, ARRAY_SIZE(wdog_pads));
30 set_wdog_reset(wdog);
31
32 imx_iomux_v3_setup_multiple_pads(uart_pads, ARRAY_SIZE(uart_pads));
33
34 return 0;
35}
36
Peng Fanaeb9c062018-11-20 10:20:00 +000037int board_init(void)
38{
Ye Li55fc7822021-02-21 08:26:24 -080039#if defined(CONFIG_USB_DWC3) || defined(CONFIG_USB_XHCI_DWC3)
40 init_usb_clk();
41#endif
42
Peng Fanaeb9c062018-11-20 10:20:00 +000043 return 0;
44}
45
46int board_mmc_get_env_dev(int devno)
47{
48 return devno;
49}
50
51int board_late_init(void)
52{
Peng Fan71ea7bf2025-01-09 11:29:15 +080053#if CONFIG_IS_ENABLED(ENV_IS_IN_MMC)
54 board_late_mmc_env_init();
55#endif
56
Peng Fanaeb9c062018-11-20 10:20:00 +000057#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
58 env_set("board_name", "EVK");
59 env_set("board_rev", "iMX8MQ");
60#endif
61
62 return 0;
63}