// SPDX-License-Identifier: GPL-2.0+ /* * Copyright 2018 NXP */ #include #include #include #include #include #include #include #include #include #include DECLARE_GLOBAL_DATA_PTR; #if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) #define IMX_BOOT_IMAGE_GUID \ EFI_GUID(0xead2005e, 0x7780, 0x400b, 0x93, 0x48, \ 0xa2, 0x82, 0xeb, 0x85, 0x8b, 0x6b) struct efi_fw_image fw_images[] = { { .image_type_id = IMX_BOOT_IMAGE_GUID, .fw_name = u"IMX8MM-EVK-RAW", .image_index = 1, }, }; struct efi_capsule_update_info update_info = { .dfu_string = "mmc 2=flash-bin raw 0x42 0x2000 mmcpart 1", .num_images = ARRAY_SIZE(fw_images), .images = fw_images, }; #endif /* EFI_HAVE_CAPSULE_SUPPORT */ #if IS_ENABLED(CONFIG_FEC_MXC) static int setup_fec(void) { struct iomuxc_gpr_base_regs *gpr = (struct iomuxc_gpr_base_regs *)IOMUXC_GPR_BASE_ADDR; /* Use 125M anatop REF_CLK1 for ENET1, not from external */ clrsetbits_le32(&gpr->gpr[1], 0x2000, 0); return 0; } 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_init(void) { if (IS_ENABLED(CONFIG_FEC_MXC)) setup_fec(); return 0; } int board_mmc_get_env_dev(int devno) { return devno; } int board_late_init(void) { if (IS_ENABLED(CONFIG_ENV_IS_IN_MMC)) board_late_mmc_env_init(); if (IS_ENABLED(CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG)) { env_set("board_name", "EVK"); env_set("board_rev", "iMX8MM"); } return 0; }