qemu-stable
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH qemu v5] aspeed add montblanc bmc reference from fuji


From: Cédric Le Goater
Subject: Re: [PATCH qemu v5] aspeed add montblanc bmc reference from fuji
Date: Tue, 4 Jul 2023 16:07:14 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0

On 7/4/23 15:27, Sittisak Sinprem wrote:
Hi Meta Team,

the FRU EEPROM content, I think for now detail still be confidential,
Please confirm, Can we add the description in Qemu upstream following Cedric's 
request?

We don't need all the details, and not the confidential part of course.

C.


On Tue, Jul 4, 2023 at 6:19 PM Cédric Le Goater <clg@kaod.org 
<mailto:clg@kaod.org>> wrote:

    On 7/4/23 13:06, ~ssinprem wrote:
     > From: Sittisak Sinprem <ssinprem@celestica.com 
<mailto:ssinprem@celestica.com>>
     >
     > - I2C list follow I2C Tree v1.6 20230320
     > - fru eeprom data use FB FRU format version 4
     >
     > Signed-off-by: Sittisak Sinprem <ssinprem@celestica.com 
<mailto:ssinprem@celestica.com>>

    You shoot too fast :) Please add some description for the EEPROM contents.
    What they enable when the OS/FW boots is good to know for QEMU.

    Thanks,

    C.


     > ---
     >   docs/system/arm/aspeed.rst |  1 +
     >   hw/arm/aspeed.c            | 65 ++++++++++++++++++++++++++++++++++++++
     >   hw/arm/aspeed_eeprom.c     | 50 +++++++++++++++++++++++++++++
     >   hw/arm/aspeed_eeprom.h     |  7 ++++
     >   4 files changed, 123 insertions(+)
     >
     > diff --git a/docs/system/arm/aspeed.rst b/docs/system/arm/aspeed.rst
     > index 80538422a1..5e0824f48b 100644
     > --- a/docs/system/arm/aspeed.rst
     > +++ b/docs/system/arm/aspeed.rst
     > @@ -33,6 +33,7 @@ AST2600 SoC based machines :
     >   - ``tacoma-bmc``           OpenPOWER Witherspoon POWER9 AST2600 BMC
     >   - ``rainier-bmc``          IBM Rainier POWER10 BMC
     >   - ``fuji-bmc``             Facebook Fuji BMC
     > +- ``montblanc-bmc``        Facebook Montblanc BMC
     >   - ``bletchley-bmc``        Facebook Bletchley BMC
     >   - ``fby35-bmc``            Facebook fby35 BMC
     >   - ``qcom-dc-scm-v1-bmc``   Qualcomm DC-SCM V1 BMC
     > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
     > index 9fca644d92..bbb7a3392c 100644
     > --- a/hw/arm/aspeed.c
     > +++ b/hw/arm/aspeed.c
     > @@ -189,6 +189,10 @@ struct AspeedMachineState {
     >   #define FUJI_BMC_HW_STRAP1    0x00000000
     >   #define FUJI_BMC_HW_STRAP2    0x00000000
     >
     > +/* Montblanc hardware value */
     > +#define MONTBLANC_BMC_HW_STRAP1    0x00000000
     > +#define MONTBLANC_BMC_HW_STRAP2    0x00000000
     > +
     >   /* Bletchley hardware value */
     >   /* TODO: Leave same as EVB for now. */
     >   #define BLETCHLEY_BMC_HW_STRAP1 AST2600_EVB_HW_STRAP1
     > @@ -925,6 +929,41 @@ static void fuji_bmc_i2c_init(AspeedMachineState 
*bmc)
     >       }
     >   }
     >
     > +static void montblanc_bmc_i2c_init(AspeedMachineState *bmc)
     > +{
     > +    AspeedSoCState *soc = &bmc->soc;
     > +    I2CBus *i2c[16] = {};
     > +
     > +    for (int i = 0; i < 16; i++) {
     > +        i2c[i] = aspeed_i2c_get_bus(&soc->i2c, i);
     > +    }
     > +
     > +    /* Ref from Minipack3_I2C_Tree_V1.6 20230320 */
     > +    at24c_eeprom_init_rom(i2c[3], 0x56, 8192, montblanc_scm_fruid,
     > +                          montblanc_scm_fruid_len);
     > +    at24c_eeprom_init_rom(i2c[6], 0x53, 8192, montblanc_fcm_fruid,
     > +                          montblanc_fcm_fruid_len);
     > +
     > +    /* CPLD and FPGA */
     > +    at24c_eeprom_init(i2c[1], 0x35, 256);  /* SCM CPLD */
     > +    at24c_eeprom_init(i2c[5], 0x35, 256);  /* COMe CPLD TODO: need to 
update */
     > +    at24c_eeprom_init(i2c[12], 0x60, 256); /* MCB PWR CPLD */
     > +    at24c_eeprom_init(i2c[13], 0x35, 256); /* IOB FPGA */
     > +
     > +    /* on BMC board */
     > +    at24c_eeprom_init_rom(i2c[8], 0x51, 8192, montblanc_bmc_fruid,
     > +                          montblanc_bmc_fruid_len); /* BMC EEPROM */
     > +    i2c_slave_create_simple(i2c[8], TYPE_LM75, 0x48); /* Thermal Sensor 
*/
     > +
     > +    /* COMe Sensor/EEPROM */
     > +    at24c_eeprom_init(i2c[0], 0x56, 16384);          /* FRU EEPROM */
     > +    i2c_slave_create_simple(i2c[0], TYPE_LM75, 0x48); /* INLET Sensor */
     > +    i2c_slave_create_simple(i2c[0], TYPE_LM75, 0x4A); /* OUTLET Sensor 
*/
     > +
     > +    /* It expects a pca9555 but a pca9552 is compatible */
     > +    create_pca9552(soc, 4, 0x27);
     > +}
     > +
     >   #define TYPE_TMP421 "tmp421"
     >
     >   static void bletchley_bmc_i2c_init(AspeedMachineState *bmc)
     > @@ -1452,6 +1491,28 @@ static void 
aspeed_machine_fuji_class_init(ObjectClass *oc, void *data)
     >           aspeed_soc_num_cpus(amc->soc_name);
     >   };
     >
     > +#define MONTBLANC_BMC_RAM_SIZE ASPEED_RAM_SIZE(2 * GiB)
     > +
     > +static void aspeed_machine_montblanc_class_init(ObjectClass *oc, void 
*data)
     > +{
     > +    MachineClass *mc = MACHINE_CLASS(oc);
     > +    AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
     > +
     > +    mc->desc = "Facebook Montblanc BMC (Cortex-A7)";
     > +    amc->soc_name = "ast2600-a3";
     > +    amc->hw_strap1 = MONTBLANC_BMC_HW_STRAP1;
     > +    amc->hw_strap2 = MONTBLANC_BMC_HW_STRAP2;
     > +    amc->fmc_model = "mx66l1g45g";
     > +    amc->spi_model = "mx66l1g45g";
     > +    amc->num_cs = 2;
     > +    amc->macs_mask = ASPEED_MAC3_ON;
     > +    amc->i2c_init = montblanc_bmc_i2c_init;
     > +    amc->uart_default = ASPEED_DEV_UART1;
     > +    mc->default_ram_size = MONTBLANC_BMC_RAM_SIZE;
     > +    mc->default_cpus = mc->min_cpus = mc->max_cpus =
     > +        aspeed_soc_num_cpus(amc->soc_name);
     > +};
     > +
     >   #define BLETCHLEY_BMC_RAM_SIZE ASPEED_RAM_SIZE(2 * GiB)
     >
     >   static void aspeed_machine_bletchley_class_init(ObjectClass *oc, void 
*data)
     > @@ -1703,6 +1764,10 @@ static const TypeInfo aspeed_machine_types[] = {
     >           .name          = MACHINE_TYPE_NAME("fuji-bmc"),
     >           .parent        = TYPE_ASPEED_MACHINE,
     >           .class_init    = aspeed_machine_fuji_class_init,
     > +    }, {
     > +        .name          = MACHINE_TYPE_NAME("montblanc-bmc"),
     > +        .parent        = TYPE_ASPEED_MACHINE,
     > +        .class_init    = aspeed_machine_montblanc_class_init,
     >       }, {
     >           .name          = MACHINE_TYPE_NAME("bletchley-bmc"),
     >           .parent        = TYPE_ASPEED_MACHINE,
     > diff --git a/hw/arm/aspeed_eeprom.c b/hw/arm/aspeed_eeprom.c
     > index ace5266cec..8cc73f83dc 100644
     > --- a/hw/arm/aspeed_eeprom.c
     > +++ b/hw/arm/aspeed_eeprom.c
     > @@ -161,6 +161,53 @@ const uint8_t rainier_bmc_fruid[] = {
     >       0x31, 0x50, 0x46, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
     >   };
     >
     > +/* Montblanc BMC FRU */
     > +const uint8_t montblanc_scm_fruid[] = {
     > +    0xfb, 0xfb, 0x04, 0xff, 0x01, 0x0d, 0x4d, 0x49, 0x4e, 0x49, 0x50, 
0x41,
     > +    0x43, 0x4b, 0x33, 0x5f, 0x53, 0x43, 0x4d, 0x02, 0x08, 0x32, 0x30, 
0x30,
     > +    0x30, 0x32, 0x39, 0x34, 0x35, 0x04, 0x0c, 0x31, 0x33, 0x32, 0x30, 
0x30,
     > +    0x30, 0x31, 0x36, 0x34, 0x30, 0x31, 0x20, 0x05, 0x0c, 0x31, 0x33, 
0x31,
     > +    0x30, 0x30, 0x30, 0x31, 0x32, 0x37, 0x30, 0x31, 0x20, 0x06, 0x0c, 
0x52,
     > +    0x33, 0x32, 0x31, 0x34, 0x47, 0x30, 0x30, 0x30, 0x33, 0x30, 0x31, 
0x07,
     > +    0x0d, 0x41, 0x30, 0x33, 0x31, 0x33, 0x58, 0x58, 0x58, 0x58, 0x58, 
0x58,
     > +    0x58, 0x58, 0x08, 0x01, 0x01, 0x09, 0x01, 0x00, 0x0a, 0x01, 0x00, 
0x0b,
     > +    0x0d, 0x4d, 0x32, 0x32, 0x31, 0x33, 0x32, 0x33, 0x31, 0x37, 0x30, 
0x30,
     > +    0x30, 0x32, 0x0c, 0x03, 0x43, 0x4c, 0x53, 0x0d, 0x08, 0x32, 0x30, 
0x32,
     > +    0x33, 0x30, 0x35, 0x30, 0x31, 0x0e, 0x03, 0x57, 0x55, 0x53, 0x0f, 
0x03,
     > +    0x43, 0x54, 0x48, 0x10, 0x06, 0x01, 0x00, 0x00, 0x91, 0xdb, 0xb4, 
0x13,
     > +    0x03, 0x53, 0x43, 0x4d, 0xfa, 0x02, 0x02, 0x61,
     > +};
     > +
     > +const uint8_t montblanc_fcm_fruid[] = {
     > +    0xfb, 0xfb, 0x04, 0xff, 0x01, 0x0d, 0x4d, 0x49, 0x4e, 0x49, 0x50, 
0x41,
     > +    0x43, 0x4b, 0x33, 0x5f, 0x46, 0x43, 0x42, 0x02, 0x08, 0x33, 0x30, 
0x30,
     > +    0x30, 0x30, 0x31, 0x36, 0x31, 0x04, 0x0c, 0x31, 0x33, 0x32, 0x30, 
0x30,
     > +    0x30, 0x31, 0x36, 0x33, 0x30, 0x31, 0x20, 0x05, 0x0c, 0x31, 0x33, 
0x31,
     > +    0x30, 0x30, 0x30, 0x31, 0x33, 0x30, 0x30, 0x31, 0x20, 0x06, 0x0c, 
0x52,
     > +    0x33, 0x32, 0x31, 0x34, 0x47, 0x30, 0x30, 0x31, 0x32, 0x30, 0x31, 
0x07,
     > +    0x0d, 0x41, 0x31, 0x32, 0x31, 0x32, 0x58, 0x58, 0x58, 0x58, 0x58, 
0x58,
     > +    0x58, 0x58, 0x08, 0x01, 0x01, 0x09, 0x01, 0x00, 0x0a, 0x01, 0x00, 
0x0b,
     > +    0x0d, 0x46, 0x35, 0x30, 0x31, 0x33, 0x32, 0x33, 0x31, 0x37, 0x30, 
0x30,
     > +    0x30, 0x35, 0x0c, 0x03, 0x43, 0x4c, 0x53, 0x0d, 0x08, 0x32, 0x30, 
0x32,
     > +    0x33, 0x30, 0x35, 0x30, 0x31, 0x0e, 0x03, 0x57, 0x55, 0x53, 0x0f, 
0x03,
     > +    0x43, 0x54, 0x48, 0x10, 0x06, 0x02, 0x00, 0x00, 0x91, 0xdb, 0xb4, 
0x11,
     > +    0x06, 0x03, 0x00, 0x00, 0x91, 0xdb, 0xb4, 0x12, 0x02, 0x8a, 0x00, 
0x13,
     > +    0x03, 0x46, 0x43, 0x42, 0xfa, 0x02, 0x50, 0x47,
     > +};
     > +
     > +const uint8_t montblanc_bmc_fruid[] = {
     > +    0xfb, 0xfb, 0x04, 0xff, 0x01, 0x0d, 0x4d, 0x49, 0x4e, 0x49, 0x50, 
0x41,
     > +    0x43, 0x4b, 0x33, 0x5f, 0x42, 0x4d, 0x43, 0x04, 0x0c, 0x31, 0x33, 
0x32,
     > +    0x30, 0x30, 0x30, 0x31, 0x33, 0x36, 0x30, 0x31, 0x20, 0x05, 0x0c, 
0x31,
     > +    0x33, 0x31, 0x30, 0x30, 0x30, 0x30, 0x38, 0x36, 0x30, 0x35, 0x20, 
0x06,
     > +    0x0c, 0x52, 0x33, 0x30, 0x39, 0x37, 0x47, 0x30, 0x30, 0x30, 0x32, 
0x30,
     > +    0x37, 0x07, 0x0d, 0x42, 0x30, 0x32, 0x37, 0x34, 0x58, 0x58, 0x58, 
0x58,
     > +    0x58, 0x58, 0x58, 0x58, 0x08, 0x01, 0x04, 0x09, 0x01, 0x00, 0x0a, 
0x01,
     > +    0x00, 0x0c, 0x03, 0x43, 0x4c, 0x53, 0x0d, 0x08, 0x32, 0x30, 0x32, 
0x33,
     > +    0x30, 0x35, 0x30, 0x31, 0x0e, 0x03, 0x57, 0x55, 0x53, 0x0f, 0x03, 
0x43,
     > +    0x54, 0x48, 0x13, 0x03, 0x42, 0x4d, 0x43, 0xfa, 0x02, 0xef, 0xba,
     > +};
     > +
     >   const size_t tiogapass_bmc_fruid_len = sizeof(tiogapass_bmc_fruid);
     >   const size_t fby35_nic_fruid_len = sizeof(fby35_nic_fruid);
     >   const size_t fby35_bb_fruid_len = sizeof(fby35_bb_fruid);
     > @@ -168,3 +215,6 @@ const size_t fby35_bmc_fruid_len = 
sizeof(fby35_bmc_fruid);
     >   const size_t yosemitev2_bmc_fruid_len = sizeof(yosemitev2_bmc_fruid);
     >   const size_t rainier_bb_fruid_len = sizeof(rainier_bb_fruid);
     >   const size_t rainier_bmc_fruid_len = sizeof(rainier_bmc_fruid);
     > +const size_t montblanc_scm_fruid_len = sizeof(montblanc_scm_fruid);
     > +const size_t montblanc_fcm_fruid_len = sizeof(montblanc_fcm_fruid);
     > +const size_t montblanc_bmc_fruid_len = sizeof(montblanc_bmc_fruid);
     > diff --git a/hw/arm/aspeed_eeprom.h b/hw/arm/aspeed_eeprom.h
     > index bbf9e54365..b8fbdd0734 100644
     > --- a/hw/arm/aspeed_eeprom.h
     > +++ b/hw/arm/aspeed_eeprom.h
     > @@ -27,4 +27,11 @@ extern const size_t rainier_bb_fruid_len;
     >   extern const uint8_t rainier_bmc_fruid[];
     >   extern const size_t rainier_bmc_fruid_len;
     >
     > +extern const uint8_t montblanc_scm_fruid[];
     > +extern const uint8_t montblanc_fcm_fruid[];
     > +extern const uint8_t montblanc_bmc_fruid[];
     > +extern const size_t montblanc_scm_fruid_len;
     > +extern const size_t montblanc_fcm_fruid_len;
     > +extern const size_t montblanc_bmc_fruid_len;
     > +
     >   #endif





reply via email to

[Prev in Thread] Current Thread [Next in Thread]