Message ID | 20220513170715.43475-10-eajames@linux.ibm.com |
---|---|
State | New |
Headers | show |
Series | ast2600: Add I2C TPMv2 driver | expand |
On Fri, 13 May 2022 at 17:07, Eddie James <eajames@linux.ibm.com> wrote: > > Support IBM-specific options for POWER10+ servers built on AST2600 > BMC. Enabling the TPM command and the TPM2_TIS_I2C option adds 32.6KB to the u-boot image, bringing the total to 406KB. > > Signed-off-by: Eddie James <eajames@linux.ibm.com> > --- > arch/arm/mach-aspeed/ast2600/Kconfig | 7 ++ > board/aspeed/ast2600_ibm/Kconfig | 13 +++ > board/aspeed/ast2600_ibm/Makefile | 1 + > board/aspeed/ast2600_ibm/ibm.c | 46 +++++++++ > configs/ast2600_ibm_defconfig | 137 +++++++++++++++++++++++++++ > 5 files changed, 204 insertions(+) > create mode 100644 board/aspeed/ast2600_ibm/Kconfig > create mode 100644 board/aspeed/ast2600_ibm/Makefile > create mode 100644 board/aspeed/ast2600_ibm/ibm.c > create mode 100644 configs/ast2600_ibm_defconfig I don't want to end up with defconfigs for every machine we support. Is there a way we can avoid that? > > diff --git a/arch/arm/mach-aspeed/ast2600/Kconfig b/arch/arm/mach-aspeed/ast2600/Kconfig > index fcdc425de5..412ea639ad 100644 > --- a/arch/arm/mach-aspeed/ast2600/Kconfig > +++ b/arch/arm/mach-aspeed/ast2600/Kconfig > @@ -31,6 +31,12 @@ config TARGET_SLT_AST2600 > help > SLT-AST2600 is Aspeed SLT board for AST2600 chip. > > +config TARGET_AST2600_IBM > + bool "AST2600-IBM" > + depends on ASPEED_AST2600 > + help > + AST2600-IBM is IBM boards for AST2600 BMC based P0WER10+ servers > + > config TARGET_AST2600_INTEL > bool "AST2600-INTEL" > depends on ASPEED_AST2600 > @@ -43,6 +49,7 @@ endchoice > source "board/aspeed/evb_ast2600/Kconfig" > source "board/aspeed/fpga_ast2600/Kconfig" > source "board/aspeed/slt_ast2600/Kconfig" > +source "board/aspeed/ast2600_ibm/Kconfig" > source "board/aspeed/ast2600_intel/Kconfig" > > endif > diff --git a/board/aspeed/ast2600_ibm/Kconfig b/board/aspeed/ast2600_ibm/Kconfig > new file mode 100644 > index 0000000000..38ee579ed7 > --- /dev/null > +++ b/board/aspeed/ast2600_ibm/Kconfig > @@ -0,0 +1,13 @@ > +if TARGET_AST2600_IBM > + > +config SYS_BOARD > + default "ast2600_ibm" > + > +config SYS_VENDOR > + default "aspeed" > + > +config SYS_CONFIG_NAME > + string "board configuration name" > + default "ast2600_ibm" > + > +endif > diff --git a/board/aspeed/ast2600_ibm/Makefile b/board/aspeed/ast2600_ibm/Makefile > new file mode 100644 > index 0000000000..ae1aded893 > --- /dev/null > +++ b/board/aspeed/ast2600_ibm/Makefile > @@ -0,0 +1 @@ > +obj-y += ibm.o > diff --git a/board/aspeed/ast2600_ibm/ibm.c b/board/aspeed/ast2600_ibm/ibm.c > new file mode 100644 > index 0000000000..d9e06fafe0 > --- /dev/null > +++ b/board/aspeed/ast2600_ibm/ibm.c > @@ -0,0 +1,46 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright 2022 IBM Corp. > + */ > + > +#include <common.h> > +#if defined(CONFIG_TPM_V2) The headers will always exist, so this is unnecessary. Even better, we know this machine will always have a TPM, so can we select it in > +#include <dm/uclass.h> > +#include <tpm-common.h> > +#include <tpm-v2.h> > +#endif > + > +__weak int board_late_init(void) > +{ > +#if defined(CONFIG_TPM_V2) > + int rc; > + struct udevice *dev; > + /* > + * The digest is just an arbitrary sequence for now to ensure that the > + * TPM gets "poisoned." > + */ > + unsigned char digest[32] = { const > + 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x00, 0x01, > + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, > + 0xa0, 0xb1, 0xc2, 0xd3, 0xe4, 0xf5, 0x06, 0x17, > + 0x28, 0x39, 0x4a, 0x5b, 0x6c, 0x7d, 0x8e, 0x9f > + }; > + > + rc = uclass_first_device_err(UCLASS_TPM, &dev); > + if (rc) > + return 0; > + > + rc = tpm_init(dev); > + if (rc) > + return 0; > + > + rc = tpm2_startup(dev, TPM2_SU_CLEAR); > + if (rc) > + return 0; > + > + rc = tpm2_pcr_extend(dev, 0, digest); > + if (!rc) > + printf("TPM: PCR0 extended.\n"); > +#endif > + return 0; > +} > diff --git a/configs/ast2600_ibm_defconfig b/configs/ast2600_ibm_defconfig > new file mode 100644 > index 0000000000..3fe85bc57a > --- /dev/null > +++ b/configs/ast2600_ibm_defconfig > @@ -0,0 +1,137 @@ > +CONFIG_ARM=y > +CONFIG_SYS_CONFIG_NAME="evb_ast2600_spl_emmc" > +CONFIG_SYS_DCACHE_OFF=y > +CONFIG_POSITION_INDEPENDENT=y > +CONFIG_SYS_THUMB_BUILD=y > +# CONFIG_SPL_USE_ARCH_MEMCPY is not set > +# CONFIG_SPL_USE_ARCH_MEMSET is not set > +CONFIG_SPL_LDSCRIPT="arch/$(ARCH)/mach-aspeed/ast2600/u-boot-spl.lds" > +CONFIG_ARCH_ASPEED=y > +CONFIG_SYS_TEXT_BASE=0x81000000 > +CONFIG_ASPEED_AST2600=y > +# CONFIG_ASPEED_LOADERS is not set > +CONFIG_TARGET_AST2600_IBM=y > +CONFIG_DEFAULT_DEVICE_TREE="ast2600-rainier" > +CONFIG_SPL_GPIO_SUPPORT=y > +CONFIG_SPL_LIBCOMMON_SUPPORT=y > +CONFIG_SPL_LIBGENERIC_SUPPORT=y > +CONFIG_SYS_MALLOC_F_LEN=0x2000 > +CONFIG_SPL_MMC_SUPPORT=y > +CONFIG_SPL_SERIAL_SUPPORT=y > +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y > +CONFIG_ENV_SIZE=0x10000 > +CONFIG_ENV_OFFSET=0x5000 > +CONFIG_SPL_SYS_MALLOC_F_LEN=0x1000 > +CONFIG_SPL=y > +CONFIG_SPL_STACK_R_ADDR=0x90300000 > +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y > +CONFIG_ARMV7_PSCI_NR_CPUS=2 > +CONFIG_NR_DRAM_BANKS=1 > +CONFIG_FIT=y > +CONFIG_FIT_ENABLE_SHA512_SUPPORT=y > +CONFIG_FIT_SIGNATURE=y > +CONFIG_SPL_FIT_SIGNATURE=y > +CONFIG_SPL_LOAD_FIT=y > +CONFIG_USE_BOOTARGS=y > +CONFIG_BOOTARGS="console=ttyS4,115200n8 root=/dev/ram rw" > +CONFIG_USE_BOOTCOMMAND=y > +CONFIG_BOOTCOMMAND="bootm 20100000" > +CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y > +CONFIG_DISPLAY_BOARDINFO_LATE=y > +CONFIG_ARCH_EARLY_INIT_R=y > +CONFIG_BOARD_LATE_INIT=y > +CONFIG_SPL_BOARD_INIT=y > +# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set > +CONFIG_SPL_SYS_MALLOC_SIMPLE=y > +CONFIG_SPL_STACK_R=y > +CONFIG_SPL_SEPARATE_BSS=y > +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y > +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x80 > +CONFIG_SPL_SHA512_SUPPORT=y > +CONFIG_SPL_FIT_IMAGE_TINY=y > +CONFIG_SPL_DM_RESET=y > +CONFIG_SPL_RAM_SUPPORT=y > +CONFIG_SPL_RAM_DEVICE=y > +CONFIG_SPL_WATCHDOG_SUPPORT=y > +CONFIG_SPL_YMODEM_SUPPORT=y > +CONFIG_HUSH_PARSER=y > +# CONFIG_AUTO_COMPLETE is not set > +CONFIG_SYS_PROMPT="ast# " > +CONFIG_CMD_BOOTZ=y > +# CONFIG_CMD_ELF is not set > +# CONFIG_CMD_IMI is not set > +# CONFIG_CMD_XIMG is not set > +CONFIG_CMD_MEMTEST=y > +CONFIG_SYS_ALT_MEMTEST=y > +CONFIG_CMD_CLK=y > +CONFIG_CMD_GPIO=y > +CONFIG_CMD_GPT=y > +# CONFIG_RANDOM_UUID is not set > +CONFIG_CMD_I2C=y > +CONFIG_CMD_MMC=y > +CONFIG_CMD_PART=y > +CONFIG_CMD_SF=y > +CONFIG_CMD_DHCP=y > +CONFIG_CMD_MII=y > +CONFIG_CMD_PING=y > +CONFIG_CMD_NCSI=y > +CONFIG_CMD_EXT2=y > +CONFIG_CMD_EXT4=y > +CONFIG_CMD_EXT4_WRITE=y > +CONFIG_CMD_FAT=y > +CONFIG_CMD_FS_GENERIC=y > +CONFIG_CMD_MTDPARTS=y > +# CONFIG_SPL_DOS_PARTITION is not set > +# CONFIG_SPL_EFI_PARTITION is not set > +CONFIG_SPL_OF_CONTROL=y > +CONFIG_ENV_IS_IN_MMC=y > +CONFIG_USE_DEFAULT_ENV_FILE=y > +CONFIG_DEFAULT_ENV_FILE="board/aspeed/ast2600_openbmc_mmc.txt" > +CONFIG_NET_RANDOM_ETHADDR=y > +CONFIG_SPL_DM=y > +CONFIG_REGMAP=y > +CONFIG_SYSCON=y > +CONFIG_SPL_OF_TRANSLATE=y > +CONFIG_CLK=y > +CONFIG_SPL_CLK=y > +CONFIG_ASPEED_HACE_V1=y > +CONFIG_DM_GPIO=y > +CONFIG_SPL_GPIO_HOG=y > +CONFIG_ASPEED_GPIO=y > +CONFIG_DM_I2C=y > +CONFIG_SYS_I2C_ASPEED=y > +CONFIG_MISC=y > +CONFIG_ASPEED_AHBC=y > +CONFIG_DM_MMC=y > +CONFIG_SPL_MMC_TINY=y > +CONFIG_MMC_SDHCI=y > +CONFIG_MMC_SDHCI_ASPEED=y > +CONFIG_DM_SPI_FLASH=y > +CONFIG_SPI_FLASH=y > +CONFIG_SPI_FLASH_GIGADEVICE=y > +CONFIG_SPI_FLASH_MACRONIX=y > +CONFIG_SPI_FLASH_SPANSION=y > +CONFIG_SPI_FLASH_STMICRO=y > +CONFIG_SPI_FLASH_WINBOND=y > +CONFIG_PHY_BROADCOM=y > +CONFIG_PHY_REALTEK=y > +CONFIG_PHY_NCSI=y > +CONFIG_DM_ETH=y > +CONFIG_PHY_GIGE=y > +CONFIG_FTGMAC100=y > +CONFIG_MDIO=y > +CONFIG_PHY=y > +CONFIG_PINCTRL=y > +CONFIG_RAM=y > +CONFIG_SPL_RAM=y > +CONFIG_DM_SERIAL=y > +CONFIG_SYS_NS16550=y > +CONFIG_SPI=y > +CONFIG_DM_SPI=y > +CONFIG_SYSRESET=y > +CONFIG_WDT=y > +CONFIG_USE_TINY_PRINTF=y > +CONFIG_SPL_TINY_MEMSET=y > +CONFIG_TPM=y > +CONFIG_TPM2_TIS_I2C=y > +# CONFIG_EFI_LOADER is not set > -- > 2.27.0 >
On 5/20/22 01:30, Joel Stanley wrote: > On Fri, 13 May 2022 at 17:07, Eddie James <eajames@linux.ibm.com> wrote: >> Support IBM-specific options for POWER10+ servers built on AST2600 >> BMC. > Enabling the TPM command and the TPM2_TIS_I2C option adds 32.6KB to > the u-boot image, bringing the total to 406KB. > > >> Signed-off-by: Eddie James <eajames@linux.ibm.com> >> --- >> arch/arm/mach-aspeed/ast2600/Kconfig | 7 ++ >> board/aspeed/ast2600_ibm/Kconfig | 13 +++ >> board/aspeed/ast2600_ibm/Makefile | 1 + >> board/aspeed/ast2600_ibm/ibm.c | 46 +++++++++ >> configs/ast2600_ibm_defconfig | 137 +++++++++++++++++++++++++++ >> 5 files changed, 204 insertions(+) >> create mode 100644 board/aspeed/ast2600_ibm/Kconfig >> create mode 100644 board/aspeed/ast2600_ibm/Makefile >> create mode 100644 board/aspeed/ast2600_ibm/ibm.c >> create mode 100644 configs/ast2600_ibm_defconfig > I don't want to end up with defconfigs for every machine we support. > Is there a way we can avoid that? I'm not sure how we could, unless we just select this board for openbmc defconfig, but that somewhat defeats the purpose of adding the new board. May as well just add the tpm poison to the EVB board code. > >> diff --git a/arch/arm/mach-aspeed/ast2600/Kconfig b/arch/arm/mach-aspeed/ast2600/Kconfig >> index fcdc425de5..412ea639ad 100644 >> --- a/arch/arm/mach-aspeed/ast2600/Kconfig >> +++ b/arch/arm/mach-aspeed/ast2600/Kconfig >> @@ -31,6 +31,12 @@ config TARGET_SLT_AST2600 >> help >> SLT-AST2600 is Aspeed SLT board for AST2600 chip. >> >> +config TARGET_AST2600_IBM >> + bool "AST2600-IBM" >> + depends on ASPEED_AST2600 >> + help >> + AST2600-IBM is IBM boards for AST2600 BMC based P0WER10+ servers >> + >> config TARGET_AST2600_INTEL >> bool "AST2600-INTEL" >> depends on ASPEED_AST2600 >> @@ -43,6 +49,7 @@ endchoice >> source "board/aspeed/evb_ast2600/Kconfig" >> source "board/aspeed/fpga_ast2600/Kconfig" >> source "board/aspeed/slt_ast2600/Kconfig" >> +source "board/aspeed/ast2600_ibm/Kconfig" >> source "board/aspeed/ast2600_intel/Kconfig" >> >> endif >> diff --git a/board/aspeed/ast2600_ibm/Kconfig b/board/aspeed/ast2600_ibm/Kconfig >> new file mode 100644 >> index 0000000000..38ee579ed7 >> --- /dev/null >> +++ b/board/aspeed/ast2600_ibm/Kconfig >> @@ -0,0 +1,13 @@ >> +if TARGET_AST2600_IBM >> + >> +config SYS_BOARD >> + default "ast2600_ibm" >> + >> +config SYS_VENDOR >> + default "aspeed" >> + >> +config SYS_CONFIG_NAME >> + string "board configuration name" >> + default "ast2600_ibm" >> + >> +endif >> diff --git a/board/aspeed/ast2600_ibm/Makefile b/board/aspeed/ast2600_ibm/Makefile >> new file mode 100644 >> index 0000000000..ae1aded893 >> --- /dev/null >> +++ b/board/aspeed/ast2600_ibm/Makefile >> @@ -0,0 +1 @@ >> +obj-y += ibm.o >> diff --git a/board/aspeed/ast2600_ibm/ibm.c b/board/aspeed/ast2600_ibm/ibm.c >> new file mode 100644 >> index 0000000000..d9e06fafe0 >> --- /dev/null >> +++ b/board/aspeed/ast2600_ibm/ibm.c >> @@ -0,0 +1,46 @@ >> +// SPDX-License-Identifier: GPL-2.0 >> +/* >> + * Copyright 2022 IBM Corp. >> + */ >> + >> +#include <common.h> >> +#if defined(CONFIG_TPM_V2) > The headers will always exist, so this is unnecessary. > > Even better, we know this machine will always have a TPM, so can we select it in Good idea. > >> +#include <dm/uclass.h> >> +#include <tpm-common.h> >> +#include <tpm-v2.h> >> +#endif >> + >> +__weak int board_late_init(void) >> +{ >> +#if defined(CONFIG_TPM_V2) >> + int rc; >> + struct udevice *dev; >> + /* >> + * The digest is just an arbitrary sequence for now to ensure that the >> + * TPM gets "poisoned." >> + */ >> + unsigned char digest[32] = { > const Ack. > >> + 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x00, 0x01, >> + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, >> + 0xa0, 0xb1, 0xc2, 0xd3, 0xe4, 0xf5, 0x06, 0x17, >> + 0x28, 0x39, 0x4a, 0x5b, 0x6c, 0x7d, 0x8e, 0x9f >> + }; >> + >> + rc = uclass_first_device_err(UCLASS_TPM, &dev); >> + if (rc) >> + return 0; >> + >> + rc = tpm_init(dev); >> + if (rc) >> + return 0; >> + >> + rc = tpm2_startup(dev, TPM2_SU_CLEAR); >> + if (rc) >> + return 0; >> + >> + rc = tpm2_pcr_extend(dev, 0, digest); >> + if (!rc) >> + printf("TPM: PCR0 extended.\n"); >> +#endif >> + return 0; >> +} >> diff --git a/configs/ast2600_ibm_defconfig b/configs/ast2600_ibm_defconfig >> new file mode 100644 >> index 0000000000..3fe85bc57a >> --- /dev/null >> +++ b/configs/ast2600_ibm_defconfig >> @@ -0,0 +1,137 @@ >> +CONFIG_ARM=y >> +CONFIG_SYS_CONFIG_NAME="evb_ast2600_spl_emmc" >> +CONFIG_SYS_DCACHE_OFF=y >> +CONFIG_POSITION_INDEPENDENT=y >> +CONFIG_SYS_THUMB_BUILD=y >> +# CONFIG_SPL_USE_ARCH_MEMCPY is not set >> +# CONFIG_SPL_USE_ARCH_MEMSET is not set >> +CONFIG_SPL_LDSCRIPT="arch/$(ARCH)/mach-aspeed/ast2600/u-boot-spl.lds" >> +CONFIG_ARCH_ASPEED=y >> +CONFIG_SYS_TEXT_BASE=0x81000000 >> +CONFIG_ASPEED_AST2600=y >> +# CONFIG_ASPEED_LOADERS is not set >> +CONFIG_TARGET_AST2600_IBM=y >> +CONFIG_DEFAULT_DEVICE_TREE="ast2600-rainier" >> +CONFIG_SPL_GPIO_SUPPORT=y >> +CONFIG_SPL_LIBCOMMON_SUPPORT=y >> +CONFIG_SPL_LIBGENERIC_SUPPORT=y >> +CONFIG_SYS_MALLOC_F_LEN=0x2000 >> +CONFIG_SPL_MMC_SUPPORT=y >> +CONFIG_SPL_SERIAL_SUPPORT=y >> +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y >> +CONFIG_ENV_SIZE=0x10000 >> +CONFIG_ENV_OFFSET=0x5000 >> +CONFIG_SPL_SYS_MALLOC_F_LEN=0x1000 >> +CONFIG_SPL=y >> +CONFIG_SPL_STACK_R_ADDR=0x90300000 >> +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y >> +CONFIG_ARMV7_PSCI_NR_CPUS=2 >> +CONFIG_NR_DRAM_BANKS=1 >> +CONFIG_FIT=y >> +CONFIG_FIT_ENABLE_SHA512_SUPPORT=y >> +CONFIG_FIT_SIGNATURE=y >> +CONFIG_SPL_FIT_SIGNATURE=y >> +CONFIG_SPL_LOAD_FIT=y >> +CONFIG_USE_BOOTARGS=y >> +CONFIG_BOOTARGS="console=ttyS4,115200n8 root=/dev/ram rw" >> +CONFIG_USE_BOOTCOMMAND=y >> +CONFIG_BOOTCOMMAND="bootm 20100000" >> +CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y >> +CONFIG_DISPLAY_BOARDINFO_LATE=y >> +CONFIG_ARCH_EARLY_INIT_R=y >> +CONFIG_BOARD_LATE_INIT=y >> +CONFIG_SPL_BOARD_INIT=y >> +# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set >> +CONFIG_SPL_SYS_MALLOC_SIMPLE=y >> +CONFIG_SPL_STACK_R=y >> +CONFIG_SPL_SEPARATE_BSS=y >> +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y >> +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x80 >> +CONFIG_SPL_SHA512_SUPPORT=y >> +CONFIG_SPL_FIT_IMAGE_TINY=y >> +CONFIG_SPL_DM_RESET=y >> +CONFIG_SPL_RAM_SUPPORT=y >> +CONFIG_SPL_RAM_DEVICE=y >> +CONFIG_SPL_WATCHDOG_SUPPORT=y >> +CONFIG_SPL_YMODEM_SUPPORT=y >> +CONFIG_HUSH_PARSER=y >> +# CONFIG_AUTO_COMPLETE is not set >> +CONFIG_SYS_PROMPT="ast# " >> +CONFIG_CMD_BOOTZ=y >> +# CONFIG_CMD_ELF is not set >> +# CONFIG_CMD_IMI is not set >> +# CONFIG_CMD_XIMG is not set >> +CONFIG_CMD_MEMTEST=y >> +CONFIG_SYS_ALT_MEMTEST=y >> +CONFIG_CMD_CLK=y >> +CONFIG_CMD_GPIO=y >> +CONFIG_CMD_GPT=y >> +# CONFIG_RANDOM_UUID is not set >> +CONFIG_CMD_I2C=y >> +CONFIG_CMD_MMC=y >> +CONFIG_CMD_PART=y >> +CONFIG_CMD_SF=y >> +CONFIG_CMD_DHCP=y >> +CONFIG_CMD_MII=y >> +CONFIG_CMD_PING=y >> +CONFIG_CMD_NCSI=y >> +CONFIG_CMD_EXT2=y >> +CONFIG_CMD_EXT4=y >> +CONFIG_CMD_EXT4_WRITE=y >> +CONFIG_CMD_FAT=y >> +CONFIG_CMD_FS_GENERIC=y >> +CONFIG_CMD_MTDPARTS=y >> +# CONFIG_SPL_DOS_PARTITION is not set >> +# CONFIG_SPL_EFI_PARTITION is not set >> +CONFIG_SPL_OF_CONTROL=y >> +CONFIG_ENV_IS_IN_MMC=y >> +CONFIG_USE_DEFAULT_ENV_FILE=y >> +CONFIG_DEFAULT_ENV_FILE="board/aspeed/ast2600_openbmc_mmc.txt" >> +CONFIG_NET_RANDOM_ETHADDR=y >> +CONFIG_SPL_DM=y >> +CONFIG_REGMAP=y >> +CONFIG_SYSCON=y >> +CONFIG_SPL_OF_TRANSLATE=y >> +CONFIG_CLK=y >> +CONFIG_SPL_CLK=y >> +CONFIG_ASPEED_HACE_V1=y >> +CONFIG_DM_GPIO=y >> +CONFIG_SPL_GPIO_HOG=y >> +CONFIG_ASPEED_GPIO=y >> +CONFIG_DM_I2C=y >> +CONFIG_SYS_I2C_ASPEED=y >> +CONFIG_MISC=y >> +CONFIG_ASPEED_AHBC=y >> +CONFIG_DM_MMC=y >> +CONFIG_SPL_MMC_TINY=y >> +CONFIG_MMC_SDHCI=y >> +CONFIG_MMC_SDHCI_ASPEED=y >> +CONFIG_DM_SPI_FLASH=y >> +CONFIG_SPI_FLASH=y >> +CONFIG_SPI_FLASH_GIGADEVICE=y >> +CONFIG_SPI_FLASH_MACRONIX=y >> +CONFIG_SPI_FLASH_SPANSION=y >> +CONFIG_SPI_FLASH_STMICRO=y >> +CONFIG_SPI_FLASH_WINBOND=y >> +CONFIG_PHY_BROADCOM=y >> +CONFIG_PHY_REALTEK=y >> +CONFIG_PHY_NCSI=y >> +CONFIG_DM_ETH=y >> +CONFIG_PHY_GIGE=y >> +CONFIG_FTGMAC100=y >> +CONFIG_MDIO=y >> +CONFIG_PHY=y >> +CONFIG_PINCTRL=y >> +CONFIG_RAM=y >> +CONFIG_SPL_RAM=y >> +CONFIG_DM_SERIAL=y >> +CONFIG_SYS_NS16550=y >> +CONFIG_SPI=y >> +CONFIG_DM_SPI=y >> +CONFIG_SYSRESET=y >> +CONFIG_WDT=y >> +CONFIG_USE_TINY_PRINTF=y >> +CONFIG_SPL_TINY_MEMSET=y >> +CONFIG_TPM=y >> +CONFIG_TPM2_TIS_I2C=y >> +# CONFIG_EFI_LOADER is not set >> -- >> 2.27.0 >>
diff --git a/arch/arm/mach-aspeed/ast2600/Kconfig b/arch/arm/mach-aspeed/ast2600/Kconfig index fcdc425de5..412ea639ad 100644 --- a/arch/arm/mach-aspeed/ast2600/Kconfig +++ b/arch/arm/mach-aspeed/ast2600/Kconfig @@ -31,6 +31,12 @@ config TARGET_SLT_AST2600 help SLT-AST2600 is Aspeed SLT board for AST2600 chip. +config TARGET_AST2600_IBM + bool "AST2600-IBM" + depends on ASPEED_AST2600 + help + AST2600-IBM is IBM boards for AST2600 BMC based P0WER10+ servers + config TARGET_AST2600_INTEL bool "AST2600-INTEL" depends on ASPEED_AST2600 @@ -43,6 +49,7 @@ endchoice source "board/aspeed/evb_ast2600/Kconfig" source "board/aspeed/fpga_ast2600/Kconfig" source "board/aspeed/slt_ast2600/Kconfig" +source "board/aspeed/ast2600_ibm/Kconfig" source "board/aspeed/ast2600_intel/Kconfig" endif diff --git a/board/aspeed/ast2600_ibm/Kconfig b/board/aspeed/ast2600_ibm/Kconfig new file mode 100644 index 0000000000..38ee579ed7 --- /dev/null +++ b/board/aspeed/ast2600_ibm/Kconfig @@ -0,0 +1,13 @@ +if TARGET_AST2600_IBM + +config SYS_BOARD + default "ast2600_ibm" + +config SYS_VENDOR + default "aspeed" + +config SYS_CONFIG_NAME + string "board configuration name" + default "ast2600_ibm" + +endif diff --git a/board/aspeed/ast2600_ibm/Makefile b/board/aspeed/ast2600_ibm/Makefile new file mode 100644 index 0000000000..ae1aded893 --- /dev/null +++ b/board/aspeed/ast2600_ibm/Makefile @@ -0,0 +1 @@ +obj-y += ibm.o diff --git a/board/aspeed/ast2600_ibm/ibm.c b/board/aspeed/ast2600_ibm/ibm.c new file mode 100644 index 0000000000..d9e06fafe0 --- /dev/null +++ b/board/aspeed/ast2600_ibm/ibm.c @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright 2022 IBM Corp. + */ + +#include <common.h> +#if defined(CONFIG_TPM_V2) +#include <dm/uclass.h> +#include <tpm-common.h> +#include <tpm-v2.h> +#endif + +__weak int board_late_init(void) +{ +#if defined(CONFIG_TPM_V2) + int rc; + struct udevice *dev; + /* + * The digest is just an arbitrary sequence for now to ensure that the + * TPM gets "poisoned." + */ + unsigned char digest[32] = { + 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x00, 0x01, + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, + 0xa0, 0xb1, 0xc2, 0xd3, 0xe4, 0xf5, 0x06, 0x17, + 0x28, 0x39, 0x4a, 0x5b, 0x6c, 0x7d, 0x8e, 0x9f + }; + + rc = uclass_first_device_err(UCLASS_TPM, &dev); + if (rc) + return 0; + + rc = tpm_init(dev); + if (rc) + return 0; + + rc = tpm2_startup(dev, TPM2_SU_CLEAR); + if (rc) + return 0; + + rc = tpm2_pcr_extend(dev, 0, digest); + if (!rc) + printf("TPM: PCR0 extended.\n"); +#endif + return 0; +} diff --git a/configs/ast2600_ibm_defconfig b/configs/ast2600_ibm_defconfig new file mode 100644 index 0000000000..3fe85bc57a --- /dev/null +++ b/configs/ast2600_ibm_defconfig @@ -0,0 +1,137 @@ +CONFIG_ARM=y +CONFIG_SYS_CONFIG_NAME="evb_ast2600_spl_emmc" +CONFIG_SYS_DCACHE_OFF=y +CONFIG_POSITION_INDEPENDENT=y +CONFIG_SYS_THUMB_BUILD=y +# CONFIG_SPL_USE_ARCH_MEMCPY is not set +# CONFIG_SPL_USE_ARCH_MEMSET is not set +CONFIG_SPL_LDSCRIPT="arch/$(ARCH)/mach-aspeed/ast2600/u-boot-spl.lds" +CONFIG_ARCH_ASPEED=y +CONFIG_SYS_TEXT_BASE=0x81000000 +CONFIG_ASPEED_AST2600=y +# CONFIG_ASPEED_LOADERS is not set +CONFIG_TARGET_AST2600_IBM=y +CONFIG_DEFAULT_DEVICE_TREE="ast2600-rainier" +CONFIG_SPL_GPIO_SUPPORT=y +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_SYS_MALLOC_F_LEN=0x2000 +CONFIG_SPL_MMC_SUPPORT=y +CONFIG_SPL_SERIAL_SUPPORT=y +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y +CONFIG_ENV_SIZE=0x10000 +CONFIG_ENV_OFFSET=0x5000 +CONFIG_SPL_SYS_MALLOC_F_LEN=0x1000 +CONFIG_SPL=y +CONFIG_SPL_STACK_R_ADDR=0x90300000 +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y +CONFIG_ARMV7_PSCI_NR_CPUS=2 +CONFIG_NR_DRAM_BANKS=1 +CONFIG_FIT=y +CONFIG_FIT_ENABLE_SHA512_SUPPORT=y +CONFIG_FIT_SIGNATURE=y +CONFIG_SPL_FIT_SIGNATURE=y +CONFIG_SPL_LOAD_FIT=y +CONFIG_USE_BOOTARGS=y +CONFIG_BOOTARGS="console=ttyS4,115200n8 root=/dev/ram rw" +CONFIG_USE_BOOTCOMMAND=y +CONFIG_BOOTCOMMAND="bootm 20100000" +CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y +CONFIG_DISPLAY_BOARDINFO_LATE=y +CONFIG_ARCH_EARLY_INIT_R=y +CONFIG_BOARD_LATE_INIT=y +CONFIG_SPL_BOARD_INIT=y +# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set +CONFIG_SPL_SYS_MALLOC_SIMPLE=y +CONFIG_SPL_STACK_R=y +CONFIG_SPL_SEPARATE_BSS=y +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x80 +CONFIG_SPL_SHA512_SUPPORT=y +CONFIG_SPL_FIT_IMAGE_TINY=y +CONFIG_SPL_DM_RESET=y +CONFIG_SPL_RAM_SUPPORT=y +CONFIG_SPL_RAM_DEVICE=y +CONFIG_SPL_WATCHDOG_SUPPORT=y +CONFIG_SPL_YMODEM_SUPPORT=y +CONFIG_HUSH_PARSER=y +# CONFIG_AUTO_COMPLETE is not set +CONFIG_SYS_PROMPT="ast# " +CONFIG_CMD_BOOTZ=y +# CONFIG_CMD_ELF is not set +# CONFIG_CMD_IMI is not set +# CONFIG_CMD_XIMG is not set +CONFIG_CMD_MEMTEST=y +CONFIG_SYS_ALT_MEMTEST=y +CONFIG_CMD_CLK=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_GPT=y +# CONFIG_RANDOM_UUID is not set +CONFIG_CMD_I2C=y +CONFIG_CMD_MMC=y +CONFIG_CMD_PART=y +CONFIG_CMD_SF=y +CONFIG_CMD_DHCP=y +CONFIG_CMD_MII=y +CONFIG_CMD_PING=y +CONFIG_CMD_NCSI=y +CONFIG_CMD_EXT2=y +CONFIG_CMD_EXT4=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_CMD_FAT=y +CONFIG_CMD_FS_GENERIC=y +CONFIG_CMD_MTDPARTS=y +# CONFIG_SPL_DOS_PARTITION is not set +# CONFIG_SPL_EFI_PARTITION is not set +CONFIG_SPL_OF_CONTROL=y +CONFIG_ENV_IS_IN_MMC=y +CONFIG_USE_DEFAULT_ENV_FILE=y +CONFIG_DEFAULT_ENV_FILE="board/aspeed/ast2600_openbmc_mmc.txt" +CONFIG_NET_RANDOM_ETHADDR=y +CONFIG_SPL_DM=y +CONFIG_REGMAP=y +CONFIG_SYSCON=y +CONFIG_SPL_OF_TRANSLATE=y +CONFIG_CLK=y +CONFIG_SPL_CLK=y +CONFIG_ASPEED_HACE_V1=y +CONFIG_DM_GPIO=y +CONFIG_SPL_GPIO_HOG=y +CONFIG_ASPEED_GPIO=y +CONFIG_DM_I2C=y +CONFIG_SYS_I2C_ASPEED=y +CONFIG_MISC=y +CONFIG_ASPEED_AHBC=y +CONFIG_DM_MMC=y +CONFIG_SPL_MMC_TINY=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_ASPEED=y +CONFIG_DM_SPI_FLASH=y +CONFIG_SPI_FLASH=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_STMICRO=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_PHY_BROADCOM=y +CONFIG_PHY_REALTEK=y +CONFIG_PHY_NCSI=y +CONFIG_DM_ETH=y +CONFIG_PHY_GIGE=y +CONFIG_FTGMAC100=y +CONFIG_MDIO=y +CONFIG_PHY=y +CONFIG_PINCTRL=y +CONFIG_RAM=y +CONFIG_SPL_RAM=y +CONFIG_DM_SERIAL=y +CONFIG_SYS_NS16550=y +CONFIG_SPI=y +CONFIG_DM_SPI=y +CONFIG_SYSRESET=y +CONFIG_WDT=y +CONFIG_USE_TINY_PRINTF=y +CONFIG_SPL_TINY_MEMSET=y +CONFIG_TPM=y +CONFIG_TPM2_TIS_I2C=y +# CONFIG_EFI_LOADER is not set
Support IBM-specific options for POWER10+ servers built on AST2600 BMC. Signed-off-by: Eddie James <eajames@linux.ibm.com> --- arch/arm/mach-aspeed/ast2600/Kconfig | 7 ++ board/aspeed/ast2600_ibm/Kconfig | 13 +++ board/aspeed/ast2600_ibm/Makefile | 1 + board/aspeed/ast2600_ibm/ibm.c | 46 +++++++++ configs/ast2600_ibm_defconfig | 137 +++++++++++++++++++++++++++ 5 files changed, 204 insertions(+) create mode 100644 board/aspeed/ast2600_ibm/Kconfig create mode 100644 board/aspeed/ast2600_ibm/Makefile create mode 100644 board/aspeed/ast2600_ibm/ibm.c create mode 100644 configs/ast2600_ibm_defconfig