2022-02-21 17:07:16

by Akhil P Oommen

[permalink] [raw]
Subject: [PATCH 2/5] drm/msm/adreno: Generate name from chipid for 7c3

Use a gpu name which is sprintf'ed from the chipid for 7c3 gpu instead of
hardcoding one. This helps to avoid code churn in case of a gpu rename.

Signed-off-by: Akhil P Oommen <[email protected]>
---

drivers/gpu/drm/msm/adreno/adreno_device.c | 1 -
drivers/gpu/drm/msm/adreno/adreno_gpu.c | 14 ++++++++++++--
2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/msm/adreno/adreno_device.c
index fb26193..89cfd84 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_device.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_device.c
@@ -318,7 +318,6 @@ static const struct adreno_info gpulist[] = {
.hwcg = a660_hwcg,
}, {
.rev = ADRENO_REV(6, 3, 5, ANY_ID),
- .name = "Adreno 7c Gen 3",
.fw = {
[ADRENO_FW_SQE] = "a660_sqe.fw",
[ADRENO_FW_GMU] = "a660_gmu.bin",
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
index f33cfa4..158bbf7 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
@@ -929,12 +929,22 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
struct adreno_platform_config *config = dev->platform_data;
struct msm_gpu_config adreno_gpu_config = { 0 };
struct msm_gpu *gpu = &adreno_gpu->base;
+ struct adreno_rev *rev = &config->rev;
+ const char *gpu_name;
+ static char name[8];

adreno_gpu->funcs = funcs;
adreno_gpu->info = adreno_info(config->rev);
adreno_gpu->gmem = adreno_gpu->info->gmem;
adreno_gpu->revn = adreno_gpu->info->revn;
- adreno_gpu->rev = config->rev;
+ adreno_gpu->rev = *rev;
+
+ gpu_name = adreno_gpu->info->name;
+ if (!gpu_name) {
+ sprintf(name, "%d.%d.%d.%d", rev->core, rev->major, rev->minor,
+ rev->patchid);
+ gpu_name = name;
+ }

adreno_gpu_config.ioname = "kgsl_3d0_reg_memory";

@@ -948,7 +958,7 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
pm_runtime_enable(dev);

return msm_gpu_init(drm, pdev, &adreno_gpu->base, &funcs->base,
- adreno_gpu->info->name, &adreno_gpu_config);
+ gpu_name, &adreno_gpu_config);
}

void adreno_gpu_cleanup(struct adreno_gpu *adreno_gpu)
--
2.7.4


2022-02-23 01:43:18

by Rob Clark

[permalink] [raw]
Subject: Re: [PATCH 2/5] drm/msm/adreno: Generate name from chipid for 7c3

On Mon, Feb 21, 2022 at 6:41 AM Akhil P Oommen <[email protected]> wrote:
>
> Use a gpu name which is sprintf'ed from the chipid for 7c3 gpu instead of
> hardcoding one. This helps to avoid code churn in case of a gpu rename.
>
> Signed-off-by: Akhil P Oommen <[email protected]>
> ---
>
> drivers/gpu/drm/msm/adreno/adreno_device.c | 1 -
> drivers/gpu/drm/msm/adreno/adreno_gpu.c | 14 ++++++++++++--
> 2 files changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/msm/adreno/adreno_device.c
> index fb26193..89cfd84 100644
> --- a/drivers/gpu/drm/msm/adreno/adreno_device.c
> +++ b/drivers/gpu/drm/msm/adreno/adreno_device.c
> @@ -318,7 +318,6 @@ static const struct adreno_info gpulist[] = {
> .hwcg = a660_hwcg,
> }, {
> .rev = ADRENO_REV(6, 3, 5, ANY_ID),
> - .name = "Adreno 7c Gen 3",
> .fw = {
> [ADRENO_FW_SQE] = "a660_sqe.fw",
> [ADRENO_FW_GMU] = "a660_gmu.bin",
> diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> index f33cfa4..158bbf7 100644
> --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> @@ -929,12 +929,22 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
> struct adreno_platform_config *config = dev->platform_data;
> struct msm_gpu_config adreno_gpu_config = { 0 };
> struct msm_gpu *gpu = &adreno_gpu->base;
> + struct adreno_rev *rev = &config->rev;
> + const char *gpu_name;
> + static char name[8];

I think 8 is not always enough.. but maybe just use devm_kasprintf()
to keep it simpler?

BR,
-R

>
> adreno_gpu->funcs = funcs;
> adreno_gpu->info = adreno_info(config->rev);
> adreno_gpu->gmem = adreno_gpu->info->gmem;
> adreno_gpu->revn = adreno_gpu->info->revn;
> - adreno_gpu->rev = config->rev;
> + adreno_gpu->rev = *rev;
> +
> + gpu_name = adreno_gpu->info->name;
> + if (!gpu_name) {
> + sprintf(name, "%d.%d.%d.%d", rev->core, rev->major, rev->minor,
> + rev->patchid);
> + gpu_name = name;
> + }
>
> adreno_gpu_config.ioname = "kgsl_3d0_reg_memory";
>
> @@ -948,7 +958,7 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
> pm_runtime_enable(dev);
>
> return msm_gpu_init(drm, pdev, &adreno_gpu->base, &funcs->base,
> - adreno_gpu->info->name, &adreno_gpu_config);
> + gpu_name, &adreno_gpu_config);
> }
>
> void adreno_gpu_cleanup(struct adreno_gpu *adreno_gpu)
> --
> 2.7.4
>

2022-02-24 01:42:41

by Akhil P Oommen

[permalink] [raw]
Subject: Re: [PATCH 2/5] drm/msm/adreno: Generate name from chipid for 7c3

On 2/23/2022 6:28 AM, Rob Clark wrote:
> On Mon, Feb 21, 2022 at 6:41 AM Akhil P Oommen <[email protected]> wrote:
>> Use a gpu name which is sprintf'ed from the chipid for 7c3 gpu instead of
>> hardcoding one. This helps to avoid code churn in case of a gpu rename.
>>
>> Signed-off-by: Akhil P Oommen <[email protected]>
>> ---
>>
>> drivers/gpu/drm/msm/adreno/adreno_device.c | 1 -
>> drivers/gpu/drm/msm/adreno/adreno_gpu.c | 14 ++++++++++++--
>> 2 files changed, 12 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/msm/adreno/adreno_device.c
>> index fb26193..89cfd84 100644
>> --- a/drivers/gpu/drm/msm/adreno/adreno_device.c
>> +++ b/drivers/gpu/drm/msm/adreno/adreno_device.c
>> @@ -318,7 +318,6 @@ static const struct adreno_info gpulist[] = {
>> .hwcg = a660_hwcg,
>> }, {
>> .rev = ADRENO_REV(6, 3, 5, ANY_ID),
>> - .name = "Adreno 7c Gen 3",
>> .fw = {
>> [ADRENO_FW_SQE] = "a660_sqe.fw",
>> [ADRENO_FW_GMU] = "a660_gmu.bin",
>> diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
>> index f33cfa4..158bbf7 100644
>> --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
>> +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
>> @@ -929,12 +929,22 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
>> struct adreno_platform_config *config = dev->platform_data;
>> struct msm_gpu_config adreno_gpu_config = { 0 };
>> struct msm_gpu *gpu = &adreno_gpu->base;
>> + struct adreno_rev *rev = &config->rev;
>> + const char *gpu_name;
>> + static char name[8];
> I think 8 is not always enough.. but maybe just use devm_kasprintf()
> to keep it simpler?
>
> BR,
> -R
Sounds good. Will update this patch.

-Akhil.
>> adreno_gpu->funcs = funcs;
>> adreno_gpu->info = adreno_info(config->rev);
>> adreno_gpu->gmem = adreno_gpu->info->gmem;
>> adreno_gpu->revn = adreno_gpu->info->revn;
>> - adreno_gpu->rev = config->rev;
>> + adreno_gpu->rev = *rev;
>> +
>> + gpu_name = adreno_gpu->info->name;
>> + if (!gpu_name) {
>> + sprintf(name, "%d.%d.%d.%d", rev->core, rev->major, rev->minor,
>> + rev->patchid);
>> + gpu_name = name;
>> + }
>>
>> adreno_gpu_config.ioname = "kgsl_3d0_reg_memory";
>>
>> @@ -948,7 +958,7 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
>> pm_runtime_enable(dev);
>>
>> return msm_gpu_init(drm, pdev, &adreno_gpu->base, &funcs->base,
>> - adreno_gpu->info->name, &adreno_gpu_config);
>> + gpu_name, &adreno_gpu_config);
>> }
>>
>> void adreno_gpu_cleanup(struct adreno_gpu *adreno_gpu)
>> --
>> 2.7.4
>>