Message ID | 20230523011522.65351-4-quic_bjorande@quicinc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/msm/adreno: GPU support on SC8280XP | expand |
On 23.05.2023 03:15, Bjorn Andersson wrote: > From: Bjorn Andersson <bjorn.andersson@linaro.org> > > Add memory reservation for the zap-shader and enable the Adreno SMMU, > GPU clock controller, GMU and the GPU nodes for the SC8280XP CRD and the > Lenovo ThinkPad X13s. > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> > Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com> > --- > > Changes since v1: > - None > > arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 26 +++++++++++++++++++ > .../qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 26 +++++++++++++++++++ > 2 files changed, 52 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > index 5b25d54b9591..547277924ea3 100644 > --- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > +++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > @@ -210,6 +210,11 @@ vreg_wwan: regulator-wwan { > }; > > reserved-memory { > + gpu_mem: gpu-mem@8bf00000 { The ZAP region is very seldom moved around, and I wouldn't expect it to be uncommon among the very usecase-specific 8280 machines. > + reg = <0 0x8bf00000 0 0x2000>; > + no-map; > + }; > + > linux,cma { > compatible = "shared-dma-pool"; > size = <0x0 0x8000000>; > @@ -259,6 +264,10 @@ usb1_sbu_mux: endpoint { > }; > }; > > +&adreno_smmu { > + status = "okay"; > +}; Ugh. Should definitely be enabled by default. > + > &apps_rsc { > regulators-0 { > compatible = "qcom,pm8350-rpmh-regulators"; > @@ -376,6 +385,23 @@ &dispcc0 { > status = "okay"; > }; > > +&gmu { > + status = "okay"; > +}; You can keep the GMU enabled by default as well, it won't "probe" on its own (the GPU's hw_init calls its registration) > + > +&gpu { > + status = "okay"; > + > + zap-shader { > + memory-region = <&gpu_mem>; > + firmware-name = "qcom/sc8280xp/qcdxkmsuc8280.mbn"; > + }; > +}; > + > +&gpucc { > + status = "okay"; > +}; Clock controllers have no reason to be off by default. Konrad > + > &mdss0 { > status = "okay"; > }; > diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts > index bdcba719fc38..5ef3f4c07d75 100644 > --- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts > +++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts > @@ -264,6 +264,11 @@ vreg_wwan: regulator-wwan { > }; > > reserved-memory { > + gpu_mem: gpu-mem@8bf00000 { > + reg = <0 0x8bf00000 0 0x2000>; > + no-map; > + }; > + > linux,cma { > compatible = "shared-dma-pool"; > size = <0x0 0x8000000>; > @@ -359,6 +364,10 @@ usb1_sbu_mux: endpoint { > }; > }; > > +&adreno_smmu { > + status = "okay"; > +}; > + > &apps_rsc { > regulators-0 { > compatible = "qcom,pm8350-rpmh-regulators"; > @@ -518,6 +527,23 @@ &dispcc0 { > status = "okay"; > }; > > +&gmu { > + status = "okay"; > +}; > + > +&gpu { > + status = "okay"; > + > + zap-shader { > + memory-region = <&gpu_mem>; > + firmware-name = "qcom/sc8280xp/LENOVO/21BX/qcdxkmsuc8280.mbn"; > + }; > +}; > + > +&gpucc { > + status = "okay"; > +}; > + > &mdss0 { > status = "okay"; > };
On Tue, May 23, 2023 at 10:04:40AM +0200, Konrad Dybcio wrote: > > > On 23.05.2023 03:15, Bjorn Andersson wrote: > > From: Bjorn Andersson <bjorn.andersson@linaro.org> > > > > Add memory reservation for the zap-shader and enable the Adreno SMMU, > > GPU clock controller, GMU and the GPU nodes for the SC8280XP CRD and the > > Lenovo ThinkPad X13s. > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> > > Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com> > > --- > > > > Changes since v1: > > - None > > > > arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 26 +++++++++++++++++++ > > .../qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 26 +++++++++++++++++++ > > 2 files changed, 52 insertions(+) > > > > diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > > index 5b25d54b9591..547277924ea3 100644 > > --- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > > +++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > > @@ -210,6 +210,11 @@ vreg_wwan: regulator-wwan { > > }; > > > > reserved-memory { > > + gpu_mem: gpu-mem@8bf00000 { > The ZAP region is very seldom moved around, and I wouldn't expect it > to be uncommon among the very usecase-specific 8280 machines. > > > + reg = <0 0x8bf00000 0 0x2000>; > > + no-map; > > + }; > > + > > linux,cma { > > compatible = "shared-dma-pool"; > > size = <0x0 0x8000000>; > > @@ -259,6 +264,10 @@ usb1_sbu_mux: endpoint { > > }; > > }; > > > > +&adreno_smmu { > > + status = "okay"; > > +}; > Ugh. Should definitely be enabled by default. > > > + > > &apps_rsc { > > regulators-0 { > > compatible = "qcom,pm8350-rpmh-regulators"; > > @@ -376,6 +385,23 @@ &dispcc0 { > > status = "okay"; > > }; > > > > +&gmu { > > + status = "okay"; > > +}; > You can keep the GMU enabled by default as well, it won't "probe" on > its own (the GPU's hw_init calls its registration) > > > + > > +&gpu { > > + status = "okay"; > > + > > + zap-shader { > > + memory-region = <&gpu_mem>; > > + firmware-name = "qcom/sc8280xp/qcdxkmsuc8280.mbn"; > > + }; > > +}; > > + > > +&gpucc { > > + status = "okay"; > > +}; > Clock controllers have no reason to be off by default. > On sa8295p/sa8540p the GPU is powered differently, so if I leave it enabled by default I need to disable it (or configure it) for those, or they won't boot. Regards, Bjorn > Konrad > > + > > &mdss0 { > > status = "okay"; > > }; > > diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts > > index bdcba719fc38..5ef3f4c07d75 100644 > > --- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts > > +++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts > > @@ -264,6 +264,11 @@ vreg_wwan: regulator-wwan { > > }; > > > > reserved-memory { > > + gpu_mem: gpu-mem@8bf00000 { > > + reg = <0 0x8bf00000 0 0x2000>; > > + no-map; > > + }; > > + > > linux,cma { > > compatible = "shared-dma-pool"; > > size = <0x0 0x8000000>; > > @@ -359,6 +364,10 @@ usb1_sbu_mux: endpoint { > > }; > > }; > > > > +&adreno_smmu { > > + status = "okay"; > > +}; > > + > > &apps_rsc { > > regulators-0 { > > compatible = "qcom,pm8350-rpmh-regulators"; > > @@ -518,6 +527,23 @@ &dispcc0 { > > status = "okay"; > > }; > > > > +&gmu { > > + status = "okay"; > > +}; > > + > > +&gpu { > > + status = "okay"; > > + > > + zap-shader { > > + memory-region = <&gpu_mem>; > > + firmware-name = "qcom/sc8280xp/LENOVO/21BX/qcdxkmsuc8280.mbn"; > > + }; > > +}; > > + > > +&gpucc { > > + status = "okay"; > > +}; > > + > > &mdss0 { > > status = "okay"; > > };
On 23.05.2023 14:28, Bjorn Andersson wrote: > On Tue, May 23, 2023 at 10:04:40AM +0200, Konrad Dybcio wrote: >> >> >> On 23.05.2023 03:15, Bjorn Andersson wrote: >>> From: Bjorn Andersson <bjorn.andersson@linaro.org> >>> >>> Add memory reservation for the zap-shader and enable the Adreno SMMU, >>> GPU clock controller, GMU and the GPU nodes for the SC8280XP CRD and the >>> Lenovo ThinkPad X13s. >>> >>> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> >>> Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com> >>> --- >>> >>> Changes since v1: >>> - None >>> >>> arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 26 +++++++++++++++++++ >>> .../qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 26 +++++++++++++++++++ >>> 2 files changed, 52 insertions(+) >>> >>> diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts >>> index 5b25d54b9591..547277924ea3 100644 >>> --- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts >>> +++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts >>> @@ -210,6 +210,11 @@ vreg_wwan: regulator-wwan { >>> }; >>> >>> reserved-memory { >>> + gpu_mem: gpu-mem@8bf00000 { >> The ZAP region is very seldom moved around, and I wouldn't expect it >> to be uncommon among the very usecase-specific 8280 machines. >> >>> + reg = <0 0x8bf00000 0 0x2000>; >>> + no-map; >>> + }; >>> + >>> linux,cma { >>> compatible = "shared-dma-pool"; >>> size = <0x0 0x8000000>; >>> @@ -259,6 +264,10 @@ usb1_sbu_mux: endpoint { >>> }; >>> }; >>> >>> +&adreno_smmu { >>> + status = "okay"; >>> +}; >> Ugh. Should definitely be enabled by default. >> >>> + >>> &apps_rsc { >>> regulators-0 { >>> compatible = "qcom,pm8350-rpmh-regulators"; >>> @@ -376,6 +385,23 @@ &dispcc0 { >>> status = "okay"; >>> }; >>> >>> +&gmu { >>> + status = "okay"; >>> +}; >> You can keep the GMU enabled by default as well, it won't "probe" on >> its own (the GPU's hw_init calls its registration) >> >>> + >>> +&gpu { >>> + status = "okay"; >>> + >>> + zap-shader { >>> + memory-region = <&gpu_mem>; >>> + firmware-name = "qcom/sc8280xp/qcdxkmsuc8280.mbn"; >>> + }; >>> +}; >>> + >>> +&gpucc { >>> + status = "okay"; >>> +}; >> Clock controllers have no reason to be off by default. >> > > On sa8295p/sa8540p the GPU is powered differently, so if I leave it > enabled by default I need to disable it (or configure it) for those, or > they won't boot. Another "messed up automotive forks" situation, eh.. Would it take a lot of new code to configure these platforms correctly? Konrad > > Regards, > Bjorn > >> Konrad >>> + >>> &mdss0 { >>> status = "okay"; >>> }; >>> diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts >>> index bdcba719fc38..5ef3f4c07d75 100644 >>> --- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts >>> +++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts >>> @@ -264,6 +264,11 @@ vreg_wwan: regulator-wwan { >>> }; >>> >>> reserved-memory { >>> + gpu_mem: gpu-mem@8bf00000 { >>> + reg = <0 0x8bf00000 0 0x2000>; >>> + no-map; >>> + }; >>> + >>> linux,cma { >>> compatible = "shared-dma-pool"; >>> size = <0x0 0x8000000>; >>> @@ -359,6 +364,10 @@ usb1_sbu_mux: endpoint { >>> }; >>> }; >>> >>> +&adreno_smmu { >>> + status = "okay"; >>> +}; >>> + >>> &apps_rsc { >>> regulators-0 { >>> compatible = "qcom,pm8350-rpmh-regulators"; >>> @@ -518,6 +527,23 @@ &dispcc0 { >>> status = "okay"; >>> }; >>> >>> +&gmu { >>> + status = "okay"; >>> +}; >>> + >>> +&gpu { >>> + status = "okay"; >>> + >>> + zap-shader { >>> + memory-region = <&gpu_mem>; >>> + firmware-name = "qcom/sc8280xp/LENOVO/21BX/qcdxkmsuc8280.mbn"; >>> + }; >>> +}; >>> + >>> +&gpucc { >>> + status = "okay"; >>> +}; >>> + >>> &mdss0 { >>> status = "okay"; >>> };
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts index 5b25d54b9591..547277924ea3 100644 --- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts +++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts @@ -210,6 +210,11 @@ vreg_wwan: regulator-wwan { }; reserved-memory { + gpu_mem: gpu-mem@8bf00000 { + reg = <0 0x8bf00000 0 0x2000>; + no-map; + }; + linux,cma { compatible = "shared-dma-pool"; size = <0x0 0x8000000>; @@ -259,6 +264,10 @@ usb1_sbu_mux: endpoint { }; }; +&adreno_smmu { + status = "okay"; +}; + &apps_rsc { regulators-0 { compatible = "qcom,pm8350-rpmh-regulators"; @@ -376,6 +385,23 @@ &dispcc0 { status = "okay"; }; +&gmu { + status = "okay"; +}; + +&gpu { + status = "okay"; + + zap-shader { + memory-region = <&gpu_mem>; + firmware-name = "qcom/sc8280xp/qcdxkmsuc8280.mbn"; + }; +}; + +&gpucc { + status = "okay"; +}; + &mdss0 { status = "okay"; }; diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts index bdcba719fc38..5ef3f4c07d75 100644 --- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts +++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts @@ -264,6 +264,11 @@ vreg_wwan: regulator-wwan { }; reserved-memory { + gpu_mem: gpu-mem@8bf00000 { + reg = <0 0x8bf00000 0 0x2000>; + no-map; + }; + linux,cma { compatible = "shared-dma-pool"; size = <0x0 0x8000000>; @@ -359,6 +364,10 @@ usb1_sbu_mux: endpoint { }; }; +&adreno_smmu { + status = "okay"; +}; + &apps_rsc { regulators-0 { compatible = "qcom,pm8350-rpmh-regulators"; @@ -518,6 +527,23 @@ &dispcc0 { status = "okay"; }; +&gmu { + status = "okay"; +}; + +&gpu { + status = "okay"; + + zap-shader { + memory-region = <&gpu_mem>; + firmware-name = "qcom/sc8280xp/LENOVO/21BX/qcdxkmsuc8280.mbn"; + }; +}; + +&gpucc { + status = "okay"; +}; + &mdss0 { status = "okay"; };