diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c index 7b33867036e7..33c1eb76c076 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | |||
@@ -313,6 +313,69 @@ amdgpu_ucode_get_load_type(struct amdgpu_device *adev, int load_type) | |||
313 | return AMDGPU_FW_LOAD_DIRECT; | 313 | return AMDGPU_FW_LOAD_DIRECT; |
314 | } | 314 | } |
315 | 315 | ||
316 | #define FW_VERSION_ATTR(name, mode, field) \ | ||
317 | static ssize_t show_##name(struct device *dev, \ | ||
318 | struct device_attribute *attr, \ | ||
319 | char *buf) \ | ||
320 | { \ | ||
321 | struct drm_device *ddev = dev_get_drvdata(dev); \ | ||
322 | struct amdgpu_device *adev = ddev->dev_private; \ | ||
323 | \ | ||
324 | return snprintf(buf, PAGE_SIZE, "0x%08x\n", adev->field); \ | ||
325 | } \ | ||
326 | static DEVICE_ATTR(name, mode, show_##name, NULL) | ||
327 | |||
328 | FW_VERSION_ATTR(vce_fw_version, 0444, vce.fw_version); | ||
329 | FW_VERSION_ATTR(uvd_fw_version, 0444, uvd.fw_version); | ||
330 | FW_VERSION_ATTR(mc_fw_version, 0444, gmc.fw_version); | ||
331 | FW_VERSION_ATTR(me_fw_version, 0444, gfx.me_fw_version); | ||
332 | FW_VERSION_ATTR(pfp_fw_version, 0444, gfx.pfp_fw_version); | ||
333 | FW_VERSION_ATTR(ce_fw_version, 0444, gfx.ce_fw_version); | ||
334 | FW_VERSION_ATTR(rlc_fw_version, 0444, gfx.rlc_fw_version); | ||
335 | FW_VERSION_ATTR(rlc_srlc_fw_version, 0444, gfx.rlc_srlc_fw_version); | ||
336 | FW_VERSION_ATTR(rlc_srlg_fw_version, 0444, gfx.rlc_srlg_fw_version); | ||
337 | FW_VERSION_ATTR(rlc_srls_fw_version, 0444, gfx.rlc_srls_fw_version); | ||
338 | FW_VERSION_ATTR(mec_fw_version, 0444, gfx.mec_fw_version); | ||
339 | FW_VERSION_ATTR(mec2_fw_version, 0444, gfx.mec2_fw_version); | ||
340 | FW_VERSION_ATTR(sos_fw_version, 0444, psp.sos_fw_version); | ||
341 | FW_VERSION_ATTR(asd_fw_version, 0444, psp.asd_fw_version); | ||
342 | FW_VERSION_ATTR(ta_ras_fw_version, 0444, psp.ta_fw_version); | ||
343 | FW_VERSION_ATTR(ta_xgmi_fw_version, 0444, psp.ta_fw_version); | ||
344 | FW_VERSION_ATTR(smc_fw_version, 0444, pm.fw_version); | ||
345 | FW_VERSION_ATTR(sdma_fw_version, 0444, sdma.instance[0].fw_version); | ||
346 | FW_VERSION_ATTR(sdma2_fw_version, 0444, sdma.instance[1].fw_version); | ||
347 | FW_VERSION_ATTR(vcn_fw_version, 0444, vcn.fw_version); | ||
348 | FW_VERSION_ATTR(dmcu_fw_version, 0444, dm.dmcu_fw_version); | ||
349 | |||
350 | static struct attribute *fw_attrs[] = { | ||
351 | &dev_attr_vce_fw_version.attr, &dev_attr_uvd_fw_version.attr, | ||
352 | &dev_attr_mc_fw_version.attr, &dev_attr_me_fw_version.attr, | ||
353 | &dev_attr_pfp_fw_version.attr, &dev_attr_ce_fw_version.attr, | ||
354 | &dev_attr_rlc_fw_version.attr, &dev_attr_rlc_srlc_fw_version.attr, | ||
355 | &dev_attr_rlc_srlg_fw_version.attr, &dev_attr_rlc_srls_fw_version.attr, | ||
356 | &dev_attr_mec_fw_version.attr, &dev_attr_mec2_fw_version.attr, | ||
357 | &dev_attr_sos_fw_version.attr, &dev_attr_asd_fw_version.attr, | ||
358 | &dev_attr_ta_ras_fw_version.attr, &dev_attr_ta_xgmi_fw_version.attr, | ||
359 | &dev_attr_smc_fw_version.attr, &dev_attr_sdma_fw_version.attr, | ||
360 | &dev_attr_sdma2_fw_version.attr, &dev_attr_vcn_fw_version.attr, | ||
361 | &dev_attr_dmcu_fw_version.attr, NULL | ||
362 | }; | ||
363 | |||
364 | static const struct attribute_group fw_attr_group = { | ||
365 | .name = "fw_version", | ||
366 | .attrs = fw_attrs | ||
367 | }; | ||
368 | |||
369 | int amdgpu_ucode_sysfs_init(struct amdgpu_device *adev) | ||
370 | { | ||
371 | return sysfs_create_group(&adev->dev->kobj, &fw_attr_group); | ||
372 | } | ||
373 | |||
374 | void amdgpu_ucode_sysfs_fini(struct amdgpu_device *adev) | ||
375 | { | ||
376 | sysfs_remove_group(&adev->dev->kobj, &fw_attr_group); | ||
377 | } | ||
378 | |||
316 | static int amdgpu_ucode_init_single_fw(struct amdgpu_device *adev, | 379 | static int amdgpu_ucode_init_single_fw(struct amdgpu_device *adev, |
317 | struct amdgpu_firmware_info *ucode, | 380 | struct amdgpu_firmware_info *ucode, |
318 | uint64_t mc_addr, void *kptr) | 381 | uint64_t mc_addr, void *kptr) |