1cb7aa33aSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2cb7aa33aSEmmanuel Vadot%YAML 1.2 3cb7aa33aSEmmanuel Vadot--- 4cb7aa33aSEmmanuel Vadot$id: http://devicetree.org/schemas/remoteproc/qcom,msm8916-mss-pil.yaml# 5cb7aa33aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6cb7aa33aSEmmanuel Vadot 7cb7aa33aSEmmanuel Vadottitle: Qualcomm MSM8916 MSS Peripheral Image Loader (and similar) 8cb7aa33aSEmmanuel Vadot 9cb7aa33aSEmmanuel Vadotmaintainers: 10cb7aa33aSEmmanuel Vadot - Stephan Gerhold <stephan@gerhold.net> 11cb7aa33aSEmmanuel Vadot 12cb7aa33aSEmmanuel Vadotdescription: 13cb7aa33aSEmmanuel Vadot This document describes the hardware for a component that loads and boots 14cb7aa33aSEmmanuel Vadot firmware on the Qualcomm MSM8916 Modem Hexagon Core (and similar). 15cb7aa33aSEmmanuel Vadot 16cb7aa33aSEmmanuel Vadotproperties: 17cb7aa33aSEmmanuel Vadot compatible: 18cb7aa33aSEmmanuel Vadot oneOf: 19cb7aa33aSEmmanuel Vadot - enum: 20cb7aa33aSEmmanuel Vadot - qcom,msm8909-mss-pil 21cb7aa33aSEmmanuel Vadot - qcom,msm8916-mss-pil 22cb7aa33aSEmmanuel Vadot - qcom,msm8953-mss-pil 23cb7aa33aSEmmanuel Vadot - qcom,msm8974-mss-pil 24cb7aa33aSEmmanuel Vadot 25cb7aa33aSEmmanuel Vadot - const: qcom,q6v5-pil 26cb7aa33aSEmmanuel Vadot description: Deprecated, prefer using qcom,msm8916-mss-pil 27cb7aa33aSEmmanuel Vadot deprecated: true 28cb7aa33aSEmmanuel Vadot 29cb7aa33aSEmmanuel Vadot reg: 30cb7aa33aSEmmanuel Vadot items: 31cb7aa33aSEmmanuel Vadot - description: MSS QDSP6 registers 32cb7aa33aSEmmanuel Vadot - description: RMB registers 33cb7aa33aSEmmanuel Vadot 34cb7aa33aSEmmanuel Vadot reg-names: 35cb7aa33aSEmmanuel Vadot items: 36cb7aa33aSEmmanuel Vadot - const: qdsp6 37cb7aa33aSEmmanuel Vadot - const: rmb 38cb7aa33aSEmmanuel Vadot 39cb7aa33aSEmmanuel Vadot interrupts: 40cb7aa33aSEmmanuel Vadot items: 41cb7aa33aSEmmanuel Vadot - description: Watchdog interrupt 42cb7aa33aSEmmanuel Vadot - description: Fatal interrupt 43cb7aa33aSEmmanuel Vadot - description: Ready interrupt 44cb7aa33aSEmmanuel Vadot - description: Handover interrupt 45cb7aa33aSEmmanuel Vadot - description: Stop acknowledge interrupt 46cb7aa33aSEmmanuel Vadot 47cb7aa33aSEmmanuel Vadot interrupt-names: 48cb7aa33aSEmmanuel Vadot items: 49cb7aa33aSEmmanuel Vadot - const: wdog 50cb7aa33aSEmmanuel Vadot - const: fatal 51cb7aa33aSEmmanuel Vadot - const: ready 52cb7aa33aSEmmanuel Vadot - const: handover 53cb7aa33aSEmmanuel Vadot - const: stop-ack 54cb7aa33aSEmmanuel Vadot 55cb7aa33aSEmmanuel Vadot clocks: 56cb7aa33aSEmmanuel Vadot items: 57cb7aa33aSEmmanuel Vadot - description: Configuration interface (AXI) clock 58cb7aa33aSEmmanuel Vadot - description: Configuration bus (AHB) clock 59cb7aa33aSEmmanuel Vadot - description: Boot ROM (AHB) clock 60cb7aa33aSEmmanuel Vadot - description: XO proxy clock (control handed over after startup) 61cb7aa33aSEmmanuel Vadot 62cb7aa33aSEmmanuel Vadot clock-names: 63cb7aa33aSEmmanuel Vadot items: 64cb7aa33aSEmmanuel Vadot - const: iface 65cb7aa33aSEmmanuel Vadot - const: bus 66cb7aa33aSEmmanuel Vadot - const: mem 67cb7aa33aSEmmanuel Vadot - const: xo 68cb7aa33aSEmmanuel Vadot 69cb7aa33aSEmmanuel Vadot power-domains: 70cb7aa33aSEmmanuel Vadot items: 71cb7aa33aSEmmanuel Vadot - description: CX proxy power domain (control handed over after startup) 72cb7aa33aSEmmanuel Vadot - description: MX proxy power domain (control handed over after startup) 73cb7aa33aSEmmanuel Vadot - description: MSS proxy power domain (control handed over after startup) 74cb7aa33aSEmmanuel Vadot (only valid for qcom,msm8953-mss-pil) 75cb7aa33aSEmmanuel Vadot minItems: 2 76cb7aa33aSEmmanuel Vadot 77cb7aa33aSEmmanuel Vadot power-domain-names: 78cb7aa33aSEmmanuel Vadot items: 79cb7aa33aSEmmanuel Vadot - const: cx 80cb7aa33aSEmmanuel Vadot - const: mx 81cb7aa33aSEmmanuel Vadot - const: mss # only valid for qcom,msm8953-mss-pil 82cb7aa33aSEmmanuel Vadot minItems: 2 83cb7aa33aSEmmanuel Vadot 84cb7aa33aSEmmanuel Vadot pll-supply: 85cb7aa33aSEmmanuel Vadot description: PLL proxy supply (control handed over after startup) 86cb7aa33aSEmmanuel Vadot 87cb7aa33aSEmmanuel Vadot mss-supply: 88cb7aa33aSEmmanuel Vadot description: MSS power domain supply (only valid for qcom,msm8974-mss-pil) 89cb7aa33aSEmmanuel Vadot 90cb7aa33aSEmmanuel Vadot resets: 91cb7aa33aSEmmanuel Vadot items: 92cb7aa33aSEmmanuel Vadot - description: MSS restart control 93cb7aa33aSEmmanuel Vadot 94cb7aa33aSEmmanuel Vadot reset-names: 95cb7aa33aSEmmanuel Vadot items: 96cb7aa33aSEmmanuel Vadot - const: mss_restart 97cb7aa33aSEmmanuel Vadot 98cb7aa33aSEmmanuel Vadot qcom,smem-states: 99cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle-array 100cb7aa33aSEmmanuel Vadot description: States used by the AP to signal the Hexagon core 101cb7aa33aSEmmanuel Vadot items: 102cb7aa33aSEmmanuel Vadot - description: Stop modem 103cb7aa33aSEmmanuel Vadot 104cb7aa33aSEmmanuel Vadot qcom,smem-state-names: 105cb7aa33aSEmmanuel Vadot description: Names of the states used by the AP to signal the Hexagon core 106cb7aa33aSEmmanuel Vadot items: 107cb7aa33aSEmmanuel Vadot - const: stop 108cb7aa33aSEmmanuel Vadot 109cb7aa33aSEmmanuel Vadot qcom,halt-regs: 110cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle-array 111cb7aa33aSEmmanuel Vadot description: 112cb7aa33aSEmmanuel Vadot Halt registers are used to halt transactions of various sub-components 113cb7aa33aSEmmanuel Vadot within MSS. 114cb7aa33aSEmmanuel Vadot items: 115cb7aa33aSEmmanuel Vadot - items: 116cb7aa33aSEmmanuel Vadot - description: phandle to TCSR syscon region 117cb7aa33aSEmmanuel Vadot - description: offset to the Q6 halt register 118cb7aa33aSEmmanuel Vadot - description: offset to the modem halt register 119cb7aa33aSEmmanuel Vadot - description: offset to the nc halt register 120cb7aa33aSEmmanuel Vadot 121cb7aa33aSEmmanuel Vadot memory-region: 122cb7aa33aSEmmanuel Vadot items: 123cb7aa33aSEmmanuel Vadot - description: MBA reserved region 124cb7aa33aSEmmanuel Vadot - description: MPSS reserved region 125cb7aa33aSEmmanuel Vadot 126cb7aa33aSEmmanuel Vadot firmware-name: 127cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string-array 128cb7aa33aSEmmanuel Vadot items: 129cb7aa33aSEmmanuel Vadot - description: Name of MBA firmware 130cb7aa33aSEmmanuel Vadot - description: Name of modem firmware 131cb7aa33aSEmmanuel Vadot 132cb7aa33aSEmmanuel Vadot bam-dmux: 133cb7aa33aSEmmanuel Vadot $ref: /schemas/net/qcom,bam-dmux.yaml# 134cb7aa33aSEmmanuel Vadot description: 135cb7aa33aSEmmanuel Vadot Qualcomm BAM Data Multiplexer (provides network interface to the modem) 136cb7aa33aSEmmanuel Vadot 137cb7aa33aSEmmanuel Vadot smd-edge: 138cb7aa33aSEmmanuel Vadot $ref: qcom,smd-edge.yaml# 139cb7aa33aSEmmanuel Vadot description: 140cb7aa33aSEmmanuel Vadot Qualcomm SMD subnode which represents communication edge, channels 141cb7aa33aSEmmanuel Vadot and devices related to the DSP. 142cb7aa33aSEmmanuel Vadot properties: 143cb7aa33aSEmmanuel Vadot label: 144cb7aa33aSEmmanuel Vadot enum: 145cb7aa33aSEmmanuel Vadot - modem 146cb7aa33aSEmmanuel Vadot - hexagon 147cb7aa33aSEmmanuel Vadot unevaluatedProperties: false 148cb7aa33aSEmmanuel Vadot 149cb7aa33aSEmmanuel Vadot # Deprecated properties 150cb7aa33aSEmmanuel Vadot cx-supply: 151cb7aa33aSEmmanuel Vadot description: CX power domain regulator supply (prefer using power-domains) 152cb7aa33aSEmmanuel Vadot deprecated: true 153cb7aa33aSEmmanuel Vadot 154cb7aa33aSEmmanuel Vadot mx-supply: 155cb7aa33aSEmmanuel Vadot description: MX power domain regulator supply (prefer using power-domains) 156cb7aa33aSEmmanuel Vadot deprecated: true 157cb7aa33aSEmmanuel Vadot 158cb7aa33aSEmmanuel Vadot mba: 159cb7aa33aSEmmanuel Vadot type: object 160*fac71e4eSEmmanuel Vadot additionalProperties: false 161cb7aa33aSEmmanuel Vadot description: 162cb7aa33aSEmmanuel Vadot MBA reserved region (prefer using memory-region with two items) 163cb7aa33aSEmmanuel Vadot properties: 164cb7aa33aSEmmanuel Vadot memory-region: true 165cb7aa33aSEmmanuel Vadot required: 166cb7aa33aSEmmanuel Vadot - memory-region 167cb7aa33aSEmmanuel Vadot deprecated: true 168cb7aa33aSEmmanuel Vadot 169cb7aa33aSEmmanuel Vadot mpss: 170cb7aa33aSEmmanuel Vadot type: object 171*fac71e4eSEmmanuel Vadot additionalProperties: false 172cb7aa33aSEmmanuel Vadot description: 173cb7aa33aSEmmanuel Vadot MPSS reserved region (prefer using memory-region with two items) 174cb7aa33aSEmmanuel Vadot properties: 175cb7aa33aSEmmanuel Vadot memory-region: true 176cb7aa33aSEmmanuel Vadot required: 177cb7aa33aSEmmanuel Vadot - memory-region 178cb7aa33aSEmmanuel Vadot deprecated: true 179cb7aa33aSEmmanuel Vadot 180cb7aa33aSEmmanuel Vadotrequired: 181cb7aa33aSEmmanuel Vadot - compatible 182cb7aa33aSEmmanuel Vadot - reg 183cb7aa33aSEmmanuel Vadot - reg-names 184cb7aa33aSEmmanuel Vadot - interrupts 185cb7aa33aSEmmanuel Vadot - interrupt-names 186cb7aa33aSEmmanuel Vadot - clocks 187cb7aa33aSEmmanuel Vadot - clock-names 188cb7aa33aSEmmanuel Vadot - pll-supply 189cb7aa33aSEmmanuel Vadot - resets 190cb7aa33aSEmmanuel Vadot - reset-names 191cb7aa33aSEmmanuel Vadot - qcom,halt-regs 192cb7aa33aSEmmanuel Vadot - qcom,smem-states 193cb7aa33aSEmmanuel Vadot - qcom,smem-state-names 194cb7aa33aSEmmanuel Vadot - smd-edge 195cb7aa33aSEmmanuel Vadot 196cb7aa33aSEmmanuel VadotallOf: 197cb7aa33aSEmmanuel Vadot - if: 198cb7aa33aSEmmanuel Vadot properties: 199cb7aa33aSEmmanuel Vadot compatible: 200cb7aa33aSEmmanuel Vadot const: qcom,msm8953-mss-pil 201cb7aa33aSEmmanuel Vadot then: 202cb7aa33aSEmmanuel Vadot properties: 203cb7aa33aSEmmanuel Vadot power-domains: 204cb7aa33aSEmmanuel Vadot minItems: 3 205cb7aa33aSEmmanuel Vadot power-domain-names: 206cb7aa33aSEmmanuel Vadot minItems: 3 207cb7aa33aSEmmanuel Vadot required: 208cb7aa33aSEmmanuel Vadot - power-domains 209cb7aa33aSEmmanuel Vadot - power-domain-names 210cb7aa33aSEmmanuel Vadot else: 211cb7aa33aSEmmanuel Vadot properties: 212cb7aa33aSEmmanuel Vadot power-domains: 213cb7aa33aSEmmanuel Vadot maxItems: 2 214cb7aa33aSEmmanuel Vadot power-domain-names: 215cb7aa33aSEmmanuel Vadot maxItems: 2 216cb7aa33aSEmmanuel Vadot 217cb7aa33aSEmmanuel Vadot - if: 218cb7aa33aSEmmanuel Vadot properties: 219cb7aa33aSEmmanuel Vadot compatible: 220cb7aa33aSEmmanuel Vadot const: qcom,msm8974-mss-pil 221cb7aa33aSEmmanuel Vadot then: 222cb7aa33aSEmmanuel Vadot required: 223cb7aa33aSEmmanuel Vadot - mss-supply 224cb7aa33aSEmmanuel Vadot else: 225cb7aa33aSEmmanuel Vadot properties: 226cb7aa33aSEmmanuel Vadot mss-supply: false 227cb7aa33aSEmmanuel Vadot 228cb7aa33aSEmmanuel Vadot # Fallbacks for deprecated properties 229cb7aa33aSEmmanuel Vadot - oneOf: 230cb7aa33aSEmmanuel Vadot - required: 231cb7aa33aSEmmanuel Vadot - memory-region 232cb7aa33aSEmmanuel Vadot - required: 233cb7aa33aSEmmanuel Vadot - mba 234cb7aa33aSEmmanuel Vadot - mpss 235cb7aa33aSEmmanuel Vadot - oneOf: 236cb7aa33aSEmmanuel Vadot - required: 237cb7aa33aSEmmanuel Vadot - power-domains 238cb7aa33aSEmmanuel Vadot - power-domain-names 239cb7aa33aSEmmanuel Vadot - required: 240cb7aa33aSEmmanuel Vadot - cx-supply 241cb7aa33aSEmmanuel Vadot - mx-supply 242cb7aa33aSEmmanuel Vadot 243cb7aa33aSEmmanuel VadotadditionalProperties: false 244cb7aa33aSEmmanuel Vadot 245cb7aa33aSEmmanuel Vadotexamples: 246cb7aa33aSEmmanuel Vadot - | 247cb7aa33aSEmmanuel Vadot #include <dt-bindings/clock/qcom,gcc-msm8916.h> 248cb7aa33aSEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 249cb7aa33aSEmmanuel Vadot #include <dt-bindings/power/qcom-rpmpd.h> 250cb7aa33aSEmmanuel Vadot 251cb7aa33aSEmmanuel Vadot remoteproc_mpss: remoteproc@4080000 { 252cb7aa33aSEmmanuel Vadot compatible = "qcom,msm8916-mss-pil"; 253cb7aa33aSEmmanuel Vadot reg = <0x04080000 0x100>, <0x04020000 0x40>; 254cb7aa33aSEmmanuel Vadot reg-names = "qdsp6", "rmb"; 255cb7aa33aSEmmanuel Vadot 256cb7aa33aSEmmanuel Vadot interrupts-extended = <&intc GIC_SPI 24 IRQ_TYPE_EDGE_RISING>, 257cb7aa33aSEmmanuel Vadot <&hexagon_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, 258cb7aa33aSEmmanuel Vadot <&hexagon_smp2p_in 1 IRQ_TYPE_EDGE_RISING>, 259cb7aa33aSEmmanuel Vadot <&hexagon_smp2p_in 2 IRQ_TYPE_EDGE_RISING>, 260cb7aa33aSEmmanuel Vadot <&hexagon_smp2p_in 3 IRQ_TYPE_EDGE_RISING>; 261cb7aa33aSEmmanuel Vadot interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack"; 262cb7aa33aSEmmanuel Vadot 263cb7aa33aSEmmanuel Vadot qcom,smem-states = <&hexagon_smp2p_out 0>; 264cb7aa33aSEmmanuel Vadot qcom,smem-state-names = "stop"; 265cb7aa33aSEmmanuel Vadot qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>; 266cb7aa33aSEmmanuel Vadot 267cb7aa33aSEmmanuel Vadot clocks = <&gcc GCC_MSS_CFG_AHB_CLK>, 268cb7aa33aSEmmanuel Vadot <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>, 269cb7aa33aSEmmanuel Vadot <&gcc GCC_BOOT_ROM_AHB_CLK>, 270cb7aa33aSEmmanuel Vadot <&xo_board>; 271cb7aa33aSEmmanuel Vadot clock-names = "iface", "bus", "mem", "xo"; 272cb7aa33aSEmmanuel Vadot 273cb7aa33aSEmmanuel Vadot power-domains = <&rpmpd MSM8916_VDDCX>, <&rpmpd MSM8916_VDDMX>; 274cb7aa33aSEmmanuel Vadot power-domain-names = "cx", "mx"; 275cb7aa33aSEmmanuel Vadot pll-supply = <&pm8916_l7>; 276cb7aa33aSEmmanuel Vadot 277cb7aa33aSEmmanuel Vadot resets = <&scm 0>; 278cb7aa33aSEmmanuel Vadot reset-names = "mss_restart"; 279cb7aa33aSEmmanuel Vadot 280cb7aa33aSEmmanuel Vadot memory-region = <&mba_mem>, <&mpss_mem>; 281cb7aa33aSEmmanuel Vadot 282cb7aa33aSEmmanuel Vadot smd-edge { 283cb7aa33aSEmmanuel Vadot interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>; 284cb7aa33aSEmmanuel Vadot 285cb7aa33aSEmmanuel Vadot qcom,smd-edge = <0>; 286cb7aa33aSEmmanuel Vadot qcom,ipc = <&apcs 8 12>; 287cb7aa33aSEmmanuel Vadot qcom,remote-pid = <1>; 288cb7aa33aSEmmanuel Vadot 289cb7aa33aSEmmanuel Vadot label = "hexagon"; 290cb7aa33aSEmmanuel Vadot }; 291cb7aa33aSEmmanuel Vadot }; 292