Files
meta-bsp-imx8mm/recipes-bsp/u-boot/compulab/imx8mm/0063-imx8mm-plat-Add-the-common-board-file-for-imx8mm-SoC.patch
T
2023-02-09 00:44:25 +02:00

1079 lines
24 KiB
Diff

From 4b5f04afd0ebe44ac23ba4d96af52c92072dce7b Mon Sep 17 00:00:00 2001
From: Kirill Kapranov <kirill.kapranov@compulab.co.il>
Date: Mon, 19 Jul 2021 16:27:49 +0300
Subject: [PATCH 063/126] imx8mm: plat: Add the common board file for imx8mm
SoC
Signed-off-by: Kirill Kapranov <kirill.kapranov@compulab.co.il>
---
board/compulab/iot-gate-imx8/Makefile | 2 +-
board/compulab/iot-gate-imx8/iot-gate-imx8.c | 235 -----------------------
board/compulab/mcm-imx8m-mini/Makefile | 2 +-
board/compulab/mcm-imx8m-mini/mcm-imx8m-mini.c | 235 -----------------------
board/compulab/plat/imx8mm/Makefile | 1 +
board/compulab/plat/imx8mm/board/Makefile | 4 +
board/compulab/plat/imx8mm/board/board.c | 247 +++++++++++++++++++++++++
board/compulab/ucm-imx8m-mini/Makefile | 2 +-
board/compulab/ucm-imx8m-mini/ucm-imx8m-mini.c | 235 -----------------------
9 files changed, 255 insertions(+), 708 deletions(-)
create mode 100644 board/compulab/plat/imx8mm/board/Makefile
create mode 100644 board/compulab/plat/imx8mm/board/board.c
diff --git a/board/compulab/iot-gate-imx8/Makefile b/board/compulab/iot-gate-imx8/Makefile
index e5239d1dbb..fa228294ef 100644
--- a/board/compulab/iot-gate-imx8/Makefile
+++ b/board/compulab/iot-gate-imx8/Makefile
@@ -9,7 +9,7 @@ ccflags-y += -I$(srctree)/board/compulab/plat/imx8/
ifdef CONFIG_SPL_BUILD
obj-y += spl.o
-else
+else
obj-y += iot-gate-imx8.o
endif
diff --git a/board/compulab/iot-gate-imx8/iot-gate-imx8.c b/board/compulab/iot-gate-imx8/iot-gate-imx8.c
index d01b8f8767..6cafc259e9 100644
--- a/board/compulab/iot-gate-imx8/iot-gate-imx8.c
+++ b/board/compulab/iot-gate-imx8/iot-gate-imx8.c
@@ -23,243 +23,8 @@
#include <asm/mach-imx/dma.h>
#include <power/pmic.h>
#include <power/bd71837.h>
-#include "../common/eeprom.h"
#include <usb.h>
#include <asm/mach-imx/boot_mode.h>
#include <asm/mach-imx/video.h>
-#include "ddr/ddr.h"
DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_BOARD_POSTCLK_INIT
-int board_postclk_init(void)
-{
- /* TODO */
- return 0;
-}
-#endif
-int board_phys_sdram_size(phys_size_t *size)
-{
- struct lpddr4_tcm_desc *lpddr4_tcm_desc = (struct lpddr4_tcm_desc *) TCM_DATA_CFG;
-
- switch (lpddr4_tcm_desc->size) {
- case 4096:
- case 2048:
- case 1024:
- *size = (1L << 20) * lpddr4_tcm_desc->size;
- break;
- default:
- printf("%s: DRAM size %uM is not supported \n", __func__,
- lpddr4_tcm_desc->size);
- while ( 1 ) {};
- break;
- };
- return 0;
-}
- /* Get the top of usable RAM */
-ulong board_get_usable_ram_top(ulong total_size)
-{
-
- if(gd->ram_top > 0x100000000)
- gd->ram_top = 0x100000000;
-
- return gd->ram_top;
-}
-
-int dram_init(void)
-{
- phys_size_t sdram_size;
- int ret;
- ret = board_phys_sdram_size(&sdram_size);
- printf("%s: size %llu\n", __func__, sdram_size);
- if (ret)
- return ret;
-
- /* rom_pointer[1] contains the size of TEE occupies */
- gd->ram_size = sdram_size - rom_pointer[1];
-
- return 0;
-}
-
-#ifdef CONFIG_OF_BOARD_SETUP
-int ft_board_setup(void *blob, bd_t *bd)
-{
- return 0;
-}
-#endif
-
-#ifdef CONFIG_FEC_MXC
-#define FEC_RST_PAD IMX_GPIO_NR(1, 10)
-static iomux_v3_cfg_t const fec1_rst_pads[] = {
- IMX8MM_PAD_GPIO1_IO10_GPIO1_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-static void setup_iomux_fec(void)
-{
- imx_iomux_v3_setup_multiple_pads(fec1_rst_pads,
- ARRAY_SIZE(fec1_rst_pads));
-
- gpio_request(FEC_RST_PAD, "fec1_rst");
- gpio_direction_output(FEC_RST_PAD, 0);
- udelay(500);
- gpio_direction_output(FEC_RST_PAD, 1);
-}
-
-/*
- * setup_mac_address() - set Ethernet MAC address environment.
- *
- * @return: 0 on success, -1 on failure
- */
-static int setup_mac_address(void)
-{
- int ret;
- unsigned char enetaddr[6];
-
- ret = eth_env_get_enetaddr("ethaddr", enetaddr);
- if (ret)
- return 0;
-
- ret = cl_eeprom_read_mac_addr(enetaddr, CONFIG_SYS_I2C_EEPROM_BUS);
- if (ret)
- return ret;
-
- ret = is_valid_ethaddr(enetaddr);
- if (!ret)
- return -1;
-
- ret = eth_env_set_enetaddr("ethaddr", enetaddr);
- if (ret)
- return -1;
-
- return 0;
-}
-
-static int setup_fec(void)
-{
- struct iomuxc_gpr_base_regs *const iomuxc_gpr_regs
- = (struct iomuxc_gpr_base_regs *) IOMUXC_GPR_BASE_ADDR;
-
- setup_iomux_fec();
-
- /* Use 125M anatop REF_CLK1 for ENET1, not from external */
- clrsetbits_le32(&iomuxc_gpr_regs->gpr[1],
- IOMUXC_GPR_GPR1_GPR_ENET1_TX_CLK_SEL_SHIFT, 0);
- return set_clk_enet(ENET_125MHZ);
-}
-
-int board_phy_config(struct phy_device *phydev)
-{
- /* enable rgmii rxc skew and phy mode select to RGMII copper */
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x1f);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x8);
-
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x00);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x82ee);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x100);
-
- if (phydev->drv->config)
- phydev->drv->config(phydev);
- return 0;
-}
-#endif
-
-int board_usb_init(int index, enum usb_init_type init)
-{
- debug("board_usb_init %d, type %d\n", index, init);
-
- imx8m_usb_power(index, true);
-
- return 0;
-}
-
-int board_usb_cleanup(int index, enum usb_init_type init)
-{
- debug("board_usb_cleanup %d, type %d\n", index, init);
-
- imx8m_usb_power(index, false);
-
- return 0;
-}
-int board_init(void)
-{
-
-#ifdef CONFIG_FEC_MXC
- setup_fec();
-#endif
- return 0;
-}
-
-int board_mmc_get_env_dev(int devno)
-{
- const ulong user_env_devno = env_get_hex("env_dev", ULONG_MAX);
- if (user_env_devno != ULONG_MAX) {
- printf("User Environment dev# is (%lu)\n", user_env_devno);
- return (int)user_env_devno;
- }
- return devno;
-}
-
-static int _mmc_get_env_part(void)
-{
- const ulong user_env_part = env_get_hex("env_part", ULONG_MAX);
- if (user_env_part != ULONG_MAX) {
- printf("User Environment part# is (%lu)\n", user_env_part);
- return (int)user_env_part;
- }
- return CONFIG_SYS_MMC_ENV_PART;
-}
-
-uint mmc_get_env_part(struct mmc *mmc)
-{
- if (mmc->part_support)
- return _mmc_get_env_part();
-
- return 0;
-}
-
-int mmc_map_to_kernel_blk(int devno){
- return devno;
-}
-
-static void board_bootdev_init(void)
-{
- u32 bootdev = get_boot_device();
- switch (bootdev) {
- case MMC3_BOOT:
- bootdev = 2;
- break;
- case SD2_BOOT:
- bootdev = 1;
- break;
- default:
- env_set("bootdev", NULL);
- return;
- }
- env_set_ulong("bootdev", bootdev);
-}
-
-int board_late_init(void)
-{
- int ret;
-
-#ifdef CONFIG_ENV_IS_IN_MMC
- board_late_mmc_env_init();
- board_bootdev_init();
-#endif
-
- ret = setup_mac_address();
- if (ret < 0)
- printf("%s: Can't set MAC address\n", __func__);
-
- return 0;
-}
-
-#ifdef CONFIG_FSL_FASTBOOT
-#ifdef CONFIG_ANDROID_RECOVERY
-int is_recovery_key_pressing(void)
-{
- return 0; /*TODO*/
-}
-#endif /*CONFIG_ANDROID_RECOVERY*/
-#endif /*CONFIG_FSL_FASTBOOT*/
diff --git a/board/compulab/mcm-imx8m-mini/Makefile b/board/compulab/mcm-imx8m-mini/Makefile
index 2cadd46fb8..906eff02bd 100644
--- a/board/compulab/mcm-imx8m-mini/Makefile
+++ b/board/compulab/mcm-imx8m-mini/Makefile
@@ -9,7 +9,7 @@ ccflags-y += -I$(srctree)/board/compulab/plat/imx8/
ifdef CONFIG_SPL_BUILD
obj-y += spl.o
-else
+else
obj-y += mcm-imx8m-mini.o
endif
diff --git a/board/compulab/mcm-imx8m-mini/mcm-imx8m-mini.c b/board/compulab/mcm-imx8m-mini/mcm-imx8m-mini.c
index d01b8f8767..6cafc259e9 100644
--- a/board/compulab/mcm-imx8m-mini/mcm-imx8m-mini.c
+++ b/board/compulab/mcm-imx8m-mini/mcm-imx8m-mini.c
@@ -23,243 +23,8 @@
#include <asm/mach-imx/dma.h>
#include <power/pmic.h>
#include <power/bd71837.h>
-#include "../common/eeprom.h"
#include <usb.h>
#include <asm/mach-imx/boot_mode.h>
#include <asm/mach-imx/video.h>
-#include "ddr/ddr.h"
DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_BOARD_POSTCLK_INIT
-int board_postclk_init(void)
-{
- /* TODO */
- return 0;
-}
-#endif
-int board_phys_sdram_size(phys_size_t *size)
-{
- struct lpddr4_tcm_desc *lpddr4_tcm_desc = (struct lpddr4_tcm_desc *) TCM_DATA_CFG;
-
- switch (lpddr4_tcm_desc->size) {
- case 4096:
- case 2048:
- case 1024:
- *size = (1L << 20) * lpddr4_tcm_desc->size;
- break;
- default:
- printf("%s: DRAM size %uM is not supported \n", __func__,
- lpddr4_tcm_desc->size);
- while ( 1 ) {};
- break;
- };
- return 0;
-}
- /* Get the top of usable RAM */
-ulong board_get_usable_ram_top(ulong total_size)
-{
-
- if(gd->ram_top > 0x100000000)
- gd->ram_top = 0x100000000;
-
- return gd->ram_top;
-}
-
-int dram_init(void)
-{
- phys_size_t sdram_size;
- int ret;
- ret = board_phys_sdram_size(&sdram_size);
- printf("%s: size %llu\n", __func__, sdram_size);
- if (ret)
- return ret;
-
- /* rom_pointer[1] contains the size of TEE occupies */
- gd->ram_size = sdram_size - rom_pointer[1];
-
- return 0;
-}
-
-#ifdef CONFIG_OF_BOARD_SETUP
-int ft_board_setup(void *blob, bd_t *bd)
-{
- return 0;
-}
-#endif
-
-#ifdef CONFIG_FEC_MXC
-#define FEC_RST_PAD IMX_GPIO_NR(1, 10)
-static iomux_v3_cfg_t const fec1_rst_pads[] = {
- IMX8MM_PAD_GPIO1_IO10_GPIO1_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-static void setup_iomux_fec(void)
-{
- imx_iomux_v3_setup_multiple_pads(fec1_rst_pads,
- ARRAY_SIZE(fec1_rst_pads));
-
- gpio_request(FEC_RST_PAD, "fec1_rst");
- gpio_direction_output(FEC_RST_PAD, 0);
- udelay(500);
- gpio_direction_output(FEC_RST_PAD, 1);
-}
-
-/*
- * setup_mac_address() - set Ethernet MAC address environment.
- *
- * @return: 0 on success, -1 on failure
- */
-static int setup_mac_address(void)
-{
- int ret;
- unsigned char enetaddr[6];
-
- ret = eth_env_get_enetaddr("ethaddr", enetaddr);
- if (ret)
- return 0;
-
- ret = cl_eeprom_read_mac_addr(enetaddr, CONFIG_SYS_I2C_EEPROM_BUS);
- if (ret)
- return ret;
-
- ret = is_valid_ethaddr(enetaddr);
- if (!ret)
- return -1;
-
- ret = eth_env_set_enetaddr("ethaddr", enetaddr);
- if (ret)
- return -1;
-
- return 0;
-}
-
-static int setup_fec(void)
-{
- struct iomuxc_gpr_base_regs *const iomuxc_gpr_regs
- = (struct iomuxc_gpr_base_regs *) IOMUXC_GPR_BASE_ADDR;
-
- setup_iomux_fec();
-
- /* Use 125M anatop REF_CLK1 for ENET1, not from external */
- clrsetbits_le32(&iomuxc_gpr_regs->gpr[1],
- IOMUXC_GPR_GPR1_GPR_ENET1_TX_CLK_SEL_SHIFT, 0);
- return set_clk_enet(ENET_125MHZ);
-}
-
-int board_phy_config(struct phy_device *phydev)
-{
- /* enable rgmii rxc skew and phy mode select to RGMII copper */
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x1f);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x8);
-
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x00);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x82ee);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x100);
-
- if (phydev->drv->config)
- phydev->drv->config(phydev);
- return 0;
-}
-#endif
-
-int board_usb_init(int index, enum usb_init_type init)
-{
- debug("board_usb_init %d, type %d\n", index, init);
-
- imx8m_usb_power(index, true);
-
- return 0;
-}
-
-int board_usb_cleanup(int index, enum usb_init_type init)
-{
- debug("board_usb_cleanup %d, type %d\n", index, init);
-
- imx8m_usb_power(index, false);
-
- return 0;
-}
-int board_init(void)
-{
-
-#ifdef CONFIG_FEC_MXC
- setup_fec();
-#endif
- return 0;
-}
-
-int board_mmc_get_env_dev(int devno)
-{
- const ulong user_env_devno = env_get_hex("env_dev", ULONG_MAX);
- if (user_env_devno != ULONG_MAX) {
- printf("User Environment dev# is (%lu)\n", user_env_devno);
- return (int)user_env_devno;
- }
- return devno;
-}
-
-static int _mmc_get_env_part(void)
-{
- const ulong user_env_part = env_get_hex("env_part", ULONG_MAX);
- if (user_env_part != ULONG_MAX) {
- printf("User Environment part# is (%lu)\n", user_env_part);
- return (int)user_env_part;
- }
- return CONFIG_SYS_MMC_ENV_PART;
-}
-
-uint mmc_get_env_part(struct mmc *mmc)
-{
- if (mmc->part_support)
- return _mmc_get_env_part();
-
- return 0;
-}
-
-int mmc_map_to_kernel_blk(int devno){
- return devno;
-}
-
-static void board_bootdev_init(void)
-{
- u32 bootdev = get_boot_device();
- switch (bootdev) {
- case MMC3_BOOT:
- bootdev = 2;
- break;
- case SD2_BOOT:
- bootdev = 1;
- break;
- default:
- env_set("bootdev", NULL);
- return;
- }
- env_set_ulong("bootdev", bootdev);
-}
-
-int board_late_init(void)
-{
- int ret;
-
-#ifdef CONFIG_ENV_IS_IN_MMC
- board_late_mmc_env_init();
- board_bootdev_init();
-#endif
-
- ret = setup_mac_address();
- if (ret < 0)
- printf("%s: Can't set MAC address\n", __func__);
-
- return 0;
-}
-
-#ifdef CONFIG_FSL_FASTBOOT
-#ifdef CONFIG_ANDROID_RECOVERY
-int is_recovery_key_pressing(void)
-{
- return 0; /*TODO*/
-}
-#endif /*CONFIG_ANDROID_RECOVERY*/
-#endif /*CONFIG_FSL_FASTBOOT*/
diff --git a/board/compulab/plat/imx8mm/Makefile b/board/compulab/plat/imx8mm/Makefile
index 33b3fedef9..15ce667357 100644
--- a/board/compulab/plat/imx8mm/Makefile
+++ b/board/compulab/plat/imx8mm/Makefile
@@ -1,2 +1,3 @@
obj-y += ddr/
obj-y += spl/
+obj-y += board/
diff --git a/board/compulab/plat/imx8mm/board/Makefile b/board/compulab/plat/imx8mm/board/Makefile
new file mode 100644
index 0000000000..8c50727052
--- /dev/null
+++ b/board/compulab/plat/imx8mm/board/Makefile
@@ -0,0 +1,4 @@
+ccflags-y += -I$(srctree)/board/compulab/
+ccflags-y += -I$(srctree)/board/compulab/plat/imx8mm/
+
+obj-y += board.o
diff --git a/board/compulab/plat/imx8mm/board/board.c b/board/compulab/plat/imx8mm/board/board.c
new file mode 100644
index 0000000000..819e6ef32c
--- /dev/null
+++ b/board/compulab/plat/imx8mm/board/board.c
@@ -0,0 +1,247 @@
+/*
+ * Copyright 2020 CompuLab
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <malloc.h>
+#include <errno.h>
+#include <asm/io.h>
+#include <miiphy.h>
+#include <netdev.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm-generic/gpio.h>
+#include <fsl_esdhc.h>
+#include <mmc.h>
+#include <asm/arch/imx8mm_pins.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/mach-imx/gpio.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/arch/clock.h>
+#include <spl.h>
+#include <asm/mach-imx/dma.h>
+#include <power/pmic.h>
+#include <power/bd71837.h>
+#include <usb.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/video.h>
+#include <linux/delay.h>
+#include "ddr/ddr.h"
+#include "common/eeprom.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_BOARD_POSTCLK_INIT
+int board_postclk_init(void)
+{
+ /* TODO */
+ return 0;
+}
+#endif
+int board_phys_sdram_size(phys_size_t *size)
+{
+ struct lpddr4_tcm_desc *lpddr4_tcm_desc = (struct lpddr4_tcm_desc *) TCM_DATA_CFG;
+
+ switch (lpddr4_tcm_desc->size) {
+ case 4096:
+ case 2048:
+ case 1024:
+ *size = (1L << 20) * lpddr4_tcm_desc->size;
+ break;
+ default:
+ printf("%s: DRAM size %uM is not supported \n", __func__,
+ lpddr4_tcm_desc->size);
+ while ( 1 ) {};
+ break;
+ };
+ return 0;
+}
+ /* Get the top of usable RAM */
+ulong board_get_usable_ram_top(ulong total_size)
+{
+
+ if(gd->ram_top > 0x100000000)
+ gd->ram_top = 0x100000000;
+
+ return gd->ram_top;
+}
+
+#ifdef CONFIG_OF_BOARD_SETUP
+int ft_board_setup(void *blob, bd_t *bd)
+{
+ return 0;
+}
+#endif
+
+#ifdef CONFIG_FEC_MXC
+#define FEC_RST_PAD IMX_GPIO_NR(1, 10)
+static iomux_v3_cfg_t const fec1_rst_pads[] = {
+ IMX8MM_PAD_GPIO1_IO10_GPIO1_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static void setup_iomux_fec(void)
+{
+ imx_iomux_v3_setup_multiple_pads(fec1_rst_pads,
+ ARRAY_SIZE(fec1_rst_pads));
+
+ gpio_request(FEC_RST_PAD, "fec1_rst");
+ gpio_direction_output(FEC_RST_PAD, 0);
+ udelay(500);
+ gpio_direction_output(FEC_RST_PAD, 1);
+}
+
+/*
+ * setup_mac_address() - set Ethernet MAC address environment.
+ *
+ * @return: 0 on success, -1 on failure
+ */
+static int setup_mac_address(void)
+{
+ int ret;
+ unsigned char enetaddr[6];
+
+ ret = eth_env_get_enetaddr("ethaddr", enetaddr);
+ if (ret)
+ return 0;
+
+ ret = cl_eeprom_read_mac_addr(enetaddr, CONFIG_SYS_I2C_EEPROM_BUS);
+ if (ret)
+ return ret;
+
+ ret = is_valid_ethaddr(enetaddr);
+ if (!ret)
+ return -1;
+
+ ret = eth_env_set_enetaddr("ethaddr", enetaddr);
+ if (ret)
+ return -1;
+
+ return 0;
+}
+
+static int setup_fec(void)
+{
+ struct iomuxc_gpr_base_regs *const iomuxc_gpr_regs
+ = (struct iomuxc_gpr_base_regs *) IOMUXC_GPR_BASE_ADDR;
+
+ setup_iomux_fec();
+
+ /* Use 125M anatop REF_CLK1 for ENET1, not from external */
+ clrsetbits_le32(&iomuxc_gpr_regs->gpr[1],
+ IOMUXC_GPR_GPR1_GPR_ENET1_TX_CLK_SEL_SHIFT, 0);
+ return set_clk_enet(ENET_125MHZ);
+}
+
+int board_phy_config(struct phy_device *phydev)
+{
+ /* enable rgmii rxc skew and phy mode select to RGMII copper */
+ phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x1f);
+ phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x8);
+
+ phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x00);
+ phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x82ee);
+ phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05);
+ phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x100);
+
+ if (phydev->drv->config)
+ phydev->drv->config(phydev);
+ return 0;
+}
+#endif
+
+int board_usb_init(int index, enum usb_init_type init)
+{
+ debug("board_usb_init %d, type %d\n", index, init);
+
+ imx8m_usb_power(index, true);
+
+ return 0;
+}
+
+int board_usb_cleanup(int index, enum usb_init_type init)
+{
+ debug("board_usb_cleanup %d, type %d\n", index, init);
+
+ imx8m_usb_power(index, false);
+
+ return 0;
+}
+int board_init(void)
+{
+
+#ifdef CONFIG_FEC_MXC
+ setup_fec();
+#endif
+ return 0;
+}
+
+int board_mmc_get_env_dev(int devno)
+{
+ const ulong user_env_devno = env_get_hex("env_dev", ULONG_MAX);
+ if (user_env_devno != ULONG_MAX) {
+ printf("User Environment dev# is (%lu)\n", user_env_devno);
+ return (int)user_env_devno;
+ }
+ return devno;
+}
+
+static int _mmc_get_env_part(void)
+{
+ const ulong user_env_part = env_get_hex("env_part", ULONG_MAX);
+ if (user_env_part != ULONG_MAX) {
+ printf("User Environment part# is (%lu)\n", user_env_part);
+ return (int)user_env_part;
+ }
+ return CONFIG_SYS_MMC_ENV_PART;
+}
+
+uint mmc_get_env_part(struct mmc *mmc)
+{
+ if (mmc->part_support)
+ return _mmc_get_env_part();
+
+ return 0;
+}
+
+static void board_bootdev_init(void)
+{
+ u32 bootdev = get_boot_device();
+ switch (bootdev) {
+ case MMC3_BOOT:
+ bootdev = 2;
+ break;
+ case SD2_BOOT:
+ bootdev = 1;
+ break;
+ default:
+ env_set("bootdev", NULL);
+ return;
+ }
+ env_set_ulong("bootdev", bootdev);
+}
+
+int board_late_init(void)
+{
+ int ret;
+
+#ifdef CONFIG_ENV_IS_IN_MMC
+ board_late_mmc_env_init();
+ board_bootdev_init();
+#endif
+
+ ret = setup_mac_address();
+ if (ret < 0)
+ printf("%s: Can't set MAC address\n", __func__);
+
+ return 0;
+}
+
+#ifdef CONFIG_FSL_FASTBOOT
+#ifdef CONFIG_ANDROID_RECOVERY
+int is_recovery_key_pressing(void)
+{
+ return 0; /*TODO*/
+}
+#endif /*CONFIG_ANDROID_RECOVERY*/
+#endif /*CONFIG_FSL_FASTBOOT*/
diff --git a/board/compulab/ucm-imx8m-mini/Makefile b/board/compulab/ucm-imx8m-mini/Makefile
index 870792441c..50618b9b6d 100644
--- a/board/compulab/ucm-imx8m-mini/Makefile
+++ b/board/compulab/ucm-imx8m-mini/Makefile
@@ -9,7 +9,7 @@ ccflags-y += -I$(srctree)/board/compulab/plat/imx8/
ifdef CONFIG_SPL_BUILD
obj-y += spl.o
-else
+else
obj-y += ucm-imx8m-mini.o
endif
diff --git a/board/compulab/ucm-imx8m-mini/ucm-imx8m-mini.c b/board/compulab/ucm-imx8m-mini/ucm-imx8m-mini.c
index cfb4831a80..6cafc259e9 100644
--- a/board/compulab/ucm-imx8m-mini/ucm-imx8m-mini.c
+++ b/board/compulab/ucm-imx8m-mini/ucm-imx8m-mini.c
@@ -23,243 +23,8 @@
#include <asm/mach-imx/dma.h>
#include <power/pmic.h>
#include <power/bd71837.h>
-#include "../common/eeprom.h"
#include <usb.h>
#include <asm/mach-imx/boot_mode.h>
#include <asm/mach-imx/video.h>
-#include "ddr/ddr.h"
DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_BOARD_POSTCLK_INIT
-int board_postclk_init(void)
-{
- /* TODO */
- return 0;
-}
-#endif
-
-int board_phys_sdram_size(phys_size_t *size)
-{
- struct lpddr4_tcm_desc *lpddr4_tcm_desc = (struct lpddr4_tcm_desc *) TCM_DATA_CFG;
-
- switch (lpddr4_tcm_desc->size) {
- case 4096:
- case 2048:
- case 1024:
- *size = (1L << 20) * lpddr4_tcm_desc->size;
- break;
- default:
- printf("%s: DRAM size %uM is not supported \n", __func__,
- lpddr4_tcm_desc->size);
- while ( 1 ) {};
- break;
- };
- return 0;
-}
- /* Get the top of usable RAM */
-ulong board_get_usable_ram_top(ulong total_size)
-{
-
- if(gd->ram_top > 0x100000000)
- gd->ram_top = 0x100000000;
-
- return gd->ram_top;
-}
-
-int dram_init(void)
-{
- phys_size_t sdram_size;
- int ret;
- ret = board_phys_sdram_size(&sdram_size);
- if (ret)
- return ret;
-
- /* rom_pointer[1] contains the size of TEE occupies */
- gd->ram_size = sdram_size - rom_pointer[1];
-
- return 0;
-}
-
-#ifdef CONFIG_OF_BOARD_SETUP
-int ft_board_setup(void *blob, bd_t *bd)
-{
- return 0;
-}
-#endif
-
-#ifdef CONFIG_FEC_MXC
-#define FEC_RST_PAD IMX_GPIO_NR(1, 10)
-static iomux_v3_cfg_t const fec1_rst_pads[] = {
- IMX8MM_PAD_GPIO1_IO10_GPIO1_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-static void setup_iomux_fec(void)
-{
- imx_iomux_v3_setup_multiple_pads(fec1_rst_pads,
- ARRAY_SIZE(fec1_rst_pads));
-
- gpio_request(FEC_RST_PAD, "fec1_rst");
- gpio_direction_output(FEC_RST_PAD, 0);
- udelay(500);
- gpio_direction_output(FEC_RST_PAD, 1);
-}
-
-/*
- * setup_mac_address() - set Ethernet MAC address environment.
- *
- * @return: 0 on success, -1 on failure
- */
-static int setup_mac_address(void)
-{
- int ret;
- unsigned char enetaddr[6];
-
- ret = eth_env_get_enetaddr("ethaddr", enetaddr);
- if (ret)
- return 0;
-
- ret = cl_eeprom_read_mac_addr(enetaddr, CONFIG_SYS_I2C_EEPROM_BUS);
- if (ret)
- return ret;
-
- ret = is_valid_ethaddr(enetaddr);
- if (!ret)
- return -1;
-
- ret = eth_env_set_enetaddr("ethaddr", enetaddr);
- if (ret)
- return -1;
-
- return 0;
-}
-
-static int setup_fec(void)
-{
- struct iomuxc_gpr_base_regs *const iomuxc_gpr_regs
- = (struct iomuxc_gpr_base_regs *) IOMUXC_GPR_BASE_ADDR;
-
- setup_iomux_fec();
-
- /* Use 125M anatop REF_CLK1 for ENET1, not from external */
- clrsetbits_le32(&iomuxc_gpr_regs->gpr[1],
- IOMUXC_GPR_GPR1_GPR_ENET1_TX_CLK_SEL_SHIFT, 0);
- return set_clk_enet(ENET_125MHZ);
-}
-
-int board_phy_config(struct phy_device *phydev)
-{
- /* enable rgmii rxc skew and phy mode select to RGMII copper */
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x1f);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x8);
-
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x00);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x82ee);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x100);
-
- if (phydev->drv->config)
- phydev->drv->config(phydev);
- return 0;
-}
-#endif
-
-int board_usb_init(int index, enum usb_init_type init)
-{
- debug("board_usb_init %d, type %d\n", index, init);
-
- imx8m_usb_power(index, true);
-
- return 0;
-}
-
-int board_usb_cleanup(int index, enum usb_init_type init)
-{
- debug("board_usb_cleanup %d, type %d\n", index, init);
-
- imx8m_usb_power(index, false);
-
- return 0;
-}
-int board_init(void)
-{
-
-#ifdef CONFIG_FEC_MXC
- setup_fec();
-#endif
- return 0;
-}
-
-int board_mmc_get_env_dev(int devno)
-{
- const ulong user_env_devno = env_get_hex("env_dev", ULONG_MAX);
- if (user_env_devno != ULONG_MAX) {
- printf("User Environment dev# is (%lu)\n", user_env_devno);
- return (int)user_env_devno;
- }
- return devno;
-}
-
-static int _mmc_get_env_part(void)
-{
- const ulong user_env_part = env_get_hex("env_part", ULONG_MAX);
- if (user_env_part != ULONG_MAX) {
- printf("User Environment part# is (%lu)\n", user_env_part);
- return (int)user_env_part;
- }
- return CONFIG_SYS_MMC_ENV_PART;
-}
-
-uint mmc_get_env_part(struct mmc *mmc)
-{
- if (mmc->part_support)
- return _mmc_get_env_part();
-
- return 0;
-}
-
-int mmc_map_to_kernel_blk(int devno){
- return devno;
-}
-
-static void board_bootdev_init(void)
-{
- u32 bootdev = get_boot_device();
- switch (bootdev) {
- case MMC3_BOOT:
- bootdev = 2;
- break;
- case SD2_BOOT:
- bootdev = 1;
- break;
- default:
- env_set("bootdev", NULL);
- return;
- }
- env_set_ulong("bootdev", bootdev);
-}
-
-int board_late_init(void)
-{
- int ret;
-
-#ifdef CONFIG_ENV_IS_IN_MMC
- board_late_mmc_env_init();
- board_bootdev_init();
-#endif
-
- ret = setup_mac_address();
- if (ret < 0)
- printf("%s: Can't set MAC address\n", __func__);
-
- return 0;
-}
-
-#ifdef CONFIG_FSL_FASTBOOT
-#ifdef CONFIG_ANDROID_RECOVERY
-int is_recovery_key_pressing(void)
-{
- return 0; /*TODO*/
-}
-#endif /*CONFIG_ANDROID_RECOVERY*/
-#endif /*CONFIG_FSL_FASTBOOT*/
--
2.11.0