Fsync Signal Generation#
Unset:
tsc_sig_gen@c6a0000 {
compatible = "nvidia,tegra234-cdi-tsc";
ranges = <0x0 0x0 0xc6a0000 0x10000>;
reg = <0x0 0xc6a0000 0x0 0x18>;
#address-cells = <1>;
#size-cells = <1>;
status = "okay";
gen0: generator@380 {
reg = <0x380 0x80>;
freq_hz = <30>;
duty_cycle = <25>;
offset_ms = <0>;
status = "okay";
};
gen1: generator@400 {
reg = <0x400 0x80>;
freq_hz = <30>;
duty_cycle = <25>;
offset_ms = <0>;
status = "okay";
};
gen2: generator@480 {
reg = <0x480 0x80>;
freq_hz = <30>;
duty_cycle = <25>;
offset_ms = <10>;
status = "okay";
};
gen3: generator@500 {
reg = <0x500 0x80>;
freq_hz = <60>;
duty_cycle = <25>;
offset_ms = <20>;
status = "okay";
};
};
fsync-groups {
status = "disabled";
fsync-group@0 {
id = <0>;
status = "okay";
generators = <&gen0>, <&gen2>, <&gen3>;
};
fsync-group@1 {
id = <1>;
status = "okay";
generators = <&gen1>;
};
};
TSC_EDGE_OUT Number |
Nodes in Device Tree |
---|---|
TSC_EDGE_OUT0 |
gen0: generator@380 |
TSC_EDGE_OUT1 |
gen1: generator@400 |
TSC_EDGE_OUT2 |
gen2: generator@480 |
TSC_EDGE_OUT3 |
gen3: generator@500 |
Common Properties#
Property |
Description |
Customizable |
Optional |
Value |
---|---|---|---|---|
compatible |
compatible contains the unique string to identify the fsync node. |
No |
No |
nvidia,tegra234-cdi-tsc for Orin nvidia,tegra264-cdi-tsc for Thor |
ranges |
List of address translation tuples. |
No |
No |
<0x0 0x0 0xc6a0000 0x10000> for Orin <0x0 0x0 0xc230000 0x10000> for Thor |
reg |
List of memory region tuples. |
No |
No |
<0x0 0xc6a0000 0x0 0x18> for Orin <0x0 0xc230000 0x0 0x18> for Thor |
generator@Y nodes#
Thegenerator@Y
nodes contain the configuration for individual generated
signals. The Y
should denote the base address for this line.
Property |
Description |
Customizable |
Optional |
Value |
---|---|---|---|---|
freq_hz |
Frequency of the signal, in hertz. |
Yes |
No |
Hertz as an unsigned integer in the range (0,120] |
duty_cycle |
Percentage duty cycle of the signal. |
Yes |
No |
Unsigned in the range (0, 100) |
offset_ms |
Offset to shift the signal, in milliseconds. |
Yes |
No |
Milliseconds as an unsigned integer in the range [0, 1000] |
Fsync-groups#
Fsync-groups allow users to logically group individual generators based on intended usage. All generators in a group are always started together. Any offsets are relative to only generators in that group. Generators in other groups may be independently started.
Consider the fysync-groups in the device tree fragment above: All generators in group #0 will be started at the same time. Generators #2 and #3 will lag 10 and 20ms relative to Generator #0, respectively.
2. The generator in group #1 can be independently started. It need not necessarily be synchronized with generators in group #0.
It is mandatory that each generator is only part of one group.
Includes subnodes for each fsync-group:
Property |
Description |
Customizable |
Optional |
Value |
---|---|---|---|---|
Status |
If fsync-groups are enabled or disabled. |
Yes |
No |
If okay, fsync-groups is used and active groups can be programmed to start generators within the group at a given time. Otherwise, all active generators start with the default start time on startup. |
fsync-group@X
The fsync-group@X
nodes contains the configuration for individual
fsync-group. The X
should denote the index of the group.
Property
Description
Customizable
Optional
Value
id
ID of group.
Yes
No
Unique index as an unsigned integer, starting from index 0.
status
Specifies whether a group is denabled or disabled.
Yes
No
Okay if group is enabled, otherwise disabled.
generators
List of phandles of the generators.
Yes
No
List of phandles of all the generators within the group. All generators within the group are in sync with each other.