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