OpenBIC
OpenSource Bridge-IC
plat_fru.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef PLAT_FRU_H
18#define PLAT_FRU_H
19
20#include <stdint.h>
21
22enum FRU_ID {
23 MB_FRU_ID = 0x00,
47};
48
49#define FRU_CFG_NUM MAX_FRU_ID
50
51#define MB_FRU_ADDR (0xA6 >> 1)
52#define FIO_FRU_ADDR (0xA4 >> 1)
53#define BB_FRU_ADDR (0xA4 >> 1)
54#define BPB_FRU_ADDR (0xA6 >> 1)
55#define SB_FRU_ADDR (0xA6 >> 1)
56#define PDB_FRU_ADDR (0xAA >> 1)
57#define PB_FRU_ADDR (0xA6 >> 1)
58#define FB_FRU_ADDR (0xA6 >> 1)
59
60#define I2C_1_MUX_ADDR (0xE0 >> 1)
61#define I2C_2_MUX_ADDR (0xE2 >> 1)
62#define I2C_6_MUX_ADDR (0xE4 >> 1)
63#define I2C_7_MUX_ADDR (0xE6 >> 1)
64#define PB_MUX_ADDR (0xE8 >> 1)
65#define SB_MUX_ADDR (0xE8 >> 1)
66
67#define MUX_CHANNEL_0 0
68#define MUX_CHANNEL_1 1
69#define MUX_CHANNEL_2 2
70#define MUX_CHANNEL_3 3
71
72// plat eeprom save in rpu eeprom
73#define MANAGEMENT_BOARD_FRU_EEPROM_OFFSET 0x0000
74#define MANAGEMENT_BOARD_FRU_EEPROM_START_OFFSET 0x0008
75#define MANAGEMENT_BOARD_FRU_EEPROM_BOARD_AREA_SIZE 0x0009
76#define PLAT_EEPROM_OFFSET 0x2000 // 8kb
77#define EEPROM_HMI_VERSION_OFFSET PLAT_EEPROM_OFFSET
78#define EEPROM_HMI_VERSION_SIZE 8 // 8 bytes
79#define EEPROM_RPU_ADDR_OFFSET (EEPROM_HMI_VERSION_OFFSET + EEPROM_HMI_VERSION_SIZE)
80#define EEPROM_RPU_ADDR_VERSION_SIZE 1 // 1 bytes
81
82#define EEPROM_UPTIME_OFFSET (EEPROM_RPU_ADDR_OFFSET + EEPROM_RPU_ADDR_VERSION_SIZE)
83#define EEPROM_UPTIME_SIZE 4 // 4 bytes
84
85#define EEPROM_PUMP1_UPTIME_OFFSET (EEPROM_UPTIME_OFFSET + EEPROM_UPTIME_SIZE)
86#define EEPROM_PUMP1_UPTIME_SIZE 4 // 4 bytes
87
88#define EEPROM_PUMP2_UPTIME_OFFSET (EEPROM_PUMP1_UPTIME_OFFSET + EEPROM_PUMP1_UPTIME_SIZE)
89#define EEPROM_PUMP2_UPTIME_SIZE 4 // 4 bytes
90
91#define EEPROM_PUMP3_UPTIME_OFFSET (EEPROM_PUMP2_UPTIME_OFFSET + EEPROM_PUMP2_UPTIME_SIZE)
92#define EEPROM_PUMP3_UPTIME_SIZE 4 // 4 bytes
93
94bool plat_eeprom_write(uint32_t offset, uint8_t *data, uint16_t data_len);
95bool plat_eeprom_read(uint32_t offset, uint8_t *data, uint16_t data_len);
96
97#define CHASSIS_CUSTOM_DATA_MAX 24
98#define BOARD_CUSTOM_DATA_MAX 10
99#define PRODUCT_CUSTOM_DATA_MAX 10
100typedef struct {
102 char chassis_part_number[32];
103 char chassis_serial_number[32];
104 char chassis_custom_data[CHASSIS_CUSTOM_DATA_MAX][32];
106
107typedef struct {
108 uint8_t language;
109 char board_mfg_date[32];
110 char board_mfg[32];
111 char board_product[32];
112 char board_serial[32];
113 char board_part_number[32];
114 char board_fru_id[32];
115 char board_custom_data[BOARD_CUSTOM_DATA_MAX][32];
116} BoardInfo;
117
118typedef struct {
119 uint8_t language;
120 char product_manufacturer[32];
121 char product_name[32];
122 char product_part_number[32];
123 char product_version[32];
124 char product_serial[32];
125 char product_asset_tag[32];
126 char product_fru_id[32];
127 char product_custom_data[PRODUCT_CUSTOM_DATA_MAX][32];
129
130typedef struct {
134} FRU_INFO;
135
136void print_fru_info(uint8_t board_fru_id);
137FRU_INFO *get_single_fru_info(uint8_t board_fru_id);
138#endif
FRU_INFO * get_single_fru_info(uint8_t board_fru_id)
Definition: plat_fru.c:797
#define PRODUCT_CUSTOM_DATA_MAX
Definition: plat_fru.h:99
bool plat_eeprom_read(uint32_t offset, uint8_t *data, uint16_t data_len)
Definition: plat_fru.c:360
bool plat_eeprom_write(uint32_t offset, uint8_t *data, uint16_t data_len)
Definition: plat_fru.c:335
#define BOARD_CUSTOM_DATA_MAX
Definition: plat_fru.h:98
#define CHASSIS_CUSTOM_DATA_MAX
Definition: plat_fru.h:97
void print_fru_info(uint8_t board_fru_id)
Definition: plat_fru.c:733
FRU_ID
Definition: plat_fru.h:22
@ FB_14_FRU_ID
Definition: plat_fru.h:44
@ BB_FRU_ID
Definition: plat_fru.h:24
@ SB_FRU_ID
Definition: plat_fru.h:27
@ MB_FRU_ID
Definition: plat_fru.h:23
@ PB_2_FRU_ID
Definition: plat_fru.h:29
@ FB_4_FRU_ID
Definition: plat_fru.h:34
@ FIO_FRU_ID
Definition: plat_fru.h:45
@ FB_8_FRU_ID
Definition: plat_fru.h:38
@ FB_9_FRU_ID
Definition: plat_fru.h:39
@ FB_7_FRU_ID
Definition: plat_fru.h:37
@ FB_1_FRU_ID
Definition: plat_fru.h:31
@ FB_13_FRU_ID
Definition: plat_fru.h:43
@ FB_6_FRU_ID
Definition: plat_fru.h:36
@ FB_3_FRU_ID
Definition: plat_fru.h:33
@ FB_2_FRU_ID
Definition: plat_fru.h:32
@ FB_10_FRU_ID
Definition: plat_fru.h:40
@ FB_12_FRU_ID
Definition: plat_fru.h:42
@ FB_11_FRU_ID
Definition: plat_fru.h:41
@ MAX_FRU_ID
Definition: plat_fru.h:46
@ FB_5_FRU_ID
Definition: plat_fru.h:35
@ BPB_FRU_ID
Definition: plat_fru.h:25
@ PB_3_FRU_ID
Definition: plat_fru.h:30
@ PDB_FRU_ID
Definition: plat_fru.h:26
@ PB_1_FRU_ID
Definition: plat_fru.h:28
uint16_t data_len
Definition: ipmb.h:14
uint8_t data[]
Definition: isl69259.c:2
uint32_t offset
Definition: pldm_firmware_update.h:0
Definition: plat_fru.h:107
uint8_t language
Definition: plat_fru.h:108
Definition: plat_fru.h:100
uint8_t chassis_type
Definition: plat_fru.h:101
Definition: plat_fru.h:130
ProductInfo product
Definition: plat_fru.h:133
ChassisInfo chassis
Definition: plat_fru.h:131
BoardInfo board
Definition: plat_fru.h:132
Definition: plat_fru.h:118
uint8_t language
Definition: plat_fru.h:119