18c2ecf20Sopenharmony_ci= Reset Signal Device Tree Bindings = 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ciThis binding is intended to represent the hardware reset signals present 48c2ecf20Sopenharmony_ciinternally in most IC (SoC, FPGA, ...) designs. Reset signals for whole 58c2ecf20Sopenharmony_cistandalone chips are most likely better represented as GPIOs, although there 68c2ecf20Sopenharmony_ciare likely to be exceptions to this rule. 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ciHardware blocks typically receive a reset signal. This signal is generated by 98c2ecf20Sopenharmony_cia reset provider (e.g. power management or clock module) and received by a 108c2ecf20Sopenharmony_cireset consumer (the module being reset, or a module managing when a sub- 118c2ecf20Sopenharmony_ciordinate module is reset). This binding exists to represent the provider and 128c2ecf20Sopenharmony_ciconsumer, and provide a way to couple the two together. 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ciA reset signal is represented by the phandle of the provider, plus a reset 158c2ecf20Sopenharmony_cispecifier - a list of DT cells that represents the reset signal within the 168c2ecf20Sopenharmony_ciprovider. The length (number of cells) and semantics of the reset specifier 178c2ecf20Sopenharmony_ciare dictated by the binding of the reset provider, although common schemes 188c2ecf20Sopenharmony_ciare described below. 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ciA word on where to place reset signal consumers in device tree: It is possible 218c2ecf20Sopenharmony_ciin hardware for a reset signal to affect multiple logically separate HW blocks 228c2ecf20Sopenharmony_ciat once. In this case, it would be unwise to represent this reset signal in 238c2ecf20Sopenharmony_cithe DT node of each affected HW block, since if activated, an unrelated block 248c2ecf20Sopenharmony_cimay be reset. Instead, reset signals should be represented in the DT node 258c2ecf20Sopenharmony_ciwhere it makes most sense to control it; this may be a bus node if all 268c2ecf20Sopenharmony_cichildren of the bus are affected by the reset signal, or an individual HW 278c2ecf20Sopenharmony_ciblock node for dedicated reset signals. The intent of this binding is to give 288c2ecf20Sopenharmony_ciappropriate software access to the reset signals in order to manage the HW, 298c2ecf20Sopenharmony_cirather than to slavishly enumerate the reset signal that affects each HW 308c2ecf20Sopenharmony_ciblock. 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci= Reset providers = 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ciRequired properties: 358c2ecf20Sopenharmony_ci#reset-cells: Number of cells in a reset specifier; Typically 0 for nodes 368c2ecf20Sopenharmony_ci with a single reset output and 1 for nodes with multiple 378c2ecf20Sopenharmony_ci reset outputs. 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ciFor example: 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci rst: reset-controller { 428c2ecf20Sopenharmony_ci #reset-cells = <1>; 438c2ecf20Sopenharmony_ci }; 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci= Reset consumers = 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ciRequired properties: 488c2ecf20Sopenharmony_ciresets: List of phandle and reset specifier pairs, one pair 498c2ecf20Sopenharmony_ci for each reset signal that affects the device, or that the 508c2ecf20Sopenharmony_ci device manages. Note: if the reset provider specifies '0' for 518c2ecf20Sopenharmony_ci #reset-cells, then only the phandle portion of the pair will 528c2ecf20Sopenharmony_ci appear. 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ciOptional properties: 558c2ecf20Sopenharmony_cireset-names: List of reset signal name strings sorted in the same order as 568c2ecf20Sopenharmony_ci the resets property. Consumers drivers will use reset-names to 578c2ecf20Sopenharmony_ci match reset signal names with reset specifiers. 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ciFor example: 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci device { 628c2ecf20Sopenharmony_ci resets = <&rst 20>; 638c2ecf20Sopenharmony_ci reset-names = "reset"; 648c2ecf20Sopenharmony_ci }; 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ciThis represents a device with a single reset signal named "reset". 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci bus { 698c2ecf20Sopenharmony_ci resets = <&rst 10> <&rst 11> <&rst 12> <&rst 11>; 708c2ecf20Sopenharmony_ci reset-names = "i2s1", "i2s2", "dma", "mixer"; 718c2ecf20Sopenharmony_ci }; 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ciThis represents a bus that controls the reset signal of each of four sub- 748c2ecf20Sopenharmony_ciordinate devices. Consider for example a bus that fails to operate unless no 758c2ecf20Sopenharmony_cichild device has reset asserted. 76