1 /* SPDX-License-Identifier: GPL-2.0+ */
3 * (C) Copyright 2019 Xilinx, Inc.
4 * Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
10 struct fru_common_hdr {
21 #define FRU_BOARD_MAX_LEN 32
23 struct fru_board_data {
28 u8 manufacturer_type_len;
29 u8 manufacturer_name[FRU_BOARD_MAX_LEN];
30 u8 product_name_type_len;
31 u8 product_name[FRU_BOARD_MAX_LEN];
32 u8 serial_number_type_len;
33 u8 serial_number[FRU_BOARD_MAX_LEN];
34 u8 part_number_type_len;
35 u8 part_number[FRU_BOARD_MAX_LEN];
37 u8 file_id[FRU_BOARD_MAX_LEN];
42 struct fru_common_hdr hdr;
43 struct fru_board_data brd;
46 #define FRU_TYPELEN_CODE_MASK 0xC0
47 #define FRU_TYPELEN_LEN_MASK 0x3F
48 #define FRU_COMMON_HDR_VER_MASK 0xF
49 #define FRU_COMMON_HDR_LEN_MULTIPLIER 8
50 #define FRU_LANG_CODE_ENGLISH 0
51 #define FRU_LANG_CODE_ENGLISH_1 25
52 #define FRU_TYPELEN_EOF 0xC1
54 /* This should be minimum of fields */
55 #define FRU_BOARD_AREA_TOTAL_FIELDS 5
56 #define FRU_TYPELEN_TYPE_SHIFT 6
57 #define FRU_TYPELEN_TYPE_BINARY 0
58 #define FRU_TYPELEN_TYPE_ASCII8 3
60 int fru_display(int verbose);
61 int fru_capture(unsigned long addr);
62 u8 fru_checksum(u8 *addr, u8 len);
64 extern struct fru_table fru_data;