From ece0a93062c8fde7c688f9d5fab49665c559e6c3 Mon Sep 17 00:00:00 2001 From: Pat Carr Date: Tue, 15 Sep 2020 19:42:12 -0700 Subject: [PATCH] Read MAC address from QSPI --- board/xilinx/common/board.c | 39 +++++++++++++++++++++---------------- drivers/misc/Kconfig | 8 ++++++++ 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/board/xilinx/common/board.c b/board/xilinx/common/board.c index 5fdd994705..e5d6a7abcf 100644 --- a/board/xilinx/common/board.c +++ b/board/xilinx/common/board.c @@ -9,31 +9,36 @@ #include #include #include "board.h" +#include +#include int zynq_board_read_rom_ethaddr(unsigned char *ethaddr) { int ret = -EINVAL; -#if defined(CONFIG_ZYNQ_GEM_I2C_MAC_OFFSET) - struct udevice *dev; - ofnode eeprom; - - eeprom = ofnode_get_chosen_node("xlnx,eeprom"); - if (!ofnode_valid(eeprom)) - return -ENODEV; +#if defined(CONFIG_ZYNQ_GEM_SPI_MAC_OFFSET) + struct spi_flash *flash; + flash = spi_flash_probe(CONFIG_SF_DEFAULT_BUS, + CONFIG_SF_DEFAULT_CS, + CONFIG_SF_DEFAULT_SPEED, + CONFIG_SF_DEFAULT_MODE); + + if (!flash) { + printf("no flash\n"); + printf("SPI(bus:%u cs:%u) probe failed\n", + CONFIG_SF_DEFAULT_BUS, + CONFIG_SF_DEFAULT_CS); + return 0; + } - debug("%s: Path to EEPROM %s\n", __func__, - ofnode_get_chosen_prop("xlnx,eeprom")); + if (spi_flash_read(flash, CONFIG_ZYNQ_GEM_SPI_MAC_OFFSET, 6, ethaddr)) + printf("%s:SPI MAC address read failed\n", __func__); + + printf("%s: SPI ethaddr: %02X:%02X:%02X:%02X:%02X:%02X\n", __func__, ethaddr[0], ethaddr[1], ethaddr[2], ethaddr[3], ethaddr[4], ethaddr[5]); - ret = uclass_get_device_by_ofnode(UCLASS_I2C_EEPROM, eeprom, &dev); - if (ret) - return ret; + if (flash) + spi_flash_free(flash); - ret = dm_i2c_read(dev, CONFIG_ZYNQ_GEM_I2C_MAC_OFFSET, ethaddr, 6); - if (ret) - debug("%s: I2C EEPROM MAC address read failed\n", __func__); - else - debug("%s: I2C EEPROM MAC %pM\n", __func__, ethaddr); #endif return ret; diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index 82bb093c56..828080cb57 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig @@ -334,6 +334,14 @@ config ZYNQ_GEM_I2C_MAC_OFFSET help Set the MAC offset for i2C. +config ZYNQ_GEM_SPI_MAC_OFFSET + hex "Set the SPI MAC offset" + default 0x0 + depends on DM_SPI + help + Set the MAC offset for spi. + + if I2C_EEPROM config SYS_I2C_EEPROM_ADDR -- 2.17.1