hw/arm/aspeed: Add aspeed_eeprom.c
- Create aspeed_eeprom.c and aspeed_eeprom.h - Include aspeed_eeprom.c in CONFIG_ASPEED meson source files - Include aspeed_eeprom.h in aspeed.c - Add fby35_bmc_fruid data - Use new at24c_eeprom_init_rom helper to initialize BMC FRUID EEPROM with data from aspeed_eeprom.c wget https://github.com/facebook/openbmc/releases/download/openbmc-e2294ff5d31d/fby35.mtd qemu-system-aarch64 -machine fby35-bmc -nographic -mtdblock fby35.mtd ... user: root pass: 0penBmc ... root@bmc-oob:~# fruid-util bb FRU Information : Baseboard --------------- : ------------------ Chassis Type : Rack Mount Chassis Chassis Part Number : N/A Chassis Serial Number : N/A Board Mfg Date : Fri Jan 7 10:30:00 2022 Board Mfg : XXXXXX Board Product : Management Board wBMC Board Serial : XXXXXXXXXXXXX Board Part Number : XXXXXXXXXXXXXX Board FRU ID : 1.0 Board Custom Data 1 : XXXXXXXXX Board Custom Data 2 : XXXXXXXXXXXXXXXXXX Product Manufacturer : XXXXXX Product Name : Yosemite V3.5 EVT2 Product Part Number : XXXXXXXXXXXXXX Product Version : EVT2 Product Serial : XXXXXXXXXXXXX Product Asset Tag : XXXXXXX Product FRU ID : 1.0 Product Custom Data 1 : XXXXXXXXX Product Custom Data 2 : N/A root@bmc-oob:~# fruid-util bmc FRU Information : BMC --------------- : ------------------ Board Mfg Date : Mon Jan 10 21:42:00 2022 Board Mfg : XXXXXX Board Product : BMC Storage Module Board Serial : XXXXXXXXXXXXX Board Part Number : XXXXXXXXXXXXXX Board FRU ID : 1.0 Board Custom Data 1 : XXXXXXXXX Board Custom Data 2 : XXXXXXXXXXXXXXXXXX Product Manufacturer : XXXXXX Product Name : Yosemite V3.5 EVT2 Product Part Number : XXXXXXXXXXXXXX Product Version : EVT2 Product Serial : XXXXXXXXXXXXX Product Asset Tag : XXXXXXX Product FRU ID : 1.0 Product Custom Data 1 : XXXXXXXXX Product Custom Data 2 : Config A root@bmc-oob:~# fruid-util nic FRU Information : NIC --------------- : ------------------ Board Mfg Date : Tue Nov 2 08:51:00 2021 Board Mfg : XXXXXXXX Board Product : Mellanox ConnectX-6 DX OCP3.0 Board Serial : XXXXXXXXXXXXXXXXXXXXXXXX Board Part Number : XXXXXXXXXXXXXXXXXXXXX Board FRU ID : FRU Ver 0.02 Product Manufacturer : XXXXXXXX Product Name : Mellanox ConnectX-6 DX OCP3.0 Product Part Number : XXXXXXXXXXXXXXXXXXXXX Product Version : A9 Product Serial : XXXXXXXXXXXXXXXXXXXXXXXX Product Custom Data 3 : ConnectX-6 DX Signed-off-by: Peter Delevoryas <peter@pjd.dev> Reviewed-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Joel Stanley <joel@jms.id.au> Reviewed-by: Corey Minyard <cminyard@mvista.com> Link: https://lore.kernel.org/r/20230128060543.95582-5-peter@pjd.dev Signed-off-by: Cédric Le Goater <clg@kaod.org>
This commit is contained in:
		
							parent
							
								
									9f782e9e82
								
							
						
					
					
						commit
						c0216b94ed
					
				@ -14,6 +14,7 @@
 | 
				
			|||||||
#include "hw/arm/boot.h"
 | 
					#include "hw/arm/boot.h"
 | 
				
			||||||
#include "hw/arm/aspeed.h"
 | 
					#include "hw/arm/aspeed.h"
 | 
				
			||||||
#include "hw/arm/aspeed_soc.h"
 | 
					#include "hw/arm/aspeed_soc.h"
 | 
				
			||||||
 | 
					#include "hw/arm/aspeed_eeprom.h"
 | 
				
			||||||
#include "hw/i2c/i2c_mux_pca954x.h"
 | 
					#include "hw/i2c/i2c_mux_pca954x.h"
 | 
				
			||||||
#include "hw/i2c/smbus_eeprom.h"
 | 
					#include "hw/i2c/smbus_eeprom.h"
 | 
				
			||||||
#include "hw/misc/pca9552.h"
 | 
					#include "hw/misc/pca9552.h"
 | 
				
			||||||
@ -950,9 +951,12 @@ static void fby35_i2c_init(AspeedMachineState *bmc)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    at24c_eeprom_init(i2c[4], 0x51, 128 * KiB);
 | 
					    at24c_eeprom_init(i2c[4], 0x51, 128 * KiB);
 | 
				
			||||||
    at24c_eeprom_init(i2c[6], 0x51, 128 * KiB);
 | 
					    at24c_eeprom_init(i2c[6], 0x51, 128 * KiB);
 | 
				
			||||||
    at24c_eeprom_init(i2c[8], 0x50, 32 * KiB);
 | 
					    at24c_eeprom_init_rom(i2c[8], 0x50, 32 * KiB, fby35_nic_fruid,
 | 
				
			||||||
    at24c_eeprom_init(i2c[11], 0x51, 128 * KiB);
 | 
					                          fby35_nic_fruid_len);
 | 
				
			||||||
    at24c_eeprom_init(i2c[11], 0x54, 128 * KiB);
 | 
					    at24c_eeprom_init_rom(i2c[11], 0x51, 128 * KiB, fby35_bb_fruid,
 | 
				
			||||||
 | 
					                          fby35_bb_fruid_len);
 | 
				
			||||||
 | 
					    at24c_eeprom_init_rom(i2c[11], 0x54, 128 * KiB, fby35_bmc_fruid,
 | 
				
			||||||
 | 
					                          fby35_bmc_fruid_len);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * TODO: There is a multi-master i2c connection to an AST1030 MiniBMC on
 | 
					     * TODO: There is a multi-master i2c connection to an AST1030 MiniBMC on
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										82
									
								
								hw/arm/aspeed_eeprom.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								hw/arm/aspeed_eeprom.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,82 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) Meta Platforms, Inc. and affiliates.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * SPDX-License-Identifier: GPL-2.0-only
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "aspeed_eeprom.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const uint8_t fby35_nic_fruid[] = {
 | 
				
			||||||
 | 
					    0x01, 0x00, 0x00, 0x01, 0x0f, 0x20, 0x00, 0xcf, 0x01, 0x0e, 0x19, 0xd7,
 | 
				
			||||||
 | 
					    0x5e, 0xcf, 0xc8, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xdd,
 | 
				
			||||||
 | 
					    0x4d, 0x65, 0x6c, 0x6c, 0x61, 0x6e, 0x6f, 0x78, 0x20, 0x43, 0x6f, 0x6e,
 | 
				
			||||||
 | 
					    0x6e, 0x65, 0x63, 0x74, 0x58, 0x2d, 0x36, 0x20, 0x44, 0x58, 0x20, 0x4f,
 | 
				
			||||||
 | 
					    0x43, 0x50, 0x33, 0x2e, 0x30, 0xd8, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xd5, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0xcc, 0x46, 0x52, 0x55, 0x20, 0x56, 0x65, 0x72,
 | 
				
			||||||
 | 
					    0x20, 0x30, 0x2e, 0x30, 0x32, 0xc0, 0xc0, 0xc0, 0xc1, 0x00, 0x00, 0x2f,
 | 
				
			||||||
 | 
					    0x01, 0x11, 0x19, 0xc8, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0xdd, 0x4d, 0x65, 0x6c, 0x6c, 0x61, 0x6e, 0x6f, 0x78, 0x20, 0x43, 0x6f,
 | 
				
			||||||
 | 
					    0x6e, 0x6e, 0x65, 0x63, 0x74, 0x58, 0x2d, 0x36, 0x20, 0x44, 0x58, 0x20,
 | 
				
			||||||
 | 
					    0x4f, 0x43, 0x50, 0x33, 0x2e, 0x30, 0xd5, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0xd3, 0x41, 0x39, 0x20, 0x20, 0x20, 0x20, 0x20,
 | 
				
			||||||
 | 
					    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
 | 
				
			||||||
 | 
					    0xd8, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0xc0, 0xc0, 0xc0, 0xc0, 0xcd, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
 | 
				
			||||||
 | 
					    0x74, 0x58, 0x2d, 0x36, 0x20, 0x44, 0x58, 0xc1, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
 | 
					    0x00, 0x00, 0x00, 0xdb, 0xc0, 0x82, 0x30, 0x15, 0x79, 0x7f, 0xa6, 0x00,
 | 
				
			||||||
 | 
					    0x01, 0x18, 0x0b, 0xff, 0x08, 0x00, 0xff, 0xff, 0x64, 0x00, 0x00, 0x00,
 | 
				
			||||||
 | 
					    0x00, 0x03, 0x20, 0x01, 0xff, 0xff, 0x04, 0x46, 0x00, 0xff, 0xff, 0xff,
 | 
				
			||||||
 | 
					    0xff, 0xff, 0xff, 0xff, 0x01, 0x81, 0x09, 0x15, 0xb3, 0x10, 0x1d, 0x00,
 | 
				
			||||||
 | 
					    0x24, 0x15, 0xb3, 0x00, 0x02, 0xeb, 0x8a, 0x95, 0x5c,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const uint8_t fby35_bb_fruid[] = {
 | 
				
			||||||
 | 
					    0x01, 0x00, 0x01, 0x03, 0x10, 0x00, 0x00, 0xeb, 0x01, 0x02, 0x17, 0xc3,
 | 
				
			||||||
 | 
					    0x4e, 0x2f, 0x41, 0xc3, 0x4e, 0x2f, 0x41, 0xc1, 0x00, 0x00, 0x00, 0x23,
 | 
				
			||||||
 | 
					    0x01, 0x0d, 0x00, 0xb6, 0xd2, 0xd0, 0xc6, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0xd5, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
 | 
				
			||||||
 | 
					    0x20, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x20, 0x77, 0x42, 0x4d, 0x43, 0xcd,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0xce, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0xc3, 0x31, 0x2e, 0x30, 0xc9, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xd2, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x0c, 0x00, 0xc6,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xd2, 0x59, 0x6f, 0x73, 0x65, 0x6d,
 | 
				
			||||||
 | 
					    0x69, 0x74, 0x65, 0x20, 0x56, 0x33, 0x2e, 0x35, 0x20, 0x45, 0x56, 0x54,
 | 
				
			||||||
 | 
					    0x32, 0xce, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0xc4, 0x45, 0x56, 0x54, 0x32, 0xcd, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xc7,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xc3, 0x31, 0x2e, 0x30, 0xc9,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xc3, 0x4e, 0x2f,
 | 
				
			||||||
 | 
					    0x41, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const uint8_t fby35_bmc_fruid[] = {
 | 
				
			||||||
 | 
					    0x01, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x00, 0xf1, 0x01, 0x0c, 0x00, 0x36,
 | 
				
			||||||
 | 
					    0xe6, 0xd0, 0xc6, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xd2, 0x42, 0x4d,
 | 
				
			||||||
 | 
					    0x43, 0x20, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x4d, 0x6f,
 | 
				
			||||||
 | 
					    0x64, 0x75, 0x6c, 0x65, 0xcd, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xce, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xc3, 0x31, 0x2e,
 | 
				
			||||||
 | 
					    0x30, 0xc9, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xd2,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xc1, 0x39, 0x01, 0x0c, 0x00, 0xc6,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xd2, 0x59, 0x6f, 0x73, 0x65, 0x6d,
 | 
				
			||||||
 | 
					    0x69, 0x74, 0x65, 0x20, 0x56, 0x33, 0x2e, 0x35, 0x20, 0x45, 0x56, 0x54,
 | 
				
			||||||
 | 
					    0x32, 0xce, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0xc4, 0x45, 0x56, 0x54, 0x32, 0xcd, 0x58, 0x58,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xc7,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xc3, 0x31, 0x2e, 0x30, 0xc9,
 | 
				
			||||||
 | 
					    0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0xc8, 0x43, 0x6f,
 | 
				
			||||||
 | 
					    0x6e, 0x66, 0x69, 0x67, 0x20, 0x41, 0xc1, 0x45,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const size_t fby35_nic_fruid_len = sizeof(fby35_nic_fruid);
 | 
				
			||||||
 | 
					const size_t fby35_bb_fruid_len = sizeof(fby35_bb_fruid);
 | 
				
			||||||
 | 
					const size_t fby35_bmc_fruid_len = sizeof(fby35_bmc_fruid);
 | 
				
			||||||
							
								
								
									
										19
									
								
								hw/arm/aspeed_eeprom.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								hw/arm/aspeed_eeprom.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) Meta Platforms, Inc. and affiliates.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * SPDX-License-Identifier: GPL-2.0-only
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef ASPEED_EEPROM_H
 | 
				
			||||||
 | 
					#define ASPEED_EEPROM_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "qemu/osdep.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern const uint8_t fby35_nic_fruid[];
 | 
				
			||||||
 | 
					extern const uint8_t fby35_bb_fruid[];
 | 
				
			||||||
 | 
					extern const uint8_t fby35_bmc_fruid[];
 | 
				
			||||||
 | 
					extern const size_t fby35_nic_fruid_len;
 | 
				
			||||||
 | 
					extern const size_t fby35_bb_fruid_len;
 | 
				
			||||||
 | 
					extern const size_t fby35_bmc_fruid_len;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
@ -51,6 +51,7 @@ arm_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files(
 | 
				
			|||||||
  'aspeed.c',
 | 
					  'aspeed.c',
 | 
				
			||||||
  'aspeed_ast2600.c',
 | 
					  'aspeed_ast2600.c',
 | 
				
			||||||
  'aspeed_ast10x0.c',
 | 
					  'aspeed_ast10x0.c',
 | 
				
			||||||
 | 
					  'aspeed_eeprom.c',
 | 
				
			||||||
  'fby35.c'))
 | 
					  'fby35.c'))
 | 
				
			||||||
arm_ss.add(when: 'CONFIG_MPS2', if_true: files('mps2.c'))
 | 
					arm_ss.add(when: 'CONFIG_MPS2', if_true: files('mps2.c'))
 | 
				
			||||||
arm_ss.add(when: 'CONFIG_MPS2', if_true: files('mps2-tz.c'))
 | 
					arm_ss.add(when: 'CONFIG_MPS2', if_true: files('mps2-tz.c'))
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user