|
31 | 31 | #include "smu_v13_0_12_ppsmc.h"
|
32 | 32 | #include "smu_v13_0.h"
|
33 | 33 | #include "amdgpu_xgmi.h"
|
| 34 | +#include "amdgpu_fru_eeprom.h" |
34 | 35 | #include <linux/pci.h>
|
35 | 36 | #include "smu_cmn.h"
|
36 | 37 |
|
@@ -145,6 +146,33 @@ static int smu_v13_0_12_get_enabled_mask(struct smu_context *smu,
|
145 | 146 | return ret;
|
146 | 147 | }
|
147 | 148 |
|
| 149 | +static int smu_v13_0_12_fru_get_product_info(struct smu_context *smu, |
| 150 | + StaticMetricsTable_t *static_metrics) |
| 151 | +{ |
| 152 | + struct amdgpu_fru_info *fru_info; |
| 153 | + struct amdgpu_device *adev = smu->adev; |
| 154 | + |
| 155 | + if (!adev->fru_info) { |
| 156 | + adev->fru_info = kzalloc(sizeof(*adev->fru_info), GFP_KERNEL); |
| 157 | + if (!adev->fru_info) |
| 158 | + return -ENOMEM; |
| 159 | + } |
| 160 | + |
| 161 | + fru_info = adev->fru_info; |
| 162 | + strscpy(fru_info->product_number, static_metrics->ProductInfo.ModelNumber, |
| 163 | + sizeof(fru_info->product_number)); |
| 164 | + strscpy(fru_info->product_name, static_metrics->ProductInfo.Name, |
| 165 | + sizeof(fru_info->product_name)); |
| 166 | + strscpy(fru_info->serial, static_metrics->ProductInfo.Serial, |
| 167 | + sizeof(fru_info->serial)); |
| 168 | + strscpy(fru_info->manufacturer_name, static_metrics->ProductInfo.ManufacturerName, |
| 169 | + sizeof(fru_info->manufacturer_name)); |
| 170 | + strscpy(fru_info->fru_id, static_metrics->ProductInfo.FruId, |
| 171 | + sizeof(fru_info->fru_id)); |
| 172 | + |
| 173 | + return 0; |
| 174 | +} |
| 175 | + |
148 | 176 | int smu_v13_0_12_get_max_metrics_size(void)
|
149 | 177 | {
|
150 | 178 | return sizeof(StaticMetricsTable_t);
|
@@ -208,6 +236,9 @@ int smu_v13_0_12_setup_driver_pptable(struct smu_context *smu)
|
208 | 236 | /* use AID0 serial number by default */
|
209 | 237 | pptable->PublicSerialNumber_AID =
|
210 | 238 | static_metrics->PublicSerialNumber_AID[0];
|
| 239 | + ret = smu_v13_0_12_fru_get_product_info(smu, static_metrics); |
| 240 | + if (ret) |
| 241 | + return ret; |
211 | 242 |
|
212 | 243 | pptable->Init = true;
|
213 | 244 | }
|
|
0 commit comments