* [PATCH v2 1/5] dt-bindings: display/msm/gmu: Add Adreno X185 GMU
2024-06-29 1:49 [PATCH v2 0/5] Support for Adreno X1-85 GPU Akhil P Oommen
@ 2024-06-29 1:49 ` Akhil P Oommen
2024-06-29 1:49 ` [PATCH v2 2/5] drm/msm/adreno: Add support for X185 GPU Akhil P Oommen
` (6 subsequent siblings)
7 siblings, 0 replies; 13+ messages in thread
From: Akhil P Oommen @ 2024-06-29 1:49 UTC (permalink / raw)
To: freedreno, dri-devel, linux-arm-msm,
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, Bjorn Andersson,
Rob Clark, Dmitry Baryshkov, Konrad Dybcio, Krzysztof Kozlowski,
Will Deacon
Cc: Akhil P Oommen, Abhinav Kumar, Conor Dooley, Daniel Vetter,
David Airlie, Krzysztof Kozlowski, Maarten Lankhorst,
Marijn Suijten, Maxime Ripard, Rob Herring, Sean Paul,
Thomas Zimmermann, linux-kernel
Document Adreno X185 GMU in the dt-binding specification.
Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
---
Changes in v2:
- Minor update to compatible pattern, '[x]' -> 'x'
Documentation/devicetree/bindings/display/msm/gmu.yaml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/msm/gmu.yaml b/Documentation/devicetree/bindings/display/msm/gmu.yaml
index b3837368a260..b1bd372996d5 100644
--- a/Documentation/devicetree/bindings/display/msm/gmu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/gmu.yaml
@@ -23,6 +23,9 @@ properties:
- items:
- pattern: '^qcom,adreno-gmu-[67][0-9][0-9]\.[0-9]$'
- const: qcom,adreno-gmu
+ - items:
+ - pattern: '^qcom,adreno-gmu-x[1-9][0-9][0-9]\.[0-9]$'
+ - const: qcom,adreno-gmu
- const: qcom,adreno-gmu-wrapper
reg:
@@ -225,6 +228,7 @@ allOf:
- qcom,adreno-gmu-730.1
- qcom,adreno-gmu-740.1
- qcom,adreno-gmu-750.1
+ - qcom,adreno-gmu-x185.1
then:
properties:
reg:
--
2.45.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH v2 2/5] drm/msm/adreno: Add support for X185 GPU
2024-06-29 1:49 [PATCH v2 0/5] Support for Adreno X1-85 GPU Akhil P Oommen
2024-06-29 1:49 ` [PATCH v2 1/5] dt-bindings: display/msm/gmu: Add Adreno X185 GMU Akhil P Oommen
@ 2024-06-29 1:49 ` Akhil P Oommen
2024-06-29 13:04 ` Konrad Dybcio
2024-06-29 1:49 ` [PATCH v2 3/5] drm/msm/adreno: Introduce gmu_chipid for a740 & a750 Akhil P Oommen
` (5 subsequent siblings)
7 siblings, 1 reply; 13+ messages in thread
From: Akhil P Oommen @ 2024-06-29 1:49 UTC (permalink / raw)
To: freedreno, dri-devel, linux-arm-msm,
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, Bjorn Andersson,
Rob Clark, Dmitry Baryshkov, Konrad Dybcio, Krzysztof Kozlowski,
Will Deacon
Cc: Akhil P Oommen, Abhinav Kumar, Daniel Vetter, David Airlie,
Marijn Suijten, Sean Paul, linux-kernel
Add support in drm/msm driver for the Adreno X185 gpu found in
Snapdragon X1 Elite chipset.
Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
---
Changes in v2:
- Increased address space size (Rob)
- Introduced gmu_chipid in a6xx_info (Rob)
- Improved fallback logic for gmxc (Dmitry)
drivers/gpu/drm/msm/adreno/a6xx_catalog.c | 18 ++++++++++++++++++
drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 13 +++++++++++--
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 2 +-
drivers/gpu/drm/msm/adreno/a6xx_gpu.h | 1 +
drivers/gpu/drm/msm/adreno/adreno_gpu.h | 5 +++++
5 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_catalog.c b/drivers/gpu/drm/msm/adreno/a6xx_catalog.c
index 53e33ff78411..c507681648ac 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_catalog.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_catalog.c
@@ -1208,6 +1208,24 @@ static const struct adreno_info a7xx_gpus[] = {
.protect = &a730_protect,
},
.address_space_size = SZ_16G,
+ }, {
+ .chip_ids = ADRENO_CHIP_IDS(0x43050c01), /* "C512v2" */
+ .family = ADRENO_7XX_GEN2,
+ .fw = {
+ [ADRENO_FW_SQE] = "gen70500_sqe.fw",
+ [ADRENO_FW_GMU] = "gen70500_gmu.bin",
+ },
+ .gmem = 3 * SZ_1M,
+ .inactive_period = DRM_MSM_INACTIVE_PERIOD,
+ .quirks = ADRENO_QUIRK_HAS_CACHED_COHERENT |
+ ADRENO_QUIRK_HAS_HW_APRIV,
+ .init = a6xx_gpu_init,
+ .a6xx = &(const struct a6xx_info) {
+ .hwcg = a740_hwcg,
+ .protect = &a730_protect,
+ .gmu_chipid = 0x7050001,
+ },
+ .address_space_size = SZ_256G,
}, {
.chip_ids = ADRENO_CHIP_IDS(0x43051401), /* "C520v2" */
.family = ADRENO_7XX_GEN3,
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
index 0e3dfd4c2bc8..20034aa2fad8 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
@@ -769,6 +769,7 @@ static int a6xx_gmu_fw_start(struct a6xx_gmu *gmu, unsigned int state)
{
struct a6xx_gpu *a6xx_gpu = container_of(gmu, struct a6xx_gpu, gmu);
struct adreno_gpu *adreno_gpu = &a6xx_gpu->base;
+ const struct a6xx_info *a6xx_info = adreno_gpu->info->a6xx;
u32 fence_range_lower, fence_range_upper;
u32 chipid, chipid_min = 0;
int ret;
@@ -830,8 +831,10 @@ static int a6xx_gmu_fw_start(struct a6xx_gmu *gmu, unsigned int state)
*/
gmu_write(gmu, REG_A6XX_GMU_CM3_CFG, 0x4052);
+ if (a6xx_info->gmu_chipid) {
+ chipid = a6xx_info->gmu_chipid;
/* NOTE: A730 may also fall in this if-condition with a future GMU fw update. */
- if (adreno_is_a7xx(adreno_gpu) && !adreno_is_a730(adreno_gpu)) {
+ } else if (adreno_is_a7xx(adreno_gpu) && !adreno_is_a730(adreno_gpu)) {
/* A7xx GPUs have obfuscated chip IDs. Use constant maj = 7 */
chipid = FIELD_PREP(GENMASK(31, 24), 0x7);
@@ -1329,7 +1332,13 @@ static int a6xx_gmu_rpmh_arc_votes_init(struct device *dev, u32 *votes,
if (!pri_count)
return -EINVAL;
- sec = cmd_db_read_aux_data("mx.lvl", &sec_count);
+ /*
+ * Some targets have a separate gfx mxc rail. So try to read that first and then fall back
+ * to regular mx rail if it is missing
+ */
+ sec = cmd_db_read_aux_data("gmxc.lvl", &sec_count);
+ if (IS_ERR(sec) && sec != ERR_PTR(-EPROBE_DEFER))
+ sec = cmd_db_read_aux_data("mx.lvl", &sec_count);
if (IS_ERR(sec))
return PTR_ERR(sec);
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
index c98cdb1e9326..092e0a1dd612 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
@@ -1031,7 +1031,7 @@ static int hw_init(struct msm_gpu *gpu)
gpu_write(gpu, REG_A6XX_UCHE_CLIENT_PF, BIT(7) | 0x1);
/* Set weights for bicubic filtering */
- if (adreno_is_a650_family(adreno_gpu)) {
+ if (adreno_is_a650_family(adreno_gpu) || adreno_is_x185(adreno_gpu)) {
gpu_write(gpu, REG_A6XX_TPL1_BICUBIC_WEIGHTS_TABLE_0, 0);
gpu_write(gpu, REG_A6XX_TPL1_BICUBIC_WEIGHTS_TABLE_1,
0x3fe05ff4);
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.h b/drivers/gpu/drm/msm/adreno/a6xx_gpu.h
index 1c3cc6df70fe..e3e5c53ae8af 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.h
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.h
@@ -21,6 +21,7 @@ extern bool hang_debug;
struct a6xx_info {
const struct adreno_reglist *hwcg;
const struct adreno_protect *protect;
+ u32 gmu_chipid;
};
struct a6xx_gpu {
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.h b/drivers/gpu/drm/msm/adreno/adreno_gpu.h
index cff8ce541d2c..e1c69bb022d6 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.h
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.h
@@ -474,6 +474,11 @@ static inline int adreno_is_a750(struct adreno_gpu *gpu)
return gpu->info->chip_ids[0] == 0x43051401;
}
+static inline int adreno_is_x185(struct adreno_gpu *gpu)
+{
+ return gpu->info->chip_ids[0] == 0x43050c01;
+}
+
static inline int adreno_is_a740_family(struct adreno_gpu *gpu)
{
if (WARN_ON_ONCE(!gpu->info))
--
2.45.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH v2 2/5] drm/msm/adreno: Add support for X185 GPU
2024-06-29 1:49 ` [PATCH v2 2/5] drm/msm/adreno: Add support for X185 GPU Akhil P Oommen
@ 2024-06-29 13:04 ` Konrad Dybcio
0 siblings, 0 replies; 13+ messages in thread
From: Konrad Dybcio @ 2024-06-29 13:04 UTC (permalink / raw)
To: Akhil P Oommen, freedreno, dri-devel, linux-arm-msm,
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, Bjorn Andersson,
Rob Clark, Dmitry Baryshkov, Krzysztof Kozlowski, Will Deacon
Cc: Abhinav Kumar, Daniel Vetter, David Airlie, Marijn Suijten,
Sean Paul, linux-kernel
On 29.06.2024 3:49 AM, Akhil P Oommen wrote:
> Add support in drm/msm driver for the Adreno X185 gpu found in
> Snapdragon X1 Elite chipset.
>
> Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Konrad
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 3/5] drm/msm/adreno: Introduce gmu_chipid for a740 & a750
2024-06-29 1:49 [PATCH v2 0/5] Support for Adreno X1-85 GPU Akhil P Oommen
2024-06-29 1:49 ` [PATCH v2 1/5] dt-bindings: display/msm/gmu: Add Adreno X185 GMU Akhil P Oommen
2024-06-29 1:49 ` [PATCH v2 2/5] drm/msm/adreno: Add support for X185 GPU Akhil P Oommen
@ 2024-06-29 1:49 ` Akhil P Oommen
2024-06-29 13:06 ` Konrad Dybcio
2024-06-29 1:49 ` [PATCH v2 4/5] dt-bindings: arm-smmu: Add X1E80100 GPU SMMU Akhil P Oommen
` (4 subsequent siblings)
7 siblings, 1 reply; 13+ messages in thread
From: Akhil P Oommen @ 2024-06-29 1:49 UTC (permalink / raw)
To: freedreno, dri-devel, linux-arm-msm,
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, Bjorn Andersson,
Rob Clark, Dmitry Baryshkov, Konrad Dybcio, Krzysztof Kozlowski,
Will Deacon
Cc: Akhil P Oommen, Abhinav Kumar, Daniel Vetter, David Airlie,
Marijn Suijten, Sean Paul, linux-kernel
To simplify, introduce the new gmu_chipid for a740 & a750 GPUs.
Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
---
Changes in v2:
- New patch in v2
drivers/gpu/drm/msm/adreno/a6xx_catalog.c | 2 ++
drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 23 +----------------------
2 files changed, 3 insertions(+), 22 deletions(-)
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_catalog.c b/drivers/gpu/drm/msm/adreno/a6xx_catalog.c
index c507681648ac..bdafca7267a8 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_catalog.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_catalog.c
@@ -1206,6 +1206,7 @@ static const struct adreno_info a7xx_gpus[] = {
.a6xx = &(const struct a6xx_info) {
.hwcg = a740_hwcg,
.protect = &a730_protect,
+ .gmu_chipid = 0x7020100,
},
.address_space_size = SZ_16G,
}, {
@@ -1241,6 +1242,7 @@ static const struct adreno_info a7xx_gpus[] = {
.zapfw = "gen70900_zap.mbn",
.a6xx = &(const struct a6xx_info) {
.protect = &a730_protect,
+ .gmu_chipid = 0x7090100,
},
.address_space_size = SZ_16G,
}
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
index 20034aa2fad8..e4c430504daa 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
@@ -771,7 +771,7 @@ static int a6xx_gmu_fw_start(struct a6xx_gmu *gmu, unsigned int state)
struct adreno_gpu *adreno_gpu = &a6xx_gpu->base;
const struct a6xx_info *a6xx_info = adreno_gpu->info->a6xx;
u32 fence_range_lower, fence_range_upper;
- u32 chipid, chipid_min = 0;
+ u32 chipid = 0;
int ret;
/* Vote veto for FAL10 */
@@ -833,27 +833,6 @@ static int a6xx_gmu_fw_start(struct a6xx_gmu *gmu, unsigned int state)
if (a6xx_info->gmu_chipid) {
chipid = a6xx_info->gmu_chipid;
- /* NOTE: A730 may also fall in this if-condition with a future GMU fw update. */
- } else if (adreno_is_a7xx(adreno_gpu) && !adreno_is_a730(adreno_gpu)) {
- /* A7xx GPUs have obfuscated chip IDs. Use constant maj = 7 */
- chipid = FIELD_PREP(GENMASK(31, 24), 0x7);
-
- /*
- * The min part has a 1-1 mapping for each GPU SKU.
- * This chipid that the GMU expects corresponds to the "GENX_Y_Z" naming,
- * where X = major, Y = minor, Z = patchlevel, e.g. GEN7_2_1 for prod A740.
- */
- if (adreno_is_a740(adreno_gpu))
- chipid_min = 2;
- else if (adreno_is_a750(adreno_gpu))
- chipid_min = 9;
- else
- return -EINVAL;
-
- chipid |= FIELD_PREP(GENMASK(23, 16), chipid_min);
-
- /* Get the patchid (which may vary) from the device tree */
- chipid |= FIELD_PREP(GENMASK(15, 8), adreno_patchid(adreno_gpu));
} else {
/*
* Note that the GMU has a slightly different layout for
--
2.45.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH v2 3/5] drm/msm/adreno: Introduce gmu_chipid for a740 & a750
2024-06-29 1:49 ` [PATCH v2 3/5] drm/msm/adreno: Introduce gmu_chipid for a740 & a750 Akhil P Oommen
@ 2024-06-29 13:06 ` Konrad Dybcio
2024-07-01 5:51 ` Akhil P Oommen
0 siblings, 1 reply; 13+ messages in thread
From: Konrad Dybcio @ 2024-06-29 13:06 UTC (permalink / raw)
To: Akhil P Oommen, freedreno, dri-devel, linux-arm-msm,
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, Bjorn Andersson,
Rob Clark, Dmitry Baryshkov, Krzysztof Kozlowski, Will Deacon
Cc: Abhinav Kumar, Daniel Vetter, David Airlie, Marijn Suijten,
Sean Paul, linux-kernel
On 29.06.2024 3:49 AM, Akhil P Oommen wrote:
> To simplify, introduce the new gmu_chipid for a740 & a750 GPUs.
>
> Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
> ---
This gets rid of getting patchid from dts, but I suppose that's fine,
as we can just add a new entry to the id table
[...]
> --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
> +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
> @@ -771,7 +771,7 @@ static int a6xx_gmu_fw_start(struct a6xx_gmu *gmu, unsigned int state)
> struct adreno_gpu *adreno_gpu = &a6xx_gpu->base;
> const struct a6xx_info *a6xx_info = adreno_gpu->info->a6xx;
> u32 fence_range_lower, fence_range_upper;
> - u32 chipid, chipid_min = 0;
> + u32 chipid = 0;
The initialization doesn't seem necessary
otherwise:
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Konrad
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/5] drm/msm/adreno: Introduce gmu_chipid for a740 & a750
2024-06-29 13:06 ` Konrad Dybcio
@ 2024-07-01 5:51 ` Akhil P Oommen
0 siblings, 0 replies; 13+ messages in thread
From: Akhil P Oommen @ 2024-07-01 5:51 UTC (permalink / raw)
To: Konrad Dybcio
Cc: freedreno, dri-devel, linux-arm-msm,
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, Bjorn Andersson,
Rob Clark, Dmitry Baryshkov, Krzysztof Kozlowski, Will Deacon,
Abhinav Kumar, Daniel Vetter, David Airlie, Marijn Suijten,
Sean Paul, linux-kernel
On Sat, Jun 29, 2024 at 03:06:22PM +0200, Konrad Dybcio wrote:
> On 29.06.2024 3:49 AM, Akhil P Oommen wrote:
> > To simplify, introduce the new gmu_chipid for a740 & a750 GPUs.
> >
> > Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
> > ---
>
> This gets rid of getting patchid from dts, but I suppose that's fine,
> as we can just add a new entry to the id table
>
> [...]
>
> > --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
> > +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
> > @@ -771,7 +771,7 @@ static int a6xx_gmu_fw_start(struct a6xx_gmu *gmu, unsigned int state)
> > struct adreno_gpu *adreno_gpu = &a6xx_gpu->base;
> > const struct a6xx_info *a6xx_info = adreno_gpu->info->a6xx;
> > u32 fence_range_lower, fence_range_upper;
> > - u32 chipid, chipid_min = 0;
> > + u32 chipid = 0;
>
> The initialization doesn't seem necessary
Rob, would it be possible to fix this up when you pick this patch?
-Akhil.
>
> otherwise:
>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
>
> Konrad
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 4/5] dt-bindings: arm-smmu: Add X1E80100 GPU SMMU
2024-06-29 1:49 [PATCH v2 0/5] Support for Adreno X1-85 GPU Akhil P Oommen
` (2 preceding siblings ...)
2024-06-29 1:49 ` [PATCH v2 3/5] drm/msm/adreno: Introduce gmu_chipid for a740 & a750 Akhil P Oommen
@ 2024-06-29 1:49 ` Akhil P Oommen
2024-06-29 1:49 ` [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add gpu support Akhil P Oommen
` (3 subsequent siblings)
7 siblings, 0 replies; 13+ messages in thread
From: Akhil P Oommen @ 2024-06-29 1:49 UTC (permalink / raw)
To: freedreno, dri-devel, linux-arm-msm,
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, Bjorn Andersson,
Rob Clark, Dmitry Baryshkov, Konrad Dybcio, Krzysztof Kozlowski,
Will Deacon
Cc: Akhil P Oommen, Conor Dooley, Joerg Roedel, Krzysztof Kozlowski,
Rob Herring, Robin Murphy, iommu, linux-arm-kernel, linux-kernel
Update the devicetree bindings to support the gpu present in
X1E80100 platform.
Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
---
Changes in v2:
- New patch in v2
Documentation/devicetree/bindings/iommu/arm,smmu.yaml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
index 5c130cf06a21..7ef225d4d783 100644
--- a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
+++ b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
@@ -95,6 +95,7 @@ properties:
- qcom,sm8450-smmu-500
- qcom,sm8550-smmu-500
- qcom,sm8650-smmu-500
+ - qcom,x1e80100-smmu-500
- const: qcom,adreno-smmu
- const: qcom,smmu-500
- const: arm,mmu-500
@@ -520,6 +521,7 @@ allOf:
- enum:
- qcom,sm8550-smmu-500
- qcom,sm8650-smmu-500
+ - qcom,x1e80100-smmu-500
- const: qcom,adreno-smmu
- const: qcom,smmu-500
- const: arm,mmu-500
@@ -557,7 +559,6 @@ allOf:
- qcom,sdx65-smmu-500
- qcom,sm6350-smmu-500
- qcom,sm6375-smmu-500
- - qcom,x1e80100-smmu-500
then:
properties:
clock-names: false
--
2.45.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add gpu support
2024-06-29 1:49 [PATCH v2 0/5] Support for Adreno X1-85 GPU Akhil P Oommen
` (3 preceding siblings ...)
2024-06-29 1:49 ` [PATCH v2 4/5] dt-bindings: arm-smmu: Add X1E80100 GPU SMMU Akhil P Oommen
@ 2024-06-29 1:49 ` Akhil P Oommen
2024-06-29 13:07 ` Konrad Dybcio
2024-06-29 2:00 ` [PATCH v2 0/5] Support for Adreno X1-85 GPU Akhil P Oommen
` (2 subsequent siblings)
7 siblings, 1 reply; 13+ messages in thread
From: Akhil P Oommen @ 2024-06-29 1:49 UTC (permalink / raw)
To: freedreno, dri-devel, linux-arm-msm,
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, Bjorn Andersson,
Rob Clark, Dmitry Baryshkov, Konrad Dybcio, Krzysztof Kozlowski,
Will Deacon
Cc: Akhil P Oommen, Conor Dooley, Krzysztof Kozlowski, Rob Herring,
linux-kernel
Add the necessary dt nodes for gpu support in X1E80100.
Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
---
Changes in v2:
- Reordered gpu & gmu reg enties to match schema
arch/arm64/boot/dts/qcom/x1e80100.dtsi | 195 +++++++++++++++++++++++++
1 file changed, 195 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/x1e80100.dtsi b/arch/arm64/boot/dts/qcom/x1e80100.dtsi
index 5f90a0b3c016..f043204aa12f 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1e80100.dtsi
@@ -6,6 +6,7 @@
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/clock/qcom,x1e80100-dispcc.h>
#include <dt-bindings/clock/qcom,x1e80100-gcc.h>
+#include <dt-bindings/clock/qcom,x1e80100-gpucc.h>
#include <dt-bindings/clock/qcom,x1e80100-tcsr.h>
#include <dt-bindings/dma/qcom-gpi.h>
#include <dt-bindings/interconnect/qcom,icc.h>
@@ -2985,6 +2986,200 @@ tcsr: clock-controller@1fc0000 {
#reset-cells = <1>;
};
+ gpu: gpu@3d00000 {
+ compatible = "qcom,adreno-43050c01", "qcom,adreno";
+ reg = <0x0 0x03d00000 0x0 0x40000>,
+ <0x0 0x03d9e000 0x0 0x1000>,
+ <0x0 0x03d61000 0x0 0x800>;
+
+ reg-names = "kgsl_3d0_reg_memory",
+ "cx_mem",
+ "cx_dbgc";
+
+ interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;
+
+ iommus = <&adreno_smmu 0 0x0>,
+ <&adreno_smmu 1 0x0>;
+
+ operating-points-v2 = <&gpu_opp_table>;
+
+ qcom,gmu = <&gmu>;
+ #cooling-cells = <2>;
+
+ interconnects = <&gem_noc MASTER_GFX3D 0 &mc_virt SLAVE_EBI1 0>;
+ interconnect-names = "gfx-mem";
+
+ zap-shader {
+ memory-region = <&gpu_microcode_mem>;
+ firmware-name = "qcom/gen70500_zap.mbn";
+ };
+
+ gpu_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ opp-1100000000 {
+ opp-hz = /bits/ 64 <1100000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
+ opp-peak-kBps = <16500000>;
+ };
+
+ opp-1000000000 {
+ opp-hz = /bits/ 64 <1000000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
+ opp-peak-kBps = <14398438>;
+ };
+
+ opp-925000000 {
+ opp-hz = /bits/ 64 <925000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
+ opp-peak-kBps = <14398438>;
+ };
+
+ opp-800000000 {
+ opp-hz = /bits/ 64 <800000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
+ opp-peak-kBps = <12449219>;
+ };
+
+ opp-744000000 {
+ opp-hz = /bits/ 64 <744000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
+ opp-peak-kBps = <10687500>;
+ };
+
+ opp-687000000 {
+ opp-hz = /bits/ 64 <687000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
+ opp-peak-kBps = <8171875>;
+ };
+
+ opp-550000000 {
+ opp-hz = /bits/ 64 <550000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
+ opp-peak-kBps = <6074219>;
+ };
+
+ opp-390000000 {
+ opp-hz = /bits/ 64 <390000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
+ opp-peak-kBps = <3000000>;
+ };
+
+ opp-300000000 {
+ opp-hz = /bits/ 64 <300000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
+ opp-peak-kBps = <2136719>;
+ };
+ };
+ };
+
+ gmu: gmu@3d6a000 {
+ compatible = "qcom,adreno-gmu-x185.1", "qcom,adreno-gmu";
+ reg = <0x0 0x03d6a000 0x0 0x35000>,
+ <0x0 0x03d50000 0x0 0x10000>,
+ <0x0 0x0b280000 0x0 0x10000>;
+ reg-names = "gmu", "rscc", "gmu_pdc";
+
+ interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "hfi", "gmu";
+
+ clocks = <&gpucc GPU_CC_AHB_CLK>,
+ <&gpucc GPU_CC_CX_GMU_CLK>,
+ <&gpucc GPU_CC_CXO_CLK>,
+ <&gcc GCC_DDRSS_GPU_AXI_CLK>,
+ <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
+ <&gpucc GPU_CC_HUB_CX_INT_CLK>,
+ <&gpucc GPU_CC_DEMET_CLK>;
+ clock-names = "ahb",
+ "gmu",
+ "cxo",
+ "axi",
+ "memnoc",
+ "hub",
+ "demet";
+
+ power-domains = <&gpucc GPU_CX_GDSC>,
+ <&gpucc GPU_GX_GDSC>;
+ power-domain-names = "cx",
+ "gx";
+
+ iommus = <&adreno_smmu 5 0x0>;
+
+ qcom,qmp = <&aoss_qmp>;
+
+ operating-points-v2 = <&gmu_opp_table>;
+
+ gmu_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ opp-550000000 {
+ opp-hz = /bits/ 64 <550000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
+ };
+
+ opp-220000000 {
+ opp-hz = /bits/ 64 <220000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
+ };
+ };
+ };
+
+ gpucc: clock-controller@3d90000 {
+ compatible = "qcom,x1e80100-gpucc";
+ reg = <0 0x03d90000 0 0xa000>;
+ clocks = <&bi_tcxo_div2>,
+ <&gcc GCC_GPU_GPLL0_CPH_CLK_SRC>,
+ <&gcc GCC_GPU_GPLL0_DIV_CPH_CLK_SRC>;
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+ #power-domain-cells = <1>;
+ };
+
+ adreno_smmu: iommu@3da0000 {
+ compatible = "qcom,x1e80100-smmu-500", "qcom,adreno-smmu",
+ "qcom,smmu-500", "arm,mmu-500";
+ reg = <0x0 0x03da0000 0x0 0x40000>;
+ #iommu-cells = <2>;
+ #global-interrupts = <1>;
+ interrupts = <GIC_SPI 673 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 678 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 679 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 680 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 681 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 682 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 683 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 684 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 685 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 686 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 687 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 688 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 476 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 574 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 575 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 576 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 577 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 660 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 662 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 665 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 666 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 667 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 669 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 670 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 700 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
+ <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
+ <&gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
+ <&gpucc GPU_CC_AHB_CLK>;
+ clock-names = "hlos",
+ "bus",
+ "iface",
+ "ahb";
+ power-domains = <&gpucc GPU_CX_GDSC>;
+ dma-coherent;
+ };
+
gem_noc: interconnect@26400000 {
compatible = "qcom,x1e80100-gem-noc";
reg = <0 0x26400000 0 0x311200>;
--
2.45.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add gpu support
2024-06-29 1:49 ` [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add gpu support Akhil P Oommen
@ 2024-06-29 13:07 ` Konrad Dybcio
0 siblings, 0 replies; 13+ messages in thread
From: Konrad Dybcio @ 2024-06-29 13:07 UTC (permalink / raw)
To: Akhil P Oommen, freedreno, dri-devel, linux-arm-msm,
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, Bjorn Andersson,
Rob Clark, Dmitry Baryshkov, Krzysztof Kozlowski, Will Deacon
Cc: Conor Dooley, Krzysztof Kozlowski, Rob Herring, linux-kernel
On 29.06.2024 3:49 AM, Akhil P Oommen wrote:
> Add the necessary dt nodes for gpu support in X1E80100.
>
> Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Konrad
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/5] Support for Adreno X1-85 GPU
2024-06-29 1:49 [PATCH v2 0/5] Support for Adreno X1-85 GPU Akhil P Oommen
` (4 preceding siblings ...)
2024-06-29 1:49 ` [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add gpu support Akhil P Oommen
@ 2024-06-29 2:00 ` Akhil P Oommen
2024-07-02 18:43 ` Will Deacon
2024-07-03 3:37 ` (subset) " Bjorn Andersson
7 siblings, 0 replies; 13+ messages in thread
From: Akhil P Oommen @ 2024-06-29 2:00 UTC (permalink / raw)
To: freedreno, dri-devel, linux-arm-msm,
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, Bjorn Andersson,
Rob Clark, Dmitry Baryshkov, Konrad Dybcio, Krzysztof Kozlowski,
Will Deacon
Cc: Abhinav Kumar, Conor Dooley, Daniel Vetter, David Airlie,
Joerg Roedel, Krzysztof Kozlowski, Maarten Lankhorst,
Marijn Suijten, Maxime Ripard, Rob Herring, Robin Murphy,
Sean Paul, Thomas Zimmermann, iommu, linux-arm-kernel,
linux-kernel
On Sat, Jun 29, 2024 at 07:19:33AM +0530, Akhil P Oommen wrote:
> This series adds support for the Adreno X1-85 GPU found in Qualcomm's
> compute series chipset, Snapdragon X1 Elite (x1e80100). In this new
> naming scheme for Adreno GPU, 'X' stands for compute series, '1' denotes
> 1st generation and '8' & '5' denotes the tier and the SKU which it
> belongs.
>
> X1-85 has major focus on doubling core clock frequency and bandwidth
> throughput. It has a dedicated collapsible Graphics MX rail (gmxc) to
> power the memories and double the number of data channels to improve
> bandwidth to DDR.
>
> Mesa has the necessary bits present already to support this GPU. We are
> able to bring up Gnome desktop by hardcoding "0xffff43050a01" as
> chipid. Also, verified glxgears and glmark2. We have plans to add the
> new chipid support to Mesa in next few weeks, but these patches can go in
> right away to get included in v6.11.
>
> This series is rebased on top of msm-next branch. P3 cherry-picks cleanly on
> qcom/for-next.
A typo here: P5 cherry-picks cleanly on qcom/for-next.
-Akhil
>
> P1, P2 & P3 for Rob Clark
> P4 for Will Deacon
> P5 for Bjorn to pick up.
>
> Changes in v2:
> - Minor update to compatible pattern, '[x]' -> 'x'
> - Increased address space size (Rob)
> - Introduced gmu_chipid in a6xx_info (Rob)
> - Improved fallback logic for gmxc (Dmitry)
> - Rebased on top of msm-next
> - Picked a new patch for arm-mmu bindings update
> - Reordered gpu & gmu reg enties to match schema
>
> Akhil P Oommen (5):
> dt-bindings: display/msm/gmu: Add Adreno X185 GMU
> drm/msm/adreno: Add support for X185 GPU
> drm/msm/adreno: Introduce gmu_chipid for a740 & a750
> dt-bindings: arm-smmu: Add X1E80100 GPU SMMU
> arm64: dts: qcom: x1e80100: Add gpu support
>
> .../devicetree/bindings/display/msm/gmu.yaml | 4 +
> .../devicetree/bindings/iommu/arm,smmu.yaml | 3 +-
> arch/arm64/boot/dts/qcom/x1e80100.dtsi | 195 ++++++++++++++++++
> drivers/gpu/drm/msm/adreno/a6xx_catalog.c | 20 ++
> drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 34 +--
> drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 2 +-
> drivers/gpu/drm/msm/adreno/a6xx_gpu.h | 1 +
> drivers/gpu/drm/msm/adreno/adreno_gpu.h | 5 +
> 8 files changed, 239 insertions(+), 25 deletions(-)
>
> --
> 2.45.1
>
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH v2 0/5] Support for Adreno X1-85 GPU
2024-06-29 1:49 [PATCH v2 0/5] Support for Adreno X1-85 GPU Akhil P Oommen
` (5 preceding siblings ...)
2024-06-29 2:00 ` [PATCH v2 0/5] Support for Adreno X1-85 GPU Akhil P Oommen
@ 2024-07-02 18:43 ` Will Deacon
2024-07-03 3:37 ` (subset) " Bjorn Andersson
7 siblings, 0 replies; 13+ messages in thread
From: Will Deacon @ 2024-07-02 18:43 UTC (permalink / raw)
To: freedreno, dri-devel, linux-arm-msm,
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, Bjorn Andersson,
Rob Clark, Dmitry Baryshkov, Konrad Dybcio, Krzysztof Kozlowski,
Akhil P Oommen
Cc: catalin.marinas, kernel-team, Will Deacon, Abhinav Kumar,
Conor Dooley, Daniel Vetter, David Airlie, Joerg Roedel,
Krzysztof Kozlowski, Maarten Lankhorst, Marijn Suijten,
Maxime Ripard, Rob Herring, Robin Murphy, Sean Paul,
Thomas Zimmermann, iommu, linux-arm-kernel, linux-kernel
On Sat, 29 Jun 2024 07:19:33 +0530, Akhil P Oommen wrote:
> This series adds support for the Adreno X1-85 GPU found in Qualcomm's
> compute series chipset, Snapdragon X1 Elite (x1e80100). In this new
> naming scheme for Adreno GPU, 'X' stands for compute series, '1' denotes
> 1st generation and '8' & '5' denotes the tier and the SKU which it
> belongs.
>
> X1-85 has major focus on doubling core clock frequency and bandwidth
> throughput. It has a dedicated collapsible Graphics MX rail (gmxc) to
> power the memories and double the number of data channels to improve
> bandwidth to DDR.
>
> [...]
Applied SMMU bindings change to will (for-joerg/arm-smmu/bindings),
thanks!
[4/5] dt-bindings: arm-smmu: Add X1E80100 GPU SMMU
https://git.kernel.org/will/c/d6c102881b30
Cheers,
--
Will
https://fixes.arm64.dev
https://next.arm64.dev
https://will.arm64.dev
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: (subset) [PATCH v2 0/5] Support for Adreno X1-85 GPU
2024-06-29 1:49 [PATCH v2 0/5] Support for Adreno X1-85 GPU Akhil P Oommen
` (6 preceding siblings ...)
2024-07-02 18:43 ` Will Deacon
@ 2024-07-03 3:37 ` Bjorn Andersson
7 siblings, 0 replies; 13+ messages in thread
From: Bjorn Andersson @ 2024-07-03 3:37 UTC (permalink / raw)
To: freedreno, dri-devel, linux-arm-msm,
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, Rob Clark,
Dmitry Baryshkov, Konrad Dybcio, Krzysztof Kozlowski, Will Deacon,
Akhil P Oommen
Cc: Abhinav Kumar, Conor Dooley, Daniel Vetter, David Airlie,
Joerg Roedel, Krzysztof Kozlowski, Maarten Lankhorst,
Marijn Suijten, Maxime Ripard, Rob Herring, Robin Murphy,
Sean Paul, Thomas Zimmermann, iommu, linux-arm-kernel,
linux-kernel
On Sat, 29 Jun 2024 07:19:33 +0530, Akhil P Oommen wrote:
> This series adds support for the Adreno X1-85 GPU found in Qualcomm's
> compute series chipset, Snapdragon X1 Elite (x1e80100). In this new
> naming scheme for Adreno GPU, 'X' stands for compute series, '1' denotes
> 1st generation and '8' & '5' denotes the tier and the SKU which it
> belongs.
>
> X1-85 has major focus on doubling core clock frequency and bandwidth
> throughput. It has a dedicated collapsible Graphics MX rail (gmxc) to
> power the memories and double the number of data channels to improve
> bandwidth to DDR.
>
> [...]
Applied, thanks!
[5/5] arm64: dts: qcom: x1e80100: Add gpu support
commit: 721e38301b79a6ee8375cb0ebd586699a7f353e3
Best regards,
--
Bjorn Andersson <andersson@kernel.org>
^ permalink raw reply [flat|nested] 13+ messages in thread