blob: 450e4d6ee8f0490b028cc725088b7418f5a2723d [file] [log] [blame]
* Qualcomm Technologies, Inc. MSM CPP
Required properties:
- cell-index: cpp hardware core index
- compatible :
- "qcom,cpp"
- reg : offset and length of the register set for the device
for the cpp operating in compatible mode.
- reg-names : should specify relevant names to each reg property defined.
- cpp - has CPP MICRO register set.
- cpp_vbif - has VBIF core register set used by CPP.
- cpp_hw - has CPP hardware register set.
- interrupts : should contain the cpp interrupt.
- interrupt-names : should specify relevant names to each interrupts
property defined.
- vdd-supply: phandle to GDSC regulator controlling VFE & CPP core.
- clocks: list of phandles to the clock controller device and coresponding
clock names.
- clock-names: name of the clocks required for the device used by the consumer.
- qcom,clock-rates: clock rate in Hz.
- qcom,min-clock-rate: minimum clock rate in Hz, to be set to CPP hardware in
case dynamic clock scaling based on prevalent streams need lower clock rate.
- qcom,cpp-fw-payload-info: Child node for cpp node having infomration on
cpp firmware payload offsets. This is mandatory node.
- resets: reset specifier pair consists of phandle for the reset controller
and reset lines used by this controller.
- reset-names: reset signal name strings sorted in the same order as the resets
property.
- qcom,src-clock-rates = This is an array which holds clock rates for cpp src
clocks. The maximum size for the array is 10.
Required properties of the child node:
- qcom,stripe-base = Base offset of stripes in cpp payload.
- qcom,plane-base = Base offset of planes in cpp payload.
- qcom,stripe-size = size of each stripe in payload.
- qcom,plane-size = size of each plane in payload.
- qcom,fe-ptr-off = offset from stripe base to fetch engine address
location in payload.
- qcom,we-ptr-off = offset from stripe base to write engine address
location in payload.
Optional properties of the child node:
- qcom,ref-fe-ptr-off = offset from stripe base to reference fetch engine
address location in payload.
- qcom,ref-we-ptr-off = offset from stripe base to reference write engine
address location in payload.
- qcom,we-meta-ptr-off = offset from stripe base to metadata address
location in payload.
- qcom,fe-mmu-pf-ptr-off = offset from plane base to fetch engine mmu prefetch
address min location in payload.
- qcom,ref-fe-mmu-pf-ptr-off = offset from plane base to reference fetch engine
mmu prefetch address min location in payload.
- qcom,we-mmu-pf-ptr-off = offset from plane base to write engine mmu prefetch
address min location in payload.
- qcom,dup-we-mmu-pf-ptr-off = offset from plane base to duplicate write engine
mmu prefetch address min location in payload.
- qcom,ref-we-mmu-pf-ptr-off = offset from plane base to reference write engine
mmu prefetch address min location in payload.
- qcom,set-group-buffer-len = length/size of set group buffer command used for
hfr.
- qcom,dup-frame-indicator-off = offset for duplicate frame indicator in a
batch for frames
Optional properties:
- mmagic-vdd-supply: phandle to GDSC regulator controlling mmagic.
- camss-vdd-supply: phandle to GDSC regulator controlling camss.
- qcom,bus-master: Flag for presence of CPP bus master. It has to be set only for
platforms that support such feature.
- qcom,vbif-setting: The offset and value for vbif core qos registers.
The first entry is register offset and second entry is register value.
- qcom,micro-reset: Boolean flag indicating if micro reset need to be enabled.
This needs to present on platforms that support this feature.
- qcom,cpp-cx-ipeak: To handle Cx peak current limit.
<phandle bit>
phandle - phandle of cx ipeak device node
bit - bit number of client in relevant register
This is used to access Cx ipeak HW module to limit the current drawn by
various subsystem blocks on Cx power rail. CPP set their bit in tcsr register
if it is going to cross its own threshold.
Example:
qcom,cpp@fda04000 {
cell-index = <0>;
compatible = "qcom,cpp";
reg = <0xfda04000 0x100>,
<0xfda80000 0x200>,
<0xfda18000 0x008>,
<0xfd8c36D4 0x4>;
reg-names = "cpp", "cpp_vbif", "cpp_hw", "camss_cpp";
interrupts = <0 49 0>;
interrupt-names = "cpp";
mmagic-vdd-supply = <&gdsc_mmagic_camss>;
camss-vdd-supply = <&gdsc_camss_top>;
vdd-supply = <&gdsc_cpp>;
clocks = <&clock_mmss clk_mmss_mmagic_ahb_clk>,
<&clock_gcc clk_mmssnoc_axi_clk>,
<&clock_mmss clk_mmagic_camss_axi_clk>,
<&clock_mmss clk_camss_top_ahb_clk>,
<&clock_mmss clk_cpp_clk_src>,
<&clock_mmss clk_camss_cpp_ahb_clk>,
<&clock_mmss clk_camss_cpp_axi_clk>,
<&clock_mmss clk_camss_cpp_clk>,
<&clock_mmss clk_camss_micro_ahb_clk>,
<&clock_mmss clk_camss_ahb_clk>;
<&clock_mmss clk_smmu_cpp_axi_clk>,
<&clock_mmss clk_camss_cpp_vbif_ahb_clk>,
clock-names = "mmss_mmagic_ahb_clk", "mmssnoc_axi_clk",
"mmagic_camss_axi_clk", "camss_top_ahb_clk",
"cpp_core_clk", "camss_cpp_ahb_clk",
"camss_cpp_axi_clk", "camss_cpp_clk",
"micro_iface_clk", "camss_ahb_clk";
"smmu_cpp_axi_clk", "cpp_vbif_ahb_clk";
qcom,clock-rates = <0 0 0 0 465000000 0 0 465000000 0 0 0 0>;
qcom,cpp-cx-ipeak = <&cx_ipeak_lm 2>;
qcom,min-clock-rate = <320000000>;
qcom,bus-master = <1>;
qcom,vbif-qos-setting = <0x20 0x10000000>,
<0x24 0x10000000>,
<0x28 0x10000000>,
<0x2C 0x10000000>;
qcom,src-clock-rates = <100000000 200000000 384000000 404000000
480000000 576000000 600000000>;
qcom,micro-reset;
qcom,cpp-fw-payload-info {
qcom,stripe-base = <553>;
qcom,plane-base = <481>;
qcom,stripe-size = <61>;
qcom,plane-size = <24>;
qcom,fe-ptr-off = <11>;
qcom,we-ptr-off = <23>;
qcom,ref-fe-ptr-off = <17>;
qcom,ref-we-ptr-off = <36>;
qcom,we-meta-ptr-off = <42>;
qcom,fe-mmu-pf-ptr-off = <6>;
qcom,ref-fe-mmu-pf-ptr-off = <9>;
qcom,we-mmu-pf-ptr-off = <12>;
qcom,dup-we-mmu-pf-ptr-off = <17>;
qcom,ref-we-mmu-pf-ptr-off = <22>;
qcom,set-group-buffer-len = <135>;
qcom,dup-frame-indicator-off = <70>;
resets = <&clock_mmss MMSS_CAMSS_MICRO_BCR>;
reset-names = "micro_iface_reset";
};
};