1 /* SPDX-License-Identifier: GPL-2.0-only */
2
3 #include <memory_info.h>
4 #include <smbios.h>
5 #include <stdint.h>
6 #include <stdio.h>
7
8 /* this function will fill the corresponding locator */
smbios_fill_dimm_locator(const struct dimm_info * dimm,struct smbios_type17 * t)9 __weak void smbios_fill_dimm_locator(const struct dimm_info *dimm, struct smbios_type17 *t)
10 {
11 char locator[40];
12
13 snprintf(locator, sizeof(locator), "Channel-%d-DIMM-%d",
14 dimm->channel_num, dimm->dimm_num);
15 t->device_locator = smbios_add_string(t->eos, locator);
16
17 snprintf(locator, sizeof(locator), "BANK %d", dimm->bank_locator);
18 t->bank_locator = smbios_add_string(t->eos, locator);
19 }
20
smbios_fill_dimm_asset_tag(const struct dimm_info * dimm,struct smbios_type17 * t)21 __weak void smbios_fill_dimm_asset_tag(const struct dimm_info *dimm, struct smbios_type17 *t)
22 {
23 char buf[40];
24
25 snprintf(buf, sizeof(buf), "Channel-%d-DIMM-%d-AssetTag",
26 dimm->channel_num, dimm->dimm_num);
27 t->asset_tag = smbios_add_string(t->eos, buf);
28 }
29
smbios_system_wakeup_type(void)30 __weak smbios_wakeup_type smbios_system_wakeup_type(void)
31 {
32 return SMBIOS_WAKEUP_TYPE_RESERVED;
33 }
34
smbios_mainboard_bios_version(void)35 __weak const char *smbios_mainboard_bios_version(void)
36 {
37 return NULL;
38 }
39
smbios_mainboard_serial_number(void)40 __weak const char *smbios_mainboard_serial_number(void)
41 {
42 return CONFIG_MAINBOARD_SERIAL_NUMBER;
43 }
44
smbios_mainboard_version(void)45 __weak const char *smbios_mainboard_version(void)
46 {
47 return CONFIG_MAINBOARD_VERSION;
48 }
49
smbios_mainboard_manufacturer(void)50 __weak const char *smbios_mainboard_manufacturer(void)
51 {
52 return CONFIG_MAINBOARD_SMBIOS_MANUFACTURER;
53 }
54
smbios_mainboard_product_name(void)55 __weak const char *smbios_mainboard_product_name(void)
56 {
57 return CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME;
58 }
59
smbios_mainboard_asset_tag(void)60 __weak const char *smbios_mainboard_asset_tag(void)
61 {
62 return "";
63 }
64
smbios_mainboard_feature_flags(void)65 __weak u8 smbios_mainboard_feature_flags(void)
66 {
67 return 0;
68 }
69
smbios_mainboard_location_in_chassis(void)70 __weak const char *smbios_mainboard_location_in_chassis(void)
71 {
72 return "";
73 }
74
smbios_mainboard_board_type(void)75 __weak smbios_board_type smbios_mainboard_board_type(void)
76 {
77 return SMBIOS_BOARD_TYPE_MOTHERBOARD;
78 }
79
smbios_ec_revision(uint8_t * ec_major_revision,uint8_t * ec_minor_revision)80 __weak void smbios_ec_revision(uint8_t *ec_major_revision, uint8_t *ec_minor_revision)
81 {
82 *ec_major_revision = 0x0;
83 *ec_minor_revision = 0x0;
84 }
85
86 /*
87 * System Enclosure or Chassis Types as defined in SMBIOS specification.
88 * The default value is SMBIOS_ENCLOSURE_DESKTOP (0x03) but laptop,
89 * convertible, or tablet enclosure will be used if the appropriate
90 * system type is selected.
91 */
smbios_mainboard_enclosure_type(void)92 __weak smbios_enclosure_type smbios_mainboard_enclosure_type(void)
93 {
94 if (CONFIG(SYSTEM_TYPE_LAPTOP))
95 return SMBIOS_ENCLOSURE_LAPTOP;
96 else if (CONFIG(SYSTEM_TYPE_TABLET))
97 return SMBIOS_ENCLOSURE_TABLET;
98 else if (CONFIG(SYSTEM_TYPE_CONVERTIBLE))
99 return SMBIOS_ENCLOSURE_CONVERTIBLE;
100 else if (CONFIG(SYSTEM_TYPE_DETACHABLE))
101 return SMBIOS_ENCLOSURE_DETACHABLE;
102 else
103 return SMBIOS_ENCLOSURE_DESKTOP;
104 }
105
smbios_system_serial_number(void)106 __weak const char *smbios_system_serial_number(void)
107 {
108 return smbios_mainboard_serial_number();
109 }
110
smbios_system_version(void)111 __weak const char *smbios_system_version(void)
112 {
113 return smbios_mainboard_version();
114 }
115
smbios_system_manufacturer(void)116 __weak const char *smbios_system_manufacturer(void)
117 {
118 return smbios_mainboard_manufacturer();
119 }
120
smbios_system_product_name(void)121 __weak const char *smbios_system_product_name(void)
122 {
123 return smbios_mainboard_product_name();
124 }
125
smbios_system_set_uuid(u8 * uuid)126 __weak void smbios_system_set_uuid(u8 *uuid)
127 {
128 /* leave all zero */
129 }
130
smbios_cpu_get_max_speed_mhz(void)131 __weak unsigned int smbios_cpu_get_max_speed_mhz(void)
132 {
133 return 0; /* Unknown */
134 }
135
smbios_cpu_get_current_speed_mhz(void)136 __weak unsigned int smbios_cpu_get_current_speed_mhz(void)
137 {
138 return 0; /* Unknown */
139 }
140
smbios_system_sku(void)141 __weak const char *smbios_system_sku(void)
142 {
143 return "";
144 }
145
smbios_chassis_version(void)146 __weak const char *smbios_chassis_version(void)
147 {
148 return "";
149 }
150
smbios_chassis_serial_number(void)151 __weak const char *smbios_chassis_serial_number(void)
152 {
153 return "";
154 }
155
smbios_processor_serial_number(void)156 __weak const char *smbios_processor_serial_number(void)
157 {
158 return "";
159 }
160
smbios_chassis_power_cords(void)161 __weak u8 smbios_chassis_power_cords(void)
162 {
163 return 1;
164 }
165