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