Qualcomm Technologies, Inc. GPU Graphics Management Unit (GMU) Required properties: - compatible : - "qcom,gpu-gmu" - reg: Specifies the PDC register base address and size. - reg-names: Resource names used for the physical address and length of PDC registers. - interrupts: Interrupt mapping for GMU and HFI IRQs. - interrupt-names: String property to describe the name of each interrupt. Bus Scaling Data: qcom,msm-bus,name: String property to describe the name of bus client. qcom,msm-bus,num-cases: This is the the number of Bus Scaling use cases defined in the vectors property. qcom,msm-bus,num-paths: This represents the number of paths in each Bus Scaling Usecase. qcom,msm-bus,vectors-KBps: A series of 4 cell properties, format of which is: , , // For Bus Scaling Usecase 1 , , // For Bus Scaling Usecase 2 <.. .. .. ..>, <.. .. .. ..>; // For Bus Scaling Usecase n This property is a series of all vectors for all Bus Scaling Usecases. Each set of vectors for each usecase describes bandwidth votes for a combination of src/dst ports. The driver will set the desired use case based on the selected power level and the desired bandwidth vote will be registered for the port pairs. GMU GDSC/regulators: - regulator-names: List of regulator name strings - vddcx-supply: Phandle for vddcx regulator device node. - vdd-supply: Phandle for vdd regulator device node. - clock: List of clocks to be used for GMU register access and DCVS. See Documentation/devicetree/bindings/clock/clock-bindings.txt for information about the format. For each clock specified here, there must be a corresponding entry in clock-names (see below). - clock-names: List of clock names corresponding to the clocks specified in the "clocks" property (above). See Documentation/devicetree/bindings/clock/clock-bindings.txt for more info. Currently GMU required these clock names: "gmu_clk", "ahb_clk", "cxo_clk", "axi_clk", "memnoc_clk", "rbcpr_clk" - qcom,gmu-pwrlevels: device node defines a set of GMU power levels. It has following required properties: - compatible : "qcom,gmu-pwrlevels" - qcom,gmu-pwrlevel: a single power level. Each power level has below properties: - reg: index of the powerlevel (0 = highest perf) - qcom, gmu-freq: GMU frequency for the power level in Hz. - List of sub nodes, one for each of the translation context banks needed for GMU to access system memory in different operating mode. Currently supported names are: - gmu_user: used for GMU 'user' mode address space. - gmu_kernel: used for GMU 'kernel' mode address space. Each sub node has the following required properties: - compatible : "qcom,smmu-gmu-user-cb" or "qcom,smmu-gmu-kernel-cb" - iommus : Specifies the SID's used by this context bank, this needs to be pair, kgsl_smmu is the string parsed by iommu driver to match this context bank with the kgsl_smmu device defined in iommu device tree. On targets where the msm iommu driver is used rather than the arm smmu driver, this property may be absent. Example: gmu: qcom,gmu { label = "kgsl-gmu"; compatible = "qcom,gpu-gmu"; reg = <0xb200000 0x300000>; reg-names = "kgsl_gmu_pdc_reg"; interrupts = <0 301 0>, <0 302 0>; interrupt-names = "kgsl_gmu_irq", "kgsl_hfi_irq"; qcom,msm-bus,name = "cnoc"; qcom,msm-bus,num-cases = <2>; qcom,msm-bus,num-paths = <1>; qcom,msm-bus,vectors-KBps = <26 10036 0 0>, // CNOC off <26 10036 0 100>; // CNOC on regulator-name = "vddcx", "vdd"; vddcx-supply = <&gpu_cx_gdsc>; vdd-supply = <&gpu_gx_gdsc>; clocks = <&clock_gpugcc clk_gcc_gmu_clk>, <&clock_gcc GCC_GPU_CFG_AHB_CLK>, <&clock_gpucc GPU_CC_CXO_CLK>, <&clock_gcc GCC_DDRSS_GPU_AXI_CLK>, <&clock_gcc GCC_GPU_MEMNOC_GFX_CLK>, <&clock_gpucc GPU_CC_RBCPR_CLK>; clock-names = "gmu_clk", "ahb_clk", "cxo_clk", "axi_clk", "memnoc_clk", "rbcpr_clk"; qcom,gmu-pwrlevels { compatible = "qcom,gmu-pwrlevels"; qcom,gpu-pwrlevel@0 { reg = <0>; qcom,gmu-freq = <500000000>; }; qcom,gpu-pwrlevel@1 { reg = <1>; qcom,gmu-freq = <200000000>; }; qcom,gpu-pwrlevel@2 { reg = <2>; qcom,gmu-freq = <0>; }; }; gmu_user: gmu_user { compatible = "qcom,smmu-gmu-user-cb"; iommus = <&kgsl_smmu 4>; }; gmu_kernel: gmu_kernel { compatible = "qcom,smmu-gmu-kernel-cb"; iommus = <&kgsl_smmu 5>; }; };