diff mbox

arm64: dts: Add Adreno GPU and GPU smmu definitions

Message ID 1480692649-29384-1-git-send-email-jcrouse@codeaurora.org (mailing list archive)
State Deferred, archived
Delegated to: Andy Gross
Headers show

Commit Message

Jordan Crouse Dec. 2, 2016, 3:30 p.m. UTC
Add an initial node for the Adreno GPU and it's companion
SMMU. The GPU node is mostly complete except for a bare
bones power table that will be filled out more completely
later.

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
---
 arch/arm64/boot/dts/qcom/msm8996.dtsi | 78 +++++++++++++++++++++++++++++++++++
 1 file changed, 78 insertions(+)

Comments

Stephen Boyd Dec. 2, 2016, 6:30 p.m. UTC | #1
On 12/02/2016 07:30 AM, Jordan Crouse wrote:
> Add an initial node for the Adreno GPU and it's companion
> SMMU. The GPU node is mostly complete except for a bare
> bones power table that will be filled out more completely
> later.
>
> Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
> ---

Hm.. I see that I missed the 8064 dts update and Andy has already
applied it. Sigh.

>  arch/arm64/boot/dts/qcom/msm8996.dtsi | 78 +++++++++++++++++++++++++++++++++++
>  1 file changed, 78 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
> index a3a4dee..4108f21 100644
> --- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
> @@ -473,6 +473,84 @@
>  			};
>  		};
>  
> +		adreno_smmu: arm,smmu@b40000 {

iommu@b40000 ?

> +			compatible = "arm,smmu-v2";
> +			reg = <0xb40000 0x10000>;
> +
> +			#global-interrupts = <1>;
> +			interrupts = <0 334 0>,
> +				     <0 329 0>,
> +				     <0 330 0>;

We're using the pretty macros now for GIC_SPI and irq triggers. Please
add them on interrupts.

> +			#iommu-cells = <1>;
> +
> +			clocks = <&mmcc MMSS_MMAGIC_AHB_CLK>,
> +				<&mmcc MMSS_MMAGIC_CFG_AHB_CLK>,
> +				<&mmcc GPU_AHB_CLK>,
> +				<&gcc GCC_MMSS_BIMC_GFX_CLK>,
> +				<&gcc GCC_BIMC_GFX_CLK>,
> +				<&mmcc MMSS_MISC_AHB_CLK>;
> +			clock-names = "mmagic_ahb_clk",
> +				"mmagic_cfg_ahb_clk",
> +				"gpu_ahb_clk",
> +				"gcc_mmss_bimc_gfx_clk",
> +				"gcc_bimc_gfx_clk",
> +				"mmss_misc_bus_clk";

Please remove _clk from all clock names as it's redundant.

> +
> +			power-domains = <&mmcc GPU_GDSC>;
> +
> +			qcom,skip-init;
> +			qcom,register-save;
> +
> +			status = "okay";

We don't need status = "okay" here. Typically those are just in the
board files.

> +		};
> +
> +		adreno-3xx@b00000 {

gpu@b00000 ?

> +			compatible = "qcom,adreno-3xx";
> +			#stream-id-cells = <16>;
> +
> +			reg = <0xb00000 0x3f000>;
> +			reg-names = "kgsl_3d0_reg_memory";
> +
> +			interrupts = <0 300 0>;
> +			interrupt-names = "kgsl_3d0_irq";
> +
> +			clocks = <&mmcc GPU_GX_GFX3D_CLK>,
> +				<&mmcc GPU_AHB_CLK>,
> +				<&mmcc GPU_GX_RBBMTIMER_CLK>,
> +				<&gcc GCC_BIMC_GFX_CLK>,
> +				<&gcc GCC_MMSS_BIMC_GFX_CLK>,
> +				<&mmcc MMSS_MMAGIC_AHB_CLK>;
> +
> +			clock-names = "core_clk",
> +				"iface_clk",
> +				"rbbmtimer_clk",
> +				"mem_clk",
> +				"mem_iface_clk",
> +				"alt_mem_iface_clk";

Is there a binding update for new clock names? I haven't seen it. Sad
that we couldn't remove _clk from the names here like everywhere else.

> +
> +			power-domains = <&mmcc GPU_GDSC>;
> +			iommus = <&adreno_smmu 0>;
> +
> +			/* There are patchlevel 3 chips in the world (Snapdragon
> +			 * (820) but they are functionally similar to the 821 in
> +			 * the code so we can safely set the chipset as
> +			 * patchlevel 4. */
> +			qcom,chipid = <0x05030004>;
> +
> +			/* This is a safe speed for bring up in all bin levels.
> +			 * This isn't the fastest the chip can go, but we can
> +			 * get there eventually */
> +			qcom,gpu-pwrlevels {
> +				compatible = "qcom,gpu-pwrlevels";
> +				qcom,gpu-pwrlevel@0 {
> +					qcom,gpu-freq = <205000000>;
> +				};
> +				qcom,gpu-pwrlevel@1 {
> +					qcom,gpu-freq = <27000000>;
> +				};
> +			};

These should be OPPs.

> +		};
> +
>  		mdp_smmu: arm,smmu@d00000 {
>  			compatible = "arm,smmu-v2";
>  			reg = <0xd00000 0x10000>;
diff mbox

Patch

diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
index a3a4dee..4108f21 100644
--- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
@@ -473,6 +473,84 @@ 
 			};
 		};
 
+		adreno_smmu: arm,smmu@b40000 {
+			compatible = "arm,smmu-v2";
+			reg = <0xb40000 0x10000>;
+
+			#global-interrupts = <1>;
+			interrupts = <0 334 0>,
+				     <0 329 0>,
+				     <0 330 0>;
+			#iommu-cells = <1>;
+
+			clocks = <&mmcc MMSS_MMAGIC_AHB_CLK>,
+				<&mmcc MMSS_MMAGIC_CFG_AHB_CLK>,
+				<&mmcc GPU_AHB_CLK>,
+				<&gcc GCC_MMSS_BIMC_GFX_CLK>,
+				<&gcc GCC_BIMC_GFX_CLK>,
+				<&mmcc MMSS_MISC_AHB_CLK>;
+			clock-names = "mmagic_ahb_clk",
+				"mmagic_cfg_ahb_clk",
+				"gpu_ahb_clk",
+				"gcc_mmss_bimc_gfx_clk",
+				"gcc_bimc_gfx_clk",
+				"mmss_misc_bus_clk";
+
+			power-domains = <&mmcc GPU_GDSC>;
+
+			qcom,skip-init;
+			qcom,register-save;
+
+			status = "okay";
+		};
+
+		adreno-3xx@b00000 {
+			compatible = "qcom,adreno-3xx";
+			#stream-id-cells = <16>;
+
+			reg = <0xb00000 0x3f000>;
+			reg-names = "kgsl_3d0_reg_memory";
+
+			interrupts = <0 300 0>;
+			interrupt-names = "kgsl_3d0_irq";
+
+			clocks = <&mmcc GPU_GX_GFX3D_CLK>,
+				<&mmcc GPU_AHB_CLK>,
+				<&mmcc GPU_GX_RBBMTIMER_CLK>,
+				<&gcc GCC_BIMC_GFX_CLK>,
+				<&gcc GCC_MMSS_BIMC_GFX_CLK>,
+				<&mmcc MMSS_MMAGIC_AHB_CLK>;
+
+			clock-names = "core_clk",
+				"iface_clk",
+				"rbbmtimer_clk",
+				"mem_clk",
+				"mem_iface_clk",
+				"alt_mem_iface_clk";
+
+			power-domains = <&mmcc GPU_GDSC>;
+			iommus = <&adreno_smmu 0>;
+
+			/* There are patchlevel 3 chips in the world (Snapdragon
+			 * (820) but they are functionally similar to the 821 in
+			 * the code so we can safely set the chipset as
+			 * patchlevel 4. */
+			qcom,chipid = <0x05030004>;
+
+			/* This is a safe speed for bring up in all bin levels.
+			 * This isn't the fastest the chip can go, but we can
+			 * get there eventually */
+			qcom,gpu-pwrlevels {
+				compatible = "qcom,gpu-pwrlevels";
+				qcom,gpu-pwrlevel@0 {
+					qcom,gpu-freq = <205000000>;
+				};
+				qcom,gpu-pwrlevel@1 {
+					qcom,gpu-freq = <27000000>;
+				};
+			};
+		};
+
 		mdp_smmu: arm,smmu@d00000 {
 			compatible = "arm,smmu-v2";
 			reg = <0xd00000 0x10000>;