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