[PATCH qemu 05/38] aspeed: add support for the romulus-bmc board

Andrew Jeffery andrew at aj.id.au
Mon Nov 21 23:18:45 AEDT 2016


On Fri, 2016-11-18 at 15:21 +0100, Cédric Le Goater wrote:
> The Romulus machine is an OpenPOWER system with an AST2500 SoC for
> the BMC and a POWER9 chip for the host. It does not make much
> difference for qemu a part from the fact that the FMC controller has
> two SPI flash module slaves.
> 
> > Signed-off-by: Cédric Le Goater <clg at kaod.org>
> ---
>  hw/arm/aspeed.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 45 insertions(+)
> 
> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
> index 159d562e8912..aea73f79d92c 100644
> --- a/hw/arm/aspeed.c
> +++ b/hw/arm/aspeed.c
> @@ -41,8 +41,10 @@ typedef struct AspeedBoardConfig {
>  enum {
>      PALMETTO_BMC,
>      AST2500_EVB,
> +    ROMULUS_BMC,
>  };
>  
> +/* 0x120CE416 */
>  #define PALMETTO_BMC_HW_STRAP1 (                                        \
>          SCU_AST2400_HW_STRAP_DRAM_SIZE(DRAM_SIZE_256MB) |               \
>          SCU_AST2400_HW_STRAP_DRAM_CONFIG(2 /* DDR3 with CL=6, CWL=5 */) | \
> @@ -56,6 +58,7 @@ enum {
>          SCU_HW_STRAP_VGA_SIZE_SET(VGA_16M_DRAM) |                       \
>          SCU_AST2400_HW_STRAP_BOOT_MODE(AST2400_SPI_BOOT))
>  
> +/* 0xF100C2E6 */
>  #define AST2500_EVB_HW_STRAP1 ((                                        \
>          AST2500_HW_STRAP1_DEFAULTS |                                    \
>          SCU_AST2500_HW_STRAP_SPI_AUTOFETCH_ENABLE |                     \
> @@ -66,6 +69,17 @@ enum {
>          SCU_HW_STRAP_MAC0_RGMII) &                                      \
>          ~SCU_HW_STRAP_2ND_BOOT_WDT)
>  
> +/* 0xF10AE216 */
> +#define ROMULUS_BMC_HW_STRAP1 (                                     \
> +        AST2500_HW_STRAP1_DEFAULTS |                                    \

In the defaults it says we define 16MB VGA memory, but how do we strap
for that? It doesn't look like you can set bit 2 from the strapping
table, and if we're setting bit 3 as 0 then we're getting either 8 or
32MB of memory. Is there a typo in the datasheet?

> +        SCU_AST2500_HW_STRAP_SPI_AUTOFETCH_ENABLE |                     \
> +        SCU_AST2500_HW_STRAP_GPIO_STRAP_ENABLE |                        \
> +        SCU_AST2500_HW_STRAP_UART_DEBUG |                               \
> +        SCU_AST2500_HW_STRAP_DDR4_ENABLE |                              \
> +        SCU_AST2500_HW_STRAP_ACPI_ENABLE |                              \

Hello? Is that you Jon??

Does anyone know why we're enabling ACPI on Romulus?

> +        SCU_HW_STRAP_SPI_WIDTH |                                        \
> +        SCU_HW_STRAP_SPI_MODE(SCU_HW_STRAP_SPI_M_S_EN))

According to the schematic I have we're setting bit 27 (Fast reset mode
for ARM ICE debugger). But apparently that's not what's been read off
some existing Romulus?

> +
>  static const AspeedBoardConfig aspeed_boards[] = {
>      [PALMETTO_BMC] = {
>          .soc_name  = "ast2400-a0",
> @@ -79,6 +93,12 @@ static const AspeedBoardConfig aspeed_boards[] = {
>          .fmc_model = "n25q256a",
>          .spi_model = "mx25l25635e",
>      },
> +    [ROMULUS_BMC]  = {
> +        .soc_name  = "ast2500-a1",
> +        .hw_strap1 = ROMULUS_BMC_HW_STRAP1,
> +        .fmc_model = "n25q256a",
> +        .spi_model = "mx66l1g45g",
> +    },
>  };
>  
>  static void aspeed_board_init_flashes(AspeedSMCState *s, const char *flashtype,
> @@ -200,10 +220,35 @@ static const TypeInfo ast2500_evb_type = {
>      .class_init = ast2500_evb_class_init,
>  };
>  
> +static void romulus_bmc_init(MachineState *machine)
> +{
> +    aspeed_board_init(machine, &aspeed_boards[ROMULUS_BMC]);
> +}
> +
> +static void romulus_bmc_class_init(ObjectClass *oc, void *data)
> +{
> +    MachineClass *mc = MACHINE_CLASS(oc);
> +
> +    mc->desc = "OpenPOWER Romulus BMC (ARM1176)";
> +    mc->init = romulus_bmc_init;
> +    mc->max_cpus = 1;
> +    mc->no_sdcard = 1;
> +    mc->no_floppy = 1;
> +    mc->no_cdrom = 1;
> +    mc->no_parallel = 1;
> +}
> +
> +static const TypeInfo romulus_bmc_type = {
> +    .name = MACHINE_TYPE_NAME("romulus-bmc"),
> +    .parent = TYPE_MACHINE,
> +    .class_init = romulus_bmc_class_init,
> +};
> +
>  static void aspeed_machine_init(void)
>  {
>      type_register_static(&palmetto_bmc_type);
>      type_register_static(&ast2500_evb_type);
> +    type_register_static(&romulus_bmc_type);
>  }
>  
>  type_init(aspeed_machine_init)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: This is a digitally signed message part
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20161121/a77c8b99/attachment.sig>


More information about the openbmc mailing list