xref: /rk3399_rockchip-uboot/doc/device-tree-bindings/firmware/nvidia,tegra186-bpmp.txt (revision 7edb17670cdca0ee5de8b8eb61753ad6b7fc33e6)
17b9cb494SStephen WarrenNVIDIA Tegra Boot and Power Management Processor (BPMP)
27b9cb494SStephen Warren
37b9cb494SStephen WarrenThe BPMP is a specific processor in Tegra chip, which is designed for
47b9cb494SStephen Warrenbooting process handling and offloading the power management, clock
57b9cb494SStephen Warrenmanagement, and reset control tasks from the CPU. The binding document
67b9cb494SStephen Warrendefines the resources that would be used by the BPMP firmware driver,
77b9cb494SStephen Warrenwhich can create the interprocessor communication (IPC) between the CPU
87b9cb494SStephen Warrenand BPMP.
97b9cb494SStephen Warren
107b9cb494SStephen WarrenRequired properties:
117b9cb494SStephen Warren- name : Should be bpmp
127b9cb494SStephen Warren- compatible
137b9cb494SStephen Warren    Array of strings
147b9cb494SStephen Warren    One of:
157b9cb494SStephen Warren    - "nvidia,tegra186-bpmp"
167b9cb494SStephen Warren- mboxes : The phandle of mailbox controller and the mailbox specifier.
177b9cb494SStephen Warren- shmem : List of the phandle of the TX and RX shared memory area that
187b9cb494SStephen Warren	  the IPC between CPU and BPMP is based on.
197b9cb494SStephen Warren- #clock-cells : Should be 1.
207b9cb494SStephen Warren- #power-domain-cells : Should be 1.
217b9cb494SStephen Warren- #reset-cells : Should be 1.
227b9cb494SStephen Warren
237b9cb494SStephen WarrenThis node is a mailbox consumer. See the following files for details of
247b9cb494SStephen Warrenthe mailbox subsystem, and the specifiers implemented by the relevant
257b9cb494SStephen Warrenprovider(s):
267b9cb494SStephen Warren
277b9cb494SStephen Warren- .../mailbox/mailbox.txt
287b9cb494SStephen Warren- .../mailbox/nvidia,tegra186-hsp.txt
297b9cb494SStephen Warren
307b9cb494SStephen WarrenThis node is a clock, power domain, and reset provider. See the following
317b9cb494SStephen Warrenfiles for general documentation of those features, and the specifiers
327b9cb494SStephen Warrenimplemented by this node:
337b9cb494SStephen Warren
347b9cb494SStephen Warren- .../clock/clock-bindings.txt
357b9cb494SStephen Warren- <dt-bindings/clock/tegra186-clock.h>
367b9cb494SStephen Warren- ../power/power_domain.txt
377b9cb494SStephen Warren- <dt-bindings/power/tegra186-powergate.h>
387b9cb494SStephen Warren- .../reset/reset.txt
397b9cb494SStephen Warren- <dt-bindings/reset/tegra186-reset.h>
407b9cb494SStephen Warren
41*390ae57cSStephen WarrenThe BPMP implements some services which must be represented by separate nodes.
42*390ae57cSStephen WarrenFor example, it can provide access to certain I2C controllers, and the I2C
43*390ae57cSStephen Warrenbindings represent each I2C controller as a device tree node. Such nodes should
44*390ae57cSStephen Warrenbe nested directly inside the main BPMP node.
45*390ae57cSStephen Warren
46*390ae57cSStephen WarrenSoftware can determine whether a child node of the BPMP node represents a device
47*390ae57cSStephen Warrenby checking for a compatible property. Any node with a compatible property
48*390ae57cSStephen Warrenrepresents a device that can be instantiated. Nodes without a compatible
49*390ae57cSStephen Warrenproperty may be used to provide configuration information regarding the BPMP
50*390ae57cSStephen Warrenitself, although no such configuration nodes are currently defined by this
51*390ae57cSStephen Warrenbinding.
52*390ae57cSStephen Warren
53*390ae57cSStephen WarrenThe BPMP firmware defines no single global name-/numbering-space for such
54*390ae57cSStephen Warrenservices. Put another way, the numbering scheme for I2C buses is distinct from
55*390ae57cSStephen Warrenthe numbering scheme for any other service the BPMP may provide (e.g. a future
56*390ae57cSStephen Warrenhypothetical SPI bus service). As such, child device nodes will have no reg
57*390ae57cSStephen Warrenproperty, and the BPMP node will have no #address-cells or #size-cells property.
58*390ae57cSStephen Warren
597b9cb494SStephen WarrenThe shared memory bindings for BPMP
607b9cb494SStephen Warren-----------------------------------
617b9cb494SStephen Warren
627b9cb494SStephen WarrenThe shared memory area for the IPC TX and RX between CPU and BPMP are
637b9cb494SStephen Warrenpredefined and work on top of sysram, which is an SRAM inside the chip.
647b9cb494SStephen Warren
657b9cb494SStephen WarrenSee ".../sram/sram.txt" for the bindings.
667b9cb494SStephen Warren
677b9cb494SStephen WarrenExample:
687b9cb494SStephen Warren
697b9cb494SStephen Warrenhsp_top0: hsp@03c00000 {
707b9cb494SStephen Warren	...
717b9cb494SStephen Warren	#mbox-cells = <2>;
727b9cb494SStephen Warren};
737b9cb494SStephen Warren
747b9cb494SStephen Warrensysram@30000000 {
757b9cb494SStephen Warren	compatible = "nvidia,tegra186-sysram", "mmio-sram";
767b9cb494SStephen Warren	reg = <0x0 0x30000000 0x0 0x50000>;
777b9cb494SStephen Warren	#address-cells = <2>;
787b9cb494SStephen Warren	#size-cells = <2>;
797b9cb494SStephen Warren	ranges = <0 0x0 0x0 0x30000000 0x0 0x50000>;
807b9cb494SStephen Warren
817b9cb494SStephen Warren	cpu_bpmp_tx: bpmp_shmem@4e000 {
827b9cb494SStephen Warren		compatible = "nvidia,tegra186-bpmp-shmem";
837b9cb494SStephen Warren		reg = <0x0 0x4e000 0x0 0x1000>;
847b9cb494SStephen Warren	};
857b9cb494SStephen Warren
867b9cb494SStephen Warren	cpu_bpmp_rx: bpmp_shmem@4f000 {
877b9cb494SStephen Warren		compatible = "nvidia,tegra186-bpmp-shmem";
887b9cb494SStephen Warren		reg = <0x0 0x4f000 0x0 0x1000>;
897b9cb494SStephen Warren	};
907b9cb494SStephen Warren};
917b9cb494SStephen Warren
927b9cb494SStephen Warrenbpmp {
937b9cb494SStephen Warren	compatible = "nvidia,tegra186-bpmp";
947b9cb494SStephen Warren	mboxes = <&hsp_top0 HSP_MBOX_TYPE_DB HSP_DB_MASTER_BPMP>;
957b9cb494SStephen Warren	shmem = <&cpu_bpmp_tx &cpu_bpmp_rx>;
967b9cb494SStephen Warren	#clock-cells = <1>;
977b9cb494SStephen Warren	#power-domain-cells = <1>;
987b9cb494SStephen Warren	#reset-cells = <1>;
99*390ae57cSStephen Warren
100*390ae57cSStephen Warren	i2c {
101*390ae57cSStephen Warren		compatible = "...";
102*390ae57cSStephen Warren		...
103*390ae57cSStephen Warren	};
1047b9cb494SStephen Warren};
105