TI SysCon Reset Controller
Almost all SoCs have hardware modules that require reset control in addition
to clock and power control for their functionality. The reset control is
typically provided by means of memory-mapped I/O registers. These registers are
sometimes a part of a larger register space region implementing various
functionalities. This register range is best represented as a syscon node to
allow multiple entities to access their relevant registers in the common
register space.
A SysCon Reset Controller node defines a device that uses a syscon node
and provides reset management functionality for various hardware modules
present on the SoC.
SysCon Reset Controller Node
Each of the reset provider/controller nodes should be a child of a syscon
node and have the following properties.
Required properties:
- compatible : Should be,
"ti,k2e-pscrst" "ti,k2l-pscrst" "ti,k2hk-pscrst" "ti,syscon-reset"
- #reset-cells : Should be 1. Please see the reset consumer node below
for usage details
- ti,reset-bits : Contains the reset control register information
Should contain 7 cells for each reset exposed to consumers, defined as: Cell #1 : offset of the reset assert control register from the syscon register base Cell #2 : bit position of the reset in the reset assert control register Cell #3 : offset of the reset deassert control register from the syscon register base Cell #4 : bit position of the reset in the reset deassert control register Cell #5 : offset of the reset status register from the syscon register base Cell #6 : bit position of the reset in the reset status register Cell #7 : Flags used to control reset behavior, availible flags defined in the DT include file <dt-bindings/reset/ti-syscon.h>
SysCon Reset Consumer Nodes
Each of the reset consumer nodes should have the following properties,
in addition to their own properties.
Required properties:
- resets : A phandle to the reset controller node and an index number
to a reset specifier as defined above.
Please also refer to Documentation/devicetree/bindings/reset/reset.txt for
common reset controller usage by consumers.
Example:
The following example demonstrates a syscon node, the reset controller node
using the syscon node, and a consumer (a DSP device) on the TI Keystone 2
66AK2E SoC.
/ {
soc {
psc: power-sleep-controller@2350000 {
compatible = “syscon”, “simple-mfd”;
reg = <0x02350000 0x1000>;
pscrst: reset-controller {
compatible = "ti,k2e-pscrst", "ti,syscon-reset";
#reset-cells = <1>;
ti,reset-bits = <
0xa3c 8 0xa3c 8 0x83c 8 (ASSERT_CLEAR | DEASSERT_SET | STATUS_CLEAR) /* 0: dsp0 */
0xa40 5 0xa44 3 0 0 (ASSERT_SET | DEASSERT_CLEAR | STATUS_NONE) /* 1: example */
>;
};
};
dsp0: dsp0 {
...
resets = <&pscrst 0>;
...
};
};
};