From patchwork Mon Jan 20 12:20:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baruch Siach X-Patchwork-Id: 239808 List-Id: U-Boot discussion From: baruch at tkos.co.il (Baruch Siach) Date: Mon, 20 Jan 2020 14:20:05 +0200 Subject: [PATCH v2 00/10] ARM: clearfog: add run-time board detect Message-ID: Newer revisions of SolidRun Clearfog Base/Pro carriers and Armada 388 SOM add EEPROM storage for board detection. This patch series adds support for reading EEPROM stored board information, and using it to set RAM training parameters, serdes configuration, and kernel DT selection. The information is stored in EEPROM in TLV format defined for the ONIE project. https://opencomputeproject.github.io/onie/design-spec/hw_requirements.html This series add the sys_eeprom command from ONIE carried U-Boot patch, with a number for changes as described in the patch log. The TLV format is unchanged. This series also adds support for the newly introduced single board, Aramda 385 based Clearfog GTR system. RAM configuration on that system requires both Armada 38x DDR clocks to be enabled. The first patch in this series adds the necessary code to allow per-board selection of DDR clock. Changes in v2: * Fix checkpatch issues in TLV EEPROM code * Make TLV EEPROM API independent of static storage for compatibility with pre-relocation code * Rename sys_eeprom to less generic tlv_eeprom throughout the code * Drop typedefs * Move board level TLV parse code to the common/ sub-directory for easier reuse in other SolidRun platforms * Integrate fixes from Joel Johnson: add missing u-boot/crc.h include; select SPL_DRIVERS_MISC_SUPPORT; fix build with CMD_TLV_EEPROM unset * Add review tags from Stefan Roese Baruch Siach (10): ddr: marvell: a38x: allow board specific clock out setup arm: mvebu: clearfog: enable both DDR clocks cmd: add tlv_eeprom command ARM: mvebu: clearfog: add EEPROM devices ARM: mvebu: clearfog: add support for EEPROM TLV info ARM: mvebu: clearfog: read basic TLV data ARM: mvebu: clearfog: print TLV stored product name ARM: mvebu: clearfog: run-time selection of DT file ARM: mvebu: clearfog: add Clearfog GTR support ARM: mvebu: clearfog: add Clearfog Base serdes configuration arch/arm/dts/armada-388-clearfog-u-boot.dtsi | 12 + arch/arm/dts/armada-388-clearfog.dts | 6 + .../arm/dts/armada-38x-solidrun-microsom.dtsi | 8 + arch/arm/mach-mvebu/Kconfig | 1 + board/solidrun/clearfog/clearfog.c | 72 +- board/solidrun/common/Makefile | 5 + board/solidrun/common/tlv_data.c | 102 ++ board/solidrun/common/tlv_data.h | 18 + cmd/Kconfig | 14 + cmd/Makefile | 2 + cmd/tlv_eeprom.c | 1105 +++++++++++++++++ configs/clearfog_defconfig | 4 + drivers/ddr/marvell/a38x/ddr3_training.c | 10 +- drivers/ddr/marvell/a38x/ddr_topology_def.h | 3 + include/tlv_eeprom.h | 164 +++ 15 files changed, 1522 insertions(+), 4 deletions(-) create mode 100644 board/solidrun/common/Makefile create mode 100644 board/solidrun/common/tlv_data.c create mode 100644 board/solidrun/common/tlv_data.h create mode 100644 cmd/tlv_eeprom.c create mode 100644 include/tlv_eeprom.h