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>;
	};
};

Common Properties

Property Description Customizable Optional Value
compatible compatible contains the unique string to identify the fsync node. No No nvidia,tegra234-cdi-tsc

generator@Y nodes

The`generator@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

  1. 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.

  2. Consider the fysync-groups in the device tree fragment above:
    1. 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.

  3. 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.

Table 1.
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.