[PATCH 2/3] drm/radeon: Add implementation of get_fw_version

Oded Gabbay oded.gabbay at amd.com
Sun Dec 14 02:24:03 PST 2014



On 12/10/2014 11:57 PM, Alex Deucher wrote:
> On Wed, Dec 10, 2014 at 8:13 AM, Oded Gabbay <oded.gabbay at amd.com> wrote:
>> From: Alexey Skidanov <Alexey.Skidanov at amd.com>
>>
>> This patch implements a new interface that was added to the kfd-->kgd interface.
>> The new interface function retrieves the firmware version that is currently
>> in use by the MEC engine. The firmware was uploaded to the MEC engine by the
>> radeon driver.
>>
>> Signed-off-by: Alexey Skidanov <Alexey.Skidanov at amd.com>
>> Reviewed-by: Oded Gabbay <oded.gabbay at amd.com>
>> ---
>>   drivers/gpu/drm/radeon/radeon_kfd.c | 23 +++++++++++++++++++++++
>>   1 file changed, 23 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/radeon/radeon_kfd.c b/drivers/gpu/drm/radeon/radeon_kfd.c
>> index 065d020..223c831 100644
>> --- a/drivers/gpu/drm/radeon/radeon_kfd.c
>> +++ b/drivers/gpu/drm/radeon/radeon_kfd.c
>> @@ -28,6 +28,8 @@
>>   #include "cikd.h"
>>   #include "cik_reg.h"
>>   #include "radeon_kfd.h"
>> +#include "radeon_ucode.h"
>> +#include <linux/firmware.h>
>>
>>   #define CIK_PIPE_PER_MEC       (4)
>>
>> @@ -49,6 +51,7 @@ static uint64_t get_vmem_size(struct kgd_dev *kgd);
>>   static uint64_t get_gpu_clock_counter(struct kgd_dev *kgd);
>>
>>   static uint32_t get_max_engine_clock_in_mhz(struct kgd_dev *kgd);
>> +static uint16_t get_fw_version(struct kgd_dev *kgd);
>>
>>   /*
>>    * Register access functions
>> @@ -91,6 +94,7 @@ static const struct kfd2kgd_calls kfd2kgd = {
>>          .hqd_load = kgd_hqd_load,
>>          .hqd_is_occupies = kgd_hqd_is_occupies,
>>          .hqd_destroy = kgd_hqd_destroy,
>> +       .get_fw_version = get_fw_version
>>   };
>>
>>   static const struct kgd2kfd_calls *kgd2kfd;
>> @@ -561,3 +565,22 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd, uint32_t reset_type,
>>          release_queue(kgd);
>>          return 0;
>>   }
>> +
>> +static uint16_t get_fw_version(struct kgd_dev *kgd)
>
> I think it would be better to call the is get_mec_fw_version or add an
> engine and/or instance parameter if it need to query other engines
> (e.g., MEC2 or GFX).
>
Right, I will add the engine parameter.
>> +{
>> +       struct radeon_device *rdev;
>> +       const struct gfx_firmware_header_v1_0 *hdr;
>> +
>> +       BUG_ON(kgd == NULL);
>> +
>> +       rdev = (struct radeon_device *) kgd;
>> +
>> +       BUG_ON(rdev->mec_fw == NULL);
>> +
>> +       hdr = (const struct gfx_firmware_header_v1_0 *)rdev->mec_fw->data;
>> +
>
> Do you care about the fw version of MEC2?
Not currently, as MEC1 & MEC2 have the same fw version, although we load 
different fw files to them.

	Oded
>
> Alex
>


More information about the dri-devel mailing list