| /* SPDX-License-Identifier: GPL-2.0+ */ | |
| /* | |
| * Copyright (c) 2024 Linaro Limited | |
| * Author: Raymond Mao <raymond.mao@linaro.org> | |
| */ | |
| #ifndef __SMBIOS_PLAT_H | |
| #define __SMBIOS_PLAT_H | |
| #include <smbios.h> | |
| struct cache_info { | |
| union cache_config config; | |
| union cache_sram_type supp_sram_type; | |
| union cache_sram_type curr_sram_type; | |
| u32 line_size; | |
| u32 associativity; | |
| u32 max_size; | |
| u32 inst_size; | |
| u8 cache_type; | |
| u8 speed; | |
| u8 err_corr_type; | |
| char *socket_design; | |
| }; | |
| struct processor_info { | |
| u32 id[2]; | |
| u16 ext_clock; | |
| u16 max_speed; | |
| u16 curr_speed; | |
| u16 characteristics; | |
| u16 family2; | |
| u16 core_count2; | |
| u16 core_enabled2; | |
| u16 thread_count2; | |
| u16 thread_enabled; | |
| u8 type; | |
| u8 family; | |
| u8 voltage; | |
| u8 status; | |
| u8 upgrade; | |
| u8 core_count; | |
| u8 core_enabled; | |
| u8 thread_count; | |
| char *socket_design; | |
| char *manufacturer; | |
| char *version; | |
| char *sn; | |
| char *asset_tag; | |
| char *pn; | |
| }; | |
| struct sysinfo_plat { | |
| struct processor_info *processor; | |
| struct cache_info *cache; | |
| /* add other sysinfo structure here */ | |
| }; | |
| #if defined CONFIG_SYSINFO_SMBIOS | |
| int sysinfo_get_cache_info(u8 level, struct cache_info *cache_info); | |
| void sysinfo_cache_info_default(struct cache_info *ci); | |
| int sysinfo_get_processor_info(struct processor_info *pinfo); | |
| #else | |
| static inline int sysinfo_get_cache_info(u8 level, | |
| struct cache_info *cache_info) | |
| { | |
| return -ENOSYS; | |
| } | |
| static inline void sysinfo_cache_info_default(struct cache_info *ci) | |
| { | |
| } | |
| static inline int sysinfo_get_processor_info(struct processor_info *pinfo) | |
| { | |
| return -ENOSYS; | |
| } | |
| #endif | |
| #endif /* __SMBIOS_PLAT_H */ |