Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amd: Convert USB-C PD F/W attributes into groups

Rather than special casing the creation of the file, special case
the visibility to the supported dGPUs.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Mario Limonciello and committed by
Alex Deucher
98d19a6c 1cc506f0

+9 -30
+9 -30
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
··· 45 45 46 46 #define AMD_VBIOS_FILE_MAX_SIZE_B (1024*1024*3) 47 47 48 - static int psp_sysfs_init(struct amdgpu_device *adev); 49 - static void psp_sysfs_fini(struct amdgpu_device *adev); 50 - 51 48 static int psp_load_smu_fw(struct psp_context *psp); 52 49 static int psp_rap_terminate(struct psp_context *psp); 53 50 static int psp_securedisplay_terminate(struct psp_context *psp); ··· 459 462 } 460 463 } 461 464 462 - if (adev->ip_versions[MP0_HWIP][0] == IP_VERSION(11, 0, 0) || 463 - adev->ip_versions[MP0_HWIP][0] == IP_VERSION(11, 0, 7)) { 464 - ret = psp_sysfs_init(adev); 465 - if (ret) 466 - return ret; 467 - } 468 - 469 465 ret = amdgpu_bo_create_kernel(adev, PSP_1_MEG, PSP_1_MEG, 470 466 amdgpu_sriov_vf(adev) ? 471 467 AMDGPU_GEM_DOMAIN_VRAM : AMDGPU_GEM_DOMAIN_GTT, ··· 509 519 amdgpu_ucode_release(&psp->ta_fw); 510 520 amdgpu_ucode_release(&psp->cap_fw); 511 521 amdgpu_ucode_release(&psp->toc_fw); 512 - 513 - if (adev->ip_versions[MP0_HWIP][0] == IP_VERSION(11, 0, 0) || 514 - adev->ip_versions[MP0_HWIP][0] == IP_VERSION(11, 0, 7)) 515 - psp_sysfs_fini(adev); 516 522 517 523 kfree(cmd); 518 524 cmd = NULL; ··· 3691 3705 static struct attribute *flash_attrs[] = { 3692 3706 &dev_attr_psp_vbflash_status.attr, 3693 3707 &psp_vbflash_bin_attr.attr, 3708 + &dev_attr_usbc_pd_fw.attr, 3694 3709 NULL 3695 3710 }; 3696 3711 ··· 3705 3718 return 0; 3706 3719 3707 3720 switch (adev->ip_versions[MP0_HWIP][0]) { 3721 + case IP_VERSION(11, 0, 0): 3722 + case IP_VERSION(11, 0, 7): 3723 + if (attr == &dev_attr_usbc_pd_fw.attr) 3724 + return 0660; 3725 + return 0; 3708 3726 case IP_VERSION(13, 0, 0): 3709 3727 case IP_VERSION(13, 0, 7): 3710 - if (attr == &psp_vbflash_bin_attr.attr) 3728 + if (attr == &dev_attr_usbc_pd_fw.attr) 3729 + return 0; 3730 + else if (attr == &psp_vbflash_bin_attr.attr) 3711 3731 return 0660; 3712 3732 return 0440; 3713 3733 default: ··· 3744 3750 .set_clockgating_state = psp_set_clockgating_state, 3745 3751 .set_powergating_state = psp_set_powergating_state, 3746 3752 }; 3747 - 3748 - static int psp_sysfs_init(struct amdgpu_device *adev) 3749 - { 3750 - int ret = device_create_file(adev->dev, &dev_attr_usbc_pd_fw); 3751 - 3752 - if (ret) 3753 - DRM_ERROR("Failed to create USBC PD FW control file!"); 3754 - 3755 - return ret; 3756 - } 3757 - 3758 - static void psp_sysfs_fini(struct amdgpu_device *adev) 3759 - { 3760 - device_remove_file(adev->dev, &dev_attr_usbc_pd_fw); 3761 - } 3762 3753 3763 3754 const struct amdgpu_ip_block_version psp_v3_1_ip_block = { 3764 3755 .type = AMD_IP_BLOCK_TYPE_PSP,