// SPDX-License-Identifier: GPL-2.0+ /* * Copyright 2018 NXP * Copyright 2020 Linaro */ #include #include #include #include #include #include #include #include DECLARE_GLOBAL_DATA_PTR; static int setup_fec(void) { if (IS_ENABLED(CONFIG_FEC_MXC)) { 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) { if (IS_ENABLED(CONFIG_FEC_MXC)) { /* 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; } 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_VARS_UBOOT_RUNTIME_CONFIG)) { env_set("board_name", "IOT-GATE-IMX8"); env_set("board_rev", "SBC-IOTMX8"); } return 0; }