18c2ecf20Sopenharmony_ciNVIDIA Tegra Boot and Power Management Processor (BPMP) 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ciThe BPMP is a specific processor in Tegra chip, which is designed for 48c2ecf20Sopenharmony_cibooting process handling and offloading the power management, clock 58c2ecf20Sopenharmony_cimanagement, and reset control tasks from the CPU. The binding document 68c2ecf20Sopenharmony_cidefines the resources that would be used by the BPMP firmware driver, 78c2ecf20Sopenharmony_ciwhich can create the interprocessor communication (IPC) between the CPU 88c2ecf20Sopenharmony_ciand BPMP. 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ciRequired properties: 118c2ecf20Sopenharmony_ci- compatible 128c2ecf20Sopenharmony_ci Array of strings 138c2ecf20Sopenharmony_ci One of: 148c2ecf20Sopenharmony_ci - "nvidia,tegra186-bpmp" 158c2ecf20Sopenharmony_ci- mboxes : The phandle of mailbox controller and the mailbox specifier. 168c2ecf20Sopenharmony_ci- shmem : List of the phandle of the TX and RX shared memory area that 178c2ecf20Sopenharmony_ci the IPC between CPU and BPMP is based on. 188c2ecf20Sopenharmony_ci- #clock-cells : Should be 1. 198c2ecf20Sopenharmony_ci- #power-domain-cells : Should be 1. 208c2ecf20Sopenharmony_ci- #reset-cells : Should be 1. 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ciThis node is a mailbox consumer. See the following files for details of 238c2ecf20Sopenharmony_cithe mailbox subsystem, and the specifiers implemented by the relevant 248c2ecf20Sopenharmony_ciprovider(s): 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci- .../mailbox/mailbox.txt 278c2ecf20Sopenharmony_ci- .../mailbox/nvidia,tegra186-hsp.txt 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ciThis node is a clock, power domain, and reset provider. See the following 308c2ecf20Sopenharmony_cifiles for general documentation of those features, and the specifiers 318c2ecf20Sopenharmony_ciimplemented by this node: 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci- .../clock/clock-bindings.txt 348c2ecf20Sopenharmony_ci- <dt-bindings/clock/tegra186-clock.h> 358c2ecf20Sopenharmony_ci- ../power/power-domain.yaml 368c2ecf20Sopenharmony_ci- <dt-bindings/power/tegra186-powergate.h> 378c2ecf20Sopenharmony_ci- .../reset/reset.txt 388c2ecf20Sopenharmony_ci- <dt-bindings/reset/tegra186-reset.h> 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ciThe BPMP implements some services which must be represented by separate nodes. 418c2ecf20Sopenharmony_ciFor example, it can provide access to certain I2C controllers, and the I2C 428c2ecf20Sopenharmony_cibindings represent each I2C controller as a device tree node. Such nodes should 438c2ecf20Sopenharmony_cibe nested directly inside the main BPMP node. 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ciSoftware can determine whether a child node of the BPMP node represents a device 468c2ecf20Sopenharmony_ciby checking for a compatible property. Any node with a compatible property 478c2ecf20Sopenharmony_cirepresents a device that can be instantiated. Nodes without a compatible 488c2ecf20Sopenharmony_ciproperty may be used to provide configuration information regarding the BPMP 498c2ecf20Sopenharmony_ciitself, although no such configuration nodes are currently defined by this 508c2ecf20Sopenharmony_cibinding. 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ciThe BPMP firmware defines no single global name-/numbering-space for such 538c2ecf20Sopenharmony_ciservices. Put another way, the numbering scheme for I2C buses is distinct from 548c2ecf20Sopenharmony_cithe numbering scheme for any other service the BPMP may provide (e.g. a future 558c2ecf20Sopenharmony_cihypothetical SPI bus service). As such, child device nodes will have no reg 568c2ecf20Sopenharmony_ciproperty, and the BPMP node will have no #address-cells or #size-cells property. 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ciThe shared memory bindings for BPMP 598c2ecf20Sopenharmony_ci----------------------------------- 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ciThe shared memory area for the IPC TX and RX between CPU and BPMP are 628c2ecf20Sopenharmony_cipredefined and work on top of sysram, which is an SRAM inside the chip. 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_ciSee ".../sram/sram.txt" for the bindings. 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ciExample: 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_cihsp_top0: hsp@3c00000 { 698c2ecf20Sopenharmony_ci ... 708c2ecf20Sopenharmony_ci #mbox-cells = <2>; 718c2ecf20Sopenharmony_ci}; 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_cisysram@30000000 { 748c2ecf20Sopenharmony_ci compatible = "nvidia,tegra186-sysram", "mmio-sram"; 758c2ecf20Sopenharmony_ci reg = <0x0 0x30000000 0x0 0x50000>; 768c2ecf20Sopenharmony_ci #address-cells = <2>; 778c2ecf20Sopenharmony_ci #size-cells = <2>; 788c2ecf20Sopenharmony_ci ranges = <0 0x0 0x0 0x30000000 0x0 0x50000>; 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ci cpu_bpmp_tx: shmem@4e000 { 818c2ecf20Sopenharmony_ci compatible = "nvidia,tegra186-bpmp-shmem"; 828c2ecf20Sopenharmony_ci reg = <0x0 0x4e000 0x0 0x1000>; 838c2ecf20Sopenharmony_ci label = "cpu-bpmp-tx"; 848c2ecf20Sopenharmony_ci pool; 858c2ecf20Sopenharmony_ci }; 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ci cpu_bpmp_rx: shmem@4f000 { 888c2ecf20Sopenharmony_ci compatible = "nvidia,tegra186-bpmp-shmem"; 898c2ecf20Sopenharmony_ci reg = <0x0 0x4f000 0x0 0x1000>; 908c2ecf20Sopenharmony_ci label = "cpu-bpmp-rx"; 918c2ecf20Sopenharmony_ci pool; 928c2ecf20Sopenharmony_ci }; 938c2ecf20Sopenharmony_ci}; 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_cibpmp { 968c2ecf20Sopenharmony_ci compatible = "nvidia,tegra186-bpmp"; 978c2ecf20Sopenharmony_ci mboxes = <&hsp_top0 TEGRA_HSP_MBOX_TYPE_DB TEGRA_HSP_DB_MASTER_BPMP>; 988c2ecf20Sopenharmony_ci shmem = <&cpu_bpmp_tx &cpu_bpmp_rx>; 998c2ecf20Sopenharmony_ci #clock-cells = <1>; 1008c2ecf20Sopenharmony_ci #power-domain-cells = <1>; 1018c2ecf20Sopenharmony_ci #reset-cells = <1>; 1028c2ecf20Sopenharmony_ci 1038c2ecf20Sopenharmony_ci i2c { 1048c2ecf20Sopenharmony_ci compatible = "..."; 1058c2ecf20Sopenharmony_ci ... 1068c2ecf20Sopenharmony_ci }; 1078c2ecf20Sopenharmony_ci}; 108