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