Add 'qcom/graphics/' from commit '3fdf0e5c8cd8aaddf897363301ae23e559faa2b1'

git-subtree-dir: qcom/graphics
git-subtree-mainline: 483309a856
git-subtree-split: 3fdf0e5c8c
This commit is contained in:
Arian
2025-07-10 19:36:08 +02:00
94 changed files with 11815 additions and 0 deletions

96
qcom/graphics/Kbuild Normal file
View File

@@ -0,0 +1,96 @@
ifeq ($(CONFIG_ARCH_WAIPIO), y)
dtbo-y += gpu/waipio-gpu.dtbo \
gpu/waipio-v2-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_KALAMA), y)
dtbo-y += gpu/kalama-gpu.dtbo \
gpu/kalama-v2-gpu.dtbo \
gpu/kalama-iot-gpu.dtbo \
gpu/kalamap-hhg-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_PINEAPPLE), y)
dtbo-y += gpu/pineapple-gpu.dtbo \
gpu/pineapple-v2-gpu.dtbo \
gpu/pineapple-v2-sg-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_SA8155), y)
dtbo-y += gpu/sa8155-v2-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_KHAJE), y)
dtbo-y += gpu/khaje-gpu.dtbo \
gpu/khajep-gpu.dtbo \
gpu/khajeq-gpu.dtbo \
gpu/khajeg-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_SA8195), y)
dtbo-y += gpu/sa8195p-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_SA6155), y)
dtbo-y += gpu/sa6155p-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_MONACO), y)
dtbo-y += gpu/monaco-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_LEMANS), y)
dtbo-y += gpu/lemans-gpu.dtbo \
gpu/lemans-gpu-ivi-adas-star.dtbo
endif
ifeq ($(CONFIG_ARCH_KONA), y)
dtbo-y += gpu/kona-gpu.dtbo \
gpu/kona-v2-gpu.dtbo \
gpu/kona-v2.1-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_BLAIR), y)
dtbo-y += gpu/blair-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_TRINKET), y)
dtbo-y += gpu/trinket-gpu.dtbo \
gpu/trinketp-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_HOLI), y)
dtbo-y += gpu/holi-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_QCS405), y)
dtbo-y += gpu/qcs405-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_PITTI), y)
dtbo-y += gpu/pitti-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_CLIFFS), y)
dtbo-y += gpu/cliffs-gpu.dtbo \
gpu/cliffs7-gpu.dtbo
endif
ifeq ($(CONFIG_ARCH_VOLCANO), y)
dtbo-y += gpu/volcano-gpu.dtbo
dtbo-y += gpu/volcano6-gpu.dtbo
dtbo-y += gpu/volcano6p-gpu.dtbo
dtbo-y += gpu/volcano6i-fp1-gpu.dtbo
dtbo-y += gpu/volcano6i-fp2-gpu.dtbo
dtbo-y += gpu/volcano6i-fp3-gpu.dtbo
dtbo-y += gpu/volcano6i-fp4-gpu.dtbo
dtbo-y += gpu/volcano6ip-fp1-gpu.dtbo
dtbo-y += gpu/volcano6ip-fp2-gpu.dtbo
dtbo-y += gpu/volcano6ip-fp3-gpu.dtbo
dtbo-y += gpu/volcano6ip-fp4-gpu.dtbo
endif
always-y := $(dtb-y) $(dtbo-y)
subdir-y := $(dts-dirs)
clean-files := *.dtb *.dtbo

9
qcom/graphics/Makefile Normal file
View File

@@ -0,0 +1,9 @@
KBUILD_OPTIONS+=KBUILD_EXTMOD_DTS=.
all: dtbs
clean:
$(MAKE) -C $(KERNEL_SRC) M=$(M) clean
%:
$(MAKE) -C $(KERNEL_SRC) M=$(M) $@ $(KBUILD_OPTIONS)

View File

@@ -0,0 +1,16 @@
Adreno bus monitor device
kgsl-busmon is a pseudo device that represents a devfreq bus bandwidth
governor. If this device is present then two different governors are used
for GPU DCVS and bus DCVS.
Required properties:
- compatible: Must be "qcom,kgsl-busmon"
- label: Device name used for sysfs entry.
Example:
qcom,kgsl-busmon {
compatible = "qcom,kgsl-busmon";
label = "kgsl-busmon";
};

View File

@@ -0,0 +1,115 @@
Qualcomm Technologies, Inc. GPU Graphics Management Unit (GMU)
Required properties:
- compatible :
- "qcom,gpu-gmu"
- "qcom,gpu-gmu-hwsched"
- "qcom,gpu-rgmu"
- "qcom,gen7-gmu"
- "qcom,gen7-gmu-hwsched"
- reg: Specifies the GMU register base address and size.
- reg-names: Resource names used for the physical address
and length of GMU 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:
<src dst ab ib>, <src dst ab ib>, // For Bus Scaling Usecase 1
<src dst ab ib>, <src dst ab ib>, // 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-freq-table: List of frequencies the GMU clock can run at with their corresponding
voltage levels.
- 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 <kgsl_smmu SID> 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.
- qcom,ipc-core: <baseAddr size>
baseAddr - base address of the IPC region
size - size of the IPC region
Example:
gmu: qcom,gmu@2c6a000 {
label = "kgsl-gmu";
compatible = "qcom,gpu-gmu";
reg = <0x2c6a000 0x30000>;
reg-names = "kgsl_gmu_reg";
interrupts = <0 304 0>, <0 305 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-freq-table = <200000000 RPMH_REGULATOR_LEVEL_LOW_SVS>,
<500000000 RPMH_REGULATOR_LEVEL_SVS>;
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>;
};
};

View File

@@ -0,0 +1,81 @@
Qualcomm Technologies, Inc. GPU IOMMU
Required properties:
Required properties:
- compatible : one of:
- "qcom,kgsl-smmu-v1"
- "qcom,kgsl-smmu-v2"
- reg : Base address and size of the SMMU.
- clocks : List of clocks to be used during SMMU register access. 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.
- qcom,protect : The GPU register region which must be protected by a CP
protected mode. On some targets this region must cover
the entire SMMU register space, on others there
is a separate aperture for CP to program context banks.
Optional properties:
- qcom,retention : A boolean specifying if retention is supported on this target
- qcom,global_pt : A boolean specifying if global pagetable should be used.
When not set we use per process pagetables
- qcom,hyp_secure_alloc : A bool specifying if the hypervisor is used on this target
for secure buffer allocation
- List of sub nodes, one for each of the translation context banks supported.
The driver uses the names of these nodes to determine how they are used,
currently supported names are:
- gfx3d_user : Used for the 'normal' GPU address space.
- gfx3d_secure : Used for the content protection address space.
- gfx3d_secure_alt : Used for the content protection address space for alternative SID.
Each sub node has the following required properties:
- compatible : "qcom,smmu-kgsl-cb"
- iommus : Specifies the SID's used by this context bank, this needs to be
<kgsl_smmu SID> 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:
msm_iommu: qcom,kgsl-iommu@2ca0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x2ca0000 0x10000>;
qcom,protect = <0xa0000 0xc000>;
clocks = <&clock_mmss clk_gpu_ahb_clk>,
<&clock_gcc clk_gcc_mmss_bimc_gfx_clk>,
<&clock_mmss clk_mmss_mmagic_ahb_clk>,
<&clock_mmss clk_mmss_mmagic_cfg_ahb_clk>;
clock-names = "gpu_ahb_clk", "bimc_gfx_clk", "mmagic_ahb_clk", "mmagic_cfg_ahb_clk";
qcom,secure_align_mask = <0xfff>;
qcom,retention;
qcom,global_pt;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0>,
<&kgsl_smmu 1>;
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 2>;
};
gfx3d_secure_alt: gfx3d_secure_alt {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 2>, <&kgsl_smmu 1>;
};
};

View File

@@ -0,0 +1,94 @@
Qualcomm Technologies, Inc. GPU powerlevels
Powerlevels are defined in sets by qcom,gpu-pwrlevels. Multiple sets (bins)
can be defined within qcom,gpu-pwrelvel-bins. Each powerlevel defines a
voltage, bus, bandwidth level, and a DVM value.
- qcom,gpu-pwrlevel-bins: Contains one or more qcom,gpu-pwrlevels sets
Properties:
- compatible: Must be qcom,gpu-pwrlevel-bins
- qcom,gpu-pwrlevels: Defines a set of powerlevels
Properties:
- qcom,speed-bin: Speed bin identifier for the set - if present
must match the value read from the hardware
- qcom,sku-codes: List of SKU versions specified by P-Code and
Feature Code that can support this set of
powerlevels. An entry of 0 in this list matches
any SKU and can be used as a fallback if other
powerlevel sets are not matched
- qcom,initial-pwrlevel: GPU wakeup powerlevel
- qcom,initial-min-pwrlevel: Initial minimum available GPU powerlevel
- qcom,gpu-pwrlevel: A single powerlevel
- qcom,ca-target-pwrlevel:
This value indicates which qcom,gpu-pwrlevel
to jump on in case of context aware power level
jump.
Required Properties:
- reg: Index of the powerlevel (0 = highest perf)
- qcom,gpu-freq GPU frequency for the powerlevel (in Hz)
- qcom,bus-freq Index to a bus level (defined by the bus
settings).
- qcom,bus-freq-ddrX If specified, define the DDR specific bus
frequency for the power level. X will be the
return value from of_fdt_get_ddrtype().
Optional Properties:
- qcom,bus-min Minimum bus level to set for the power level
- qcom,bus-min-ddrX If specified, define the DDR specific minimum
bus level for the power level. X will be the
return value from of_fdt_get_ddrtype().
- qcom,bus-max maximum bus level to set for the power level
- qcom,bus-max-ddrX If specified, define the DDR specific maximum
bus level for the power level. X will be the
return value from of_fdt_get_ddrtype().
- qcom,acd-level: Value that is used as a register setting for
the ACD power feature. It helps to determine
the threshold for when ACD activates. Zero is
the default value, and the setting where ACD
will never activate.
- qcom,cx-level: Specifies the CX vote required for each GPU power
level.
Example:
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
qcom,acd-level = <0xffffffff>;
qcom,cx-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
Example for DDR4/DDR5 specific part:
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <480000000>;
qcom,cx-level = <RPMH_REGULATOR_LEVEL_SVS>;
/* DDR5 */
qcom,bus-freq-ddr8 = <10>;
qcom,bus-min-ddr8 = <9>;
qcom,bus-max-ddr8 = <11>;
/* DDR 4 */
qcom,bus-freq-ddr7 = <9>;
qcom,bus-min-ddr7 = <7>;
qcom,bus-max-ddr7 = <9>;
qcom,acd-level = <0xffffffff>;
};

View File

@@ -0,0 +1,535 @@
Qualcomm Technologies, Inc. GPU
Qualcomm Technologies, Inc. Adreno GPU
Required properties:
- compatible: Must be "qcom,kgsl-3d0".
May also includes "qcom,adreno-gpu-*" for few targets.
Must include "qcom,adreno-gpu-a610" for Bengal target.
Must include "qcom,adreno-gpu-a611" for Pitti target.
Must include "qcom,adreno-gpu-a619-holi" for Holi target.
Must include "qcom,adreno-gpu-a621" for Neo target.
Must include "qcom,adreno-gpu-a660-shima" for Shima target.
Must include "qcom,adreno-gpu-gen7-0-0" for Waipio target.
Must include "qcom,adreno-gpu-gen7-0-1" for Waipio V2 target.
Must include "qcom,adreno-gpu-gen7-2-0" for Kalama target.
Must include "qcom,adreno-gpu-gen7-2-1" for Kalama V2 target.
Must include "qcom,adreno-gpu-gen7-4-0" for Cape target.
Must include "qcom,adreno-gpu-gen7-3-0" for Parrot target.
Must include "qcom,adreno-gpu-gen7-9-0" for Pineapple target.
Must include "qcom,adreno-gpu-gen7-9-1" for Pineapple V2 target.
Must include "qcom,adreno-gpu-gen7-11-0" for Cliffs target.
Must include "qcom,adreno-gpu-gen8-3-0" for Volcano target.
- reg: Specifies the list of register regions for the device.
- reg-names: Resource names used for the register regions specified
in reg.
- interrupts: Interrupt mapping for GPU nterrupts.
- interrupt-names: String property to describe the names of the interrupts.
- qcom,gpu-bimc-interface-clk-freq:
GPU-BIMC interface clock needs to set to this value for
targets where B/W requirements does not meet GPU Turbo
use cases.
- clocks: List of phandle and clock specifier pairs, one pair
for each clock input to the device.
- clock-names: List of clock input name strings sorted in the same
order as the clocks property.
- qcom,base-leakage-coefficient: Dynamic leakage coefficient.
- qcom,lm-limit: Current limit for GPU limit management.
- qcom,isense-clk-on-level: below or equal this power level isense clock is at XO rate,
above this powerlevel isense clock is at working frequency.
Bus Scaling Data:
- qcom,gpu-bus-table: Defines a bus voting table with the below properties. Multiple sets of bus
voting tables can be defined for given platform based on the type of ddr system.
Properties:
- compatible: Must be "qcom,gpu-bus-table". Additionally, "qcom,gpu-bus-table-ddr" must also
be provided, with the ddr type value(integer) appended to the string.
- qcom,msm-bus,name: String property to describe the name of the 3D graphics processor.
- qcom,msm-bus,num-cases: This is the the number of Bus Scaling use cases defined in the vectors property.
- qcom,msm-bus,active-only: A boolean flag indicating if it is active only.
- 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:
<src dst ab ib>, <src dst ab ib>, // For Bus Scaling Usecase 1
<src dst ab ib>, <src dst ab ib>, // 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.
Current values of src are:
0 = MSM_BUS_MASTER_GRAPHICS_3D
1 = MSM_BUS_MASTER_GRAPHICS_3D_PORT1
2 = MSM_BUS_MASTER_V_OCMEM_GFX3D
Current values of dst are:
0 = MSM_BUS_SLAVE_EBI_CH0
1 = MSM_BUS_SLAVE_OCMEM
ab: Represents aggregated bandwidth. This value is 0 for Graphics.
ib: Represents instantaneous bandwidth. This value has a range <0 8000 MB/s>
- qcom,ocmem-bus-client: Container for another set of bus scaling properties
qcom,msm-bus,name
qcom,msm-bus,num-cases
qcom,msm-bus,num-paths
qcom,msm-bus,vectors-KBps
to be used by ocmem msm bus scaling client.
GDSC Oxili Regulators:
- regulator-names: List of regulator name strings sorted in power-on order
- vddcx-supply: Phandle for vddcx regulator device node.
- vdd-supply: Phandle for vdd regulator device node.
- vdd-parent-supply: Phandle for vdd parent regulator device node.
- vdd-parent-min-corner: Minimum voltage corner value to set vdd parent supply.
IOMMU Data:
- iommu: Phandle for the KGSL IOMMU device node
GPU Power levels:
- qcom,gpu-pwrlevel-bins: Container for sets of GPU power levels (see
adreno-pwrlevels.txt)
DCVS Core info
- qcom,dcvs-core-info Container for the DCVS core info (see
dcvs-core-info.txt)
Optional Properties:
- qcom,initial-powerlevel: This value indicates which qcom,gpu-pwrlevel should be used at start time
and when coming back out of resume
- qcom,throttle-pwrlevel: This value indicates which qcom,gpu-pwrlevel LM throttling
may start to occur
- qcom,bus-control: Boolean. Enables an independent bus vote from the gpu frequency
- qcom,bus-width: Bus width in number of bytes. This enables dynamic AB bus voting based on
bus width and actual bus transactions.
- qcom,bus-accesses: Parameter for tuning bus dcvs.
- qcom,bus-accesses-ddrX: Parameter for tuning bus dcvs for each DDR configuration where
X will be the return value from of_fdt_get_ddrtype().
- qcom,gpubw-dev: a phandle to a device representing bus bandwidth requirements
(see devdw.txt)
- qcom,idle-timeout: This property represents the time in milliseconds for idle timeout.
- qcom,chipid: If it exists this property is used to replace
the chip identification read from the GPU hardware.
This is used to override faulty hardware readings.
- qcom,gpu-model: If it exists this property is used for GPU model name.
- qcom,vk-device-id: If it exists this property is used to specify vulkan device ID.
- qcom,disable-wake-on-touch: Boolean. Disables the GPU power up on a touch input event.
- qcom,disable-busy-time-burst:
Boolean. Disables the busy time burst to avoid switching
of power level for large frames based on the busy time limit.
- qcom,pm-qos-active-latency:
Right after GPU wakes up from sleep, driver votes for
acceptable maximum latency to the pm-qos driver. This
voting demands that the system can not go into any
power save state *if* the latency to bring system back
into active state is more than this value.
Value is in microseconds.
- qcom,pm-qos-wakeup-latency:
Similar to the above. Driver votes against deep low
power modes right before GPU wakes up from sleep.
- qcom,l2pc-cpu-mask-latency:
The CPU mask latency in microseconds to avoid L2PC
on masked CPUs.
- qcom,gpu-cx-ipeak:
CX Ipeak is a mitigation scheme which throttles cDSP frequency
if all the clients are running at their respective threshold
frequencies to limit CX peak current.
<phandle bit>
phandle - phandle of CX Ipeak device node
bit - Every bit corresponds to a client of CX Ipeak
driver in the relevant register.
- qcom, gpu-cx-ipeak-freq:
GPU frequency threshold for CX Ipeak voting. GPU votes
to CX Ipeak driver when GPU clock crosses this threshold.
CX Ipeak can limit peak current based on voting from other clients.
- qcom,force-32bit:
Force the GPU to use 32 bit data sizes even if
it is capable of doing 64 bit.
- qcom,gpu-speed-bin: GPU speed bin information in the format
<offset mask shift>
offset - offset of the efuse register from the base.
mask - mask for the relevant bits in the efuse register.
shift - number of bits to right shift to get the speed bin
value.
- qcom,gpu-disable-fuse: GPU disable fuse
<offset mask shift>
offset - offset of the efuse register from the base.
mask - mask for the relevant bits in the efuse register.
shift - number of bits to right shift to get the disable_gpu
fuse bit value.
- qcom,soc-hw-rev-efuse: SOC hardware revision fuse information in the format
<offset bit_position mask>
offset - offset of the efuse register from the base.
bit_position - hardware revision starting bit in the efuse register.
mask - mask for the relevant bits in the efuse register.
- qcom,highest-bank-bit:
Specify the bit of the highest DDR bank. This
is programmed into protected registers and also
passed to the user as a property.
- qcom,min-access-length:
Specify the minimum access length for the chip.
Either 32 or 64 bytes.
Based on the above options, program the appropriate bit into
certain protected registers and also pass to the user as
a property.
- qcom,ubwc-mode:
Specify the ubwc mode for this chip.
1: UBWC 1.0
2: UBWC 2.0
3: UBWC 3.0
Based on the ubwc mode, program the appropriate bit into
certain protected registers and also pass to the user as
a property.
- qcom,l2pc-cpu-mask:
Disables L2PC on masked CPUto the string.rendering thread is running on masked CPUs.
Bit 0 is for CPU-0, bit 1 is for CPU-1...
- qcom,l2pc-update-queue:
Disables L2PC on masked CPUs at queue time when it's true.
- qcom,snapshot-size:
Specify the size of snapshot in bytes. This will override
snapshot size defined in the driver code.
- qcom,enable-ca-jump:
Boolean. Enables use of context aware DCVS
- qcom,ca-busy-penalty:
This property represents the time in microseconds required to
initiate context aware power level jump.
- qcom,ca-target-pwrlevel:
This value indicates which qcom,gpu-pwrlevel to jump on in case
of context aware power level jump.
- qcom,gpu-qdss-stm:
<baseAddr size>
baseAddr - base address of the gpu channels in the qdss stm memory region
size - size of the gpu stm region
- qcom,gpu-timer:
<baseAddr size>
baseAddr - base address of the qtimer memory region
size - size of the qtimer region
- qcom,tzone-names:
Specify the names of GPU thermal zones. These will be used
to get gpu temperature from the thermal driver API.
nvmem-cells:
A phandle to the configuration data such as gpu speed bin, gpu gaming mode,
gpu model name provided by a nvmem device. If unspecified default values shall be used.
nvmem-cell-names:
Should be "speed_bin", "gaming_bin", "gpu_model"
GPU Quirks:
- qcom,gpu-quirk-two-pass-use-wfi:
Signal the GPU to set Set TWOPASSUSEWFI bit in
PC_DBG_ECO_CNTL (5XX and 6XX only)
- qcom,gpu-quirk-critical-packets:
Submit a set of critical PM4 packets when the GPU wakes up
- qcom,gpu-quirk-fault-detect-mask:
Mask out RB1-3 activity signals from HW hang
detection logic
- qcom,gpu-quirk-dp2clockgating-disable:
Disable RB sampler data path clock gating optimization
- qcom,gpu-quirk-lmloadkill-disable:
Use register setting to disable local memory(LM) feature
to avoid corner case error
- qcom,gpu-quirk-hfi-use-reg:
Use registers to replace DCVS HFI message to avoid GMU failure
to access system memory during IFPC
- qcom,gpu-quirk-limit-uche-gbif-rw:
Limit number of read and write transactions from UCHE block to
GBIF to avoid possible deadlock between GBIF, SMMU and MEMNOC.
- qcom,gpu-quirk-mmu-secure-cb-alt:
Select alternate secure context bank to generate SID1 for
secure playback.
KGSL Memory Pools:
- qcom,gpu-mempools: Container for sets of GPU mempools.Multiple sets
(pools) can be defined within qcom,gpu-mempools.
Each mempool defines a pool order, reserved pages,
allocation allowed.
Properties:
- compatible: Must be qcom,gpu-mempools.
- qcom,mempool-max-pages: Max pages for all mempools, If not defined there is no limit.
- qcom,gpu-mempool: Defines a set of mempools.
Properties:
- reg: Index of the pool (0 = lowest pool order).
- qcom,mempool-page-size: Size of page.
- qcom,mempool-reserved: Number of pages reserved at init time for a pool.
- qcom,mempool-allocate: Allocate memory from the system memory when the
reserved pool exhausted.
- qcom,mempool-max-pages: Limit on max pages this pool can hold, If not defined
there is no limit.
GPU model configuration:
- qcom,gpu-models:
Container of sets of GPU model names specified by qcom,gpu-models.
Properties:
- compatible:
Must be qcom,gpu-models.
- qcom,gpu-model:
Defines a GPU model name for specific GPU model ID.
Properties:
- compatible:
May also include "qcom,adreno-gpu-*" for few targets.
- qcom,gpu-model-id:
Identifier for the specific GPU hardware configuration - must match the value read
from the hardware.
- qcom,gpu-model:
GPU model name for a specific GPU hardware.
- qcom,vk-device-id:
Vulkan device id unique for specific GPU hardware model.
SOC Hardware revisions:
- qcom,soc-hw-revisions:
Container of sets of SOC hardware revisions specified by
qcom,soc-hw-revision.
Properties:
- compatible:
Must be qcom,soc-hw-revisions.
- qcom,soc-hw-revision:
Defines a SOC hardware revision.
Properties:
- qcom,soc-hw-revision:
Identifier for the hardware revision - must match the value read
from the hardware.
- qcom,chipid:
GPU Chip ID to be used for this hardware revision.
- qcom,gpu-quirk-*:
GPU quirks applicable for this hardware revision.
GPU LLC slice info:
- cache-slice-names: List of LLC cache slices for GPU transactions
and pagetable walk.
- cache-slices: phandle to the system LLC driver, cache slice index.
L3 Power levels:
- qcom,l3-pwrlevels: Container for sets of L3 power levels, the
L3 frequency is adjusted according to the
performance hint received from userspace.
Properties:
- compatible: Must be qcom,l3-pwrlevels
- qcom,l3-pwrlevel: A single L3 powerlevel
Properties:
- reg: Index of the L3 powerlevel
0 = powerlevel for no L3 vote
1 = powerlevel for medium L3 vote
2 = powerlevel for maximum L3 vote
- qcom,l3-freq: The L3 frequency for the powerlevel (in Hz)
GPU coresight info:
The following properties are optional as collecting data via coresight might
not be supported for every chipset. The documentation for coresight
properties can be found in:
Documentation/devicetree/bindings/coresight/coresight.txt
- qcom,gpu-coresights: Container for sets of GPU coresight sources.
- coresight-id: Unique integer identifier for the bus.
- coresight-name: Unique descriptive name of the bus.
- coresight-nr-inports: Number of input ports on the bus.
- coresight-outports: List of output port numbers on the bus.
- coresight-child-list: List of phandles pointing to the children of this
component.
- coresight-child-ports: List of input port numbers of the children.
- coresight-atid: The unique ATID value of the coresight device
Example of A330 GPU in MSM8916:
&soc {
msm_gpu: qcom,kgsl-3d0@1c00000 {
label = "kgsl-3d0";
compatible = "qcom,kgsl-3d0", "qcom,kgsl-3d";
reg = <0x1c00000 0x10000
0x1c20000 0x20000>;
reg-names = "kgsl_3d0_reg_memory" , "kgsl_3d0_shader_memory";
interrupts = <0 33 0>;
interrupt-names = "kgsl_3d0_irq";
qcom,id = <0>;
qcom,chipid = <0x03000600>;
qcom,initial-pwrlevel = <1>;
/* Idle Timeout = HZ/12 */
qcom,idle-timeout = <8>;
qcom,strtstp-sleepwake;
clocks = <&clock_gcc clk_gcc_oxili_gfx3d_clk>,
<&clock_gcc clk_gcc_oxili_ahb_clk>,
<&clock_gcc clk_gcc_oxili_gmem_clk>,
<&clock_gcc clk_gcc_bimc_gfx_clk>,
<&clock_gcc clk_gcc_bimc_gpu_clk>;
clock-names = "core_clk", "iface_clk", "mem_clk",
"mem_iface_clk", "alt_mem_iface_clk";
/* Bus Scale Settings */
qcom, gpu-bus-table {
compatible="qcom,gpu-bus-table","qcom,gpu-bus-table-ddr7";
qcom,msm-bus,name = "grp3d";
qcom,msm-bus,num-cases = <4>;
qcom,msm-bus,num-paths = <1>;
qcom,msm-bus,vectors-KBps =
<26 512 0 0>,
<26 512 0 1600000>,
<26 512 0 3200000>,
<26 512 0 4264000>;
};
/* GDSC oxili regulators */
vdd-supply = <&gdsc_oxili_gx>;
vdd-parent-supply = <&VDD_GFX_LEVEL>;
vdd-parent-min-corner = <RPM_SMD_REGULATOR_LEVEL_RETENTION>;
nvmem-cells = <&gpu_speed_bin>, <&gpu_gaming_bin>, <&gpu_model_bin>;
nvmem-cell-names = "speed_bin", "gaming_bin","gpu_model";
/* IOMMU Data */
iommu = <&gfx_iommu>;
/* Trace bus */
coresight-id = <67>;
coresight-name = "coresight-gfx";
coresight-nr-inports = <0>;
coresight-outports = <0>;
coresight-child-list = <&funnel_in0>;
coresight-child-ports = <5>;
/* Enable context aware freq. scaling */
qcom,enable-ca-jump;
/* Context aware jump busy penalty in us */
qcom,ca-busy-penalty = <12000>;
/* Context aware jump target power level */
qcom,ca-target-pwrlevel = <1>;
qcom,soc-hw-revisions {
#address-cells = <1>;
#size-cells = <0>;
compatible="qcom,soc-hw-revisions";
qcom,soc-hw-revision@0 {
reg = <0>;
qcom,chipid = <0x06010500>;
qcom,gpu-quirk-hfi-use-reg;
qcom,gpu-quirk-limit-uche-gbif-rw;
};
qcom,soc-hw-revision@1 {
reg = <1>;
qcom,chipid = <0x06010501>;
qcom,gpu-quirk-hfi-use-reg;
};
};
qcom,gpu-models {
#address-cells = <1>;
#size-cells = <0>;
compatible="qcom,gpu-models";
qcom,gpu-model@0 {
compatible="qcom,adreno-gpu-a642l";
qcom,gpu-model-id = <0>;
qcom,gpu-model = "Adreno642Lv1";
qcom,vk-device-id= <0x06030500>;
};
qcom,gpu-model@1 {
compatible="qcom,adreno-gpu-a645";
qcom,gpu-model-id = <190>;
qcom,gpu-model = "Adreno645";
qcom,vk-device-id= <0x06030500>;
};
}
/* GPU Mempools */
qcom,gpu-mempools {
#address-cells= <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-reserved = <2048>;
qcom,mempool-allocate;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-reserved = <1024>;
qcom,mempool-allocate;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
/* Power levels */
qcom,gpu-pwrlevels-bins {
#address-cells = <1>;
#size-cells = <0>;
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <0>;
qcom,ca-target-pwrlevel = <1>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <400000000>;
qcom,bus-freq = <3>;
qcom,io-fraction = <33>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <310000000>;
qcom,bus-freq = <2>;
qcom,io-fraction = <66>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <200000000>;
qcom,bus-freq = <1>;
qcom,io-fraction = <100>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <27000000>;
qcom,bus-freq = <0>;
qcom,io-fraction = <0>;
};
};
};
};
};

View File

@@ -0,0 +1,684 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
&msm_gpu {
label = "kgsl-3d0";
compatible = "qcom,kgsl-3d0", "qcom,kgsl-3d";
status = "ok";
reg = <0x5900000 0x90000>,
<0x5961000 0x800>;
reg-names = "kgsl_3d0_reg_memory", "cx_dbgc";
interrupts = <0 177 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
qcom,id = <0>;
qcom,chipid = <0x06010000>;
qcom,initial-pwrlevel = <6>;
qcom,ubwc-mode = <1>;
qcom,min-access-length = <64>;
/* base addr, size */
qcom,gpu-qdss-stm = <0xe1c0000 0x40000>;
#cooling-cells = <2>;
clocks = <&gpucc GPU_CC_GX_GFX3D_CLK>,
<&gpucc GPU_CC_CXO_CLK>,
<&gcc GCC_BIMC_GPU_AXI_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gpucc GPU_CC_CX_GMU_CLK>,
<&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
<&rpmcc RPM_SMD_QDSS_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
<&gcc GCC_GPU_SNOC_DVM_GFX_CLK>;
clock-names = "core_clk",
"rbbmtimer_clk",
"iface_clk",
"ahb_clk",
"mem_clk",
"gmu_clk",
"smmu_vote",
"apb_pclk",
"gpu_cc_ahb",
"gcc_gpu_memnoc_gfx",
"gpu_cc_hlos1_vote_gpu_smmu",
"gcc_gpu_snoc_dvm_gfx";
interconnects = <&bimc MASTER_GRAPHICS_3D &bimc SLAVE_EBI_CH0>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-cnoc =
<0>, /* Off */
<100>; /* On */
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 8)>, /* index=0 */
<MHZ_TO_KBPS(100, 8)>, /* index=1 */
<MHZ_TO_KBPS(200, 8)>, /* index=2 */
<MHZ_TO_KBPS(300, 8)>, /* index=3 */
<MHZ_TO_KBPS(451, 8)>, /* index=4 */
<MHZ_TO_KBPS(547, 8)>, /* index=5 */
<MHZ_TO_KBPS(681, 8)>, /* index=6 */
<MHZ_TO_KBPS(768, 8)>, /* index=7 */
<MHZ_TO_KBPS(1017, 8)>, /* index=8 */
<MHZ_TO_KBPS(1353, 8)>, /* index=9 */
<MHZ_TO_KBPS(1555, 8)>, /* index=10 */
<MHZ_TO_KBPS(1804, 8)>; /* index=11 */
/* GDSC regulator names */
regulator-names = "vddcx", "vdd";
/* GDSC oxili regulators */
vddcx-supply = <&gpu_cx_gdsc>;
vdd-supply = <&gpu_gx_gdsc>;
/* CPU latency parameter */
qcom,pm-qos-active-latency = <422>;
qcom,pm-qos-wakeup-latency = <422>;
/* Enable context aware freq. scaling */
qcom,enable-ca-jump;
/* Context aware jump busy penalty in us */
qcom,ca-busy-penalty = <12000>;
/* Context aware jump target power level */
qcom,ca-target-pwrlevel = <5>;
nvmem-cells = <&gpu_speed_bin>, <&gpu_gaming_bin>;
nvmem-cell-names = "speed_bin", "gaming_bin";
qcom,gpu-cx-ipeak {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-cx-ipeak";
qcom,gpu-cx-ipeak@0 {
qcom,gpu-cx-ipeak = <&cx_ipeak_lm 10>;
qcom,gpu-cx-ipeak-freq = <950000000>;
};
qcom,gpu-cx-ipeak@1 {
qcom,gpu-cx-ipeak = <&cx_ipeak_lm 1>;
qcom,gpu-cx-ipeak-freq = <900000000>;
};
};
/* ZAP Shader memory */
zap-shader {
memory-region = <&pil_gpu_mem>;
};
/* GPU Mempools */
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-allocate;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-allocate;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
/* GPU Mempool configuration for low memory SKUs */
qcom,gpu-mempools-lowmem {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools-lowmem";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-allocate;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-allocate;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-allocate;
qcom,mempool-max-pages = <256>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-allocate;
qcom,mempool-max-pages = <32>;
};
};
/*
* Speed-bin zero is default speed bin.
* For rest of the speed bins, speed-bin value
* is calculated as FMAX/4.8 MHz round up to zero
* decimal places plus two margin to account for
* clock jitters.
*/
qcom,gpu-pwrlevel-bins {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevel-bins";
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <0>;
qcom,initial-pwrlevel = <6>;
qcom,ca-target-pwrlevel = <5>;
/* TURBO_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <980000000>;
qcom,bus-freq = <11>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
};
/* TURBO */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <900000000>;
qcom,bus-freq = <11>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
};
/* NOM_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <820000000>;
qcom,bus-freq = <10>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
};
/* NOM */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <745000000>;
qcom,bus-freq = <9>;
qcom,bus-min = <8>;
qcom,bus-max = <10>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <600000000>;
qcom,bus-freq = <8>;
qcom,bus-min = <8>;
qcom,bus-max = <9>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
};
/* SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <465000000>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <320000000>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
/* XO */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <206>;
qcom,initial-pwrlevel = <6>;
qcom,ca-target-pwrlevel = <5>;
/* TURBO_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <980000000>;
qcom,bus-freq = <11>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
};
/* TURBO */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <900000000>;
qcom,bus-freq = <11>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
};
/* NOM_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <820000000>;
qcom,bus-freq = <10>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
};
/* NOM */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <745000000>;
qcom,bus-freq = <9>;
qcom,bus-min = <8>;
qcom,bus-max = <10>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <600000000>;
qcom,bus-freq = <8>;
qcom,bus-min = <8>;
qcom,bus-max = <9>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
};
/* SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <465000000>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <320000000>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
/* XO */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
};
qcom,gpu-pwrlevels-2 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <200>;
qcom,initial-pwrlevel = <6>;
qcom,ca-target-pwrlevel = <5>;
/* TURBO_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <950000000>;
qcom,bus-freq = <11>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
};
/* TURBO */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <900000000>;
qcom,bus-freq = <11>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
};
/* NOM_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <820000000>;
qcom,bus-freq = <10>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
};
/* NOM */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <745000000>;
qcom,bus-freq = <9>;
qcom,bus-min = <8>;
qcom,bus-max = <10>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <600000000>;
qcom,bus-freq = <8>;
qcom,bus-min = <8>;
qcom,bus-max = <9>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
};
/* SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <465000000>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <320000000>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
/* XO */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
};
qcom,gpu-pwrlevels-3 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <157>;
qcom,initial-pwrlevel = <3>;
qcom,ca-target-pwrlevel = <2>;
/* NOM */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <745000000>;
qcom,bus-freq = <11>;
qcom,bus-min = <9>;
qcom,bus-max = <11>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <600000000>;
qcom,bus-freq = <8>;
qcom,bus-min = <8>;
qcom,bus-max = <10>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
};
/* SVS */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <465000000>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <320000000>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
/* XO */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
};
qcom,gpu-pwrlevels-4 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <127>;
qcom,initial-pwrlevel = <2>;
qcom,ca-target-pwrlevel = <1>;
/* SVS_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <600000000>;
qcom,bus-freq = <11>;
qcom,bus-min = <8>;
qcom,bus-max = <11>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
};
/* SVS */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <465000000>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <320000000>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
/* XO */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
};
};
};
&soc {
gpu_opp_table: gpu-opp-table {
compatible = "operating-points-v2";
opp-980000000 {
opp-hz = /bits/ 64 <980000000>;
opp-microvolt = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
};
opp-950000000 {
opp-hz = /bits/ 64 <950000000>;
opp-microvolt = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
};
opp-900000000 {
opp-hz = /bits/ 64 <900000000>;
opp-microvolt = <RPMH_REGULATOR_LEVEL_TURBO>;
};
opp-820000000 {
opp-hz = /bits/ 64 <820000000>;
opp-microvolt = <RPMH_REGULATOR_LEVEL_NOM_L1>;
};
opp-745000000 {
opp-hz = /bits/ 64 <745000000>;
opp-microvolt = <RPMH_REGULATOR_LEVEL_NOM>;
};
opp-600000000 {
opp-hz = /bits/ 64 <600000000>;
opp-microvolt = <RPMH_REGULATOR_LEVEL_SVS_L1>;
};
opp-465000000 {
opp-hz = /bits/ 64 <465000000>;
opp-microvolt = <RPMH_REGULATOR_LEVEL_SVS>;
};
opp-320000000 {
opp-hz = /bits/ 64 <320000000>;
opp-microvolt = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
};
gpu_bw_tbl: gpu-bw-tbl {
compatible = "operating-points-v2";
opp-0 { opp-hz = /bits/ 64 < 0 >; }; /* OFF */
opp-100 { opp-hz = /bits/ 64 < 762 >; }; /* 1.100 MHz */
opp-200 { opp-hz = /bits/ 64 < 1525 >; }; /* 2.200 MHz */
opp-300 { opp-hz = /bits/ 64 < 2288 >; }; /* 3.300 MHz */
opp-451 { opp-hz = /bits/ 64 < 3440 >; }; /* 4.451 MHz */
opp-547 { opp-hz = /bits/ 64 < 4173 >; }; /* 5.547 MHz */
opp-681 { opp-hz = /bits/ 64 < 5195 >; }; /* 6.681 MHz */
opp-768 { opp-hz = /bits/ 64 < 5859 >; }; /* 7.768 MHz */
opp-1017 { opp-hz = /bits/ 64 < 7759 >; }; /* 8.1017 MHz */
opp-1353 { opp-hz = /bits/ 64 < 10322 >; }; /* 9.1353 MHz */
opp-1555 { opp-hz = /bits/ 64 < 11863 >; }; /* 10.1555 MHz */
opp-1804 { opp-hz = /bits/ 64 < 13763 >; }; /* 11.1804 MHz */
};
gpubw: qcom,gpubw {
compatible = "qcom,devbw";
governor = "bw_vbif";
qcom,src-dst-ports = <26 512>;
operating-points-v2 = <&gpu_bw_tbl>;
};
kgsl_msm_iommu: qcom,kgsl-iommu@59a0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x59a0000 0x10000>;
qcom,protect = <0xa0000 0x10000>;
vddcx-supply = <&gpu_cx_gdsc>;
qcom,retention;
qcom,hyp_secure_alloc;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
label = "gfx3d_user";
iommus = <&kgsl_smmu 0 1>;
qcom,iommu-dma = "disabled";
qcom,gpu-offset = <0xa8000>;
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
label = "gfx3d_secure";
iommus = <&kgsl_smmu 2 0>;
qcom,iommu-dma = "disabled";
};
};
};

View File

@@ -0,0 +1,332 @@
&msm_gpu {
qcom,gpu-pwrlevel-bins {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevel-bins";
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <0>;
qcom,ca-target-pwrlevel = <5>;
qcom,initial-pwrlevel = <6>;
/* TURBO_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <900000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq-ddr7 = <9>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <9>;
};
/* TURBO */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <840000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq-ddr7 = <8>;
qcom,bus-min-ddr7 = <7>;
qcom,bus-max-ddr7 = <9>;
};
/* NOM_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <770000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq-ddr7 = <7>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <9>;
};
/* NOM */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <650000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq-ddr7 = <6>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <8>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <490000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq-ddr7 = <5>;
qcom,bus-min-ddr7 = <4>;
qcom,bus-max-ddr7 = <7>;
};
/* SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <390000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq-ddr7 = <4>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7= <5>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <266000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <1>;
qcom,bus-max-ddr7 = <4>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <190>;
qcom,ca-target-pwrlevel = <5>;
qcom,initial-pwrlevel = <6>;
/* TURBO_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <900000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq-ddr7 = <9>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <9>;
};
/* TURBO */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <840000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq-ddr7 = <8>;
qcom,bus-min-ddr7 = <7>;
qcom,bus-max-ddr7 = <9>;
};
/* NOM_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <770000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq-ddr7 = <7>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <9>;
};
/* NOM */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <650000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq-ddr7 = <6>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <8>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <490000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq-ddr7 = <5>;
qcom,bus-min-ddr7 = <4>;
qcom,bus-max-ddr7 = <7>;
};
/* SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <390000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq-ddr7 = <4>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7= <5>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <266000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <1>;
qcom,bus-max-ddr7 = <4>;
};
};
qcom,gpu-pwrlevels-2 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <177>;
qcom,ca-target-pwrlevel = <4>;
qcom,initial-pwrlevel = <5>;
/* TURBO */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <840000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq-ddr7 = <8>;
qcom,bus-min-ddr7 = <7>;
qcom,bus-max-ddr7 = <9>;
};
/* NOM_L1 */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <770000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq-ddr7 = <7>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <9>;
};
/* NOM */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <650000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq-ddr7 = <6>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <8>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <490000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq-ddr7 = <5>;
qcom,bus-min-ddr7 = <4>;
qcom,bus-max-ddr7 = <7>;
};
/* SVS */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <390000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq-ddr7 = <4>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7= <5>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <266000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <1>;
qcom,bus-max-ddr7 = <4>;
};
};
qcom,gpu-pwrlevels-3 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <148>;
qcom,ca-target-pwrlevel = <3>;
qcom,initial-pwrlevel = <4>;
/* NOM_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <700000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq-ddr7 = <9>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <9>;
};
/* NOM */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <650000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq-ddr7 = <6>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <8>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <490000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq-ddr7 = <5>;
qcom,bus-min-ddr7 = <4>;
qcom,bus-max-ddr7 = <7>;
};
/* SVS */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <390000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq-ddr7 = <4>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7= <5>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <266000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <1>;
qcom,bus-max-ddr7 = <4>;
};
};
};
};

View File

@@ -0,0 +1,20 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,gcc-blair.h>
#include <dt-bindings/clock/qcom,gpucc-blair.h>
#include <dt-bindings/clock/qcom,rpmcc.h>
#include <dt-bindings/interconnect/qcom,blair.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/regulator/qcom,rpm-smd-regulator.h>
#include <dt-bindings/spmi/spmi.h>
#include "blair-gpu.dtsi"
#include "blair-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Blair";
compatible = "qcom,blair";
qcom,msm-id = <507 0x10000>, <578 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,130 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
&msm_gpu {
compatible = "qcom,kgsl-3d0", "qcom,adreno-gpu-a619-holi";
status = "ok";
reg = <0x5900000 0x40000>,
<0x5961000 0x800>,
<0x0596A000 0x30000>,
<0x599E000 0x1000>;
reg-names = "kgsl_3d0_reg_memory",
"cx_dbgc",
"gmu_wrapper",
"cx_misc";
clocks = <&gpucc GPU_CC_GX_GFX3D_CLK>,
<&gpucc GPU_CC_CXO_CLK>,
<&gcc GCC_BIMC_GPU_AXI_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gpucc GPU_CC_CX_GMU_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>;
clock-names = "core_clk",
"rbbmtimer_clk",
"iface_clk",
"mem_clk",
"gmu_clk",
"gcc_gpu_memnoc_gfx";
interrupts = <0 177 IRQ_TYPE_LEVEL_HIGH>, <0 181 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq", "freq_limiter_irq";
resets = <&gpucc GPUCC_GPU_CC_FREQUENCY_LIMITER_IRQ_CLEAR>;
reset-names = "freq_limiter_irq_clear";
nvmem-cells = <&gpu_speed_bin>, <&gpu_gaming_bin>;
nvmem-cell-names = "speed_bin", "gaming_bin";
qcom,chipid = <0x06010901>;
qcom,gpu-model = "Adreno619v2";
regulator-names = "vddcx", "vdd";
vddcx-supply = <&gpu_cx_gdsc>;
vdd-supply = <&gpu_gx_gdsc>;
vdd-parent-supply = <&S8A_LEVEL>;
vdd-parent-min-corner = <RPM_SMD_REGULATOR_LEVEL_RETENTION>;
qcom,gpu-quirk-secvid-set-once;
qcom,min-access-length = <32>;
qcom,ubwc-mode = <2>;
qcom,enable-ca-jump;
/* Context aware jump busy penalty in us */
qcom,ca-busy-penalty = <12000>;
interconnects = <&bimc MASTER_GRAPHICS_3D &bimc SLAVE_EBI>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-ddr7 =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(451, 4)>, /* index=1 (LOW SVS) */
<MHZ_TO_KBPS(547, 4)>, /* index=2(LOW SVS) */
<MHZ_TO_KBPS(681, 4)>, /* index=3 (SVS) */
<MHZ_TO_KBPS(768, 4)>, /* index=4 (SVS) */
<MHZ_TO_KBPS(1017, 4)>, /* index=5 (SVS) */
<MHZ_TO_KBPS(1353, 4)>, /* index=6 (NOM) */
<MHZ_TO_KBPS(1555, 4)>, /* index=7 (NOM) */
<MHZ_TO_KBPS(1804, 4)>, /* index=8 (TURBO) */
<MHZ_TO_KBPS(2092, 4)>; /* index=9 (TURBO_L1) */
zap-shader {
memory-region = <&pil_gpu_micro_code_mem>;
};
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-allocate;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-allocate;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@5940000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x5940000 0x10000>;
vddcx-supply = <&gpu_cx_gdsc>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x0>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x2>;
qcom,iommu-dma = "disabled";
};
};
};

View File

@@ -0,0 +1,153 @@
&msm_gpu {
qcom,initial-pwrlevel = <10>;
/* Power levels */
qcom,gpu-pwrlevels {
compatible="qcom,gpu-pwrlevels";
#address-cells = <1>;
#size-cells = <0>;
/* Turbo_L2 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1100000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L2>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <0xA02F5FFD>;
};
/* Turbo_L1*/
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <1000000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <0xA02F5FFD>;
};
/* Turbo_L0 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <950000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L0>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <0xA8285FFD>;
};
/* Turbo */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <900000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <9>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xA8285FFD>;
};
/* Nom_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <835000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xA8285FFD>;
};
/* Nom */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <736000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <8>;
qcom,acd-level = <0x88295FFD>;
};
/* SVS_L2 */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <684000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <8>;
qcom,acd-level = <0x88295FFD>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <633000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
qcom,acd-level = <0x88295FFD>;
};
/* SVS */
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <4>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <0xA8295FFD>;
};
/* Low_SVS */
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <353000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0x882C5FFD>;
};
/* Low_SVS_D1 */
qcom,gpu-pwrlevel@10 {
reg = <10>;
qcom,gpu-freq = <255000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0x882F5FFD>;
};
};
};

View File

@@ -0,0 +1,20 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-cliffs.h>
#include <dt-bindings/clock/qcom,gpucc-cliffs.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,cliffs.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include "cliffs-gpu.dtsi"
#include "cliffs-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Cliffs";
compatible = "qcom,cliffs", "qcom,cliffsp";
qcom,msm-id = <614 0x10000>, <642 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,215 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
&msm_gpu {
compatible = "qcom,adreno-gpu-gen7-11-0", "qcom,kgsl-3d0";
status = "ok";
reg = <0x3d00000 0x40000>, <0x3d50000 0x10000>,
<0x3d61000 0x800>, <0x3d9e000 0x1000>,
<0x10048000 0x8000>, <0x10900000 0x80000>,
<0x10b05000 0x1000>;
reg-names = "kgsl_3d0_reg_memory", "rscc", "cx_dbgc",
"cx_misc", "qdss_etr", "qdss_gfx", "qdss_tmc";
interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&aoss_qmp QDSS_CLK>;
clock-names = "gcc_gpu_memnoc_gfx",
"gcc_gpu_snoc_dvm_gfx",
"gpu_cc_ahb",
"apb_pclk";
qcom,min-access-length = <32>;
qcom,ubwc-mode = <4>;
qcom,gpu-qdss-stm = <0x161c0000 0x40000>; /* base addr, size */
qcom,tzone-names = "gpuss-0", "gpuss-1", "gpuss-2", "gpuss-3";
interconnects = <&gem_noc MASTER_GFX3D &mc_virt SLAVE_EBI1>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-cnoc =
<0>, /* Off */
<100>; /* On */
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(547, 4) >, /* index=1 */
<MHZ_TO_KBPS(768, 4) >, /* index=2 */
<MHZ_TO_KBPS(1555, 4)>, /* index=3 */
<MHZ_TO_KBPS(1708, 4)>, /* index=4 */
<MHZ_TO_KBPS(2092, 4)>, /* index=5 */
<MHZ_TO_KBPS(2736, 4)>, /* index=6 */
<MHZ_TO_KBPS(3187, 4)>, /* index=7 */
<MHZ_TO_KBPS(3686, 4)>, /* index=8 */
<MHZ_TO_KBPS(4224, 4)>; /* index=9 */
zap-shader {
memory-region = <&gpu_microcode_mem>;
};
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-reserved = <2048>;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-reserved = <1024>;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 128K Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <131072>;
qcom,mempool-reserved = <128>;
};
/* 256K Page Pool configuration */
qcom,gpu-mempool@4 {
reg = <4>;
qcom,mempool-page-size = <262144>;
qcom,mempool-reserved = <80>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@5 {
reg = <5>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@3da0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x3da0000 0x40000>;
vddcx-supply = <&gpu_cc_cx_gdsc>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x0 0x000>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x2 0x000>;
qcom,iommu-dma = "disabled";
};
};
gmu: qcom,gmu@3d69000 {
compatible = "qcom,gen7-gmu";
reg = <0x3d68000 0x37000>,
<0xb280000 0x10000>,
<0x3d40000 0x10000>;
reg-names = "gmu", "gmu_pdc", "gmu_ao_blk_dec0";
interrupts = <0 304 IRQ_TYPE_LEVEL_HIGH>,
<0 305 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "hfi", "gmu";
regulator-names = "vddcx", "vdd";
vddcx-supply = <&gpu_cc_cx_gdsc>;
vdd-supply = <&gpu_cc_gx_gdsc>;
clocks = <&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_AHB_CLK>,
<&gpucc GPU_CC_HUB_CX_INT_CLK>;
clock-names = "gmu_clk", "cxo_clk", "axi_clk",
"memnoc_clk", "ahb_clk", "hub_clk";
qcom,gmu-freq-table = <220000000 RPMH_REGULATOR_LEVEL_LOW_SVS>,
<550000000 RPMH_REGULATOR_LEVEL_SVS>;
iommus = <&kgsl_smmu 0x5 0x000>;
qcom,iommu-dma = "disabled";
mboxes = <&qmp_aop 0>;
mbox-names = "aop";
qcom,ipc-core = <0x00400000 0x140000>;
};
coresight_cx_dgbc: qcom,gpu-coresight-cx {
compatible = "qcom,gpu-coresight-cx";
coresight-name = "coresight-gfx-cx";
coresight-atid = <52>;
out-ports {
port {
cx_dbgc_out_funnel_gfx: endpoint {
remote-endpoint =
<&funnel_gfx_in_cx_dbgc>;
};
};
};
};
coresight_gx_dgbc: qcom,gpu-coresight-gx {
compatible = "qcom,gpu-coresight-gx";
coresight-name = "coresight-gfx";
coresight-atid = <53>;
out-ports {
port {
gx_dbgc_out_funnel_gfx: endpoint {
remote-endpoint =
<&funnel_gfx_in_gx_dbgc>;
};
};
};
};
};
&funnel_gfx {
in-ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
funnel_gfx_in_gx_dbgc: endpoint {
remote-endpoint =
<&gx_dbgc_out_funnel_gfx>;
};
};
port@1 {
reg = <1>;
funnel_gfx_in_cx_dbgc: endpoint {
remote-endpoint =
<&cx_dbgc_out_funnel_gfx>;
};
};
};
};

View File

@@ -0,0 +1,127 @@
&msm_gpu {
qcom,initial-pwrlevel = <8>;
/* Power levels */
qcom,gpu-pwrlevels {
compatible="qcom,gpu-pwrlevels";
#address-cells = <1>;
#size-cells = <0>;
/* Turbo_L0*/
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <950000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L0>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <0xA8285FFD>;
};
/* Turbo */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <900000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <0xA8285FFD>;
};
/* Nom_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <835000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xA8285FFD>;
};
/* Nom */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <736000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <8>;
qcom,acd-level = <0x88295FFD>;
};
/* SVS_L2 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <684000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <8>;
qcom,acd-level = <0x88295FFD>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <633000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
qcom,acd-level = <0x88295FFD>;
};
/* SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <4>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <0xA8295FFD>;
};
/* Low_SVS */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <353000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0x882C5FFD>;
};
/* Low_SVS_D1 */
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <255000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0x882F5FFD>;
};
};
};

View File

@@ -0,0 +1,20 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-cliffs.h>
#include <dt-bindings/clock/qcom,gpucc-cliffs.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,cliffs.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include "cliffs-gpu.dtsi"
#include "cliffs7-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Cliffs 7";
compatible = "qcom,cliffs", "qcom,cliffsp";
qcom,msm-id = <632 0x10000>, <643 0x10000>, <700 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,196 @@
&msm_gpu {
qcom,gpu-pwrlevel-bins {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevel-bins";
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <0>;
qcom,ca-target-pwrlevel = <5>;
qcom,initial-pwrlevel = <6>;
/* TURBO_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <875000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq-ddr7 = <9>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <9>;
};
/* TURBO */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <800000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq-ddr7 = <8>;
qcom,bus-min-ddr7 = <7>;
qcom,bus-max-ddr7 = <9>;
};
/* NOM_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <650000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq-ddr7 = <7>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <9>;
};
/* NOM */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <565000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq-ddr7 = <6>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <8>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <430000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq-ddr7 = <5>;
qcom,bus-min-ddr7 = <4>;
qcom,bus-max-ddr7 = <7>;
};
/* SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <355000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq-ddr7 = <4>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7= <5>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <253000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <1>;
qcom,bus-max-ddr7 = <4>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <138>;
qcom,ca-target-pwrlevel = <3>;
qcom,initial-pwrlevel = <4>;
/* NOM_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <650000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq-ddr7 = <7>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <9>;
};
/* NOM */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <565000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq-ddr7 = <6>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <8>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <430000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq-ddr7 = <5>;
qcom,bus-min-ddr7 = <4>;
qcom,bus-max-ddr7 = <7>;
};
/* SVS */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <355000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq-ddr7 = <4>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7= <5>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <253000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <1>;
qcom,bus-max-ddr7 = <4>;
};
};
qcom,gpu-pwrlevels-2 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <92>;
qcom,ca-target-pwrlevel = <1>;
qcom,initial-pwrlevel = <2>;
/* SVS_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <430000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq-ddr7 = <5>;
qcom,bus-min-ddr7 = <4>;
qcom,bus-max-ddr7 = <7>;
};
/* SVS */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <355000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq-ddr7 = <4>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7= <5>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <253000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <1>;
qcom,bus-max-ddr7 = <4>;
};
};
};
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,gcc-holi.h>
#include <dt-bindings/clock/qcom,gpucc-holi.h>
#include <dt-bindings/clock/qcom,rpmcc.h>
#include <dt-bindings/interconnect/qcom,holi.h>
#include <dt-bindings/interconnect/qcom,icc.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/regulator/qcom,rpm-smd-regulator.h>
#include <dt-bindings/spmi/spmi.h>
#include "holi-gpu.dtsi"
#include "holi-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Holi SoC";
compatible = "qcom,holi";
qcom,msm-id = <454 0x10000>, <472 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,131 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
&msm_gpu {
compatible = "qcom,kgsl-3d0", "qcom,adreno-gpu-a619-holi";
status = "ok";
reg = <0x5900000 0x40000>,
<0x5961000 0x800>,
<0x596A000 0x30000>,
<0x599E000 0x1000>;
reg-names = "kgsl_3d0_reg_memory",
"cx_dbgc",
"gmu_wrapper",
"cx_misc";
clocks = <&gpucc GPU_CC_GX_GFX3D_CLK>,
<&gpucc GPU_CC_CXO_CLK>,
<&gcc GCC_BIMC_GPU_AXI_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gpucc GPU_CC_CX_GMU_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>;
clock-names = "core_clk",
"rbbmtimer_clk",
"iface_clk",
"mem_clk",
"gmu_clk",
"gcc_gpu_memnoc_gfx";
interrupts = <0 177 IRQ_TYPE_LEVEL_HIGH>, <0 181 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq", "freq_limiter_irq";
resets = <&gpucc GPUCC_GPU_CC_FREQUENCY_LIMITER_IRQ_CLEAR>;
reset-names = "freq_limiter_irq_clear";
nvmem-cells = <&gpu_speed_bin>, <&gpu_gaming_bin>;
nvmem-cell-names = "speed_bin", "gaming_bin";
qcom,chipid = <0x06010900>;
qcom,gpu-model = "Adreno619v1";
regulator-names = "vddcx", "vdd";
vddcx-supply = <&gpu_cx_gdsc>;
vdd-supply = <&gpu_gx_gdsc>;
vdd-parent-supply = <&S3A_LEVEL>;
vdd-parent-min-corner = <RPM_SMD_REGULATOR_LEVEL_RETENTION>;
qcom,gpu-quirk-secvid-set-once;
qcom,min-access-length = <32>;
qcom,ubwc-mode = <2>;
/* Enable context aware freq. scaling */
qcom,enable-ca-jump;
/* Context aware jump busy penalty in us */
qcom,ca-busy-penalty = <12000>;
interconnects = <&bimc MASTER_GRAPHICS_3D &bimc SLAVE_EBI>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-ddr7 =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(451, 4)>, /* index=1 (LOW SVS) */
<MHZ_TO_KBPS(547, 4)>, /* index=2 (LOW SVS) */
<MHZ_TO_KBPS(681, 4)>, /* index=3 (SVS) */
<MHZ_TO_KBPS(768, 4)>, /* index=4 (SVS) */
<MHZ_TO_KBPS(1017, 4)>, /* index=5 (SVS) */
<MHZ_TO_KBPS(1353, 4)>, /* index=6 (NOM) */
<MHZ_TO_KBPS(1555, 4)>, /* index=7 (NOM) */
<MHZ_TO_KBPS(1804, 4)>, /* index=8 (TURBO) */
<MHZ_TO_KBPS(2092, 4)>; /* index=9 (TURBO_L1) */
zap-shader {
memory-region = <&pil_gpu_microcode_mem>;
};
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-allocate;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-allocate;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@5940000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x5940000 0x10000>;
vddcx-supply = <&gpu_cx_gdsc>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x0>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x2>;
qcom,iommu-dma = "disabled";
};
};
};

View File

@@ -0,0 +1,229 @@
&msm_gpu {
/* Power levels */
qcom,gpu-pwrlevel-bins {
compatible="qcom,gpu-pwrlevel-bins";
#address-cells = <1>;
#size-cells = <0>;
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_AC)
SKU_CODE(PCODE_UNKNOWN, FC_AF)
SKU_CODE(PCODE_2, FC_Y0)
SKU_CODE(PCODE_2, FC_Y2)
SKU_CODE(PCODE_4, FC_Y0)
SKU_CODE(PCODE_4, FC_Y2)
SKU_CODE(PCODE_6, FC_Y0)
SKU_CODE(PCODE_6, FC_Y1)
SKU_CODE(PCODE_6, FC_YD)
SKU_CODE(PCODE_6, FC_YE)>;
qcom,initial-pwrlevel = <9>;
qcom,initial-min-pwrlevel = <9>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <746000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <0x882b5ffd>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <719000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <7>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <0x882b5ffd>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <0x882c5ffd>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <615000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <0x882c5ffd>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <550000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <7>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <0xa82d5ffd>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <475000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <7>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <0xa82d5ffd>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <401000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <348000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <4>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
};
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <295000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xc02c5ffd>;
};
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <220000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
};
qcom,gpu-pwrlevel@10 {
reg = <10>;
qcom,gpu-freq = <124800000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_UNKNOWN)>;
qcom,initial-pwrlevel = <5>;
qcom,initial-min-pwrlevel = <5>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <550000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <9>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa82d5ffd>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <475000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <7>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <0xa82d5ffd>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <401000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <348000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <4>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <295000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xc02c5ffd>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <220000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <124800000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
};
};
};
};

View File

@@ -0,0 +1,22 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-kalama.h>
#include <dt-bindings/clock/qcom,gpucc-kalama.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,kalama.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "kalama-gpu.dtsi"
#include "kalama-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Kalama";
compatible = "qcom,kalama";
qcom,msm-id = <519 0x10000>, <536 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,264 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
/* External feature codes */
#define FC_UNKNOWN 0x0
#define FC_AA 0x1
#define FC_AB 0x2
#define FC_AC 0x3
#define FC_AD 0x4
#define FC_AE 0x5
#define FC_AF 0x6
#define FC_AG 0x7
#define FC_AH 0x8
/* Internal feature codes */
#define FC_Y0 0x00f1
#define FC_Y1 0x00f2
#define FC_Y2 0x00f3
#define FC_Y3 0x00f4
#define FC_Y4 0x00f5
#define FC_Y5 0x00f6
#define FC_Y6 0x00f7
#define FC_Y7 0x00f8
#define FC_Y8 0x00f9
#define FC_Y9 0x00fa
#define FC_YA 0x00fb
#define FC_YB 0x00fc
#define FC_YC 0x00fd
#define FC_YD 0x00fe
#define FC_YE 0x00ff
#define FC_YF 0x0100
/* Pcodes */
#define PCODE_UNKNOWN 0
#define PCODE_0 1
#define PCODE_1 2
#define PCODE_2 3
#define PCODE_3 4
#define PCODE_4 5
#define PCODE_5 6
#define PCODE_6 7
#define PCODE_7 8
#define PCODE_8 9
#define SKU_CODE(pcode, featurecode) ((pcode << 16) + featurecode)
&msm_gpu {
compatible = "qcom,adreno-gpu-gen7-2-0", "qcom,kgsl-3d0";
status = "ok";
reg = <0x3d00000 0x40000>, <0x3d61000 0x800>,
<0x03d50000 0x10000>, <0x3d8b000 0x2000>,
<0x03d9e000 0x1000>, <0x10900000 0x80000>,
<0x10048000 0x8000>, <0x10b05000 0x1000>;
reg-names = "kgsl_3d0_reg_memory", "cx_dbgc", "rscc",
"isense_cntl", "cx_misc", "qdss_gfx", "qdss_etr",
"qdss_tmc";
interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&aoss_qmp QDSS_CLK>;
clock-names = "gcc_gpu_memnoc_gfx",
"gcc_gpu_snoc_dvm_gfx",
"gpu_cc_ahb", "apb_pclk";
qcom,min-access-length = <32>;
qcom,ubwc-mode = <4>;
qcom,gpu-qdss-stm = <0x161c0000 0x40000>; /* base addr, size */
qcom,tzone-names = "gpuss-0", "gpuss-1", "gpuss-2", "gpuss-3",
"gpuss-4", "gpuss-5", "gpuss-6", "gpuss-7";
interconnects = <&gem_noc MASTER_GFX3D &mc_virt SLAVE_EBI1>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-cnoc =
<0>, /* Off */
<100>; /* On */
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(547, 4) >, /* index=1 */
<MHZ_TO_KBPS(768, 4) >, /* index=2 */
<MHZ_TO_KBPS(1555, 4)>, /* index=3 */
<MHZ_TO_KBPS(1708, 4)>, /* index=4 */
<MHZ_TO_KBPS(2092, 4)>, /* index=5 */
<MHZ_TO_KBPS(2736, 4)>, /* index=6 */
<MHZ_TO_KBPS(3187, 4)>, /* index=7 */
<MHZ_TO_KBPS(3686, 4)>, /* index=8 */
<MHZ_TO_KBPS(4224, 4)>; /* index=9 */
zap-shader {
memory-region = <&gpu_micro_code_mem>;
};
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-reserved = <2048>;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-reserved = <1024>;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 128K Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <131072>;
qcom,mempool-reserved = <128>;
};
/* 256K Page Pool configuration */
qcom,gpu-mempool@4 {
reg = <4>;
qcom,mempool-page-size = <262144>;
qcom,mempool-reserved = <80>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@5 {
reg = <5>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@3da0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x03da0000 0x40000>;
vddcx-supply = <&gpu_cc_cx_gdsc>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x0 0x000>;
qcom,iommu-dma = "disabled";
};
gfx3d_lpac: gfx3d_lpac {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x1 0x000>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x2 0x000>;
qcom,iommu-dma = "disabled";
};
};
gmu: qcom,gmu@3d69000 {
compatible = "qcom,gen7-gmu";
reg = <0x3d68000 0x37000>,
<0xb280000 0x10000>,
<0x03D40000 0x10000>;
reg-names = "gmu", "gmu_pdc", "gmu_ao_blk_dec0";
interrupts = <0 304 IRQ_TYPE_LEVEL_HIGH>,
<0 305 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "hfi", "gmu";
regulator-names = "vddcx", "vdd";
vddcx-supply = <&gpu_cc_cx_gdsc>;
vdd-supply = <&gpu_cc_gx_gdsc>;
clocks = <&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_AHB_CLK>,
<&gpucc GPU_CC_HUB_CX_INT_CLK>;
clock-names = "gmu_clk", "cxo_clk", "axi_clk",
"memnoc_clk", "ahb_clk", "hub_clk";
qcom,gmu-freq-table = <220000000 RPMH_REGULATOR_LEVEL_LOW_SVS>,
<550000000 RPMH_REGULATOR_LEVEL_SVS>;
iommus = <&kgsl_smmu 0x5 0x000>;
qcom,iommu-dma = "disabled";
mboxes = <&qmp_aop 0>;
mbox-names = "aop";
qcom,ipc-core = <0x00400000 0xfc000>;
};
coresight_cx_dgbc: qcom,gpu-coresight-cx {
compatible = "qcom,gpu-coresight-cx";
coresight-name = "coresight-gfx-cx";
coresight-atid = <52>;
out-ports {
port {
cx_dbgc_out_funnel_gfx: endpoint {
remote-endpoint =
<&funnel_gfx_in_cx_dbgc>;
};
};
};
};
coresight_gx_dgbc: qcom,gpu-coresight-gx {
compatible = "qcom,gpu-coresight-gx";
coresight-name = "coresight-gfx";
coresight-atid = <53>;
out-ports {
port {
gx_dbgc_out_funnel_gfx: endpoint {
remote-endpoint =
<&funnel_gfx_in_gx_dbgc>;
};
};
};
};
};
&funnel_gfx {
in-ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
funnel_gfx_in_gx_dbgc: endpoint {
remote-endpoint =
<&gx_dbgc_out_funnel_gfx>;
};
};
port@1 {
reg = <1>;
funnel_gfx_in_cx_dbgc: endpoint {
remote-endpoint =
<&cx_dbgc_out_funnel_gfx>;
};
};
};
};

View File

@@ -0,0 +1,191 @@
&msm_gpu {
qcom,initial-pwrlevel = <13>;
qcom,initial-min-pwrlevel = <13>;
/* Power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels";
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1000000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L2>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <0x882d5ffd>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <860000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <9>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0x882d5ffd>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <827000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <9>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa82d5ffd>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <794000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa82d5ffd>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <746000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <719000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <615000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <0xa82f5ffd>;
};
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <550000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <0xe0285ffd>;
};
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <475000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <0xe0285ffd>;
};
qcom,gpu-pwrlevel@10 {
reg = <10>;
qcom,gpu-freq = <401000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <4>;
qcom,acd-level = <0xc02a5ffd>;
};
qcom,gpu-pwrlevel@11 {
reg = <11>;
qcom,gpu-freq = <348000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D0>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xe02b5ffd>;
};
qcom,gpu-pwrlevel@12 {
reg = <12>;
qcom,gpu-freq = <295000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xe02d5ffd>;
};
qcom,gpu-pwrlevel@13 {
reg = <13>;
qcom,gpu-freq = <220000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xc02f5ffd>;
};
qcom,gpu-pwrlevel@14 {
reg = <14>;
qcom,gpu-freq = <124800000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
};
};
};

View File

@@ -0,0 +1,118 @@
&msm_gpu {
qcom,initial-pwrlevel = <7>;
qcom,initial-min-pwrlevel = <7>;
/* Power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels";
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <615000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa82f5ffd>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <550000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <0xe0285ffd>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <475000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <0xe0285ffd>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <401000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <4>;
qcom,acd-level = <0xc02a5ffd>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <348000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D0>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xe02b5ffd>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <295000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xe02d5ffd>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <220000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xc02f5ffd>;
};
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <124800000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
};
};
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-kalama.h>
#include <dt-bindings/clock/qcom,gpucc-kalama.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,kalama.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "kalama-v2-gpu.dtsi"
#include "kalama-iot-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Kalama v2";
compatible = "qcom,kalama", "qcom,kalamap";
qcom,msm-id = <603 0x20000>, <604 0x20000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,248 @@
&msm_gpu {
/* Power levels */
qcom,gpu-pwrlevel-bins {
compatible="qcom,gpu-pwrlevel-bins";
#address-cells = <1>;
#size-cells = <0>;
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_AC)
SKU_CODE(PCODE_UNKNOWN, FC_AF)
SKU_CODE(PCODE_2, FC_Y0)
SKU_CODE(PCODE_2, FC_Y2)
SKU_CODE(PCODE_4, FC_Y0)
SKU_CODE(PCODE_4, FC_Y2)
SKU_CODE(PCODE_6, FC_Y0)
SKU_CODE(PCODE_6, FC_Y1)
SKU_CODE(PCODE_6, FC_YD)
SKU_CODE(PCODE_6, FC_YE)>;
qcom,initial-pwrlevel = <8>;
qcom,initial-min-pwrlevel = <8>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <719000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <615000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <0xa82f5ffd>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <550000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <0xe0285ffd>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <475000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <0xe0285ffd>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <401000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <4>;
qcom,acd-level = <0xc02a5ffd>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <348000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D0>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xe02b5ffd>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <295000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xe02d5ffd>;
};
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <220000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xc02f5ffd>;
};
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <124800000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_UNKNOWN)>;
qcom,initial-pwrlevel = <7>;
qcom,initial-min-pwrlevel = <7>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <615000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa82f5ffd>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <550000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <0xe0285ffd>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <475000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <0xe0285ffd>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <401000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <4>;
qcom,acd-level = <0xc02a5ffd>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <348000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D0>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xe02b5ffd>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <295000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xe02d5ffd>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <220000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <0xc02f5ffd>;
};
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <124800000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
};
};
};
};

View File

@@ -0,0 +1,22 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-kalama.h>
#include <dt-bindings/clock/qcom,gpucc-kalama.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,kalama.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "kalama-v2-gpu.dtsi"
#include "kalama-v2-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Kalama v2";
compatible = "qcom,kalama";
qcom,msm-id = <519 0x20000>, <536 0x20000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,5 @@
#include "kalama-gpu.dtsi"
&msm_gpu {
compatible = "qcom,adreno-gpu-gen7-2-1", "qcom,kgsl-3d0";
};

View File

@@ -0,0 +1,22 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-kalama.h>
#include <dt-bindings/clock/qcom,gpucc-kalama.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,kalama.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "kalama-v2-gpu.dtsi"
#include "kalama-hhg-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Kalama HHG";
compatible = "qcom,kalamap-hhg";
qcom,msm-id = <600 0x20000>, <601 0x20000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,23 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/qcom,rpmcc.h>
#include <dt-bindings/clock/qcom,dispcc-khaje.h>
#include <dt-bindings/clock/qcom,gcc-khaje.h>
#include <dt-bindings/clock/qcom,gpucc-khaje.h>
#include <dt-bindings/spmi/spmi.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interconnect/qcom,bengal.h>
#include <dt-bindings/soc/qcom,dcc_v2.h>
#include "khaje-gpu.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Khaje SoC";
compatible = "qcom,khaje", "qcom,khaje-qrd",
"qcom,khaje-atp", "qcom,khaje-idp";
qcom,msm-id = <518 0x10000>, <586 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,270 @@
#include "bengal-gpu.dtsi"
&msm_gpu {
qcom,chipid = <0x06010001>;
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 8)>, /* index=0 */
<MHZ_TO_KBPS(200, 8)>, /* index=1 */
<MHZ_TO_KBPS(547, 8)>, /* index=2 */
<MHZ_TO_KBPS(768, 8)>, /* index=3 */
<MHZ_TO_KBPS(1017, 8)>, /* index=4 */
<MHZ_TO_KBPS(1555, 8)>, /* index=5 */
<MHZ_TO_KBPS(1804, 8)>, /* index=6 */
<MHZ_TO_KBPS(2092, 8)>; /* index=7 */
/delete-node/ qcom,gpu-pwrlevel-bins;
/*
* Speed-bin zero is default speed bin.
* For rest of the speed bins, speed-bin value
* is calculated as FMAX/4.8 MHz round up to zero
* decimal places plus two margin to account for
* clock jitters.
*/
qcom,gpu-pwrlevel-bins {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevel-bins";
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <0>;
qcom,initial-pwrlevel = <6>;
qcom,ca-target-pwrlevel = <5>;
/* TURBO_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1260000000>;
qcom,bus-freq = <7>;
qcom,bus-min = <7>;
qcom,bus-max = <7>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
};
/* TURBO_L1 */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <1114800000>;
qcom,bus-freq = <7>;
qcom,bus-min = <7>;
qcom,bus-max = <7>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
};
/* TURBO */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <1025000000>;
qcom,bus-freq = <6>;
qcom,bus-min = <5>;
qcom,bus-max = <7>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
};
/* NOM */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <785000000>;
qcom,bus-freq = <5>;
qcom,bus-min = <4>;
qcom,bus-max = <5>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <600000000>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
};
/* SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <465000000>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <4>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <320000000>;
qcom,bus-freq = <2>;
qcom,bus-min = <1>;
qcom,bus-max = <2>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
/* XO */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <235>;
qcom,initial-pwrlevel = <5>;
qcom,ca-target-pwrlevel = <4>;
/* TURBO_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1114800000>;
qcom,bus-freq = <7>;
qcom,bus-min = <7>;
qcom,bus-max = <7>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
};
/* TURBO */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <1025000000>;
qcom,bus-freq = <6>;
qcom,bus-min = <5>;
qcom,bus-max = <7>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
};
/* NOM */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <785000000>;
qcom,bus-freq = <5>;
qcom,bus-min = <4>;
qcom,bus-max = <5>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <600000000>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
};
/* SVS */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <465000000>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <4>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <320000000>;
qcom,bus-freq = <2>;
qcom,bus-min = <1>;
qcom,bus-max = <2>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
/* XO */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
};
qcom,gpu-pwrlevels-2 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <216>;
qcom,initial-pwrlevel = <4>;
qcom,ca-target-pwrlevel = <3>;
/* TURBO */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1025000000>;
qcom,bus-freq = <6>;
qcom,bus-min = <5>;
qcom,bus-max = <7>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
};
/* NOM */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <785000000>;
qcom,bus-freq = <5>;
qcom,bus-min = <4>;
qcom,bus-max = <5>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <600000000>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
};
/* SVS */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <465000000>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <4>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <320000000>;
qcom,bus-freq = <2>;
qcom,bus-min = <1>;
qcom,bus-max = <2>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
/* XO */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
};
};
};
};

View File

@@ -0,0 +1,23 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/qcom,rpmcc.h>
#include <dt-bindings/clock/qcom,dispcc-khaje.h>
#include <dt-bindings/clock/qcom,gcc-khaje.h>
#include <dt-bindings/clock/qcom,gpucc-khaje.h>
#include <dt-bindings/spmi/spmi.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interconnect/qcom,bengal.h>
#include <dt-bindings/soc/qcom,dcc_v2.h>
#include "khaje-gpu.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Khajeg SoC";
compatible = "qcom,khajeg", "qcom,khajeg-qrd",
"qcom,khajeg-atp", "qcom,khajeg-idp";
qcom,msm-id = <585 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,23 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/qcom,rpmcc.h>
#include <dt-bindings/clock/qcom,dispcc-khaje.h>
#include <dt-bindings/clock/qcom,gcc-khaje.h>
#include <dt-bindings/clock/qcom,gpucc-khaje.h>
#include <dt-bindings/spmi/spmi.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interconnect/qcom,bengal.h>
#include <dt-bindings/soc/qcom,dcc_v2.h>
#include "khaje-gpu.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Khajep SoC";
compatible = "qcom,khajep", "qcom,khajep-qrd",
"qcom,khajep-atp", "qcom,khajep-idp";
qcom,msm-id = <561 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,23 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/qcom,rpmcc.h>
#include <dt-bindings/clock/qcom,dispcc-khaje.h>
#include <dt-bindings/clock/qcom,gcc-khaje.h>
#include <dt-bindings/clock/qcom,gpucc-khaje.h>
#include <dt-bindings/spmi/spmi.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interconnect/qcom,bengal.h>
#include <dt-bindings/soc/qcom,dcc_v2.h>
#include "khaje-gpu.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Khajeq SoC";
compatible = "qcom,khajeq", "qcom,khajeq-qrd",
"qcom,khajeq-atp", "qcom,khajeq-idp";
qcom,msm-id = <562 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,18 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/clock/qcom,gpucc-sm8250.h>
#include <dt-bindings/clock/qcom,gcc-sm8250.h>
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/interconnect/qcom,kona.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include "kona-gpu.dtsi"
/{
model = "Qualcomm Technologies, Inc. Kona-iot";
compatible = "qcom,kona", "qcom,kona-iot";
qcom,msm-id = <356 0x10000>, <455 0x0>, <481 0x0>,
<496 0x0>, <598 0x0>, <599 0x0>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,240 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
&msm_gpu {
compatible = "qcom,kgsl-3d0", "qcom,kgsl-3d";
status = "ok";
reg = <0x3d00000 0x40000>, <0x3d61000 0x800>,
<0x3de0000 0x10000>, <0x3d8b000 0x2000>,
<0x06900000 0x80000>;
reg-names = "kgsl_3d0_reg_memory", "cx_dbgc", "rscc",
"isense_cntl", "qdss_gfx";
interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
qcom,chipid = <0x06050000>;
qcom,initial-pwrlevel = <2>;
qcom,no-nap;
qcom,min-access-length = <32>;
qcom,ubwc-mode = <4>;
qcom,gpu-qdss-stm = <0x161c0000 0x40000>; /* base addr, size */
#cooling-cells = <2>;
qcom,tzone-names = "gpuss-0-usr", "gpuss-1-usr";
clocks = <&gpucc GPU_CC_CXO_CLK>,
<&gcc GCC_DDRSS_GPU_AXI_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gpucc GPU_CC_CX_GMU_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gcc GCC_GPU_SNOC_DVM_GFX_CLK>;
clock-names = "rbbmtimer_clk",
"mem_clk",
"mem_iface_clk",
"gmu_clk",
"gpu_cc_ahb",
"gcc_gpu_memnoc_gfx",
"gcc_gpu_snoc_dvm_gfx";
qcom,isense-clk-on-level = <1>;
/* GDSC regulator names */
regulator-names = "vddcx", "vdd";
/* GDSC oxili regulators */
vddcx-supply = <&gpu_cx_gdsc>;
vdd-supply = <&gpu_gx_gdsc>;
nvmem-cells = <&gpu_lm_efuse>, <&gpu_speed_bin>;
nvmem-cell-names = "isense_slope", "speed_bin";
interconnect-names = "gpu_icc_path";
interconnects = <&gem_noc MASTER_GFX3D &mc_virt SLAVE_EBI1>;
/* bus table */
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(200, 4)>, /* index=1 */
<MHZ_TO_KBPS(300, 4)>, /* index=2 */
<MHZ_TO_KBPS(451, 4)>, /* index=3 */
<MHZ_TO_KBPS(547, 4)>, /* index=4 */
<MHZ_TO_KBPS(681, 4)>, /* index=5 */
<MHZ_TO_KBPS(768, 4)>, /* index=6 */
<MHZ_TO_KBPS(1017, 4)>, /* index=7 */
<MHZ_TO_KBPS(1555, 4)>, /* index=8 */
<MHZ_TO_KBPS(1804, 4)>, /* index=9 */
<MHZ_TO_KBPS(2092, 4)>, /* index=10 */
<MHZ_TO_KBPS(2736, 4)>; /* index=11 */
qcom,bus-table-cnoc =
<0>, /* Off */
<100>; /* On */
qcom,l3-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,l3-pwrlevels";
qcom,l3-pwrlevel@0 {
reg = <0>;
qcom,l3-freq = <0>;
};
qcom,l3-pwrlevel@1 {
reg = <1>;
qcom,l3-freq = <864000000>;
};
qcom,l3-pwrlevel@2 {
reg = <2>;
qcom,l3-freq = <1344000000>;
};
};
/* ZAP Shader memory */
zap-shader {
memory-region = <&pil_gpu_mem>;
};
/* GPU Mempools */
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-reserved = <2048>;
qcom,mempool-allocate;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-reserved = <1024>;
qcom,mempool-allocate;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
/* Power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels";
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <480000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <381000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <290000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <2>;
qcom,bus-min = <1>;
qcom,bus-max = <8>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@3da0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x03da0000 0x10000>;
vddcx-supply = <&gpu_cx_gdsc>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x0 0x401>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x2 0x400>;
qcom,iommu-dma = "disabled";
};
};
gmu: qcom,gmu@3d6a000 {
compatible = "qcom,gpu-gmu";
reg = <0x3d6a000 0x30000>,
<0xb290000 0x10000>,
<0xb490000 0x10000>;
reg-names = "kgsl_gmu_reg",
"kgsl_gmu_pdc_cfg",
"kgsl_gmu_pdc_seq";
interrupts = <0 304 IRQ_TYPE_LEVEL_HIGH>,
<0 305 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_hfi_irq", "kgsl_gmu_irq";
iommus = <&kgsl_smmu 0x5 0x400>;
qcom,iommu-dma = "disabled";
regulator-names = "vddcx", "vdd";
vddcx-supply = <&gpu_cx_gdsc>;
vdd-supply = <&gpu_gx_gdsc>;
clocks = <&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_AHB_CLK>;
clock-names = "gmu_clk", "cxo_clk", "axi_clk",
"memnoc_clk", "gpu_cc_ahb";
/* AOP mailbox for sending ACD enable and disable messages */
mboxes = <&qmp_aop 0>;
mbox-names = "aop";
};
};

View File

@@ -0,0 +1,17 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/clock/qcom,gpucc-sm8250.h>
#include <dt-bindings/clock/qcom,gcc-sm8250.h>
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/interconnect/qcom,kona.h>
#include "kona-v2-gpu.dtsi"
/{
model = "Qualcomm Technologies, Inc. kona-iot v2";
compatible = "qcom,kona", "qcom,kona-iot";
qcom,msm-id = <356 0x20000>, <481 0x20000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,446 @@
#include "kona-gpu.dtsi"
&msm_gpu {
qcom,chipid = <0x06050001>;
/delete-property/qcom,initial-pwrlevel;
/delete-node/qcom,gpu-pwrlevels;
/* Power levels bins */
qcom,gpu-pwrlevel-bins {
compatible="qcom,gpu-pwrlevel-bins";
#address-cells = <1>;
#size-cells = <0>;
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <0>;
qcom,initial-pwrlevel = <5>;
qcom,throttle-pwrlevel = <0>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <587000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <11>;
qcom,acd-level = <0x802b5ffd>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <525000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <8>;
qcom,bus-min = <8>;
qcom,bus-max = <11>;
qcom,acd-level = <0x802b5ffd>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <490000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <441600000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <400000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <8>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <305000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <1>;
qcom,initial-pwrlevel = <6>;
qcom,throttle-pwrlevel = <1>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <670000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <11>;
qcom,acd-level = <0x802b5ffd>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <587000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <11>;
qcom,acd-level = <0x802b5ffd>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <525000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <8>;
qcom,bus-min = <8>;
qcom,bus-max = <11>;
qcom,acd-level = <0x802b5ffd>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <490000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <441600000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <400000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <8>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <305000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
qcom,gpu-pwrlevels-2 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <3>;
qcom,initial-pwrlevel = <4>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <525000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <11>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
qcom,acd-level = <0x802b5ffd>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <490000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <441600000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <400000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <8>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <305000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
qcom,gpu-pwrlevels-3 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <2>;
qcom,initial-pwrlevel = <6>;
qcom,throttle-pwrlevel = <1>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <670000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <11>;
qcom,acd-level = <0x802b5ffd>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <587000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <11>;
qcom,acd-level = <0x802b5ffd>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <525000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <8>;
qcom,bus-min = <8>;
qcom,bus-max = <11>;
qcom,acd-level = <0x802b5ffd>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <490000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <441600000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <400000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <8>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <305000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
qcom,gpu-pwrlevels-4 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <4>;
qcom,initial-pwrlevel = <6>;
qcom,throttle-pwrlevel = <1>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <670000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <11>;
qcom,acd-level = <0x802b5ffd>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <587000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <11>;
qcom,acd-level = <0x802b5ffd>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <525000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <8>;
qcom,bus-min = <8>;
qcom,bus-max = <11>;
qcom,acd-level = <0x802b5ffd>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <490000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <441600000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <400000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <8>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <305000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <9>;
qcom,acd-level = <0xa02b5ffd>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <0>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
};
};

View File

@@ -0,0 +1,17 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/clock/qcom,gpucc-sm8250.h>
#include <dt-bindings/clock/qcom,gcc-sm8250.h>
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/interconnect/qcom,kona.h>
#include "kona-v2.1-gpu.dtsi"
/{
model = "Qualcomm Technologies, Inc. kona-iot v2.1";
compatible = "qcom,kona", "qcom,kona-iot";
qcom,msm-id = <356 0x20001>, <481 0x20001>, <548 0x20001>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,5 @@
#include "kona-v2-gpu.dtsi"
&msm_gpu {
qcom,chipid = <0x06050002>;
};

View File

@@ -0,0 +1,24 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/soc/qcom,ipcc.h>
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-lemans.h>
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gpucc-lemans.h>
#include <dt-bindings/interconnect/qcom,epss-l3.h>
#include <dt-bindings/interconnect/qcom,lemans.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interconnect/qcom,epss-l3.h>
#include "lemans-gpu.dtsi"
#include "lemans-gpu-pwrlevel-ivi-adas-star.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Lemans SoC";
compatible = "qcom,lemans";
qcom,msm-id = <533 0x10000>, <534 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,56 @@
&msm_gpu {
/* Power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels";
qcom,initial-pwrlevel = <3>;
qcom,initial-min-pwrlevel = <3>;
/* Turbo_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <800000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <12>;
qcom,bus-min = <12>;
qcom,bus-max = <12>;
};
/* Turbo */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <778000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <12>;
};
/* Nom */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <676000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <10>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <405000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <7>;
qcom,bus-max = <10>;
};
};
};

View File

@@ -0,0 +1,23 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/soc/qcom,ipcc.h>
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-lemans.h>
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gpucc-lemans.h>
#include <dt-bindings/interconnect/qcom,epss-l3.h>
#include <dt-bindings/interconnect/qcom,lemans.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interconnect/qcom,epss-l3.h>
#include "lemans-gpu.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Lemans SoC";
compatible = "qcom,lemans";
qcom,msm-id = <532 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,249 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
&msm_gpu {
compatible = "qcom,kgsl-3d0";
status = "ok";
reg = <0x3d00000 0x40000>, <0x3d61000 0x800>,
<0x3de0000 0x10000>, <0x4900000 0x80000>,
<0x3dff000 0x1000>;
reg-names = "kgsl_3d0_reg_memory", "cx_dbgc", "rscc",
"qdss_gfx", "fusa";
interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&gpucc GPU_CC_CX_GMU_CLK>,
<&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
<&gpucc GPU_CC_HUB_AON_CLK>,
<&gpucc GPU_CC_HUB_CX_INT_CLK>;
clock-names = "gcc_gpu_memnoc_gfx",
"gcc_gpu_snoc_dvm_gfx",
"gpu_cc_ahb",
"gpu_cc_cx_gmu",
"gpu_cc_hlos1_vote_gpu_smmu",
"gpu_cc_hub_aon",
"gpu_cc_hub_cx_int";
qcom,chipid = <0x06060300>;
qcom,initial-pwrlevel = <3>;
qcom,highest-bank-bit = <16>;
qcom,min-access-length = <32>;
qcom,ubwc-mode = <4>;
qcom,gpu-qdss-stm = <0x161c0000 0x40000>; /* base addr, size */
nvmem-cells = <&gpu_speed_bin>;
nvmem-cell-names = "speed_bin";
qcom,tzone-names = "gpuss-0-usr", "gpuss-1-usr";
interconnect-names = "gpu_icc_path";
interconnects = <&gem_noc MASTER_GFX3D &mc_virt SLAVE_EBI1>;
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(200, 4)>, /* index=1 */
<MHZ_TO_KBPS(451, 4)>, /* index=2 */
<MHZ_TO_KBPS(547, 4)>, /* index=3 */
<MHZ_TO_KBPS(681, 4)>, /* index=4 */
<MHZ_TO_KBPS(768, 4)>, /* index=5 */
<MHZ_TO_KBPS(1017, 4)>, /* index=6 */
<MHZ_TO_KBPS(1353, 4)>, /* index=7 */
<MHZ_TO_KBPS(1555, 4)>, /* index=8 */
<MHZ_TO_KBPS(1708, 4)>, /* index=9 */
<MHZ_TO_KBPS(2092, 4)>, /* index=10 */
<MHZ_TO_KBPS(2736, 4)>, /* index=11 */
<MHZ_TO_KBPS(3196, 4)>; /* index=12 */
qcom,bus-table-cnoc =
<0>, /* Off */
<100>; /* On */
qcom,l3-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,l3-pwrlevels";
qcom,l3-pwrlevel@0 {
reg = <0>;
qcom,l3-freq = <0>;
};
qcom,l3-pwrlevel@1 {
reg = <1>;
qcom,l3-freq = <614400000>;
};
qcom,l3-pwrlevel@2 {
reg = <2>;
qcom,l3-freq = <1516800000>;
};
};
zap-shader {
memory-region = <&pil_gpu_mem>;
};
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-reserved = <2048>;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-reserved = <1024>;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 128K Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <131072>;
qcom,mempool-reserved = <128>;
};
/* 256K Page Pool configuration */
qcom,gpu-mempool@4 {
reg = <4>;
qcom,mempool-page-size = <262144>;
qcom,mempool-reserved = <80>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@5 {
reg = <5>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
/* Power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels";
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <840000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <12>;
qcom,bus-min = <12>;
qcom,bus-max = <12>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <778000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <12>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <676000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <10>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <405000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <7>;
qcom,bus-max = <10>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@3da0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x03da0000 0x20000>;
vddcx-supply = <&gpu_cc_cx_gdsc>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x0 0xc00>;
qcom,iommu-dma = "disabled";
};
gfx3d_lpac: gfx3d_lpac {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x1 0xc00>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x2 0xc00>;
qcom,iommu-dma = "disabled";
};
};
gmu: qcom,gmu@3d69000 {
compatible = "qcom,gpu-gmu";
reg = <0x3d6a000 0x34000>,
<0xb290000 0x10000>,
<0xb490000 0x10000>;
reg-names = "kgsl_gmu_reg",
"kgsl_gmu_pdc_cfg",
"kgsl_gmu_pdc_seq";
interrupts = <0 304 IRQ_TYPE_LEVEL_HIGH>,
<0 305 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_hfi_irq", "kgsl_gmu_irq";
regulator-names = "vddcx", "vdd", "vdd-parent";
iommus = <&kgsl_smmu 0x5 0xc00>;
qcom,iommu-dma = "disabled";
vddcx-supply = <&gpu_cc_cx_gdsc>;
vdd-supply = <&gpu_cc_gx_gdsc>;
clocks = <&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_AHB_CLK>,
<&gpucc GPU_CC_HUB_CX_INT_CLK>;
clock-names = "gmu_clk", "cxo_clk", "axi_clk",
"memnoc_clk", "ahb_clk", "hub_clk";
mboxes = <&qmp_aop 0>;
mbox-names = "aop";
};
};

View File

@@ -0,0 +1,19 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,gcc-monaco.h>
#include <dt-bindings/interconnect/qcom,monaco.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/qcom,gpucc-monaco.h>
#include <dt-bindings/clock/qcom,rpmcc.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include "monaco-gpu.dtsi"
/{
model = "Qualcomm Technologies, Inc. Monaco";
compatible = "qcom,monaco";
qcom,msm-id = <486 0x10000>, <517 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,156 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
&msm_gpu {
label = "kgsl-3d0";
compatible = "qcom,kgsl-3d0";
status = "ok";
reg = <0x5900000 0x90000>,
<0x5961000 0x800>;
reg-names = "kgsl_3d0_reg_memory", "cx_dbgc";
interrupts = <0 177 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
qcom,chipid = <0x07000201>;
qcom,initial-pwrlevel = <4>;
qcom,idle-timeout = <80>;
qcom,gpu-bimc-interface-clk-freq = <768000000>;
qcom,ubwc-mode = <2>;
qcom,min-access-length = <32>;
/* base addr, size */
qcom,gpu-qdss-stm = <0xe1c0000 0x40000>;
#cooling-cells = <2>;
clocks = <&gpucc GPU_CC_GX_GFX3D_CLK>,
<&gpucc GPU_CC_CXO_CLK>,
<&gcc GCC_BIMC_GPU_AXI_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gpucc GPU_CC_CX_GMU_CLK>,
<&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
<&gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
<&rpmcc RPM_SMD_BIMC_GPU_CLK>;
clock-names = "core_clk", "rbbmtimer_clk", "mem_clk",
"gpu_cc_ahb", "gcc_gpu_memnoc_gfx", "gmu_clk",
"gpu_cc_hlos1_vote_gpu_smmu", "gcc_gpu_snoc_dvm_gfx",
"bimc_gpu_clk";
/* GDSC regulator names */
regulator-names = "vddcx", "vdd";
/* GDSC oxili regulators */
vddcx-supply = <&gpu_cx_gdsc>;
vdd-supply = <&gpu_gx_gdsc>;
/* Enable context aware freq. scaling */
qcom,enable-ca-jump;
/* Context aware jump busy penalty in us */
qcom,ca-busy-penalty = <12000>;
/* Context aware jump target power level */
qcom,ca-target-pwrlevel = <3>;
interconnect-names = "gpu_icc_path";
interconnects = <&bimc MASTER_GRAPHICS_3D &bimc SLAVE_EBI_CH0>;
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(200, 4)>, /* index=1 */
<MHZ_TO_KBPS(300, 4)>, /* index=2 */
<MHZ_TO_KBPS(451, 4)>, /* index=3 */
<MHZ_TO_KBPS(547, 4)>, /* index=4 */
<MHZ_TO_KBPS(681, 4)>, /* index=5 */
<MHZ_TO_KBPS(768, 4)>, /* index=6 */
<MHZ_TO_KBPS(1017, 4)>, /* index=7 */
<MHZ_TO_KBPS(1353, 4)>, /* index=8 */
<MHZ_TO_KBPS(1555, 4)>, /* index=9 */
<MHZ_TO_KBPS(1804, 4)>, /* index=10 */
<MHZ_TO_KBPS(2092, 4)>, /* index=11 */
<MHZ_TO_KBPS(2133, 4)>; /* index=12 */
zap-shader {
memory-region = <&pil_gpu_mem>;
};
/* Power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels";
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1010000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <12>;
qcom,bus-min = <12>;
qcom,bus-max = <12>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <900000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <12>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <700000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <9>;
qcom,bus-min = <8>;
qcom,bus-max = <10>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <470000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <310000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <4>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@59a0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x59a0000 0x10000>;
vddcx-supply = <&gpu_cx_gdsc>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0 1>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 2 0>;
qcom,iommu-dma = "disabled";
};
};
};

View File

@@ -0,0 +1,682 @@
/* ACD Control register values */
#define ACD_LEVEL_TURBO_L1 0x882f5ffd
#define ACD_LEVEL_TURBO 0x882f5ffd
#define ACD_LEVEL_NOM_L1 0x882f5ffd
#define ACD_LEVEL_NOM 0xc0285ffd
#define ACD_LEVEL_SVS_L2 0xe0295ffd
#define ACD_LEVEL_SVS_L1 0xe0295ffd
#define ACD_LEVEL_SVS_L0 0xc02a5ffd
#define ACD_LEVEL_SVS 0xc02a5ffd
#define ACD_LEVEL_LOW_SVS_L1 0xc02c5ffd
#define ACD_LEVEL_LOW_SVS 0xc02f5ffd
#define ACD_LEVEL_LOW_SVS_D0 0xc02f5ffd
&msm_gpu {
/* Power levels */
qcom,gpu-pwrlevel-bins {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels-bins";
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_AC)>;
qcom,speed-bin = <2>;
qcom,initial-pwrlevel = <12>;
/* Turbo_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <903000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_TURBO_L1>;
};
/* Turbo */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <869000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <8>;
qcom,bus-min = <8>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_TURBO>;
};
/* Nom_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <834000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM_L1>;
};
/* Nom */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <770000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM>;
};
/* SVS_L2 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <720000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
/* SVS_L0 */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <629000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L0>;
};
/* SVS */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <578000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
/* Low_SVS_L1 */
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_L1>;
};
/* Low_SVS */
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <422000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS>;
};
/* Low_SVS_D0 */
qcom,gpu-pwrlevel@10 {
reg = <10>;
qcom,gpu-freq = <366000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D0>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D0>;
};
/* Low_SVS_D1 */
qcom,gpu-pwrlevel@11 {
reg = <11>;
qcom,gpu-freq = <310000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
};
/* Low_SVS_D2 */
qcom,gpu-pwrlevel@12 {
reg = <12>;
qcom,gpu-freq = <231000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_AC)>;
qcom,initial-pwrlevel = <11>;
/* Turbo */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <869000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_TURBO>;
};
/* Nom_L1 */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <834000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM_L1>;
};
/* Nom */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <770000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM>;
};
/* SVS_L2 */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <720000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
/* SVS_L0 */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <629000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L0>;
};
/* SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <578000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
/* Low_SVS_L1 */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_L1>;
};
/* Low_SVS */
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <422000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS>;
};
/* Low_SVS_D0 */
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <366000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D0>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D0>;
};
/* Low_SVS_D1 */
qcom,gpu-pwrlevel@10 {
reg = <10>;
qcom,gpu-freq = <310000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
};
/* Low_SVS_D2 */
qcom,gpu-pwrlevel@11 {
reg = <11>;
qcom,gpu-freq = <231000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
};
};
qcom,gpu-pwrlevels-2 {
#address-cells = <1>;
#size-cells = <0>;
qcom,sku-codes = <SKU_CODE(PCODE_0, FC_Y0)
SKU_CODE(PCODE_1, FC_Y0)
SKU_CODE(PCODE_0, FC_Y1)>;
qcom,initial-pwrlevel = <12>;
/* Turbo_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <903000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_TURBO_L1>;
};
/* Turbo */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <869000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <8>;
qcom,bus-min = <8>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_TURBO>;
};
/* Nom_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <834000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM_L1>;
};
/* Nom */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <770000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM>;
};
/* SVS_L2 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <720000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
/* SVS_L0 */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <629000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L0>;
};
/* SVS */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <578000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
/* Low_SVS_L1 */
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_L1>;
};
/* Low_SVS */
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <422000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS>;
};
/* Low_SVS_D0 */
qcom,gpu-pwrlevel@10 {
reg = <10>;
qcom,gpu-freq = <366000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D0>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D0>;
};
/* Low_SVS_D1 */
qcom,gpu-pwrlevel@11 {
reg = <11>;
qcom,gpu-freq = <310000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
};
/* Low_SVS_D2 */
qcom,gpu-pwrlevel@12 {
reg = <12>;
qcom,gpu-freq = <231000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
};
};
qcom,gpu-pwrlevels-3 {
#address-cells = <1>;
#size-cells = <0>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_UNKNOWN)>;
qcom,initial-pwrlevel = <10>;
/* Nom_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <834000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM_L1>;
};
/* Nom */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <770000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM>;
};
/* SVS_L2 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <720000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
/* SVS_L0 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <629000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L0>;
};
/* SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <578000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
/* Low_SVS_L1 */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_L1>;
};
/* Low_SVS */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <422000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS>;
};
/* Low_SVS_D0 */
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <366000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D0>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D0>;
};
/* Low_SVS_D1 */
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <310000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
};
/* Low_SVS_D2 */
qcom,gpu-pwrlevel@10 {
reg = <10>;
qcom,gpu-freq = <231000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
};
};
};
};

View File

@@ -0,0 +1,22 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-pineapple.h>
#include <dt-bindings/clock/qcom,gpucc-pineapple.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,pineapple.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "pineapple-gpu.dtsi"
#include "pineapple-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Pineapple";
compatible = "qcom,pineapple";
qcom,msm-id = <557 0x10000>, <577 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,254 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
/* External feature codes */
#define FC_UNKNOWN 0x0
#define FC_AA 0x1
#define FC_AB 0x2
#define FC_AC 0x3
#define FC_AD 0x4
/* Internal feature codes */
#define FC_Y0 0x00f1
#define FC_Y1 0x00f2
/* Pcodes */
#define PCODE_UNKNOWN 0
#define PCODE_0 1
#define PCODE_1 2
#define PCODE_2 3
#define PCODE_3 4
#define PCODE_4 5
#define PCODE_5 6
#define PCODE_6 7
#define PCODE_7 8
#define SKU_CODE(pcode, featurecode) ((pcode << 16) + featurecode)
&msm_gpu {
compatible = "qcom,adreno-gpu-gen7-9-0", "qcom,kgsl-3d0";
status = "ok";
reg = <0x3d00000 0x40000>, <0x3d61000 0x3000>,
<0x03d50000 0x10000>, <0x03d9e000 0x2000>,
<0x10900000 0x80000>, <0x10048000 0x8000>,
<0x10b05000 0x1000>;
reg-names = "kgsl_3d0_reg_memory", "cx_dbgc", "rscc", "cx_misc",
"qdss_gfx", "qdss_etr", "qdss_tmc";
interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&aoss_qmp QDSS_CLK>;
clock-names = "gcc_gpu_memnoc_gfx",
"gcc_gpu_snoc_dvm_gfx",
"gpu_cc_ahb",
"apb_pclk";
qcom,gpu-model = "Adreno750";
qcom,chipid = <0x43051400>;
qcom,min-access-length = <32>;
qcom,ubwc-mode = <4>;
qcom,gpu-qdss-stm = <0x161c0000 0x40000>; /* base addr, size */
qcom,tzone-names = "gpuss-0", "gpuss-1", "gpuss-2", "gpuss-3",
"gpuss-4", "gpuss-5", "gpuss-6", "gpuss-7";
interconnects = <&gem_noc MASTER_GFX3D &mc_virt SLAVE_EBI1>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-cnoc =
<0>, /* Off */
<100>; /* On */
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(547, 4) >, /* index=1 */
<MHZ_TO_KBPS(768, 4) >, /* index=2 */
<MHZ_TO_KBPS(1555, 4)>, /* index=3 */
<MHZ_TO_KBPS(1708, 4)>, /* index=4 */
<MHZ_TO_KBPS(2092, 4)>, /* index=5 */
<MHZ_TO_KBPS(2736, 4)>, /* index=6 */
<MHZ_TO_KBPS(3187, 4)>, /* index=7 */
<MHZ_TO_KBPS(3686, 4)>, /* index=8 */
<MHZ_TO_KBPS(4224, 4)>; /* index=9 */
nvmem-cells = <&gpu_speed_bin>;
nvmem-cell-names = "speed_bin";
zap-shader {
memory-region = <&gpu_micro_code_mem>;
};
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-reserved = <2048>;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-reserved = <1024>;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 128K Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <131072>;
qcom,mempool-reserved = <128>;
};
/* 256K Page Pool configuration */
qcom,gpu-mempool@4 {
reg = <4>;
qcom,mempool-page-size = <262144>;
qcom,mempool-reserved = <80>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@5 {
reg = <5>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@3da0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x03da0000 0x40000>;
vddcx-supply = <&gpu_cc_cx_gdsc>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x0 0x000>;
qcom,iommu-dma = "disabled";
};
gfx3d_lpac: gfx3d_lpac {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x1 0x000>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x2 0x000>;
qcom,iommu-dma = "disabled";
};
};
gmu: qcom,gmu@3d69000 {
compatible = "qcom,gen7-gmu";
reg = <0x3d68000 0x37000>,
<0xb280000 0x10000>,
<0x03D40000 0x10000>;
reg-names = "gmu", "gmu_pdc", "gmu_ao_blk_dec0";
interrupts = <0 304 IRQ_TYPE_LEVEL_HIGH>,
<0 305 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "hfi", "gmu";
regulator-names = "vddcx", "vdd";
vddcx-supply = <&gpu_cc_cx_gdsc>;
vdd-supply = <&gpu_cc_gx_gdsc>;
clocks = <&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_AHB_CLK>,
<&gpucc GPU_CC_HUB_CX_INT_CLK>;
clock-names = "gmu_clk", "cxo_clk", "axi_clk",
"memnoc_clk", "ahb_clk", "hub_clk";
qcom,gmu-freq-table = <260000000 RPMH_REGULATOR_LEVEL_LOW_SVS>,
<625000000 RPMH_REGULATOR_LEVEL_SVS>;
qcom,gmu-perf-ddr-bw = <MHZ_TO_KBPS(768, 4)>;
iommus = <&kgsl_smmu 0x5 0x000>;
qcom,iommu-dma = "disabled";
qcom,ipc-core = <0x00400000 0x140000>;
mboxes = <&qmp_aop 0>;
mbox-names = "aop";
};
coresight_cx_dgbc: qcom,gpu-coresight-cx {
compatible = "qcom,gpu-coresight-cx";
coresight-name = "coresight-gfx-cx";
coresight-atid = <52>;
out-ports {
port {
cx_dbgc_out_funnel_gfx: endpoint {
remote-endpoint =
<&funnel_gfx_in_cx_dbgc>;
};
};
};
};
coresight_gx_dgbc: qcom,gpu-coresight-gx {
compatible = "qcom,gpu-coresight-gx";
coresight-name = "coresight-gfx";
coresight-atid = <53>;
out-ports {
port {
gx_dbgc_out_funnel_gfx: endpoint {
remote-endpoint =
<&funnel_gfx_in_gx_dbgc>;
};
};
};
};
};
&funnel_gfx {
status = "ok";
in-ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
funnel_gfx_in_gx_dbgc: endpoint {
remote-endpoint =
<&gx_dbgc_out_funnel_gfx>;
};
};
port@1 {
reg = <1>;
funnel_gfx_in_cx_dbgc: endpoint {
remote-endpoint =
<&cx_dbgc_out_funnel_gfx>;
};
};
};
};

View File

@@ -0,0 +1,673 @@
/* ACD Control register values */
#define ACD_LEVEL_TURBO_L1 0x882a5ffd
#define ACD_LEVEL_TURBO 0x882a5ffd
#define ACD_LEVEL_NOM_L1 0x882a5ffd
#define ACD_LEVEL_NOM 0x882a5ffd
#define ACD_LEVEL_SVS_L2 0x882a5ffd
#define ACD_LEVEL_SVS_L1 0x882a5ffd
#define ACD_LEVEL_SVS_L0 0x882a5ffd
#define ACD_LEVEL_SVS 0x882c5ffd
#define ACD_LEVEL_LOW_SVS_L1 0xc02a5ffd
#define ACD_LEVEL_LOW_SVS 0xc02d5ffd
#define ACD_LEVEL_LOW_SVS_D0 0xc02e5ffd
#define ACD_LEVEL_LOW_SVS_D1 0xc82c5ffd
#define ACD_LEVEL_LOW_SVS_D2 0xc82f5ffd
&msm_gpu {
/* Power levels */
qcom,gpu-pwrlevel-bins {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels-bins";
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_AC)>;
qcom,speed-bin = <4>;
qcom,initial-pwrlevel = <11>;
/* Turbo */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <903000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_TURBO>;
};
/* Nom_L1 */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <834000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM_L1>;
};
/* Nom */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <770000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM>;
};
/* SVS_L2 */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <720000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
/* SVS_L0 */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <629000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L0>;
};
/* SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <578000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
/* Low_SVS_L1 */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_L1>;
};
/* Low_SVS */
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <422000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS>;
};
/* Low_SVS_D0 */
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <366000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D0>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D0>;
};
/* Low_SVS_D1 */
qcom,gpu-pwrlevel@10 {
reg = <10>;
qcom,gpu-freq = <310000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D1>;
};
/* Low_SVS_D2 */
qcom,gpu-pwrlevel@11 {
reg = <11>;
qcom,gpu-freq = <231000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D2>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_AC)
SKU_CODE(PCODE_0, FC_Y0)
SKU_CODE(PCODE_1, FC_Y0)
SKU_CODE(PCODE_0, FC_Y1)>;
qcom,initial-pwrlevel = <13>;
/* Turbo_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1000000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_TURBO_L1>;
};
/* Turbo_L1 */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <950000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
};
/* Turbo */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <903000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_TURBO>;
};
/* Nom_L1 */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <834000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM_L1>;
};
/* Nom */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <770000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM>;
};
/* SVS_L2 */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <720000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
/* SVS_L0 */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <629000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L0>;
};
/* SVS */
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <578000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
/* Low_SVS_L1 */
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_L1>;
};
/* Low_SVS */
qcom,gpu-pwrlevel@10 {
reg = <10>;
qcom,gpu-freq = <422000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS>;
};
/* Low_SVS_D0 */
qcom,gpu-pwrlevel@11 {
reg = <11>;
qcom,gpu-freq = <366000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D0>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D0>;
};
/* Low_SVS_D1 */
qcom,gpu-pwrlevel@12 {
reg = <12>;
qcom,gpu-freq = <310000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D1>;
};
/* Low_SVS_D2 */
qcom,gpu-pwrlevel@13 {
reg = <13>;
qcom,gpu-freq = <231000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D2>;
};
};
qcom,gpu-pwrlevels-2 {
#address-cells = <1>;
#size-cells = <0>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_AA)>;
qcom,initial-pwrlevel = <8>;
/* SVS_L2 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <720000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <9>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
/* SVS_L0 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <629000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L0>;
};
/* SVS */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <578000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
/* Low_SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_L1>;
};
/* Low_SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <422000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS>;
};
/* Low_SVS_D0 */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <366000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D0>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D0>;
};
/* Low_SVS_D1 */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <310000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D1>;
};
/* Low_SVS_D2 */
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <231000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D2>;
};
};
qcom,gpu-pwrlevels-3 {
#address-cells = <1>;
#size-cells = <0>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_UNKNOWN)>;
qcom,initial-pwrlevel = <11>;
/* Turbo */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <903000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_TURBO>;
};
/* Nom_L1 */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <834000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM_L1>;
};
/* Nom */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <770000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM>;
};
/* SVS_L2 */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <720000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
/* SVS_L0 */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <629000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L0>;
};
/* SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <578000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
/* Low_SVS_L1 */
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_L1>;
};
/* Low_SVS */
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <422000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS>;
};
/* Low_SVS_D0 */
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <366000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D0>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D0>;
};
/* Low_SVS_D1 */
qcom,gpu-pwrlevel@10 {
reg = <10>;
qcom,gpu-freq = <310000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D1>;
};
/* Low_SVS_D2 */
qcom,gpu-pwrlevel@11 {
reg = <11>;
qcom,gpu-freq = <231000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D2>;
};
};
};
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-pineapple.h>
#include <dt-bindings/clock/qcom,gpucc-pineapple.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,pineapple.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "pineapple-v2-gpu.dtsi"
#include "pineapple-v2-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Pineapple";
compatible = "qcom,pineapple", "qcom,pineappleq";
qcom,msm-id = <557 0x20000>, <577 0x20000>, <696 0x20000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,9 @@
#include "pineapple-gpu.dtsi"
&msm_gpu {
compatible = "qcom,adreno-gpu-gen7-9-1", "qcom,kgsl-3d0";
qcom,gpu-model = "Adreno750v2";
qcom,chipid = <0x43051401>;
};

View File

@@ -0,0 +1,202 @@
/* ACD Control register values */
#define ACD_LEVEL_TURBO_L2 0x882a5ffd
#define ACD_LEVEL_TURBO_L1 0x882a5ffd
#define ACD_LEVEL_TURBO 0x882a5ffd
#define ACD_LEVEL_NOM_L1 0x882a5ffd
#define ACD_LEVEL_NOM 0x882a5ffd
#define ACD_LEVEL_SVS_L2 0x882a5ffd
#define ACD_LEVEL_SVS_L1 0x882a5ffd
#define ACD_LEVEL_SVS_L0 0x882a5ffd
#define ACD_LEVEL_SVS 0x882c5ffd
#define ACD_LEVEL_LOW_SVS_L1 0xc02a5ffd
#define ACD_LEVEL_LOW_SVS 0xc02d5ffd
#define ACD_LEVEL_LOW_SVS_D0 0xc02e5ffd
#define ACD_LEVEL_LOW_SVS_D1 0xc82c5ffd
#define ACD_LEVEL_LOW_SVS_D2 0xc82f5ffd
&msm_gpu {
/* Power levels */
qcom,gpu-pwrlevel-bins {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevel-bins";
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_UNKNOWN)>;
qcom,initial-pwrlevel = <13>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1050000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L2>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_TURBO_L2>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <1000000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <9>;
qcom,bus-min = <9>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_TURBO_L1>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <903000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_TURBO>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <834000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM_L1>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <770000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_NOM>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <720000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <680000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <629000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L0>;
};
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <578000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <2>;
qcom,bus-max = <7>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_L1>;
};
qcom,gpu-pwrlevel@10 {
reg = <10>;
qcom,gpu-freq = <422000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS>;
};
qcom,gpu-pwrlevel@11 {
reg = <11>;
qcom,gpu-freq = <366000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D0>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D0>;
};
qcom,gpu-pwrlevel@12 {
reg = <12>;
qcom,gpu-freq = <310000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D1>;
};
qcom,gpu-pwrlevel@13 {
reg = <13>;
qcom,gpu-freq = <231000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D2>;
qcom,bus-freq = <1>;
qcom,bus-min = <1>;
qcom,bus-max = <1>;
qcom,acd-level = <ACD_LEVEL_LOW_SVS_D2>;
};
};
};
};

View File

@@ -0,0 +1,26 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-pineapple.h>
#include <dt-bindings/clock/qcom,gpucc-pineapple.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,pineapple.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "pineapple-v2-gpu.dtsi"
#include "pineapple-v2-sg-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Pineapple SG";
compatible = "qcom,pineapple";
qcom,msm-id = <682 0x20000>;
qcom,board-id = <0 0>;
};
&msm_gpu {
/delete-property/qcom,gpu-model;
qcom,gpu-model = "Adreno33v2";
};

View File

@@ -0,0 +1,190 @@
&msm_gpu {
qcom,gpu-pwrlevel-bins {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevel-bins";
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <0>;
qcom,ca-target-pwrlevel = <5>;
qcom,initial-pwrlevel = <6>;
/* TURBO_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1115000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <8>;
qcom,bus-max = <8>;
};
/* TURBO */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <975000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <8>;
};
/* NOM_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <875000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <6>;
qcom,bus-min = <5>;
qcom,bus-max = <7>;
};
/* NOM */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <765000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <5>;
qcom,bus-min = <4>;
qcom,bus-max = <6>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <605000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
};
/* SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <4>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <340000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <2>;
qcom,bus-min = <1>;
qcom,bus-max = <2>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <235>;
qcom,ca-target-pwrlevel = <5>;
qcom,initial-pwrlevel = <6>;
/* TURBO_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1115000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <8>;
qcom,bus-max = <8>;
};
/* TURBO */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <975000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <8>;
};
/* NOM_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <875000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <6>;
qcom,bus-min = <5>;
qcom,bus-max = <7>;
};
/* NOM */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <765000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <5>;
qcom,bus-min = <4>;
qcom,bus-max = <6>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <605000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
};
/* SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <2>;
qcom,bus-max = <4>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <340000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <2>;
qcom,bus-min = <1>;
qcom,bus-max = <2>;
};
};
};
};

View File

@@ -0,0 +1,20 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,gcc-pitti.h>
#include <dt-bindings/clock/qcom,gpucc-pitti.h>
#include <dt-bindings/clock/qcom,rpmcc.h>
#include <dt-bindings/interconnect/qcom,pitti.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/regulator/qcom,rpm-smd-regulator.h>
#include <dt-bindings/spmi/spmi.h>
#include "pitti-gpu.dtsi"
#include "pitti-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Pitti";
compatible = "qcom,pitti";
qcom,msm-id = <623 0x10000>;
qcom,board-id = <0 0>, <0 0x501>, <0 0x600>;
};

View File

@@ -0,0 +1,132 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
&msm_gpu {
compatible = "qcom,kgsl-3d0", "qcom,adreno-gpu-a611";
status = "ok";
reg = <0x5900000 0x90000>;
reg-names = "kgsl_3d0_reg_memory";
clocks = <&gpucc GPU_CC_GX_GFX3D_CLK>,
<&gpucc GPU_CC_CXO_CLK>,
<&gcc GCC_BIMC_GPU_AXI_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gpucc GPU_CC_CX_GMU_CLK>,
<&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
<&rpmcc RPM_SMD_QDSS_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>;
clock-names = "core_clk",
"rbbmtimer_clk",
"iface_clk",
"ahb_clk",
"mem_clk",
"gmu_clk",
"smmu_vote",
"apb_pclk",
"gpu_cc_ahb",
"gcc_gpu_memnoc_gfx",
"gpu_cc_hlos1_vote_gpu_smmu";
interrupts = <0 177 IRQ_TYPE_LEVEL_HIGH>, <0 181 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq", "freq_limiter_irq";
resets = <&gpucc GPU_CC_FREQUENCY_LIMITER_IRQ_CLEAR>;
reset-names = "freq_limiter_irq_clear";
qcom,chipid = <0x06010100>;
qcom,gpu-model = "Adreno611v1";
regulator-names = "vddcx", "vdd";
vddcx-supply = <&gpu_cc_cx_gdsc>;
vdd-supply = <&gpu_cc_gx_gdsc>;
qcom,min-access-length = <32>;
qcom,ubwc-mode = <2>;
qcom,enable-ca-jump;
qcom,tzone-names = "gpuss";
/* Context aware jump busy penalty in us */
qcom,ca-busy-penalty = <12000>;
nvmem-cells = <&gpu_speed_bin>;
nvmem-cell-names = "speed_bin";
interconnects = <&bimc MASTER_GRAPHICS_3D &bimc SLAVE_EBI_CH0>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(200, 4)>, /* index=1 (LOW SVS) */
<MHZ_TO_KBPS(547, 4)>, /* index=2 (LOW SVS) */
<MHZ_TO_KBPS(768, 4)>, /* index=3 (SVS) */
<MHZ_TO_KBPS(1017, 4)>, /* index=4 (SVS) */
<MHZ_TO_KBPS(1353, 4)>, /* index=5 (NOM) */
<MHZ_TO_KBPS(1555, 4)>, /* index=6 (NOM) */
<MHZ_TO_KBPS(1804, 4)>, /* index=7 (TURBO) */
<MHZ_TO_KBPS(2092, 4)>; /* index=8 (TURBO_L1) */
zap-shader {
memory-region = <&gpu_microcode_mem>;
};
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-allocate;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-allocate;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@59a0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x59a0000 0x10000>;
vddcx-supply = <&gpu_cc_cx_gdsc>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x0 0x001>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x2 0x000>;
qcom,iommu-dma = "disabled";
};
};
};

View File

@@ -0,0 +1,16 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/clock/qcom,gcc-qcs404.h>
#include <dt-bindings/clock/qcom,rpmcc.h>
#include <dt-bindings/interconnect/qcom,qcs405.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include "qcs405-gpu.dtsi"
/{
model = "Qualcomm Technologies, Inc. QCS405";
compatible = "qcom,qcs405";
qcom,msm-id = <352 0x0>,<411 0x0>,<452 0x0>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,126 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
&msm_gpu {
compatible = "qcom,kgsl-3d0" , "qcom,kgsl-3d";
reg = <0x1c00000 0x10000>,
<0x1c10000 0x10000>;
reg-names = "kgsl_3d0_reg_memory", "kgsl_3d0_shader_memory";
interrupts = <0 33 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
qcom,chipid = <0x03000620>;
qcom,initial-pwrlevel = <3>;
qcom,gpu-bimc-interface-clk-freq = <400000000>; //In Hz
clocks = <&gcc GCC_OXILI_GFX3D_CLK>,
<&gcc GCC_OXILI_AHB_CLK>,
<&gcc GCC_BIMC_GFX_CLK>,
<&gcc GCC_BIMC_GPU_CLK>,
<&gcc GCC_GTCU_AHB_CLK>,
<&gcc GCC_GFX_TCU_CLK>,
<&gcc GCC_GFX_TBU_CLK>,
<&rpmcc RPM_SMD_BIMC_GPU_CLK>,
<&gcc GCC_SMMU_CFG_CLK>,
<&gcc GCC_GFX_TCU_CLK>;
clock-names = "core_clk", "iface_clk", "mem_iface_clk",
"alt_mem_iface_clk", "gtcu_iface_clk",
"gtcu_clk", "gtbu_clk", "bimc_gpu_clk",
"gcc_smmu_cfg_clk", "gcc_gfx_tcu_clk";
interconnects = <&bimc MASTER_GRAPHICS_3D &bimc SLAVE_EBI_CH0>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(101, 4)>, /* index=1 */
<MHZ_TO_KBPS(211, 4)>, /* index=2 */
<MHZ_TO_KBPS(298, 4)>, /* index=3 */
<MHZ_TO_KBPS(384, 4)>, /* index=4 */
<MHZ_TO_KBPS(557, 4)>, /* index=5 */
<MHZ_TO_KBPS(595, 4)>, /* index=6 */
<MHZ_TO_KBPS(672, 4)>, /* index=7 */
<MHZ_TO_KBPS(739, 4)>; /* index=8 */
/* GDSC regulator names */
regulator-names = "vdd";
/* GDSC oxili regulators */
vdd-supply = <&gdsc_oxili_gx>;
/* Enable gpu cooling device */
#cooling-cells = <2>;
/* Power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels";
/* TURBO */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <598000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <8>;
};
/* NOM+ */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <523200000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <6>;
qcom,bus-min = <5>;
qcom,bus-max = <7>;
};
/* NOM */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <484800000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <5>;
qcom,bus-min = <4>;
qcom,bus-max = <6>;
};
/* SVS+ */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <400000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
};
/* SVS */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <270000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <3>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@1f00000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x1f00000 0x10000>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&gfx_iommu 0 1>;
qcom,iommu-dma = "disabled";
};
};
};

View File

@@ -0,0 +1,339 @@
/* GPU Powerlevel overrides for SA6155p */
&msm_gpu {
qcom,gpu-pwrlevel-bins {
#address-cells = <1>;
#size-cells = <0>;
compatible="qcom,gpu-pwrlevel-bins";
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <0>;
qcom,initial-pwrlevel = <4>;
qcom,ca-target-pwrlevel = <3>;
/* TURBO */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <845000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <11>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
};
/* NOM L1 */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <745000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <10>;
qcom,bus-min = <9>;
qcom,bus-max = <11>;
};
/* NOM */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <650000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <9>;
qcom,bus-min = <8>;
qcom,bus-max = <10>;
};
/* SVS L1 */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
};
/* SVS */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <435000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
};
/* XO */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_RETENTION>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <3>;
qcom,initial-pwrlevel = <4>;
qcom,ca-target-pwrlevel = <3>;
/* TURBO */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <845000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <11>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
};
/* NOM L1 */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <745000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <10>;
qcom,bus-min = <9>;
qcom,bus-max = <11>;
};
/* NOM */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <650000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <9>;
qcom,bus-min = <8>;
qcom,bus-max = <10>;
};
/* SVS L1 */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
};
/* SVS */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <435000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
};
/* XO */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_RETENTION>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
qcom,gpu-pwrlevels-2 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <4>;
qcom,initial-pwrlevel = <4>;
qcom,ca-target-pwrlevel = <3>;
/* TURBO */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <845000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <11>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
};
/* NOM L1 */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <745000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <10>;
qcom,bus-min = <9>;
qcom,bus-max = <11>;
};
/* NOM */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <650000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <9>;
qcom,bus-min = <8>;
qcom,bus-max = <10>;
};
/* SVS L1 */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
};
/* SVS */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <435000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
};
/* XO */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_RETENTION>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
qcom,gpu-pwrlevels-3 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <5>;
qcom,initial-pwrlevel = <2>;
qcom,ca-target-pwrlevel = <1>;
/* NOM */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <650000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <9>;
qcom,bus-min = <8>;
qcom,bus-max = <10>;
};
/* SVS L1 */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
};
/* SVS */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <435000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
};
/* XO */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_RETENTION>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
qcom,gpu-pwrlevels-4 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <6>;
qcom,initial-pwrlevel = <1>;
qcom,ca-target-pwrlevel = <0>;
/* SVS L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
};
/* SVS */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <435000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
};
/* XO */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_RETENTION>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
qcom,gpu-pwrlevels-5 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <7>;
qcom,initial-pwrlevel = <0>;
qcom,ca-target-pwrlevel = <0>;
/* SVS */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <435000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
};
/* XO */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_RETENTION>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
};
};

View File

@@ -0,0 +1,23 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gpucc-sm6150.h>
#include <dt-bindings/clock/qcom,gcc-sm6150.h>
#include <dt-bindings/interconnect/qcom,icc.h>
#include <dt-bindings/interconnect/qcom,sm6150.h>
#include <dt-bindings/soc/qcom,dcc_v2.h>
#include <dt-bindings/soc/qcom,rpmh-rsc.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include "sa6155p-gpu.dtsi"
#include "sa6155p-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. SA6155P SoC";
compatible = "qcom,sa6155p-adp-star", "qcom,sa6155p", "qcom,adp-star", "qcom,adp-air";
qcom,msm-id = <377 0>, <380 0>;
qcom,board-id = <0x010019 0>, <0x03010019 0>;
};

View File

@@ -0,0 +1 @@
#include "sm6150-gpu.dtsi"

View File

@@ -0,0 +1,20 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-sm8150.h>
#include <dt-bindings/clock/qcom,gpucc-sm8150.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,sm8150.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "sa8155-v2-gpu.dtsi"
/ {
model = "Qualcomm Technologies, Inc. SA8155 SoC";
qcom,msm-name = "SA8155 V2";
qcom,msm-id = <362 0x20000>, <367 0x20000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,180 @@
#include "sm8150-gpu.dtsi"
/* GPU power level overrides */
&msm_gpu {
/* Updated chip ID */
qcom,chipid = <0x06040001>;
/* Power level to start throttling */
qcom,throttle-pwrlevel = <0>;
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(200, 4)>, /* index=1 */
<MHZ_TO_KBPS(300, 4)>, /* index=2 */
<MHZ_TO_KBPS(451, 4)>, /* index=3 */
<MHZ_TO_KBPS(547, 4)>, /* index=4 */
<MHZ_TO_KBPS(681, 4)>, /* index=5 */
<MHZ_TO_KBPS(768, 4)>, /* index=6 */
<MHZ_TO_KBPS(1017, 4)>, /* index=7 */
<MHZ_TO_KBPS(1353, 4)>, /* index=8 */
<MHZ_TO_KBPS(1555, 4)>, /* index=9 */
<MHZ_TO_KBPS(1804, 4)>, /* index=10 */
<MHZ_TO_KBPS(2092, 4)>; /* index=11 */
/delete-property/qcom,initial-pwrlevel;
/delete-node/qcom,gpu-pwrlevels;
/delete-node/qcom,gpu-pwrlevel-bins;
qcom,gpu-pwrlevel-bins {
#address-cells = <1>;
#size-cells = <0>;
compatible="qcom,gpu-pwrlevel-bins";
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <0>;
qcom,initial-pwrlevel = <4>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <700000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <10>;
qcom,bus-min = <8>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <675000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <585000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <427000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <6>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
};
/* Vote for SVS_L1 voltage for 345MHz instead of SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <345000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <3>;
qcom,bus-min = <3>;
qcom,bus-max = <8>;
};
/* Vote for SVS_L1 voltage for 257MHz instead of LOW_SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <257000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <2>;
qcom,bus-min = <1>;
qcom,bus-max = <8>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_RETENTION>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <1>;
qcom,initial-pwrlevel = <2>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <427000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <6>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
};
/* Vote for SVS_L1 voltage for 345MHz instead of SVS */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <345000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <3>;
qcom,bus-min = <3>;
qcom,bus-max = <8>;
};
/* Vote for SVS_L1 voltage for 257MHz instead of LOW_SVS */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <257000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <2>;
qcom,bus-min = <1>;
qcom,bus-max = <8>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_RETENTION>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
};
};
&gmu {
reg = <0x2c6a000 0x30000>,
<0xb290000 0x10000>,
<0xb490000 0x10000>;
reg-names = "kgsl_gmu_reg",
"kgsl_gmu_pdc_cfg",
"kgsl_gmu_pdc_seq";
};

View File

@@ -0,0 +1,17 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,gcc-sc8180x.h>
#include <dt-bindings/clock/qcom,gpucc-sm8150.h>
#include <dt-bindings/interconnect/qcom,sc8180x.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include "sa8195p-gpu.dtsi"
/ {
model = "Qualcomm Technologies, Inc. SA8195P SoC";
qcom,msm-name = "SA8195P";
qcom,msm-id = <405 0x20000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,255 @@
#include "sdmshrike-gpu.dtsi"
&msm_gpu {
/* Updated chip ID */
qcom,chipid = <0x6080001>;
/* Power level to start throttling */
qcom,throttle-pwrlevel = <3>;
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(200, 4)>, /* index=1 */
<MHZ_TO_KBPS(300, 4)>, /* index=2 */
<MHZ_TO_KBPS(451, 4)>, /* index=3 */
<MHZ_TO_KBPS(547, 4)>, /* index=4 */
<MHZ_TO_KBPS(681, 4)>, /* index=5 */
<MHZ_TO_KBPS(768, 4)>, /* index=6 */
<MHZ_TO_KBPS(1017, 4)>, /* index=7 */
<MHZ_TO_KBPS(1353, 4)>, /* index=8 */
<MHZ_TO_KBPS(1555, 4)>, /* index=9 */
<MHZ_TO_KBPS(1804, 4)>, /* index=10 */
<MHZ_TO_KBPS(2092, 4)>; /* index=11 */
qcom,bus-table-cnoc =
<0>, /* Off */
<100>; /* On */
nvmem-cells = <&gpu_speed_bin>;
nvmem-cell-names = "speed_bin";
/delete-property/qcom,initial-pwrlevel;
/delete-node/qcom,gpu-pwrlevels;
/delete-node/qcom,gpu-pwrlevel-bins;
qcom,gpu-pwrlevel-bins {
#address-cells = <1>;
#size-cells = <0>;
compatible="qcom,gpu-pwrlevel-bins";
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <0>;
qcom,initial-pwrlevel = <1>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <530000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <6>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <392000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <3>;
qcom,bus-min = <3>;
qcom,bus-max = <8>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <1>;
qcom,initial-pwrlevel = <4>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <670000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <10>;
qcom,bus-min = <8>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <625000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <595000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <530000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <6>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <392000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <3>;
qcom,bus-min = <3>;
qcom,bus-max = <8>;
};
};
qcom,gpu-pwrlevels-2 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <2>;
qcom,initial-pwrlevel = <4>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <670000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <10>;
qcom,bus-min = <8>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <625000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <595000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <530000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <6>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <392000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <3>;
qcom,bus-min = <3>;
qcom,bus-max = <8>;
};
};
qcom,gpu-pwrlevels-3 {
#address-cells = <1>;
#size-cells = <0>;
qcom,speed-bin = <3>;
qcom,initial-pwrlevel = <4>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <670000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <10>;
qcom,bus-min = <8>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <625000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <595000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <7>;
qcom,bus-min = <6>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <530000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <6>;
qcom,bus-min = <5>;
qcom,bus-max = <9>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <392000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <3>;
qcom,bus-min = <3>;
qcom,bus-max = <8>;
};
};
};
qcom,l3-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,l3-pwrlevels";
qcom,l3-pwrlevel@0 {
reg = <0>;
qcom,l3-freq = <0>;
};
qcom,l3-pwrlevel@1 {
reg = <1>;
qcom,l3-freq = <1344000000>;
};
qcom,l3-pwrlevel@2 {
reg = <2>;
qcom,l3-freq = <1612800000>;
};
};
};
&gmu {
reg = <0x2c6a000 0x30000>,
<0xb290000 0x10000>,
<0xb490000 0x10000>;
reg-names = "kgsl_gmu_reg",
"kgsl_gmu_pdc_cfg",
"kgsl_gmu_pdc_seq";
};

View File

@@ -0,0 +1,232 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
&msm_gpu {
label = "kgsl-3d0";
compatible = "qcom,kgsl-3d0", "qcom,kgsl-3d";
status = "ok";
reg = <0x2c00000 0x40000>, <0x780000 0x6fff>,
<0x2c61000 0x800>;
reg-names = "kgsl_3d0_reg_memory", "qfprom_memory",
"cx_dbgc";
interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
qcom,id = <0>;
qcom,chipid = <0x6080000>;
qcom,initial-pwrlevel = <5>;
qcom,gpu-quirk-secvid-set-once;
qcom,gpu-quirk-cx-gdsc;
qcom,idle-timeout = <80>; /* msecs */
qcom,highest-bank-bit = <16>;
qcom,min-access-length = <32>;
qcom,ubwc-mode = <3>;
qcom,macrotiling-channels = <8>;
qcom,gpu-qdss-stm = <0x161c0000 0x40000>; /* base addr, size */
#cooling-cells = <2>;
clocks = <&gcc GCC_GPU_CFG_AHB_CLK>,
<&gpucc GPU_CC_CXO_CLK>,
<&gcc GCC_DDRSS_GPU_AXI_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gpucc GPU_CC_CX_GMU_CLK>,
<&gpucc GPU_CC_AHB_CLK>;
clock-names = "gcc_gpu_ahb", "rbbmtimer_clk",
"gcc_gpu_axi_clk", "gcc_gpu_memnoc_gfx",
"gmu_clk", "gpu_cc_ahb";
qcom,isense-clk-on-level = <1>;
interconnects = <&gem_noc MASTER_GFX3D &mc_virt SLAVE_EBI1>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(100, 4)>, /* index=1 */
<MHZ_TO_KBPS(150, 4)>, /* index=2 */
<MHZ_TO_KBPS(200, 4)>, /* index=3 */
<MHZ_TO_KBPS(300, 4)>, /* index=4 */
<MHZ_TO_KBPS(412, 4)>, /* index=5 */
<MHZ_TO_KBPS(547, 4)>, /* index=6 */
<MHZ_TO_KBPS(681, 4)>, /* index=7 */
<MHZ_TO_KBPS(768, 4)>, /* index=8 */
<MHZ_TO_KBPS(1017, 4)>, /* index=9 */
<MHZ_TO_KBPS(1296, 4)>, /* index=10 */
<MHZ_TO_KBPS(1555, 4)>, /* index=11 */
<MHZ_TO_KBPS(1804, 4)>; /* index=12 */
qcom,bus-table-cnoc =
<0>, /* Off */
<100>; /* On */
/* GDSC regulator names */
regulator-names = "vddcx", "vdd";
/* GDSC oxili regulators */
vddcx-supply = <&gpu_cx_gdsc>;
vdd-supply = <&gpu_gx_gdsc>;
zap-shader {
memory-region = <&gpu_micro_code_mem>;
};
/* GPU Mempools */
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-reserved = <2048>;
qcom,mempool-allocate;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-reserved = <1024>;
qcom,mempool-allocate;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
/* Power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels";
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <514000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <12>;
qcom,bus-min = <11>;
qcom,bus-max = <12>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <500000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <12>;
qcom,bus-min = <10>;
qcom,bus-max = <12>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <461000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <10>;
qcom,bus-min = <9>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <405000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <9>;
qcom,bus-min = <8>;
qcom,bus-max = <10>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <315000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_RETENTION>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@2ca0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x2ca0000 0x10000>;
qcom,secure-size = <0x20000000>; /* 512MB */
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
label = "gfx3d_user";
iommus = <&kgsl_smmu 0x0 0xC01>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
label = "gfx3d_secure";
iommus = <&kgsl_smmu 0x2 0xC00>;
qcom,iommu-dma = "disabled";
};
};
gmu: qcom,gmu@2c6a000 {
compatible = "qcom,gpu-gmu";
reg = <0x2c6a000 0x30000>, <0xb200000 0x300000>;
reg-names = "kgsl_gmu_reg", "kgsl_gmu_pdc_reg";
interrupts = <0 304 IRQ_TYPE_LEVEL_HIGH>,
<0 305 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_hfi_irq", "kgsl_gmu_irq";
regulator-names = "vddcx", "vdd";
iommus = <&kgsl_smmu 0x5 0xc00>;
qcom,iommu-dma = "disabled";
vddcx-supply = <&gpu_cx_gdsc>;
vdd-supply = <&gpu_gx_gdsc>;
clocks = <&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_AHB_CLK>;
clock-names = "gmu_clk", "cxo_clk", "axi_clk",
"gcc_gpu_memnoc_gfx_clk", "gpu_cc_ahb";
};
};

View File

@@ -0,0 +1,166 @@
#define KHZ_TO_KBPS(khz, w) ((khz * 1000 * w) / (1024))
&msm_gpu {
label = "kgsl-3d0";
compatible = "qcom,kgsl-3d0", "qcom,kgsl-3d";
status = "ok";
reg = <0x5000000 0x90000>;
reg-names = "kgsl_3d0_reg_memory";
interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
qcom,id = <0>;
qcom,chipid = <0x06010200>;
/* <HZ/12> */
qcom,idle-timeout = <80>;
qcom,highest-bank-bit = <14>;
qcom,ubwc-mode = <2>;
qcom,min-access-length = <32>;
/* base addr, size */
qcom,gpu-qdss-stm = <0x161c0000 0x40000>;
#cooling-cells = <2>;
clocks = <&gpucc GPU_CC_GX_GFX3D_CLK>,
<&gpucc GPU_CC_CXO_CLK>,
<&gcc GCC_DDRSS_GPU_AXI_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
<&gpucc GPU_CC_CX_GMU_CLK>;
clock-names = "core_clk", "rbbmtimer_clk", "gcc_gpu_axi_clk",
"iface_clk", "gcc_gpu_memnoc_gfx",
"gpu_cc_hlos1_vote_gpu_smmu", "gmu_clk";
interconnects = <&gem_noc MASTER_GFX3D &mc_virt SLAVE_EBI1>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-ddr =
<KHZ_TO_KBPS(0, 4)>, /* index=0 */
<KHZ_TO_KBPS(100000, 4)>, /* index=1 (Low SVS) */
<KHZ_TO_KBPS(200000, 4)>, /* index=2 (Low SVS) */
<KHZ_TO_KBPS(300000, 4)>, /* index=3 (Low SVS) */
<KHZ_TO_KBPS(451200, 4)>, /* index=4 (Low SVS) */
<KHZ_TO_KBPS(547200, 4)>, /* index=5 (Low SVS) */
<KHZ_TO_KBPS(681600, 4)>, /* index=6 (SVS) */
<KHZ_TO_KBPS(768000, 4)>, /* index=7 (SVS) */
<KHZ_TO_KBPS(1017600, 4)>, /* index=8 (SVS L1) */
<KHZ_TO_KBPS(1353600, 4)>, /* index=9 (NOM) */
<KHZ_TO_KBPS(1555200, 4)>, /* index=10 (NOM) */
<KHZ_TO_KBPS(1804800, 4)>; /* index=11 (TURBO) */
qcom,bus-table-cnoc =
<0>, /* Off */
<100>; /* On */
/* GDSC regulator names */
regulator-names = "vddcx", "vdd";
/* GDSC oxili regulators */
vddcx-supply = <&gpu_cx_gdsc>;
vdd-supply = <&gpu_gx_gdsc>;
/* CPU latency parameter */
qcom,pm-qos-active-latency = <67>;
qcom,pm-qos-wakeup-latency = <67>;
/* Enable context aware freq. scaling */
qcom,enable-ca-jump;
/* Context aware jump busy penalty in us */
qcom,ca-busy-penalty = <12000>;
/* Context aware jump target power level */
qcom,ca-target-pwrlevel = <3>;
nvmem-cells = <&gpu_speed_bin>;
nvmem-cell-names = "speed_bin";
zap-shader {
memory-region = <&pil_gpu_mem>;
};
/* GPU Mempools */
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-allocate;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-allocate;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@50a0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x50a0000 0x10000>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
label = "gfx3d_user";
iommus = <&kgsl_smmu 0x0 0x401>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
label = "gfx3d_secure";
iommus = <&kgsl_smmu 0x2 0x400>;
qcom,iommu-dma = "disabled";
};
};
rgmu: qcom,rgmu@0x0506d000 {
compatible = "qcom,gpu-rgmu";
label = "kgsl-rgmu";
reg = <0x506d000 0x31000>;
reg-names = "kgsl_rgmu";
interrupts = <0 304 IRQ_TYPE_LEVEL_HIGH>,
<0 305 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_oob", "kgsl_rgmu";
regulator-names = "vddcx", "vdd";
vddcx-supply = <&gpu_cx_gdsc>;
vdd-supply = <&gpu_gx_gdsc>;
clocks = <&gpucc GPU_CC_CX_GMU_CLK>,
<&gpucc GPU_CC_CXO_CLK>,
<&gcc GCC_DDRSS_GPU_AXI_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
<&gpucc GPU_CC_GX_GFX3D_CLK>;
clock-names = "gmu", "rbbmtimer", "mem",
"iface", "mem_iface",
"smmu_vote", "core";
};
};

View File

@@ -0,0 +1,277 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
&msm_gpu {
label = "kgsl-3d0";
compatible = "qcom,kgsl-3d0", "qcom,kgsl-3d";
status = "ok";
reg = <0x2c00000 0x40000>, <0x2c61000 0x800>,
<0x6900000 0x44000>, <0x780000 0x6fff>;
reg-names = "kgsl_3d0_reg_memory", "cx_dbgc",
"qdss_gfx", "qfprom_memory";
interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
qcom,id = <0>;
qcom,chipid = <0x06040000>;
qcom,initial-pwrlevel = <5>;
qcom,gpu-quirk-secvid-set-once;
qcom,gpu-quirk-cx-gdsc;
qcom,idle-timeout = <80>; //msecs
qcom,no-nap;
qcom,highest-bank-bit = <15>;
qcom,min-access-length = <32>;
qcom,ubwc-mode = <3>;
qcom,gpu-qdss-stm = <0x161c0000 0x40000>; // base addr, size
#cooling-cells = <2>;
clocks = <&gcc GCC_GPU_CFG_AHB_CLK>,
<&gpucc GPU_CC_CXO_CLK>,
<&gcc GCC_DDRSS_GPU_AXI_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gpucc GPU_CC_CX_GMU_CLK>,
<&gpucc GPU_CC_AHB_CLK>;
clock-names = "gcc_gpu_ahb", "rbbmtimer_clk",
"gcc_gpu_axi_clk", "gcc_gpu_memnoc_gfx",
"gmu_clk", "gpu_cc_ahb";
qcom,isense-clk-on-level = <1>;
interconnects = <&gem_noc MASTER_GFX3D &mc_virt SLAVE_EBI1>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(100, 4)>, /* index=1 */
<MHZ_TO_KBPS(150, 4)>, /* index=2 */
<MHZ_TO_KBPS(200, 4)>, /* index=3 */
<MHZ_TO_KBPS(300, 4)>, /* index=4 */
<MHZ_TO_KBPS(412, 4)>, /* index=5 */
<MHZ_TO_KBPS(547, 4)>, /* index=6 */
<MHZ_TO_KBPS(681, 4)>, /* index=7 */
<MHZ_TO_KBPS(768, 4)>, /* index=8 */
<MHZ_TO_KBPS(1017, 4)>, /* index=9 */
<MHZ_TO_KBPS(1296, 4)>, /* index=10 */
<MHZ_TO_KBPS(1555, 4)>, /* index=11 */
<MHZ_TO_KBPS(1804, 4)>; /* index=12 */
qcom,bus-table-cnoc =
<0>, /* Off */
<100>; /* On */
/* GDSC regulator names */
regulator-names = "vddcx", "vdd";
/* GDSC oxili regulators */
vddcx-supply = <&gpu_cx_gdsc>;
vdd-supply = <&gpu_gx_gdsc>;
nvmem-cells = <&gpu_speed_bin>;
nvmem-cell-names = "speed_bin";
zap-shader {
memory-region = <&gpu_micro_code_mem>;
};
qcom,l3-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,l3-pwrlevels";
qcom,l3-pwrlevel@0 {
reg = <0>;
qcom,l3-freq = <0>;
};
qcom,l3-pwrlevel@1 {
reg = <1>;
qcom,l3-freq = <864000000>;
};
qcom,l3-pwrlevel@2 {
reg = <2>;
qcom,l3-freq = <1344000000>;
};
};
/* GPU Mempools */
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-reserved = <2048>;
qcom,mempool-allocate;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-reserved = <1024>;
qcom,mempool-allocate;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
/* Power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels";
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <600000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <12>;
qcom,bus-min = <10>;
qcom,bus-max = <12>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <553850000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <10>;
qcom,bus-min = <9>;
qcom,bus-max = <11>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <486460000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <9>;
qcom,bus-min = <8>;
qcom,bus-max = <10>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <379650000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <309110000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <5>;
qcom,bus-min = <5>;
qcom,bus-max = <7>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <215000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <0>;
qcom,level = <RPMH_REGULATOR_LEVEL_RETENTION>;
qcom,bus-freq = <0>;
qcom,bus-min = <0>;
qcom,bus-max = <0>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@2ca0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x2ca0000 0x10000>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
label = "gfx3d_user";
iommus = <&kgsl_smmu 0x0 0x401>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
label = "gfx3d_secure";
iommus = <&kgsl_smmu 0x2 0x400>;
qcom,iommu-dma = "disabled";
};
};
gmu: qcom,gmu@2c6a000 {
compatible = "qcom,gpu-gmu";
reg = <0x2c6a000 0x30000>,
<0xb280000 0x10000>,
<0xb480000 0x10000>;
reg-names = "kgsl_gmu_reg",
"kgsl_gmu_pdc_cfg",
"kgsl_gmu_pdc_seq";
interrupts = <0 304 IRQ_TYPE_LEVEL_HIGH>,
<0 305 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_hfi_irq", "kgsl_gmu_irq";
regulator-names = "vddcx", "vdd";
iommus = <&kgsl_smmu 0x5 0x400>;
qcom,iommu-dma = "disabled";
vddcx-supply = <&gpu_cx_gdsc>;
vdd-supply = <&gpu_gx_gdsc>;
clocks = <&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_AHB_CLK>;
clock-names = "gmu_clk", "cxo_clk", "axi_clk",
"gcc_gpu_memnoc_gfx_clk", "gpu_cc_ahb";
/* AOP mailbox for sending ACD enable and disable messages */
mboxes = <&qmp_aop 0>;
mbox-names = "aop";
};
};

View File

@@ -0,0 +1,18 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/clock/qcom,gpucc-trinket.h>
#include <dt-bindings/clock/qcom,gcc-trinket.h>
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/interconnect/qcom,trinket.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include "trinket-gpu.dtsi"
/ {
model = "Qualcomm Technologies, Inc. TRINKET IOT";
compatible = "qcom,trinket-iot";
qcom,msm-id = <467 0x0>, <394 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,211 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
&msm_gpu {
compatible = "qcom,kgsl-3d0";
status = "ok";
reg = <0x5900000 0x90000>,
<0x5961000 0x800>;
reg-names = "kgsl_3d0_reg_memory",
"cx_dbgc";
interrupts = <0 177 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
qcom,chipid = <0x06010000>;
qcom,initial-pwrlevel = <6>;
qcom,ubwc-mode = <1>;
qcom,min-access-length = <64>;
/* base addr, size */
qcom,gpu-qdss-stm = <0xe1c0000 0x40000>;
#cooling-cells = <2>;
clocks = <&gpucc GPU_CC_GX_GFX3D_CLK>,
<&gpucc GPU_CC_CXO_CLK>,
<&gcc GCC_BIMC_GPU_AXI_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gpucc GPU_CC_CX_GMU_CLK>,
<&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>,
<&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>;
clock-names = "core_clk", "rbbmtimer_clk", "mem_clk",
"iface_clk", "mem_iface_clk",
"gmu_clk", "smmu_vote",
"gcc_gpu_memnoc_gfx",
"gcc_gpu_snoc_dvm_gfx",
"gpu_cc_ahb",
"gpu_cc_hlos1_vote_gpu_smmu";
interconnect-names = "gpu_icc_path";
interconnects = <&system_noc MASTER_GRAPHICS_3D &bimc SLAVE_EBI_CH0>;
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(100, 4)>, /* index=1 */
<MHZ_TO_KBPS(200, 4)>, /* index=2 */
<MHZ_TO_KBPS(300, 4)>, /* index=3 */
<MHZ_TO_KBPS(451, 4)>, /* index=4 */
<MHZ_TO_KBPS(547, 4)>, /* index=5 */
<MHZ_TO_KBPS(681, 4)>, /* index=6 */
<MHZ_TO_KBPS(768, 4)>, /* index=7 */
<MHZ_TO_KBPS(1017, 4)>, /* index=8 */
<MHZ_TO_KBPS(1353, 4)>, /* index=9 */
<MHZ_TO_KBPS(1555, 4)>, /* index=10 */
<MHZ_TO_KBPS(1804, 4)>; /* index=11 */
/* GDSC regulator names */
regulator-names = "vddcx", "vdd";
/* GDSC oxili regulators */
vddcx-supply = <&cx_gdsc>;
vdd-supply = <&gx_gdsc>;
/* Enable context aware frequency scaling */
qcom,enable-ca-jump;
/* Context aware jump busy penalty in us */
qcom,ca-busy-penalty = <12000>;
/* Context aware jump target power level */
qcom,ca-target-pwrlevel = <5>;
zap-shader {
memory-region = <&pil_gpu_mem>;
};
/* GPU Mempools */
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-allocate;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-allocate;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
/* Power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels";
/* TURBO_L1 */
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <950000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <11>;
};
/* TURBO */
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <900000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <11>;
qcom,bus-min = <9>;
qcom,bus-max = <11>;
};
/* NOM_L1 */
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <820000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <10>;
qcom,bus-min = <9>;
qcom,bus-max = <11>;
};
/* NOM */
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <745000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <9>;
qcom,bus-min = <8>;
qcom,bus-max = <10>;
};
/* SVS_L1 */
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <600000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <7>;
qcom,bus-max = <9>;
};
/* SVS */
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <465000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <7>;
qcom,bus-min = <5>;
qcom,bus-max = <8>;
};
/* LOW SVS */
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <320000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <4>;
qcom,bus-min = <3>;
qcom,bus-max = <5>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@59a0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x59a0000 0x10000>;
vddcx-supply = <&cx_gdsc>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0 1>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 2 0>;
qcom,iommu-dma = "disabled";
};
};
};

View File

@@ -0,0 +1,18 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/clock/qcom,gpucc-trinket.h>
#include <dt-bindings/clock/qcom,gcc-trinket.h>
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/interconnect/qcom,trinket.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include "trinket-gpu.dtsi"
/ {
model = "Qualcomm Technologies, Inc. TRINKETP";
compatible = "qcom,trinketp-iot";
qcom,msm-id = <468 0x0>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,345 @@
&msm_gpu {
/* Power level bins */
qcom,gpu-pwrlevel-bins {
compatible = "qcom,gpu-pwrlevels-bins";
#address-cells = <1>;
#size-cells = <0>;
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,initial-pwrlevel = <8>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_AC)
SKU_CODE(PCODE_UNKNOWN, FC_AD)
SKU_CODE(PCODE_1, FC_W0)
SKU_CODE(PCODE_1, FC_W1)
SKU_CODE(PCODE_2, FC_W0)
SKU_CODE(PCODE_2, FC_W1)
SKU_CODE(PCODE_3, FC_W0)
SKU_CODE(PCODE_3, FC_W1)
SKU_CODE(PCODE_0, FC_Y1)
SKU_CODE(PCODE_0, FC_Y0)>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1150000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L2>;
qcom,bus-freq-ddr7 = <9>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <9>;
qcom,bus-freq-ddr8 = <9>;
qcom,bus-min-ddr8 = <8>;
qcom,bus-max-ddr8 = <9>;
qcom,acd-level = <ACD_LEVEL_Turbo_L2>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <1050000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq-ddr7 = <9>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <9>;
qcom,bus-freq-ddr8 = <9>;
qcom,bus-min-ddr8 = <8>;
qcom,bus-max-ddr8 = <9>;
qcom,acd-level = <ACD_LEVEL_Turbo_L1>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <960000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq-ddr7 = <8>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <8>;
qcom,bus-freq-ddr8 = <7>;
qcom,bus-min-ddr8 = <7>;
qcom,bus-max-ddr8 = <8>;
qcom,acd-level = <ACD_LEVEL_Turbo>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <895000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq-ddr7 = <8>;
qcom,bus-min-ddr7 = <7>;
qcom,bus-max-ddr7 = <8>;
qcom,bus-freq-ddr8 = <7>;
qcom,bus-min-ddr8 = <6>;
qcom,bus-max-ddr8 = <8>;
qcom,acd-level = <ACD_LEVEL_Nominal_L1>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <763000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq-ddr7 = <7>;
qcom,bus-min-ddr7 = <6>;
qcom,bus-max-ddr7 = <8>;
qcom,bus-freq-ddr8 = <6>;
qcom,bus-min-ddr8 = <5>;
qcom,bus-max-ddr8 = <7>;
qcom,acd-level = <ACD_LEVEL_Nominal>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <688000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq-ddr7 = <6>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <7>;
qcom,bus-freq-ddr8 = <6>;
qcom,bus-min-ddr8 = <5>;
qcom,bus-max-ddr8 = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <644000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq-ddr7 = <5>;
qcom,bus-min-ddr7 = <4>;
qcom,bus-max-ddr7 = <6>;
qcom,bus-freq-ddr8 = <5>;
qcom,bus-min-ddr8 = <4>;
qcom,bus-max-ddr8 = <6>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <510000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq-ddr7 = <4>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <5>;
qcom,bus-freq-ddr8 = <4>;
qcom,bus-min-ddr8 = <3>;
qcom,bus-max-ddr8 = <5>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <362000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS>;
};
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <264000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS_D1>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,initial-pwrlevel = <7>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_AB)
SKU_CODE(PCODE_UNKNOWN, FC_UNKNOWN)>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1050000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq-ddr7 = <9>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <9>;
qcom,bus-freq-ddr8 = <9>;
qcom,bus-min-ddr8 = <8>;
qcom,bus-max-ddr8 = <9>;
qcom,acd-level = <ACD_LEVEL_Turbo_L1>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <960000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq-ddr7 = <8>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <8>;
qcom,bus-freq-ddr8 = <7>;
qcom,bus-min-ddr8 = <7>;
qcom,bus-max-ddr8 = <8>;
qcom,acd-level = <ACD_LEVEL_Turbo>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <895000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq-ddr7 = <8>;
qcom,bus-min-ddr7 = <7>;
qcom,bus-max-ddr7 = <8>;
qcom,bus-freq-ddr8 = <7>;
qcom,bus-min-ddr8 = <6>;
qcom,bus-max-ddr8 = <8>;
qcom,acd-level = <ACD_LEVEL_Nominal_L1>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <763000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq-ddr7 = <7>;
qcom,bus-min-ddr7 = <6>;
qcom,bus-max-ddr7 = <8>;
qcom,bus-freq-ddr8 = <6>;
qcom,bus-min-ddr8 = <5>;
qcom,bus-max-ddr8 = <7>;
qcom,acd-level = <ACD_LEVEL_Nominal>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <688000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq-ddr7 = <6>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <7>;
qcom,bus-freq-ddr8 = <6>;
qcom,bus-min-ddr8 = <5>;
qcom,bus-max-ddr8 = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <644000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq-ddr7 = <5>;
qcom,bus-min-ddr7 = <4>;
qcom,bus-max-ddr7 = <6>;
qcom,bus-freq-ddr8 = <5>;
qcom,bus-min-ddr8 = <4>;
qcom,bus-max-ddr8 = <6>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <510000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq-ddr7 = <4>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <5>;
qcom,bus-freq-ddr8 = <4>;
qcom,bus-min-ddr8 = <3>;
qcom,bus-max-ddr8 = <5>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <362000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS>;
};
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <264000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS_D1>;
};
};
};
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-volcano.h>
#include <dt-bindings/clock/qcom,gpucc-volcano.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,volcano.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "volcano-gpu.dtsi"
#include "volcano-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Volcano SoC";
compatible = "qcom,volcano";
qcom,msm-id = <636 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,228 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
#define UINT32_MAX 4294967295
/* External feature codes */
#define FC_UNKNOWN 0x0
#define FC_AA 0x1
#define FC_AB 0x2
#define FC_AC 0x3
#define FC_AD 0x4
#define FC_AE 0x5
#define FC_AF 0x6
#define FC_AG 0x7
#define FC_AH 0x8
/* SubPart feature code */
#define FC_W0 0x00d1
#define FC_W1 0x00d2
/* Internal feature codes */
#define FC_Y0 0x00f1
#define FC_Y1 0x00f2
#define FC_Y2 0x00f3
#define FC_Y3 0x00f4
#define FC_Y4 0x00f5
#define FC_Y5 0x00f6
#define FC_Y6 0x00f7
#define FC_Y7 0x00f8
#define FC_Y8 0x00f9
#define FC_Y9 0x00fa
#define FC_YA 0x00fb
#define FC_YB 0x00fc
#define FC_YC 0x00fd
#define FC_YD 0x00fe
#define FC_YE 0x00ff
#define FC_YF 0x0100
/* Pcodes */
#define PCODE_UNKNOWN 0
#define PCODE_0 1
#define PCODE_1 2
#define PCODE_2 3
#define PCODE_3 4
#define PCODE_4 5
#define PCODE_5 6
#define PCODE_6 7
#define PCODE_7 8
#define PCODE_8 9
#define SKU_CODE(pcode, featurecode) ((pcode << 16) + featurecode)
/* ACD Control register values */
#define ACD_LEVEL_Turbo_L2 0xa02f5ffd
#define ACD_LEVEL_Turbo_L1 0x88285ffd
#define ACD_LEVEL_Turbo 0xa8285ffd
#define ACD_LEVEL_Nominal_L1 0x88295ffd
#define ACD_LEVEL_Nominal 0xa8295ffd
#define ACD_LEVEL_SVS_L2 0x882a5ffd
#define ACD_LEVEL_SVS_L1 0x882a5ffd
#define ACD_LEVEL_SVS 0x882b5ffd
#define ACD_LEVEL_LowSVS 0xc02c5ffd
#define ACD_LEVEL_LowSVS_D1 0xc8295ffd
&msm_gpu {
compatible = "qcom,adreno-gpu-gen8-3-0", "qcom,kgsl-3d0";
status = "ok";
reg = <0x3d00000 0x40000>, <0x3d61000 0x3000>,
<0x3d50000 0x10000>, <0x3d9e000 0x2000>,
<0x10900000 0x80000>, <0x10048000 0x8000>,
<0x10b05000 0x1000>;
reg-names = "kgsl_3d0_reg_memory", "cx_dbgc", "rscc", "cx_misc",
"qdss_gfx", "qdss_etr", "qdss_tmc";
interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>, <0 80 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq", "cx_host_irq";
clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&aoss_qmp QDSS_CLK>;
clock-names = "gcc_gpu_memnoc_gfx",
"gcc_gpu_snoc_dvm_gfx",
"gpu_cc_ahb",
"apb_pclk";
qcom,min-access-length = <32>;
qcom,ubwc-mode = <4>;
qcom,tzone-names = "gpuss-0", "gpuss-1";
interconnects = <&gem_noc MASTER_GFX3D &mc_virt SLAVE_EBI1>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-cnoc =
<0>, /* Off */
<100>; /* On */
qcom,bus-table-ddr7 =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(200, 4)>, /* index=1 LOW SVS */
<MHZ_TO_KBPS(547, 4)>, /* index=2 LOW SVS */
<MHZ_TO_KBPS(768, 4)>, /* index=3 SVS */
<MHZ_TO_KBPS(1017, 4)>, /* index=4 SVS */
<MHZ_TO_KBPS(1353, 4)>, /* index=5 SVS L1 */
<MHZ_TO_KBPS(1555, 4)>, /* index=6 NOM */
<MHZ_TO_KBPS(1708, 4)>, /* index=7 NOM */
<MHZ_TO_KBPS(2092, 4)>, /* index=8 TURBO */
<MHZ_TO_KBPS(4761, 4)>; /* index=9*/
qcom,bus-table-ddr8 =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(200, 4)>, /* index=1 LOW SVS */
<MHZ_TO_KBPS(547, 4)>, /* index=2 LOW SVS */
<MHZ_TO_KBPS(768, 4)>, /* index=3 SVS */
<MHZ_TO_KBPS(1555, 4)>, /* index=4 SVS */
<MHZ_TO_KBPS(1708, 4)>, /* index=5 SVS L1 */
<MHZ_TO_KBPS(2092, 4)>, /* index=6 NOM */
<MHZ_TO_KBPS(2736, 4)>, /* index=7 TURBO */
<MHZ_TO_KBPS(3196, 4)>, /* index=8 TURBO L1 */
<MHZ_TO_KBPS(4761, 4)>; /* index=9*/
zap-shader {
memory-region = <&gpu_microcode_mem>;
};
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-reserved = <2048>;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-reserved = <1024>;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 128K Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <131072>;
qcom,mempool-reserved = <128>;
};
/* 256K Page Pool configuration */
qcom,gpu-mempool@4 {
reg = <4>;
qcom,mempool-page-size = <262144>;
qcom,mempool-reserved = <80>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@5 {
reg = <5>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@3da0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x3da0000 0x40000>;
vddcx-supply = <&gpu_cc_cx_gdsc>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x0 0x000>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x2 0x000>;
qcom,iommu-dma = "disabled";
};
};
gmu: qcom,gmu@3d37000 {
compatible = "qcom,gen8-gmu";
reg = <0x3d37000 0x68000>,
<0x3d40000 0x10000>;
reg-names = "gmu", "gmu_ao_blk_dec0";
interrupts = <0 304 IRQ_TYPE_LEVEL_HIGH>,
<0 305 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "hfi", "gmu";
regulator-names = "vddcx", "vdd";
vddcx-supply = <&gpu_cc_cx_gdsc>;
vdd-supply = <&gx_clkctl_gx_gdsc>;
clocks = <&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_AHB_CLK>,
<&gpucc GPU_CC_HUB_CX_INT_CLK>;
clock-names = "gmu_clk", "cxo_clk", "axi_clk",
"memnoc_clk", "ahb_clk", "hub_clk";
qcom,gmu-freq-table = <350000000 RPMH_REGULATOR_LEVEL_LOW_SVS>,
<650000000 RPMH_REGULATOR_LEVEL_SVS>;
qcom,gmu-perf-ddr-bw = <MHZ_TO_KBPS(768, 4)>;
iommus = <&kgsl_smmu 0x5 0x000>;
qcom,iommu-dma = "disabled";
qcom,qmp = <&aoss_qmp>;
};
};

View File

@@ -0,0 +1,305 @@
&msm_gpu {
/* Power level bins */
qcom,gpu-pwrlevel-bins {
compatible = "qcom,gpu-pwrlevels-bins";
#address-cells = <1>;
#size-cells = <0>;
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,initial-pwrlevel = <8>;
qcom,sku-codes = <SKU_CODE(PCODE_0, FC_Y1)
SKU_CODE(PCODE_0, FC_Y0)>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1150000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L2>;
qcom,bus-freq-ddr7 = <9>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <9>;
qcom,bus-freq-ddr8 = <9>;
qcom,bus-min-ddr8 = <8>;
qcom,bus-max-ddr8 = <9>;
qcom,acd-level = <ACD_LEVEL_Turbo_L2>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <1050000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq-ddr7 = <9>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <9>;
qcom,bus-freq-ddr8 = <9>;
qcom,bus-min-ddr8 = <8>;
qcom,bus-max-ddr8 = <9>;
qcom,acd-level = <ACD_LEVEL_Turbo_L1>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <960000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq-ddr7 = <8>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <8>;
qcom,bus-freq-ddr8 = <7>;
qcom,bus-min-ddr8 = <7>;
qcom,bus-max-ddr8 = <8>;
qcom,acd-level = <ACD_LEVEL_Turbo>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <895000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq-ddr7 = <8>;
qcom,bus-min-ddr7 = <7>;
qcom,bus-max-ddr7 = <8>;
qcom,bus-freq-ddr8 = <7>;
qcom,bus-min-ddr8 = <6>;
qcom,bus-max-ddr8 = <8>;
qcom,acd-level = <ACD_LEVEL_Nominal_L1>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <763000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq-ddr7 = <7>;
qcom,bus-min-ddr7 = <6>;
qcom,bus-max-ddr7 = <8>;
qcom,bus-freq-ddr8 = <6>;
qcom,bus-min-ddr8 = <5>;
qcom,bus-max-ddr8 = <7>;
qcom,acd-level = <ACD_LEVEL_Nominal>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <688000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq-ddr7 = <6>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <7>;
qcom,bus-freq-ddr8 = <6>;
qcom,bus-min-ddr8 = <5>;
qcom,bus-max-ddr8 = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <644000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq-ddr7 = <5>;
qcom,bus-min-ddr7 = <4>;
qcom,bus-max-ddr7 = <6>;
qcom,bus-freq-ddr8 = <5>;
qcom,bus-min-ddr8 = <4>;
qcom,bus-max-ddr8 = <6>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <510000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq-ddr7 = <4>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <5>;
qcom,bus-freq-ddr8 = <4>;
qcom,bus-min-ddr8 = <3>;
qcom,bus-max-ddr8 = <5>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <362000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS>;
};
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <264000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS_D1>;
};
};
qcom,gpu-pwrlevels-1 {
#address-cells = <1>;
#size-cells = <0>;
qcom,initial-pwrlevel = <5>;
qcom,sku-codes = <SKU_CODE(PCODE_UNKNOWN, FC_AB)
SKU_CODE(PCODE_UNKNOWN, FC_UNKNOWN)>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <895000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq-ddr7 = <9>;
qcom,bus-min-ddr7 = <7>;
qcom,bus-max-ddr7 = <9>;
qcom,bus-freq-ddr8 = <9>;
qcom,bus-min-ddr8 = <7>;
qcom,bus-max-ddr8 = <9>;
qcom,acd-level = <ACD_LEVEL_Nominal_L1>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <763000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq-ddr7 = <7>;
qcom,bus-min-ddr7 = <6>;
qcom,bus-max-ddr7 = <8>;
qcom,bus-freq-ddr8 = <6>;
qcom,bus-min-ddr8 = <5>;
qcom,bus-max-ddr8 = <8>;
qcom,acd-level = <ACD_LEVEL_Nominal>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <688000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq-ddr7 = <6>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <7>;
qcom,bus-freq-ddr8 = <6>;
qcom,bus-min-ddr8 = <5>;
qcom,bus-max-ddr8 = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <644000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq-ddr7 = <5>;
qcom,bus-min-ddr7 = <4>;
qcom,bus-max-ddr7 = <6>;
qcom,bus-freq-ddr8 = <5>;
qcom,bus-min-ddr8 = <4>;
qcom,bus-max-ddr8 = <6>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <510000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq-ddr7 = <4>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <5>;
qcom,bus-freq-ddr8 = <4>;
qcom,bus-min-ddr8 = <3>;
qcom,bus-max-ddr8 = <5>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <362000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <264000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS_D1>;
};
};
};
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-volcano.h>
#include <dt-bindings/clock/qcom,gpucc-volcano.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,volcano.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "volcano-gpu.dtsi"
#include "volcano6-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Volcano6 SoC";
compatible = "qcom,volcano";
qcom,msm-id = <640 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,31 @@
&msm_gpu {
/delete-property/ qcom,gpu-speed-bin;
/delete-property/ qcom,initial-pwrlevel;
/delete-node/ qcom,gpu-pwrlevels;
/delete-node/ qcom,gpu-pwrlevel-bins;
/* GPU power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
qcom,initial-pwrlevel = <0>;
compatible = "qcom,gpu-pwrlevels";
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <264000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS_D1>;
};
};
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-volcano.h>
#include <dt-bindings/clock/qcom,gpucc-volcano.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,volcano.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "volcano-gpu.dtsi"
#include "volcano6i-fp1-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Volcano6I FP1 SoC";
compatible = "qcom,volcano";
qcom,msm-id = <0x4000291 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,47 @@
&msm_gpu {
/delete-property/ qcom,gpu-speed-bin;
/delete-property/ qcom,initial-pwrlevel;
/delete-node/ qcom,gpu-pwrlevels;
/delete-node/ qcom,gpu-pwrlevel-bins;
/* GPU power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
qcom,initial-pwrlevel = <1>;
compatible = "qcom,gpu-pwrlevels";
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <362000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <264000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS_D1>;
};
};
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-volcano.h>
#include <dt-bindings/clock/qcom,gpucc-volcano.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,volcano.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "volcano-gpu.dtsi"
#include "volcano6i-fp2-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Volcano6I FP2 SoC";
compatible = "qcom,volcano";
qcom,msm-id = <0x8000291 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,79 @@
&msm_gpu {
/delete-property/ qcom,gpu-speed-bin;
/delete-property/ qcom,initial-pwrlevel;
/delete-node/ qcom,gpu-pwrlevels;
/delete-node/ qcom,gpu-pwrlevel-bins;
/* GPU power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
qcom,initial-pwrlevel = <3>;
compatible = "qcom,gpu-pwrlevels";
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <644000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq-ddr7 = <5>;
qcom,bus-min-ddr7 = <4>;
qcom,bus-max-ddr7 = <6>;
qcom,bus-freq-ddr8 = <5>;
qcom,bus-min-ddr8 = <4>;
qcom,bus-max-ddr8 = <6>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <510000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq-ddr7 = <4>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <5>;
qcom,bus-freq-ddr8 = <4>;
qcom,bus-min-ddr8 = <3>;
qcom,bus-max-ddr8 = <5>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <362000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <264000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS_D1>;
};
};
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-volcano.h>
#include <dt-bindings/clock/qcom,gpucc-volcano.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,volcano.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "volcano-gpu.dtsi"
#include "volcano6i-fp3-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Volcano6I FP3 SoC";
compatible = "qcom,volcano";
qcom,msm-id = <0xc000291 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,185 @@
&msm_gpu {
/* Power level bins */
qcom,gpu-pwrlevel-bins {
compatible = "qcom,gpu-pwrlevels-bins";
#address-cells = <1>;
#size-cells = <0>;
qcom,gpu-pwrlevels-0 {
#address-cells = <1>;
#size-cells = <0>;
qcom,initial-pwrlevel = <8>;
qcom,sku-codes = <SKU_CODE(PCODE_0, FC_Y0)
SKU_CODE(PCODE_0, FC_Y1)
SKU_CODE(PCODE_5, FC_Y0)
SKU_CODE(PCODE_5, FC_Y1)
SKU_CODE(PCODE_UNKNOWN, FC_AA)
SKU_CODE(PCODE_UNKNOWN, FC_UNKNOWN)>;
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <1150000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L2>;
qcom,bus-freq-ddr7 = <9>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <9>;
qcom,bus-freq-ddr8 = <9>;
qcom,bus-min-ddr8 = <8>;
qcom,bus-max-ddr8 = <9>;
qcom,acd-level = <ACD_LEVEL_Turbo_L2>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <1050000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
qcom,bus-freq-ddr7 = <9>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <9>;
qcom,bus-freq-ddr8 = <9>;
qcom,bus-min-ddr8 = <8>;
qcom,bus-max-ddr8 = <9>;
qcom,acd-level = <ACD_LEVEL_Turbo_L1>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <960000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq-ddr7 = <8>;
qcom,bus-min-ddr7 = <8>;
qcom,bus-max-ddr7 = <8>;
qcom,bus-freq-ddr8 = <7>;
qcom,bus-min-ddr8 = <7>;
qcom,bus-max-ddr8 = <8>;
qcom,acd-level = <ACD_LEVEL_Turbo>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <895000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq-ddr7 = <8>;
qcom,bus-min-ddr7 = <7>;
qcom,bus-max-ddr7 = <8>;
qcom,bus-freq-ddr8 = <7>;
qcom,bus-min-ddr8 = <6>;
qcom,bus-max-ddr8 = <8>;
qcom,acd-level = <ACD_LEVEL_Nominal_L1>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <763000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq-ddr7 = <7>;
qcom,bus-min-ddr7 = <6>;
qcom,bus-max-ddr7 = <8>;
qcom,bus-freq-ddr8 = <6>;
qcom,bus-min-ddr8 = <5>;
qcom,bus-max-ddr8 = <7>;
qcom,acd-level = <ACD_LEVEL_Nominal>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <688000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq-ddr7 = <6>;
qcom,bus-min-ddr7 = <5>;
qcom,bus-max-ddr7 = <7>;
qcom,bus-freq-ddr8 = <6>;
qcom,bus-min-ddr8 = <5>;
qcom,bus-max-ddr8 = <7>;
qcom,acd-level = <ACD_LEVEL_SVS_L2>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <644000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq-ddr7 = <5>;
qcom,bus-min-ddr7 = <4>;
qcom,bus-max-ddr7 = <6>;
qcom,bus-freq-ddr8 = <5>;
qcom,bus-min-ddr8 = <4>;
qcom,bus-max-ddr8 = <6>;
qcom,acd-level = <ACD_LEVEL_SVS_L1>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <510000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq-ddr7 = <4>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <5>;
qcom,bus-freq-ddr8 = <4>;
qcom,bus-min-ddr8 = <3>;
qcom,bus-max-ddr8 = <5>;
qcom,acd-level = <ACD_LEVEL_SVS>;
};
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <362000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS>;
};
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <264000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq-ddr7 = <2>;
qcom,bus-min-ddr7 = <2>;
qcom,bus-max-ddr7 = <4>;
qcom,bus-freq-ddr8 = <2>;
qcom,bus-min-ddr8 = <2>;
qcom,bus-max-ddr8 = <4>;
qcom,acd-level = <ACD_LEVEL_LowSVS_D1>;
};
};
};
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-volcano.h>
#include <dt-bindings/clock/qcom,gpucc-volcano.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,volcano.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "volcano-gpu.dtsi"
#include "volcano6i-fp4-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Volcano6I FP4 SoC";
compatible = "qcom,volcano";
qcom,msm-id = <0x10000291 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-volcano.h>
#include <dt-bindings/clock/qcom,gpucc-volcano.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,volcano.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "volcano-gpu.dtsi"
#include "volcano6i-fp1-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Volcano6IP FP1 SoC";
compatible = "qcom,volcanop";
qcom,msm-id = <0x4000292 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-volcano.h>
#include <dt-bindings/clock/qcom,gpucc-volcano.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,volcano.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "volcano-gpu.dtsi"
#include "volcano6i-fp2-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Volcano6IP FP2 SoC";
compatible = "qcom,volcanop";
qcom,msm-id = <0x8000292 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-volcano.h>
#include <dt-bindings/clock/qcom,gpucc-volcano.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,volcano.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "volcano-gpu.dtsi"
#include "volcano6i-fp3-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Volcano6IP FP3 SoC";
compatible = "qcom,volcanop";
qcom,msm-id = <0xc000292 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-volcano.h>
#include <dt-bindings/clock/qcom,gpucc-volcano.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,volcano.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "volcano-gpu.dtsi"
#include "volcano6i-fp4-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Volcano6IP FP4 SoC";
compatible = "qcom,volcanop";
qcom,msm-id = <0x10000292 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-volcano.h>
#include <dt-bindings/clock/qcom,gpucc-volcano.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,volcano.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "volcano-gpu.dtsi"
#include "volcano6-gpu-pwrlevels.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Volcano6P SoC";
compatible = "qcom,volcanop";
qcom,msm-id = <641 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,22 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-waipio.h>
#include <dt-bindings/clock/qcom,gpucc-waipio.h>
#include <dt-bindings/clock/qcom,camcc-waipio.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,waipio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "waipio-gpu.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Waipio SoC";
compatible = "qcom,waipio";
qcom,msm-id = <457 0x10000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,284 @@
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
&soc {
msm_gpu: qcom,kgsl-3d0@3d00000 {
compatible = "qcom,adreno-gpu-gen7-0-0", "qcom,kgsl-3d0";
status = "ok";
reg = <0x3d00000 0x40000>, <0x3d61000 0x800>,
<0x03d50000 0x10000>, <0x3d8b000 0x2000>,
<0x03d9e000 0x1000>, <0x10900000 0x80000>;
reg-names = "kgsl_3d0_reg_memory", "cx_dbgc", "rscc",
"isense_cntl", "cx_misc", "qdss_gfx";
interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
clocks = <&clock_gcc GCC_GPU_MEMNOC_GFX_CLK>,
<&clock_gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
<&clock_gpucc GPU_CC_AHB_CLK>,
<&aoss_qmp QDSS_CLK>;
clock-names = "gcc_gpu_memnoc_gfx",
"gcc_gpu_snoc_dvm_gfx",
"gpu_cc_ahb", "apb_pclk";
qcom,gpu-model = "Adreno730v1";
qcom,chipid = <0x07030000>;
qcom,initial-pwrlevel = <8>;
qcom,min-access-length = <32>;
qcom,ubwc-mode = <4>;
qcom,gpu-qdss-stm = <0x161c0000 0x40000>; /* base addr, size */
qcom,tzone-names = "gpuss-0", "gpuss-1";
interconnects = <&gem_noc MASTER_GFX3D &mc_virt SLAVE_EBI1>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-cnoc =
<0>, /* Off */
<100>; /* On */
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(200, 4)>, /* index=1 */
<MHZ_TO_KBPS(451, 4)>, /* index=2 */
<MHZ_TO_KBPS(547, 4)>, /* index=3 */
<MHZ_TO_KBPS(681, 4)>, /* index=4 */
<MHZ_TO_KBPS(768, 4)>, /* index=5 */
<MHZ_TO_KBPS(1555, 4)>, /* index=6 */
<MHZ_TO_KBPS(1708, 4)>, /* index=7 */
<MHZ_TO_KBPS(2092, 4)>, /* index=8 */
<MHZ_TO_KBPS(2736, 4)>, /* index=9 */
<MHZ_TO_KBPS(3196, 4)>, /* index=10 */
<MHZ_TO_KBPS(3350, 4)>; /* index=11 */
zap-shader {
memory-region = <&gpu_micro_code_mem>;
};
/* Power levels */
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels";
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <818000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <11>;
qcom,acd-level = <0x882c5ffd>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <791000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <11>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
qcom,acd-level = <0x882c5ffd>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <734000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <10>;
qcom,bus-min = <9>;
qcom,bus-max = <11>;
qcom,acd-level = <0x882d5ffd>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <640000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <10>;
qcom,bus-min = <6>;
qcom,bus-max = <11>;
qcom,acd-level = <0xa82d5ffd>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <599000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <545000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <8>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <492000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <6>;
qcom,bus-min = <6>;
qcom,bus-max = <8>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <421000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <8>;
qcom,acd-level = <0xa82e5ffd>;
};
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <350000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <2>;
qcom,bus-min = <1>;
qcom,bus-max = <6>;
qcom,acd-level = <0x882f5ffd>;
};
};
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-reserved = <2048>;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-reserved = <1024>;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 128K Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <131072>;
qcom,mempool-reserved = <128>;
};
/* 256K Page Pool configuration */
qcom,gpu-mempool@4 {
reg = <4>;
qcom,mempool-page-size = <262144>;
qcom,mempool-reserved = <80>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@5 {
reg = <5>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
};
kgsl_msm_iommu: qcom,kgsl-iommu@3da0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x03da0000 0x40000>;
vddcx-supply = <&gpu_cc_cx_gdsc>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x0 0x400>;
qcom,iommu-dma = "disabled";
};
gfx3d_lpac: gfx3d_lpac {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x1 0x400>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x2 0x400>;
qcom,iommu-dma = "disabled";
};
};
gmu: qcom,gmu@3d69000 {
compatible = "qcom,gen7-gmu";
reg = <0x3d68000 0x37000>,
<0xb290000 0x10000>,
<0x03D40000 0x10000>;
reg-names = "gmu", "gmu_pdc", "gmu_ao_blk_dec0";
interrupts = <0 304 IRQ_TYPE_LEVEL_HIGH>,
<0 305 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "hfi", "gmu";
regulator-names = "vddcx", "vdd";
vddcx-supply = <&gpu_cc_cx_gdsc>;
vdd-supply = <&gpu_cc_gx_gdsc>;
clocks = <&clock_gpucc GPU_CC_CX_GMU_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_AHB_CLK>,
<&clock_gpucc GPU_CC_HUB_CX_INT_CLK>,
<&aoss_qmp>;
clock-names = "gmu_clk", "cxo_clk", "axi_clk",
"memnoc_clk", "ahb_clk", "hub_clk", "apb_pclk";
iommus = <&kgsl_smmu 0x5 0x400>;
qcom,iommu-dma = "disabled";
mboxes = <&qmp_aop 0>;
mbox-names = "aop";
};
};

View File

@@ -0,0 +1,22 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/qcom,aop-qmp.h>
#include <dt-bindings/clock/qcom,gcc-waipio.h>
#include <dt-bindings/clock/qcom,gpucc-waipio.h>
#include <dt-bindings/clock/qcom,camcc-waipio.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,waipio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "waipio-v2-gpu.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Waipio v2 SoC";
compatible = "qcom,waipio";
qcom,msm-id = <457 0x20000>;
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,137 @@
&msm_gpu {
compatible = "qcom,adreno-gpu-gen7-0-1", "qcom,kgsl-3d0";
qcom,initial-pwrlevel = <9>;
qcom,gpu-model = "Adreno730v2";
qcom,chipid = <0x07030001>;
qcom,gpu-pwrlevels {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-pwrlevels";
qcom,gpu-pwrlevel@0 {
reg = <0>;
qcom,gpu-freq = <818000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_TURBO>;
qcom,bus-freq = <11>;
qcom,bus-min = <11>;
qcom,bus-max = <11>;
qcom,acd-level = <0x882c5ffd>;
};
qcom,gpu-pwrlevel@1 {
reg = <1>;
qcom,gpu-freq = <791000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
qcom,bus-freq = <11>;
qcom,bus-min = <10>;
qcom,bus-max = <11>;
qcom,acd-level = <0x882c5ffd>;
};
qcom,gpu-pwrlevel@2 {
reg = <2>;
qcom,gpu-freq = <734000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_NOM>;
qcom,bus-freq = <10>;
qcom,bus-min = <9>;
qcom,bus-max = <11>;
qcom,acd-level = <0x882d5ffd>;
};
qcom,gpu-pwrlevel@3 {
reg = <3>;
qcom,gpu-freq = <640000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
qcom,bus-freq = <10>;
qcom,bus-min = <6>;
qcom,bus-max = <11>;
qcom,acd-level = <0xa82d5ffd>;
};
qcom,gpu-pwrlevel@4 {
reg = <4>;
qcom,gpu-freq = <599000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
qcom,bus-freq = <8>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@5 {
reg = <5>;
qcom,gpu-freq = <545000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS_L0>;
qcom,bus-freq = <8>;
qcom,bus-min = <6>;
qcom,bus-max = <9>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@6 {
reg = <6>;
qcom,gpu-freq = <492000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_SVS>;
qcom,bus-freq = <6>;
qcom,bus-min = <6>;
qcom,bus-max = <8>;
qcom,acd-level = <0x882e5ffd>;
};
qcom,gpu-pwrlevel@7 {
reg = <7>;
qcom,gpu-freq = <421000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
qcom,bus-freq = <6>;
qcom,bus-min = <3>;
qcom,bus-max = <8>;
qcom,acd-level = <0xa82e5ffd>;
};
qcom,gpu-pwrlevel@8 {
reg = <8>;
qcom,gpu-freq = <350000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
qcom,bus-freq = <3>;
qcom,bus-min = <1>;
qcom,bus-max = <6>;
qcom,acd-level = <0x882f5ffd>;
};
qcom,gpu-pwrlevel@9 {
reg = <9>;
qcom,gpu-freq = <285000000>;
qcom,level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
qcom,bus-freq = <2>;
qcom,bus-min = <1>;
qcom,bus-max = <5>;
qcom,acd-level = <0x882f5ffd>;
};
};
};