18c2ecf20Sopenharmony_ciDevicetree bindings for the Axentia TSE-850 audio complex
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciRequired properties:
48c2ecf20Sopenharmony_ci  - compatible: "axentia,tse850-pcm5142"
58c2ecf20Sopenharmony_ci  - axentia,cpu-dai: The phandle of the cpu dai.
68c2ecf20Sopenharmony_ci  - axentia,audio-codec: The phandle of the PCM5142 codec.
78c2ecf20Sopenharmony_ci  - axentia,add-gpios: gpio specifier that controls the mixer.
88c2ecf20Sopenharmony_ci  - axentia,loop1-gpios: gpio specifier that controls loop relays on channel 1.
98c2ecf20Sopenharmony_ci  - axentia,loop2-gpios: gpio specifier that controls loop relays on channel 2.
108c2ecf20Sopenharmony_ci  - axentia,ana-supply: Regulator that supplies the output amplifier. Must
118c2ecf20Sopenharmony_ci    support voltages in the 2V - 20V range, in 1V steps.
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ciThe schematics explaining the gpios are as follows:
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci               loop1 relays
168c2ecf20Sopenharmony_ci   IN1 +---o  +------------+  o---+ OUT1
178c2ecf20Sopenharmony_ci            \                /
188c2ecf20Sopenharmony_ci             +              +
198c2ecf20Sopenharmony_ci             |   /          |
208c2ecf20Sopenharmony_ci             +--o  +--.     |
218c2ecf20Sopenharmony_ci             |  add   |     |
228c2ecf20Sopenharmony_ci             |        V     |
238c2ecf20Sopenharmony_ci             |      .---.   |
248c2ecf20Sopenharmony_ci   DAC +----------->|Sum|---+
258c2ecf20Sopenharmony_ci             |      '---'   |
268c2ecf20Sopenharmony_ci             |              |
278c2ecf20Sopenharmony_ci             +              +
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci   IN2 +---o--+------------+--o---+ OUT2
308c2ecf20Sopenharmony_ci               loop2 relays
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ciThe 'loop1' gpio pin controlls two relays, which are either in loop position,
338c2ecf20Sopenharmony_cimeaning that input and output are directly connected, or they are in mixer
348c2ecf20Sopenharmony_ciposition, meaning that the signal is passed through the 'Sum' mixer. Similarly
358c2ecf20Sopenharmony_cifor 'loop2'.
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ciIn the above, the 'loop1' relays are inactive, thus feeding IN1 to the mixer
388c2ecf20Sopenharmony_ci(if 'add' is active) and feeding the mixer output to OUT1. The 'loop2' relays
398c2ecf20Sopenharmony_ciare active, short-cutting the TSE-850 from channel 2. IN1, IN2, OUT1 and OUT2
408c2ecf20Sopenharmony_ciare TSE-850 connectors and DAC is the PCB name of the (filtered) output from
418c2ecf20Sopenharmony_cithe PCM5142 codec.
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ciExample:
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci	&ssc0 {
468c2ecf20Sopenharmony_ci		#sound-dai-cells = <0>;
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci	};
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci	&i2c {
518c2ecf20Sopenharmony_ci		codec: pcm5142@4c {
528c2ecf20Sopenharmony_ci			compatible = "ti,pcm5142";
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci			reg = <0x4c>;
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci			AVDD-supply = <&reg_3v3>;
578c2ecf20Sopenharmony_ci			DVDD-supply = <&reg_3v3>;
588c2ecf20Sopenharmony_ci			CPVDD-supply = <&reg_3v3>;
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci			clocks = <&sck>;
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci			pll-in = <3>;
638c2ecf20Sopenharmony_ci			pll-out = <6>;
648c2ecf20Sopenharmony_ci		};
658c2ecf20Sopenharmony_ci	};
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ci	ana: ana-reg {
688c2ecf20Sopenharmony_ci		compatible = "pwm-regulator";
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ci		regulator-name = "ANA";
718c2ecf20Sopenharmony_ci
728c2ecf20Sopenharmony_ci		pwms = <&pwm0 2 1000 PWM_POLARITY_INVERTED>;
738c2ecf20Sopenharmony_ci		pwm-dutycycle-unit = <1000>;
748c2ecf20Sopenharmony_ci		pwm-dutycycle-range = <100 1000>;
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci		regulator-min-microvolt = <2000000>;
778c2ecf20Sopenharmony_ci		regulator-max-microvolt = <20000000>;
788c2ecf20Sopenharmony_ci		regulator-ramp-delay = <1000>;
798c2ecf20Sopenharmony_ci	};
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci	sound {
828c2ecf20Sopenharmony_ci		compatible = "axentia,tse850-pcm5142";
838c2ecf20Sopenharmony_ci
848c2ecf20Sopenharmony_ci		axentia,cpu-dai = <&ssc0>;
858c2ecf20Sopenharmony_ci		axentia,audio-codec = <&codec>;
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci		axentia,add-gpios = <&pioA 8 GPIO_ACTIVE_LOW>;
888c2ecf20Sopenharmony_ci		axentia,loop1-gpios = <&pioA 10 GPIO_ACTIVE_LOW>;
898c2ecf20Sopenharmony_ci		axentia,loop2-gpios = <&pioA 11 GPIO_ACTIVE_LOW>;
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci		axentia,ana-supply = <&ana>;
928c2ecf20Sopenharmony_ci	};
93