diff options
Diffstat (limited to 'board/compulab')
22 files changed, 114 insertions, 27 deletions
diff --git a/board/compulab/cl-som-imx7/cl-som-imx7.c b/board/compulab/cl-som-imx7/cl-som-imx7.c index af19a658b54..7853c4d024a 100644 --- a/board/compulab/cl-som-imx7/cl-som-imx7.c +++ b/board/compulab/cl-som-imx7/cl-som-imx7.c @@ -7,7 +7,7 @@ * Author: Uri Mashiach <uri.mashiach@compulab.co.il> */ -#include <common.h> +#include <config.h> #include <env.h> #include <init.h> #include <mmc.h> diff --git a/board/compulab/cl-som-imx7/common.c b/board/compulab/cl-som-imx7/common.c index 40ba0f7a960..ae8e8346620 100644 --- a/board/compulab/cl-som-imx7/common.c +++ b/board/compulab/cl-som-imx7/common.c @@ -7,7 +7,6 @@ * Author: Uri Mashiach <uri.mashiach@compulab.co.il> */ -#include <common.h> #include <fsl_esdhc_imx.h> #include <asm-generic/gpio.h> #include "common.h" diff --git a/board/compulab/cl-som-imx7/mux.c b/board/compulab/cl-som-imx7/mux.c index 18f16a48738..25123ee145a 100644 --- a/board/compulab/cl-som-imx7/mux.c +++ b/board/compulab/cl-som-imx7/mux.c @@ -7,7 +7,7 @@ * Author: Uri Mashiach <uri.mashiach@compulab.co.il> */ -#include <common.h> +#include <linux/kernel.h> #include <asm/mach-imx/iomux-v3.h> #include <asm/arch-mx7/mx7-pins.h> diff --git a/board/compulab/cl-som-imx7/spl.c b/board/compulab/cl-som-imx7/spl.c index 98c3b831f1e..9b6bbb974da 100644 --- a/board/compulab/cl-som-imx7/spl.c +++ b/board/compulab/cl-som-imx7/spl.c @@ -7,7 +7,6 @@ * Author: Uri Mashiach <uri.mashiach@compulab.co.il> */ -#include <common.h> #include <hang.h> #include <init.h> #include <spl.h> diff --git a/board/compulab/cm_fx6/cm_fx6.c b/board/compulab/cm_fx6/cm_fx6.c index 7bce09e432c..4a6cc3e5630 100644 --- a/board/compulab/cm_fx6/cm_fx6.c +++ b/board/compulab/cm_fx6/cm_fx6.c @@ -7,7 +7,7 @@ * Author: Nikita Kiryanov <nikita@compulab.co.il> */ -#include <common.h> +#include <config.h> #include <ahci.h> #include <dm.h> #include <dwc_ahsata.h> diff --git a/board/compulab/cm_fx6/common.c b/board/compulab/cm_fx6/common.c index ed8c7a3bf5f..a71861b1731 100644 --- a/board/compulab/cm_fx6/common.c +++ b/board/compulab/cm_fx6/common.c @@ -7,7 +7,6 @@ * Author: Nikita Kiryanov <nikita@compulab.co.il> */ -#include <common.h> #include <asm/arch/sys_proto.h> #include <asm/gpio.h> #include <asm/mach-imx/spi.h> diff --git a/board/compulab/cm_fx6/spl.c b/board/compulab/cm_fx6/spl.c index 079f196200e..b11bf2d28c6 100644 --- a/board/compulab/cm_fx6/spl.c +++ b/board/compulab/cm_fx6/spl.c @@ -7,7 +7,6 @@ * Author: Nikita Kiryanov <nikita@compulab.co.il> */ -#include <common.h> #include <clock_legacy.h> #include <hang.h> #include <init.h> diff --git a/board/compulab/cm_t43/cm_t43.c b/board/compulab/cm_t43/cm_t43.c index 5df378a62e3..181581926c3 100644 --- a/board/compulab/cm_t43/cm_t43.c +++ b/board/compulab/cm_t43/cm_t43.c @@ -3,7 +3,7 @@ * Copyright (C) 2015 Compulab, Ltd. */ -#include <common.h> +#include <config.h> #include <i2c.h> #include <miiphy.h> #include <cpsw.h> diff --git a/board/compulab/cm_t43/mux.c b/board/compulab/cm_t43/mux.c index 778ea05e84c..f10910565d5 100644 --- a/board/compulab/cm_t43/mux.c +++ b/board/compulab/cm_t43/mux.c @@ -3,7 +3,6 @@ * Copyright (C) 2015 Compulab, Ltd. */ -#include <common.h> #include <asm/arch/sys_proto.h> #include <asm/arch/mux.h> #include "board.h" diff --git a/board/compulab/cm_t43/spl.c b/board/compulab/cm_t43/spl.c index a6223a477fe..212bfeb5c30 100644 --- a/board/compulab/cm_t43/spl.c +++ b/board/compulab/cm_t43/spl.c @@ -3,7 +3,7 @@ * Copyright (C) 2016 Compulab, Ltd. */ -#include <common.h> +#include <config.h> #include <hang.h> #include <init.h> #include <spl.h> diff --git a/board/compulab/common/common.c b/board/compulab/common/common.c index 528c97df19a..6ffebe6bdb4 100644 --- a/board/compulab/common/common.c +++ b/board/compulab/common/common.c @@ -5,7 +5,6 @@ * Authors: Igor Grinberg <grinberg@compulab.co.il> */ -#include <common.h> #include <malloc.h> #include <asm/bootm.h> #include <asm/gpio.h> diff --git a/board/compulab/common/eeprom.c b/board/compulab/common/eeprom.c index c4b257f851d..efdaf342d5c 100644 --- a/board/compulab/common/eeprom.c +++ b/board/compulab/common/eeprom.c @@ -6,13 +6,13 @@ * Igor Grinberg <grinberg@compulab.co.il> */ -#include <common.h> -#include <eeprom.h> #include <i2c.h> +#include <vsprintf.h> #include <eeprom_layout.h> #include <eeprom_field.h> #include <asm/setup.h> #include <linux/kernel.h> +#include <linux/string.h> #include "eeprom.h" #define EEPROM_LAYOUT_VER_OFFSET 44 diff --git a/board/compulab/common/omap3_smc911x.c b/board/compulab/common/omap3_smc911x.c index f0d365272c1..411fc4943ba 100644 --- a/board/compulab/common/omap3_smc911x.c +++ b/board/compulab/common/omap3_smc911x.c @@ -5,7 +5,6 @@ * Authors: Igor Grinberg <grinberg@compulab.co.il> */ -#include <common.h> #include <netdev.h> #include <linux/delay.h> diff --git a/board/compulab/imx8mm-cl-iot-gate/ddr/ddr.c b/board/compulab/imx8mm-cl-iot-gate/ddr/ddr.c index b230478b611..6a3d816a48a 100644 --- a/board/compulab/imx8mm-cl-iot-gate/ddr/ddr.c +++ b/board/compulab/imx8mm-cl-iot-gate/ddr/ddr.c @@ -5,7 +5,6 @@ * */ -#include <common.h> #include <spl.h> #include <asm/io.h> #include <errno.h> @@ -47,7 +46,9 @@ struct lpddr4_desc { static const struct lpddr4_desc lpddr4_array[] = { { .name = "Nanya", .id = 0x05000010, .subind = 0xff, .size = 2048, .count = 1, .timing = &ucm_dram_timing_01061010}, - { .name = "Samsung", .id = 0x01061010, .subind = 0xff, + { .name = "Samsung", .id = 0x01061010, .subind = 0x04, + .size = 4096, .count = 1, .timing = &ucm_dram_timing_ff000110}, + { .name = "Samsung", .id = 0x01061010, .subind = 0x02, .size = 2048, .count = 1, .timing = &ucm_dram_timing_01061010}, { .name = "Kingston", .id = 0xff000010, .subind = 0x04, .size = 4096, .count = 1, .timing = &ucm_dram_timing_ff000110}, diff --git a/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_01061010.1_2.c b/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_01061010.1_2.c index 9019a1f2035..efcc95c739f 100644 --- a/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_01061010.1_2.c +++ b/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_01061010.1_2.c @@ -7,7 +7,6 @@ */ #include <linux/kernel.h> -#include <common.h> #include <asm/arch/ddr.h> #include <asm/arch/lpddr4_define.h> diff --git a/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_01061010.c b/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_01061010.c index 5141c04f12d..67f59ed9407 100644 --- a/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_01061010.c +++ b/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_01061010.c @@ -7,7 +7,6 @@ */ #include <linux/kernel.h> -#include <common.h> #include <asm/arch/ddr.h> #include <asm/arch/lpddr4_define.h> diff --git a/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_ff000110.c b/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_ff000110.c index 2334722497d..273ee89c0bc 100644 --- a/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_ff000110.c +++ b/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_ff000110.c @@ -7,7 +7,6 @@ */ #include <linux/kernel.h> -#include <common.h> #include <asm/arch/ddr.h> #include <asm/arch/lpddr4_define.h> diff --git a/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_ff020008.c b/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_ff020008.c index e65445e0155..1243800b324 100644 --- a/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_ff020008.c +++ b/board/compulab/imx8mm-cl-iot-gate/ddr/lpddr4_timing_ff020008.c @@ -7,7 +7,6 @@ */ #include <linux/kernel.h> -#include <common.h> #include <asm/arch/ddr.h> #include <asm/arch/lpddr4_define.h> diff --git a/board/compulab/imx8mm-cl-iot-gate/eeprom_spl.c b/board/compulab/imx8mm-cl-iot-gate/eeprom_spl.c index 90cc33a6e46..1256848f9a9 100644 --- a/board/compulab/imx8mm-cl-iot-gate/eeprom_spl.c +++ b/board/compulab/imx8mm-cl-iot-gate/eeprom_spl.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0+ /* (C) Copyright 2019 CompuLab, Ltd. <www.compulab.co.il> */ -#include <common.h> +#include <config.h> #include <i2c.h> #include <linux/kernel.h> #include <asm/arch/imx8mq_pins.h> diff --git a/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c b/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c index af070ec315c..bda7aac5be4 100644 --- a/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c +++ b/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c @@ -4,11 +4,11 @@ * Copyright 2020 Linaro */ -#include <common.h> #include <efi.h> #include <efi_loader.h> #include <env.h> #include <extension_board.h> +#include <fdt_support.h> #include <hang.h> #include <i2c.h> #include <init.h> @@ -31,6 +31,8 @@ DECLARE_GLOBAL_DATA_PTR; +static int fec_phyaddr = -1; + #if IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) struct efi_fw_image fw_images[] = { #if defined(CONFIG_TARGET_IMX8MM_CL_IOT_GATE) @@ -110,10 +112,72 @@ static int setup_fec(void) return 0; } +#define FDT_PHYADDR "/soc@0/bus@30800000/ethernet@30be0000/mdio/ethernet-phy@0" +#define FLIP_32B(val) (((val >> 24) & 0xff) | ((val << 8) & 0xff0000) | ((val >> 8) & 0xff00) | ((val << 24) & 0xff000000)) +static int fdt_set_fec_phy_addr(void *blob) +{ + u32 val; + + if (fec_phyaddr < 0) + return -EINVAL; + + val = FLIP_32B(fec_phyaddr); + return fdt_find_and_setprop(blob, FDT_PHYADDR, "reg", (const void *)&val, + sizeof(val), 0); +} + +int ft_board_setup(void *blob, struct bd_info *bd) +{ + fdt_set_fec_phy_addr(blob); + return 0; +} + +/* + * These are specific ID, purposed to distiguish between PHY vendors. + * These values are not equal to real vendors' OUI (half of MAC address) + */ +#define OUI_PHY_ATHEROS 0x1374 +#define OUI_PHY_REALTEK 0x0732 + int board_phy_config(struct phy_device *phydev) { - if (IS_ENABLED(CONFIG_FEC_MXC)) { + unsigned int model, rev, oui; + int phyid1, phyid2; + unsigned int reg; + + if (!IS_ENABLED(CONFIG_FEC_MXC)) + return 0; + + phyid1 = phy_read(phydev, MDIO_DEVAD_NONE, MII_PHYSID1); + if (phyid1 < 0) { + printf("%s: PHYID1 registry read fail %i\n", __func__, phyid1); + return phyid1; + } + + phyid2 = phy_read(phydev, MDIO_DEVAD_NONE, MII_PHYSID2); + if (phyid2 < 0) { + printf("%s: PHYID2 registry read fail %i\n", __func__, phyid2); + return phyid2; + } + + reg = phyid2 | phyid1 << 16; + if (reg == 0xffff) { + printf("%s: There is no device @%i\n", __func__, phydev->addr); + return -ENODEV; + } + + rev = reg & 0xf; + reg >>= 4; + model = reg & 0x3f; + reg >>= 6; + oui = reg; + debug("%s: PHY @0x%x OUI 0x%06x model 0x%x rev 0x%x\n", + __func__, phydev->addr, oui, model, rev); + + switch (oui) { + case OUI_PHY_ATHEROS: /* enable rgmii rxc skew and phy mode select to RGMII copper */ + printf("phy: AR803x@%x\t", phydev->addr); phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x1f); phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x8); @@ -121,10 +185,45 @@ int board_phy_config(struct phy_device *phydev) phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x82ee); phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05); phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x100); + break; + case OUI_PHY_REALTEK: + printf("phy: RTL8211E@%x\t", phydev->addr); + /* RTL8211E-VB-CG - add TX and RX delay */ + unsigned short val; + + phy_write(phydev, MDIO_DEVAD_NONE, 0x1f, 0x07); + phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0xa4); + val = phy_read(phydev, MDIO_DEVAD_NONE, 0x1c); + val |= (0x1 << 13) | (0x1 << 12) | (0x1 << 11); + phy_write(phydev, MDIO_DEVAD_NONE, 0x1c, val); + /* LEDs: set to extension page */ + phy_write(phydev, MDIO_DEVAD_NONE, 0x1f, 0x0007); + /* extension Page44 */ + phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x002c); + phy_write(phydev, MDIO_DEVAD_NONE, 0x1c, 0x0430);//LCR + phy_write(phydev, MDIO_DEVAD_NONE, 0x1a, 0x0010);//LACR + /* + * To disable EEE LED mode (blinking .4s/2s) + * Extension Page5 + */ + phy_write(phydev, MDIO_DEVAD_NONE, 0x1f, 0x0005); + phy_write(phydev, MDIO_DEVAD_NONE, 0x05, 0x8b82);//magic const + phy_write(phydev, MDIO_DEVAD_NONE, 0x06, 0x052b);//magic const + + phy_write(phydev, MDIO_DEVAD_NONE, 0x1f, 0x00);// Back to Page0 - if (phydev->drv->config) - phydev->drv->config(phydev); + break; + default: + printf("%s: ERROR: unknown PHY @0x%x OUI 0x%06x model 0x%x rev 0x%x\n", + __func__, phydev->addr, oui, model, rev); + return -ENOSYS; } + + fec_phyaddr = phydev->addr; + + if (phydev->drv->config) + phydev->drv->config(phydev); + return 0; } diff --git a/board/compulab/imx8mm-cl-iot-gate/spl.c b/board/compulab/imx8mm-cl-iot-gate/spl.c index 19c1acd8a52..6d9af2538b6 100644 --- a/board/compulab/imx8mm-cl-iot-gate/spl.c +++ b/board/compulab/imx8mm-cl-iot-gate/spl.c @@ -4,7 +4,6 @@ * Copyright 2020 Linaro */ -#include <common.h> #include <command.h> #include <cpu_func.h> #include <hang.h> diff --git a/board/compulab/trimslice/trimslice.c b/board/compulab/trimslice/trimslice.c index 21ff0cda7f7..af05c0c0f05 100644 --- a/board/compulab/trimslice/trimslice.c +++ b/board/compulab/trimslice/trimslice.c @@ -4,7 +4,6 @@ * NVIDIA Corporation <www.nvidia.com> */ -#include <common.h> #include <asm/io.h> #include <asm/arch/tegra.h> #include <asm/arch/clock.h> |