162306a36Sopenharmony_ci= Reset Signal Device Tree Bindings = 262306a36Sopenharmony_ci 362306a36Sopenharmony_ciThis binding is intended to represent the hardware reset signals present 462306a36Sopenharmony_ciinternally in most IC (SoC, FPGA, ...) designs. Reset signals for whole 562306a36Sopenharmony_cistandalone chips are most likely better represented as GPIOs, although there 662306a36Sopenharmony_ciare likely to be exceptions to this rule. 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciHardware blocks typically receive a reset signal. This signal is generated by 962306a36Sopenharmony_cia reset provider (e.g. power management or clock module) and received by a 1062306a36Sopenharmony_cireset consumer (the module being reset, or a module managing when a sub- 1162306a36Sopenharmony_ciordinate module is reset). This binding exists to represent the provider and 1262306a36Sopenharmony_ciconsumer, and provide a way to couple the two together. 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ciA reset signal is represented by the phandle of the provider, plus a reset 1562306a36Sopenharmony_cispecifier - a list of DT cells that represents the reset signal within the 1662306a36Sopenharmony_ciprovider. The length (number of cells) and semantics of the reset specifier 1762306a36Sopenharmony_ciare dictated by the binding of the reset provider, although common schemes 1862306a36Sopenharmony_ciare described below. 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ciA word on where to place reset signal consumers in device tree: It is possible 2162306a36Sopenharmony_ciin hardware for a reset signal to affect multiple logically separate HW blocks 2262306a36Sopenharmony_ciat once. In this case, it would be unwise to represent this reset signal in 2362306a36Sopenharmony_cithe DT node of each affected HW block, since if activated, an unrelated block 2462306a36Sopenharmony_cimay be reset. Instead, reset signals should be represented in the DT node 2562306a36Sopenharmony_ciwhere it makes most sense to control it; this may be a bus node if all 2662306a36Sopenharmony_cichildren of the bus are affected by the reset signal, or an individual HW 2762306a36Sopenharmony_ciblock node for dedicated reset signals. The intent of this binding is to give 2862306a36Sopenharmony_ciappropriate software access to the reset signals in order to manage the HW, 2962306a36Sopenharmony_cirather than to slavishly enumerate the reset signal that affects each HW 3062306a36Sopenharmony_ciblock. 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci= Reset providers = 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ciRequired properties: 3562306a36Sopenharmony_ci#reset-cells: Number of cells in a reset specifier; Typically 0 for nodes 3662306a36Sopenharmony_ci with a single reset output and 1 for nodes with multiple 3762306a36Sopenharmony_ci reset outputs. 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ciFor example: 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci rst: reset-controller { 4262306a36Sopenharmony_ci #reset-cells = <1>; 4362306a36Sopenharmony_ci }; 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci= Reset consumers = 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ciRequired properties: 4862306a36Sopenharmony_ciresets: List of phandle and reset specifier pairs, one pair 4962306a36Sopenharmony_ci for each reset signal that affects the device, or that the 5062306a36Sopenharmony_ci device manages. Note: if the reset provider specifies '0' for 5162306a36Sopenharmony_ci #reset-cells, then only the phandle portion of the pair will 5262306a36Sopenharmony_ci appear. 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ciOptional properties: 5562306a36Sopenharmony_cireset-names: List of reset signal name strings sorted in the same order as 5662306a36Sopenharmony_ci the resets property. Consumers drivers will use reset-names to 5762306a36Sopenharmony_ci match reset signal names with reset specifiers. 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ciFor example: 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci device { 6262306a36Sopenharmony_ci resets = <&rst 20>; 6362306a36Sopenharmony_ci reset-names = "reset"; 6462306a36Sopenharmony_ci }; 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ciThis represents a device with a single reset signal named "reset". 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci bus { 6962306a36Sopenharmony_ci resets = <&rst 10> <&rst 11> <&rst 12> <&rst 11>; 7062306a36Sopenharmony_ci reset-names = "i2s1", "i2s2", "dma", "mixer"; 7162306a36Sopenharmony_ci }; 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ciThis represents a bus that controls the reset signal of each of four sub- 7462306a36Sopenharmony_ciordinate devices. Consider for example a bus that fails to operate unless no 7562306a36Sopenharmony_cichild device has reset asserted. 76