mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	Add additional fields. They will be just recorded and filled but not shown. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
		
			
				
	
	
		
			88 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0+ */
 | 
						|
/*
 | 
						|
 * (C) Copyright 2019 Xilinx, Inc.
 | 
						|
 * Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __FRU_H
 | 
						|
#define __FRU_H
 | 
						|
 | 
						|
struct fru_common_hdr {
 | 
						|
	u8 version;
 | 
						|
	u8 off_internal;
 | 
						|
	u8 off_chassis;
 | 
						|
	u8 off_board;
 | 
						|
	u8 off_product;
 | 
						|
	u8 off_multirec;
 | 
						|
	u8 pad;
 | 
						|
	u8 crc;
 | 
						|
};
 | 
						|
 | 
						|
#define FRU_BOARD_MAX_LEN	32
 | 
						|
 | 
						|
struct __packed fru_board_info_header {
 | 
						|
	u8 ver;
 | 
						|
	u8 len;
 | 
						|
	u8 lang_code;
 | 
						|
	u8 time[3];
 | 
						|
};
 | 
						|
 | 
						|
struct __packed fru_board_info_member {
 | 
						|
	u8 type_len;
 | 
						|
	u8 *name;
 | 
						|
};
 | 
						|
 | 
						|
struct fru_board_data {
 | 
						|
	u8 ver;
 | 
						|
	u8 len;
 | 
						|
	u8 lang_code;
 | 
						|
	u8 time[3];
 | 
						|
	u8 manufacturer_type_len;
 | 
						|
	u8 manufacturer_name[FRU_BOARD_MAX_LEN];
 | 
						|
	u8 product_name_type_len;
 | 
						|
	u8 product_name[FRU_BOARD_MAX_LEN];
 | 
						|
	u8 serial_number_type_len;
 | 
						|
	u8 serial_number[FRU_BOARD_MAX_LEN];
 | 
						|
	u8 part_number_type_len;
 | 
						|
	u8 part_number[FRU_BOARD_MAX_LEN];
 | 
						|
	u8 file_id_type_len;
 | 
						|
	u8 file_id[FRU_BOARD_MAX_LEN];
 | 
						|
	/* Xilinx custom fields */
 | 
						|
	u8 rev_type_len;
 | 
						|
	u8 rev[FRU_BOARD_MAX_LEN];
 | 
						|
	u8 pcie_type_len;
 | 
						|
	u8 pcie[FRU_BOARD_MAX_LEN];
 | 
						|
	u8 uuid_type_len;
 | 
						|
	u8 uuid[FRU_BOARD_MAX_LEN];
 | 
						|
};
 | 
						|
 | 
						|
struct fru_table {
 | 
						|
	struct fru_common_hdr hdr;
 | 
						|
	struct fru_board_data brd;
 | 
						|
	bool captured;
 | 
						|
};
 | 
						|
 | 
						|
#define FRU_TYPELEN_CODE_MASK	0xC0
 | 
						|
#define FRU_TYPELEN_LEN_MASK	0x3F
 | 
						|
#define FRU_COMMON_HDR_VER_MASK		0xF
 | 
						|
#define FRU_COMMON_HDR_LEN_MULTIPLIER	8
 | 
						|
#define FRU_LANG_CODE_ENGLISH		0
 | 
						|
#define FRU_LANG_CODE_ENGLISH_1		25
 | 
						|
#define FRU_TYPELEN_EOF			0xC1
 | 
						|
 | 
						|
/* This should be minimum of fields */
 | 
						|
#define FRU_BOARD_AREA_TOTAL_FIELDS	5
 | 
						|
#define FRU_TYPELEN_TYPE_SHIFT		6
 | 
						|
#define FRU_TYPELEN_TYPE_BINARY		0
 | 
						|
#define FRU_TYPELEN_TYPE_ASCII8		3
 | 
						|
 | 
						|
int fru_display(int verbose);
 | 
						|
int fru_capture(unsigned long addr);
 | 
						|
int fru_generate(unsigned long addr, char *manufacturer, char *board_name,
 | 
						|
		 char *serial_no, char *part_no, char *revision);
 | 
						|
u8 fru_checksum(u8 *addr, u8 len);
 | 
						|
 | 
						|
extern struct fru_table fru_data;
 | 
						|
 | 
						|
#endif /* FRU_H */
 |