xref: /freebsd-src/sys/contrib/device-tree/Bindings/remoteproc/qcom,hexagon-v56.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotQualcomm Technology Inc. Hexagon v56 Peripheral Image Loader
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotThis document defines the binding for a component that loads and boots firmware
4*c66ec88fSEmmanuel Vadoton the Qualcomm Technology Inc. Hexagon v56 core.
5*c66ec88fSEmmanuel Vadot
6*c66ec88fSEmmanuel Vadot- compatible:
7*c66ec88fSEmmanuel Vadot	Usage: required
8*c66ec88fSEmmanuel Vadot	Value type: <string>
9*c66ec88fSEmmanuel Vadot	Definition: must be one of:
10*c66ec88fSEmmanuel Vadot		    "qcom,qcs404-cdsp-pil",
11*c66ec88fSEmmanuel Vadot		    "qcom,sdm845-adsp-pil"
12*c66ec88fSEmmanuel Vadot
13*c66ec88fSEmmanuel Vadot- reg:
14*c66ec88fSEmmanuel Vadot	Usage: required
15*c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
16*c66ec88fSEmmanuel Vadot	Definition: must specify the base address and size of the qdsp6ss register
17*c66ec88fSEmmanuel Vadot
18*c66ec88fSEmmanuel Vadot- interrupts-extended:
19*c66ec88fSEmmanuel Vadot	Usage: required
20*c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
21*c66ec88fSEmmanuel Vadot	Definition: must list the watchdog, fatal IRQs ready, handover and
22*c66ec88fSEmmanuel Vadot		    stop-ack IRQs
23*c66ec88fSEmmanuel Vadot
24*c66ec88fSEmmanuel Vadot- interrupt-names:
25*c66ec88fSEmmanuel Vadot	Usage: required
26*c66ec88fSEmmanuel Vadot	Value type: <stringlist>
27*c66ec88fSEmmanuel Vadot	Definition: must be "wdog", "fatal", "ready", "handover", "stop-ack"
28*c66ec88fSEmmanuel Vadot
29*c66ec88fSEmmanuel Vadot- clocks:
30*c66ec88fSEmmanuel Vadot	Usage: required
31*c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
32*c66ec88fSEmmanuel Vadot	Definition:  List of phandles and clock specifier pairs for the Hexagon,
33*c66ec88fSEmmanuel Vadot		     per clock-names below.
34*c66ec88fSEmmanuel Vadot
35*c66ec88fSEmmanuel Vadot- clock-names:
36*c66ec88fSEmmanuel Vadot	Usage: required for SDM845 ADSP
37*c66ec88fSEmmanuel Vadot	Value type: <stringlist>
38*c66ec88fSEmmanuel Vadot	Definition: List of clock input name strings sorted in the same
39*c66ec88fSEmmanuel Vadot		    order as the clocks property. Definition must have
40*c66ec88fSEmmanuel Vadot		    "xo", "sway_cbcr", "lpass_ahbs_aon_cbcr",
41*c66ec88fSEmmanuel Vadot		    "lpass_ahbm_aon_cbcr", "qdsp6ss_xo", "qdsp6ss_sleep"
42*c66ec88fSEmmanuel Vadot		    and "qdsp6ss_core".
43*c66ec88fSEmmanuel Vadot
44*c66ec88fSEmmanuel Vadot- clock-names:
45*c66ec88fSEmmanuel Vadot	Usage: required for QCS404 CDSP
46*c66ec88fSEmmanuel Vadot	Value type: <stringlist>
47*c66ec88fSEmmanuel Vadot	Definition: List of clock input name strings sorted in the same
48*c66ec88fSEmmanuel Vadot		    order as the clocks property. Definition must have
49*c66ec88fSEmmanuel Vadot		    "xo", "sway", "tbu", "bimc", "ahb_aon", "q6ss_slave",
50*c66ec88fSEmmanuel Vadot		    "q6ss_master", "q6_axim".
51*c66ec88fSEmmanuel Vadot
52*c66ec88fSEmmanuel Vadot- power-domains:
53*c66ec88fSEmmanuel Vadot	Usage: required
54*c66ec88fSEmmanuel Vadot	Value type: <phandle>
55*c66ec88fSEmmanuel Vadot	Definition: reference to cx power domain node.
56*c66ec88fSEmmanuel Vadot
57*c66ec88fSEmmanuel Vadot- resets:
58*c66ec88fSEmmanuel Vadot	Usage: required
59*c66ec88fSEmmanuel Vadot	Value type: <phandle>
60*c66ec88fSEmmanuel Vadot	Definition: reference to the list of resets for the Hexagon.
61*c66ec88fSEmmanuel Vadot
62*c66ec88fSEmmanuel Vadot- reset-names:
63*c66ec88fSEmmanuel Vadot        Usage: required for SDM845 ADSP
64*c66ec88fSEmmanuel Vadot        Value type: <stringlist>
65*c66ec88fSEmmanuel Vadot        Definition: must be "pdc_sync" and "cc_lpass"
66*c66ec88fSEmmanuel Vadot
67*c66ec88fSEmmanuel Vadot- reset-names:
68*c66ec88fSEmmanuel Vadot        Usage: required for QCS404 CDSP
69*c66ec88fSEmmanuel Vadot        Value type: <stringlist>
70*c66ec88fSEmmanuel Vadot        Definition: must be "restart"
71*c66ec88fSEmmanuel Vadot
72*c66ec88fSEmmanuel Vadot- qcom,halt-regs:
73*c66ec88fSEmmanuel Vadot	Usage: required
74*c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
75*c66ec88fSEmmanuel Vadot	Definition: a phandle reference to a syscon representing TCSR followed
76*c66ec88fSEmmanuel Vadot		    by the offset within syscon for Hexagon halt register.
77*c66ec88fSEmmanuel Vadot
78*c66ec88fSEmmanuel Vadot- memory-region:
79*c66ec88fSEmmanuel Vadot	Usage: required
80*c66ec88fSEmmanuel Vadot	Value type: <phandle>
81*c66ec88fSEmmanuel Vadot	Definition: reference to the reserved-memory for the firmware
82*c66ec88fSEmmanuel Vadot
83*c66ec88fSEmmanuel Vadot- qcom,smem-states:
84*c66ec88fSEmmanuel Vadot	Usage: required
85*c66ec88fSEmmanuel Vadot	Value type: <phandle>
86*c66ec88fSEmmanuel Vadot	Definition: reference to the smem state for requesting the Hexagon to
87*c66ec88fSEmmanuel Vadot		    shut down
88*c66ec88fSEmmanuel Vadot
89*c66ec88fSEmmanuel Vadot- qcom,smem-state-names:
90*c66ec88fSEmmanuel Vadot	Usage: required
91*c66ec88fSEmmanuel Vadot	Value type: <stringlist>
92*c66ec88fSEmmanuel Vadot	Definition: must be "stop"
93*c66ec88fSEmmanuel Vadot
94*c66ec88fSEmmanuel Vadot
95*c66ec88fSEmmanuel Vadot= SUBNODES
96*c66ec88fSEmmanuel VadotThe adsp node may have an subnode named "glink-edge" that describes the
97*c66ec88fSEmmanuel Vadotcommunication edge, channels and devices related to the Hexagon.
98*c66ec88fSEmmanuel VadotSee ../soc/qcom/qcom,glink.txt for details on how to describe these.
99*c66ec88fSEmmanuel Vadot
100*c66ec88fSEmmanuel Vadot= EXAMPLE
101*c66ec88fSEmmanuel VadotThe following example describes the resources needed to boot control the
102*c66ec88fSEmmanuel VadotADSP, as it is found on SDM845 boards.
103*c66ec88fSEmmanuel Vadot
104*c66ec88fSEmmanuel Vadot	remoteproc@17300000 {
105*c66ec88fSEmmanuel Vadot		compatible = "qcom,sdm845-adsp-pil";
106*c66ec88fSEmmanuel Vadot		reg = <0x17300000 0x40c>;
107*c66ec88fSEmmanuel Vadot
108*c66ec88fSEmmanuel Vadot		interrupts-extended = <&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
109*c66ec88fSEmmanuel Vadot			<&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
110*c66ec88fSEmmanuel Vadot			<&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
111*c66ec88fSEmmanuel Vadot			<&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
112*c66ec88fSEmmanuel Vadot			<&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
113*c66ec88fSEmmanuel Vadot		interrupt-names = "wdog", "fatal", "ready",
114*c66ec88fSEmmanuel Vadot			"handover", "stop-ack";
115*c66ec88fSEmmanuel Vadot
116*c66ec88fSEmmanuel Vadot		clocks = <&rpmhcc RPMH_CXO_CLK>,
117*c66ec88fSEmmanuel Vadot			<&gcc GCC_LPASS_SWAY_CLK>,
118*c66ec88fSEmmanuel Vadot			<&lpasscc LPASS_Q6SS_AHBS_AON_CLK>,
119*c66ec88fSEmmanuel Vadot			<&lpasscc LPASS_Q6SS_AHBM_AON_CLK>,
120*c66ec88fSEmmanuel Vadot			<&lpasscc LPASS_QDSP6SS_XO_CLK>,
121*c66ec88fSEmmanuel Vadot			<&lpasscc LPASS_QDSP6SS_SLEEP_CLK>,
122*c66ec88fSEmmanuel Vadot			<&lpasscc LPASS_QDSP6SS_CORE_CLK>;
123*c66ec88fSEmmanuel Vadot		clock-names = "xo", "sway_cbcr",
124*c66ec88fSEmmanuel Vadot			"lpass_ahbs_aon_cbcr",
125*c66ec88fSEmmanuel Vadot			"lpass_ahbm_aon_cbcr", "qdsp6ss_xo",
126*c66ec88fSEmmanuel Vadot			"qdsp6ss_sleep", "qdsp6ss_core";
127*c66ec88fSEmmanuel Vadot
128*c66ec88fSEmmanuel Vadot		power-domains = <&rpmhpd SDM845_CX>;
129*c66ec88fSEmmanuel Vadot
130*c66ec88fSEmmanuel Vadot		resets = <&pdc_reset PDC_AUDIO_SYNC_RESET>,
131*c66ec88fSEmmanuel Vadot			 <&aoss_reset AOSS_CC_LPASS_RESTART>;
132*c66ec88fSEmmanuel Vadot		reset-names = "pdc_sync", "cc_lpass";
133*c66ec88fSEmmanuel Vadot
134*c66ec88fSEmmanuel Vadot		qcom,halt-regs = <&tcsr_mutex_regs 0x22000>;
135*c66ec88fSEmmanuel Vadot
136*c66ec88fSEmmanuel Vadot		memory-region = <&pil_adsp_mem>;
137*c66ec88fSEmmanuel Vadot
138*c66ec88fSEmmanuel Vadot		qcom,smem-states = <&adsp_smp2p_out 0>;
139*c66ec88fSEmmanuel Vadot		qcom,smem-state-names = "stop";
140*c66ec88fSEmmanuel Vadot	};
141