Cleanup access to vendor/part # info
Instead of macros to access MAINBOARD record, use convenience functions. Store pointers to MAINBOARD and HEADER for use outside of CB code. Change-Id: I074e3a0df7d25726cbd942538bfdc5a63dd17e12 Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com> Reviewed-on: http://review.coreboot.org/502 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
This commit is contained in:
committed by
Patrick Georgi
parent
d0ac789e21
commit
9a7c246767
@ -142,8 +142,8 @@ static void parse_mainboard(unsigned char *ptr)
|
||||
{
|
||||
struct cb_mainboard *mb = (struct cb_mainboard *)ptr;
|
||||
|
||||
strncpy(cb_info.vendor, (const char *)MB_VENDOR_STRING(mb), 31);
|
||||
strncpy(cb_info.part, (const char *)MB_PART_STRING(mb), 31);
|
||||
strncpy(cb_info.vendor, cb_mb_vendor_part(mb), 31);
|
||||
strncpy(cb_info.part, cb_mb_part_string(mb), 31);
|
||||
}
|
||||
|
||||
static void parse_strings(unsigned char *ptr)
|
||||
|
@ -137,6 +137,8 @@ static int cb_parse_header(void *addr, int len, struct sysinfo_t *info)
|
||||
header->table_bytes) != header->table_checksum)
|
||||
return -1;
|
||||
|
||||
info->header = header;
|
||||
|
||||
/* Now, walk the tables. */
|
||||
ptr += header->header_bytes;
|
||||
|
||||
@ -173,6 +175,9 @@ static int cb_parse_header(void *addr, int len, struct sysinfo_t *info)
|
||||
cb_parse_framebuffer(ptr, info);
|
||||
break;
|
||||
#endif
|
||||
case CB_TAG_MAINBOARD:
|
||||
info->mainboard = (struct cb_mainboard *)ptr;
|
||||
break;
|
||||
}
|
||||
|
||||
ptr += rec->size;
|
||||
|
@ -228,6 +228,16 @@ static inline u16 cb_checksum(const void *ptr, unsigned len)
|
||||
return ipchksum(ptr, len);
|
||||
}
|
||||
|
||||
static inline const char *cb_mb_vendor_string(const struct cb_mainboard *cbm)
|
||||
{
|
||||
return (char *)(cbm->strings + cbm->vendor_idx);
|
||||
}
|
||||
|
||||
static inline const char *cb_mb_part_string(const struct cb_mainboard *cbm)
|
||||
{
|
||||
return (char *)(cbm->strings + cbm->part_number_idx);
|
||||
}
|
||||
|
||||
/* Helpful macros */
|
||||
|
||||
#define MEM_RANGE_COUNT(_rec) \
|
||||
@ -237,10 +247,4 @@ static inline u16 cb_checksum(const void *ptr, unsigned len)
|
||||
(void *)(((u8 *) (_rec)) + sizeof(*(_rec)) \
|
||||
+ (sizeof((_rec)->map[0]) * (_idx)))
|
||||
|
||||
#define MB_VENDOR_STRING(_mb) \
|
||||
(((unsigned char *) ((_mb)->strings)) + (_mb)->vendor_idx)
|
||||
|
||||
#define MB_PART_STRING(_mb) \
|
||||
(((unsigned char *) ((_mb)->strings)) + (_mb)->part_number_idx)
|
||||
|
||||
#endif
|
||||
|
@ -56,6 +56,9 @@ struct sysinfo_t {
|
||||
struct cb_framebuffer *framebuffer;
|
||||
|
||||
unsigned long *mbtable; /** Pointer to the multiboot table */
|
||||
|
||||
struct cb_header *header;
|
||||
struct cb_mainboard *mainboard;
|
||||
};
|
||||
|
||||
extern struct sysinfo_t lib_sysinfo;
|
||||
|
Reference in New Issue
Block a user