linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] Support 7c3 gpu SKUs
@ 2022-02-21 14:40 Akhil P Oommen
  2022-02-21 14:40 ` [PATCH 1/5] drm/msm: Use generic name for gpu resources Akhil P Oommen
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Akhil P Oommen @ 2022-02-21 14:40 UTC (permalink / raw)
  To: freedreno, dri-devel, linux-arm-msm, Rob Clark,
	OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Dmitry Baryshkov, Bjorn Andersson
  Cc: Abhinav Kumar, Andy Gross, AngeloGioacchino Del Regno,
	Christian König, Daniel Vetter, David Airlie,
	Douglas Anderson, Jonathan Marek, Jordan Crouse, Rob Herring,
	Sean Paul, Stephen Boyd, Vladimir Lypak, Yangtao Li,
	linux-kernel

This series supercedes [1]. Major change in this series is that it is now
optional to include a gpu name in the gpu-list. This helps to avoid the
confusion when we have different SKUs with different gpu names. And also
I am pretty happy that the overall changes are smaller now.

[1] https://patchwork.freedesktop.org/series/99048/


Akhil P Oommen (5):
  drm/msm: Use generic name for gpu resources
  drm/msm/adreno: Generate name from chipid for 7c3
  drm/msm/a6xx: Add support for 7c3 SKUs
  drm/msm/adreno: Expose speedbin to userspace
  arm64: dts: qcom: sc7280: Support gpu speedbin

 arch/arm64/boot/dts/qcom/sc7280.dtsi       | 46 ++++++++++++++++++++++++++++++
 drivers/gpu/drm/msm/adreno/a6xx_gpu.c      | 18 ++++++++++--
 drivers/gpu/drm/msm/adreno/adreno_device.c |  1 -
 drivers/gpu/drm/msm/adreno/adreno_gpu.c    | 35 +++++++++++++++++++----
 drivers/gpu/drm/msm/adreno/adreno_gpu.h    |  3 ++
 drivers/gpu/drm/msm/msm_gpu.c              |  4 +--
 6 files changed, 96 insertions(+), 11 deletions(-)

-- 
2.7.4


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/5] drm/msm: Use generic name for gpu resources
  2022-02-21 14:40 [PATCH 0/5] Support 7c3 gpu SKUs Akhil P Oommen
@ 2022-02-21 14:40 ` Akhil P Oommen
  2022-02-21 14:40 ` [PATCH 2/5] drm/msm/adreno: Generate name from chipid for 7c3 Akhil P Oommen
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Akhil P Oommen @ 2022-02-21 14:40 UTC (permalink / raw)
  To: freedreno, dri-devel, linux-arm-msm, Rob Clark,
	OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Dmitry Baryshkov, Bjorn Andersson
  Cc: Abhinav Kumar, Daniel Vetter, David Airlie, Sean Paul, linux-kernel

Use generic name for resources like irq and kthread instead of hardware
specific name to make it easier to grep.

Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
---

 drivers/gpu/drm/msm/msm_gpu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c
index 2c1049c..04ca37f 100644
--- a/drivers/gpu/drm/msm/msm_gpu.c
+++ b/drivers/gpu/drm/msm/msm_gpu.c
@@ -838,7 +838,7 @@ int msm_gpu_init(struct drm_device *drm, struct platform_device *pdev,
 	gpu->funcs = funcs;
 	gpu->name = name;
 
-	gpu->worker = kthread_create_worker(0, "%s-worker", gpu->name);
+	gpu->worker = kthread_create_worker(0, "gpu-worker");
 	if (IS_ERR(gpu->worker)) {
 		ret = PTR_ERR(gpu->worker);
 		gpu->worker = NULL;
@@ -876,7 +876,7 @@ int msm_gpu_init(struct drm_device *drm, struct platform_device *pdev,
 	}
 
 	ret = devm_request_irq(&pdev->dev, gpu->irq, irq_handler,
-			IRQF_TRIGGER_HIGH, gpu->name, gpu);
+			IRQF_TRIGGER_HIGH, "gpu-irq", gpu);
 	if (ret) {
 		DRM_DEV_ERROR(drm->dev, "failed to request IRQ%u: %d\n", gpu->irq, ret);
 		goto fail;
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/5] drm/msm/adreno: Generate name from chipid for 7c3
  2022-02-21 14:40 [PATCH 0/5] Support 7c3 gpu SKUs Akhil P Oommen
  2022-02-21 14:40 ` [PATCH 1/5] drm/msm: Use generic name for gpu resources Akhil P Oommen
@ 2022-02-21 14:40 ` Akhil P Oommen
  2022-02-23  0:58   ` Rob Clark
  2022-02-21 14:41 ` [PATCH 3/5] drm/msm/a6xx: Add support for 7c3 SKUs Akhil P Oommen
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 9+ messages in thread
From: Akhil P Oommen @ 2022-02-21 14:40 UTC (permalink / raw)
  To: freedreno, dri-devel, linux-arm-msm, Rob Clark,
	OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Dmitry Baryshkov, Bjorn Andersson
  Cc: Abhinav Kumar, AngeloGioacchino Del Regno, Christian König,
	Daniel Vetter, David Airlie, Jonathan Marek, Jordan Crouse,
	Sean Paul, Stephen Boyd, Vladimir Lypak, Yangtao Li,
	linux-kernel

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 <quic_akhilpo@quicinc.com>
---

 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


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/5] drm/msm/a6xx: Add support for 7c3 SKUs
  2022-02-21 14:40 [PATCH 0/5] Support 7c3 gpu SKUs Akhil P Oommen
  2022-02-21 14:40 ` [PATCH 1/5] drm/msm: Use generic name for gpu resources Akhil P Oommen
  2022-02-21 14:40 ` [PATCH 2/5] drm/msm/adreno: Generate name from chipid for 7c3 Akhil P Oommen
@ 2022-02-21 14:41 ` Akhil P Oommen
  2022-02-21 14:41 ` [PATCH 4/5] drm/msm/adreno: Expose speedbin to userspace Akhil P Oommen
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Akhil P Oommen @ 2022-02-21 14:41 UTC (permalink / raw)
  To: freedreno, dri-devel, linux-arm-msm, Rob Clark,
	OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Dmitry Baryshkov, Bjorn Andersson
  Cc: Abhinav Kumar, Daniel Vetter, David Airlie, Douglas Anderson,
	Jonathan Marek, Jordan Crouse, Sean Paul, linux-kernel

Add support for 7c3 SKU detection using speedbin fuse.

Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
---

 drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
index 17cfad64..f308a3f 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
@@ -1736,6 +1736,18 @@ static u32 a618_get_speed_bin(u32 fuse)
 	return UINT_MAX;
 }
 
+static u32 adreno_7c3_get_speed_bin(u32 fuse)
+{
+	if (fuse == 0)
+		return 0;
+	else if (fuse == 117)
+		return 0;
+	else if (fuse == 190)
+		return 1;
+
+	return UINT_MAX;
+}
+
 static u32 fuse_to_supp_hw(struct device *dev, struct adreno_rev rev, u32 fuse)
 {
 	u32 val = UINT_MAX;
@@ -1743,6 +1755,9 @@ static u32 fuse_to_supp_hw(struct device *dev, struct adreno_rev rev, u32 fuse)
 	if (adreno_cmp_rev(ADRENO_REV(6, 1, 8, ANY_ID), rev))
 		val = a618_get_speed_bin(fuse);
 
+	if (adreno_cmp_rev(ADRENO_REV(6, 3, 5, ANY_ID), rev))
+		val = adreno_7c3_get_speed_bin(fuse);
+
 	if (val == UINT_MAX) {
 		DRM_DEV_ERROR(dev,
 			"missing support for speed-bin: %u. Some OPPs may not be supported by hardware",
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/5] drm/msm/adreno: Expose speedbin to userspace
  2022-02-21 14:40 [PATCH 0/5] Support 7c3 gpu SKUs Akhil P Oommen
                   ` (2 preceding siblings ...)
  2022-02-21 14:41 ` [PATCH 3/5] drm/msm/a6xx: Add support for 7c3 SKUs Akhil P Oommen
@ 2022-02-21 14:41 ` Akhil P Oommen
  2022-02-21 14:41 ` [PATCH 5/5] arm64: dts: qcom: sc7280: Support gpu speedbin Akhil P Oommen
  2022-02-23  1:00 ` [PATCH 0/5] Support 7c3 gpu SKUs Rob Clark
  5 siblings, 0 replies; 9+ messages in thread
From: Akhil P Oommen @ 2022-02-21 14:41 UTC (permalink / raw)
  To: freedreno, dri-devel, linux-arm-msm, Rob Clark,
	OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Dmitry Baryshkov, Bjorn Andersson
  Cc: Abhinav Kumar, Christian König, Daniel Vetter, David Airlie,
	Douglas Anderson, Jonathan Marek, Jordan Crouse, Sean Paul,
	Stephen Boyd, Vladimir Lypak, Yangtao Li, linux-kernel

Expose speedbin through MSM_PARAM_CHIP_ID parameter to help userspace
identify the sku.

Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
---

 drivers/gpu/drm/msm/adreno/a6xx_gpu.c   |  3 +--
 drivers/gpu/drm/msm/adreno/adreno_gpu.c | 21 +++++++++++++++++----
 drivers/gpu/drm/msm/adreno/adreno_gpu.h |  3 +++
 3 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
index f308a3f..e2728be3 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
@@ -10,7 +10,6 @@
 
 #include <linux/bitfield.h>
 #include <linux/devfreq.h>
-#include <linux/nvmem-consumer.h>
 #include <linux/soc/qcom/llcc-qcom.h>
 
 #define GPU_PAS_ID 13
@@ -1774,7 +1773,7 @@ static int a6xx_set_supported_hw(struct device *dev, struct adreno_rev rev)
 	u32 speedbin;
 	int ret;
 
-	ret = nvmem_cell_read_variable_le_u32(dev, "speed_bin", &speedbin);
+	ret = adreno_read_speedbin(dev, &speedbin);
 	/*
 	 * -ENOENT means that the platform doesn't support speedbin which is
 	 * fine
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
index 158bbf7..2934c34 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
@@ -14,6 +14,7 @@
 #include <linux/pm_opp.h>
 #include <linux/slab.h>
 #include <linux/soc/qcom/mdt_loader.h>
+#include <linux/nvmem-consumer.h>
 #include <soc/qcom/ocmem.h>
 #include "adreno_gpu.h"
 #include "a6xx_gpu.h"
@@ -242,10 +243,12 @@ int adreno_get_param(struct msm_gpu *gpu, uint32_t param, uint64_t *value)
 		*value = !adreno_is_a650_family(adreno_gpu) ? 0x100000 : 0;
 		return 0;
 	case MSM_PARAM_CHIP_ID:
-		*value = adreno_gpu->rev.patchid |
-				(adreno_gpu->rev.minor << 8) |
-				(adreno_gpu->rev.major << 16) |
-				(adreno_gpu->rev.core << 24);
+		*value = (uint64_t) adreno_gpu->rev.patchid |
+				(uint64_t) (adreno_gpu->rev.minor << 8) |
+				(uint64_t) (adreno_gpu->rev.major << 16) |
+				(uint64_t) (adreno_gpu->rev.core << 24);
+		if (!adreno_gpu->info->revn)
+			*value |= ((uint64_t) adreno_gpu->speedbin) << 32;
 		return 0;
 	case MSM_PARAM_MAX_FREQ:
 		*value = adreno_gpu->base.fast_rate;
@@ -921,6 +924,11 @@ void adreno_gpu_ocmem_cleanup(struct adreno_ocmem *adreno_ocmem)
 			   adreno_ocmem->hdl);
 }
 
+int adreno_read_speedbin(struct device *dev, u32 *speedbin)
+{
+	return nvmem_cell_read_variable_le_u32(dev, "speed_bin", speedbin);
+}
+
 int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
 		struct adreno_gpu *adreno_gpu,
 		const struct adreno_gpu_funcs *funcs, int nr_rings)
@@ -932,6 +940,7 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
 	struct adreno_rev *rev = &config->rev;
 	const char *gpu_name;
 	static char name[8];
+	u32 speedbin;
 
 	adreno_gpu->funcs = funcs;
 	adreno_gpu->info = adreno_info(config->rev);
@@ -939,6 +948,10 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
 	adreno_gpu->revn = adreno_gpu->info->revn;
 	adreno_gpu->rev = *rev;
 
+	if (adreno_read_speedbin(dev, &speedbin) || !speedbin)
+		speedbin = 0xffff;
+	adreno_gpu->speedbin = (uint16_t) (0xffff & speedbin);
+
 	gpu_name = adreno_gpu->info->name;
 	if (!gpu_name) {
 		sprintf(name, "%d.%d.%d.%d", rev->core, rev->major, rev->minor,
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.h b/drivers/gpu/drm/msm/adreno/adreno_gpu.h
index cffabe7..e2a7150 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.h
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.h
@@ -80,6 +80,7 @@ struct adreno_gpu {
 	const struct adreno_info *info;
 	uint32_t gmem;  /* actual gmem size */
 	uint32_t revn;  /* numeric revision name */
+	uint16_t speedbin;
 	const struct adreno_gpu_funcs *funcs;
 
 	/* interesting register offsets to dump: */
@@ -324,6 +325,8 @@ adreno_iommu_create_address_space(struct msm_gpu *gpu,
 
 void adreno_set_llc_attributes(struct iommu_domain *iommu);
 
+int adreno_read_speedbin(struct device *dev, u32 *speedbin);
+
 /*
  * For a5xx and a6xx targets load the zap shader that is used to pull the GPU
  * out of secure mode
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 5/5] arm64: dts: qcom: sc7280: Support gpu speedbin
  2022-02-21 14:40 [PATCH 0/5] Support 7c3 gpu SKUs Akhil P Oommen
                   ` (3 preceding siblings ...)
  2022-02-21 14:41 ` [PATCH 4/5] drm/msm/adreno: Expose speedbin to userspace Akhil P Oommen
@ 2022-02-21 14:41 ` Akhil P Oommen
  2022-02-23  1:00 ` [PATCH 0/5] Support 7c3 gpu SKUs Rob Clark
  5 siblings, 0 replies; 9+ messages in thread
From: Akhil P Oommen @ 2022-02-21 14:41 UTC (permalink / raw)
  To: freedreno, dri-devel, linux-arm-msm, Rob Clark,
	OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Dmitry Baryshkov, Bjorn Andersson
  Cc: Andy Gross, Rob Herring, linux-kernel

Add speedbin fuse and additional OPPs for gpu to support sc7280 SKUs.

Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
---

 arch/arm64/boot/dts/qcom/sc7280.dtsi | 46 ++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi
index 365a2e0..f8fc8b8 100644
--- a/arch/arm64/boot/dts/qcom/sc7280.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
@@ -605,6 +605,11 @@
 			power-domains = <&rpmhpd SC7280_MX>;
 			#address-cells = <1>;
 			#size-cells = <1>;
+
+			gpu_speed_bin: gpu_speed_bin@1e9 {
+				reg = <0x1e9 0x2>;
+				bits = <5 8>;
+			};
 		};
 
 		sdhc_1: sdhci@7c4000 {
@@ -1762,6 +1767,9 @@
 			interconnect-names = "gfx-mem";
 			#cooling-cells = <2>;
 
+			nvmem-cells = <&gpu_speed_bin>;
+			nvmem-cell-names = "speed_bin";
+
 			gpu_opp_table: opp-table {
 				compatible = "operating-points-v2";
 
@@ -1769,18 +1777,56 @@
 					opp-hz = /bits/ 64 <315000000>;
 					opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
 					opp-peak-kBps = <1804000>;
+					opp-supported-hw = <0x03>;
 				};
 
 				opp-450000000 {
 					opp-hz = /bits/ 64 <450000000>;
 					opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
 					opp-peak-kBps = <4068000>;
+					opp-supported-hw = <0x03>;
 				};
 
 				opp-550000000 {
 					opp-hz = /bits/ 64 <550000000>;
 					opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
 					opp-peak-kBps = <6832000>;
+					opp-supported-hw = <0x03>;
+				};
+
+				opp-608000000 {
+					opp-hz = /bits/ 64 <608000000>;
+					opp-level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
+					opp-peak-kBps = <8368000>;
+					opp-supported-hw = <0x02>;
+				};
+
+				opp-700000000 {
+					opp-hz = /bits/ 64 <700000000>;
+					opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
+					opp-peak-kBps = <8532000>;
+					opp-supported-hw = <0x02>;
+				};
+
+				opp-812000000 {
+					opp-hz = /bits/ 64 <812000000>;
+					opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
+					opp-peak-kBps = <8532000>;
+					opp-supported-hw = <0x02>;
+				};
+
+				opp-840000000 {
+					opp-hz = /bits/ 64 <840000000>;
+					opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
+					opp-peak-kBps = <8532000>;
+					opp-supported-hw = <0x02>;
+				};
+
+				opp-900000000 {
+					opp-hz = /bits/ 64 <900000000>;
+					opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
+					opp-peak-kBps = <8532000>;
+					opp-supported-hw = <0x02>;
 				};
 			};
 		};
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/5] drm/msm/adreno: Generate name from chipid for 7c3
  2022-02-21 14:40 ` [PATCH 2/5] drm/msm/adreno: Generate name from chipid for 7c3 Akhil P Oommen
@ 2022-02-23  0:58   ` Rob Clark
  2022-02-23 20:08     ` Akhil P Oommen
  0 siblings, 1 reply; 9+ messages in thread
From: Rob Clark @ 2022-02-23  0:58 UTC (permalink / raw)
  To: Akhil P Oommen
  Cc: freedreno, dri-devel, linux-arm-msm,
	OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Dmitry Baryshkov, Bjorn Andersson, Abhinav Kumar,
	AngeloGioacchino Del Regno, Christian König, Daniel Vetter,
	David Airlie, Jonathan Marek, Jordan Crouse, Sean Paul,
	Stephen Boyd, Vladimir Lypak, Yangtao Li,
	Linux Kernel Mailing List

On Mon, Feb 21, 2022 at 6:41 AM Akhil P Oommen <quic_akhilpo@quicinc.com> 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 <quic_akhilpo@quicinc.com>
> ---
>
>  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
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/5] Support 7c3 gpu SKUs
  2022-02-21 14:40 [PATCH 0/5] Support 7c3 gpu SKUs Akhil P Oommen
                   ` (4 preceding siblings ...)
  2022-02-21 14:41 ` [PATCH 5/5] arm64: dts: qcom: sc7280: Support gpu speedbin Akhil P Oommen
@ 2022-02-23  1:00 ` Rob Clark
  5 siblings, 0 replies; 9+ messages in thread
From: Rob Clark @ 2022-02-23  1:00 UTC (permalink / raw)
  To: Akhil P Oommen
  Cc: freedreno, dri-devel, linux-arm-msm,
	OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Dmitry Baryshkov, Bjorn Andersson, Abhinav Kumar, Andy Gross,
	AngeloGioacchino Del Regno, Christian König, Daniel Vetter,
	David Airlie, Douglas Anderson, Jonathan Marek, Jordan Crouse,
	Rob Herring, Sean Paul, Stephen Boyd, Vladimir Lypak, Yangtao Li,
	Linux Kernel Mailing List

On Mon, Feb 21, 2022 at 6:41 AM Akhil P Oommen <quic_akhilpo@quicinc.com> wrote:
>
> This series supercedes [1]. Major change in this series is that it is now
> optional to include a gpu name in the gpu-list. This helps to avoid the
> confusion when we have different SKUs with different gpu names. And also
> I am pretty happy that the overall changes are smaller now.
>
> [1] https://patchwork.freedesktop.org/series/99048/
>

Other than a nit in 2/5, this looks good to me

BR,
-R

>
> Akhil P Oommen (5):
>   drm/msm: Use generic name for gpu resources
>   drm/msm/adreno: Generate name from chipid for 7c3
>   drm/msm/a6xx: Add support for 7c3 SKUs
>   drm/msm/adreno: Expose speedbin to userspace
>   arm64: dts: qcom: sc7280: Support gpu speedbin
>
>  arch/arm64/boot/dts/qcom/sc7280.dtsi       | 46 ++++++++++++++++++++++++++++++
>  drivers/gpu/drm/msm/adreno/a6xx_gpu.c      | 18 ++++++++++--
>  drivers/gpu/drm/msm/adreno/adreno_device.c |  1 -
>  drivers/gpu/drm/msm/adreno/adreno_gpu.c    | 35 +++++++++++++++++++----
>  drivers/gpu/drm/msm/adreno/adreno_gpu.h    |  3 ++
>  drivers/gpu/drm/msm/msm_gpu.c              |  4 +--
>  6 files changed, 96 insertions(+), 11 deletions(-)
>
> --
> 2.7.4
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/5] drm/msm/adreno: Generate name from chipid for 7c3
  2022-02-23  0:58   ` Rob Clark
@ 2022-02-23 20:08     ` Akhil P Oommen
  0 siblings, 0 replies; 9+ messages in thread
From: Akhil P Oommen @ 2022-02-23 20:08 UTC (permalink / raw)
  To: Rob Clark
  Cc: freedreno, dri-devel, linux-arm-msm,
	OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Dmitry Baryshkov, Bjorn Andersson, Abhinav Kumar,
	AngeloGioacchino Del Regno, Christian König, Daniel Vetter,
	David Airlie, Jonathan Marek, Jordan Crouse, Sean Paul,
	Stephen Boyd, Vladimir Lypak, Yangtao Li,
	Linux Kernel Mailing List

On 2/23/2022 6:28 AM, Rob Clark wrote:
> On Mon, Feb 21, 2022 at 6:41 AM Akhil P Oommen <quic_akhilpo@quicinc.com> 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 <quic_akhilpo@quicinc.com>
>> ---
>>
>>   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
>>


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2022-02-23 20:08 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-21 14:40 [PATCH 0/5] Support 7c3 gpu SKUs Akhil P Oommen
2022-02-21 14:40 ` [PATCH 1/5] drm/msm: Use generic name for gpu resources Akhil P Oommen
2022-02-21 14:40 ` [PATCH 2/5] drm/msm/adreno: Generate name from chipid for 7c3 Akhil P Oommen
2022-02-23  0:58   ` Rob Clark
2022-02-23 20:08     ` Akhil P Oommen
2022-02-21 14:41 ` [PATCH 3/5] drm/msm/a6xx: Add support for 7c3 SKUs Akhil P Oommen
2022-02-21 14:41 ` [PATCH 4/5] drm/msm/adreno: Expose speedbin to userspace Akhil P Oommen
2022-02-21 14:41 ` [PATCH 5/5] arm64: dts: qcom: sc7280: Support gpu speedbin Akhil P Oommen
2022-02-23  1:00 ` [PATCH 0/5] Support 7c3 gpu SKUs Rob Clark

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).