blob: 1d925067dd903642ea88ec6efdf18d6eb5c67105 [file] [log] [blame]
// SPDX-License-Identifier: GPL-2.0-only
/*
* Google GS201 Felix common audio device tree source
*
* Copyright (c) 2021 Google, LLC
* https://www.google.com
*
* cs35l41_l = top
* cs35l41_r = bottom
*/
#include <dt-bindings/pinctrl/samsung.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/sound/google-aoc.h>
/delete-node/ &cs40l26a_haptics;
&aoc {
aoc-board-cfg = "F10";
aoc-board-id = <0x30601>;
aoc-board-rev = <0x10000>;
};
&dai_be_tdm0_rx {
codec {
sound-dai = <&cs35l41_l 0>,
<&cs35l41_r 0>,
<&cs35l41_e 0>;
};
};
&dai_be_tdm0_tx {
codec {
sound-dai = <&cs35l41_l 0>,
<&cs35l41_r 0>,
<&cs35l41_e 0>;
};
};
&dai_be_haptic_rx_codec {
sound-dai = <&cs40l26_codec 0>, <&cs40l26_codec_2 0>;
};
&aoc_snd_card {
clks {
sys {
sys@cs35l41_l {
comp = <&cs35l41_l>;
src = "BCLK";
/* clk id */
id = <0>;
/* clk source */
srcid = <0>;
/* in clk multiple */
in_mul = <1>;
/* out clk multiple */
out_mul = <1>;
};
sys@cs35l41_r {
comp = <&cs35l41_r>;
src = "BCLK";
/* clk id */
id = <0>;
/* clk source */
srcid = <0>;
/* in clk multiple */
in_mul = <1>;
/* out clk multiple */
out_mul = <1>;
};
sys@cs35l41_e {
comp = <&cs35l41_e>;
src = "BCLK";
/* clk id */
id = <0>;
/* clk source */
srcid = <0>;
/* in clk multiple */
in_mul = <1>;
/* out clk multiple */
out_mul = <1>;
};
sys@cs40l26_codec_2 {
comp = <&cs40l26_codec_2>;
src = "BCLK";
/* clk id */
id = <0>;
/* clk source */
srcid = <0>;
/* in clk multiple */
in_mul = <1>;
/* out clk multiple */
out_mul = <1>;
};
};
};
};
/* GPIO_FAR_ALIVE */
&pinctrl_1 {
cs35l41_l_irq: cs35l41-l-irq {
samsung,pins = "gpa6-3"; /* XEINT_3 - AMP1_IRQ_L */
samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
};
cs35l41_r_irq: cs35l41-r-irq {
samsung,pins = "gpa8-6"; /* XEINT_18 - AMP2_IRQ_L */
samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
};
cs35l41_e_irq: cs35l41-e-irq {
samsung,pins = "gpa6-2"; /* XEINT_2 - AMP3_IRQ_L */
samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
};
hapt_amp2_irq: hapt-amp2-irq {
samsung,pins = "gpa8-0"; /* XEINT_12 */
samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
};
};
/* GPIO_PERIC0 */
&pinctrl_4 {
cs35l41_clk: cs35l41-clk {
samsung,pins = "gpp14-0"; /* XAPC_USI7_RXD_CLK_SCL - AUDIO_SPI_CLK */
samsung,pin-drv = <GS101_PIN_DRV_5_MA>;
};
cs35l41_mosi: cs35l41-mosi {
samsung,pins = "gpp14-1"; /* XAPC_USI7_TXD_DO_SDA - AUDIO_SPI_MOSI */
samsung,pin-drv = <GS101_PIN_DRV_5_MA>;
};
cs35l41_miso: cs35l41-miso {
samsung,pins = "gpp14-2"; /* XAPC_USI7_RTSn_DI - AUDIO_SPI_MISO */
samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
};
cs35l41_cs1: cs35l41-cs1 {
samsung,pins = "gpp14-3"; /* XAPC_USI7_CTSN_CSN - AUDIO_AMP1_SPI_CS_L */
samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
};
cs35l41_l_rst: cs35l41-l-rst {
samsung,pins = "gpp17-1"; /* XAPC_VSYNC8 - AMP1_RESET_L */
samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
};
hapt_amp2_rst: hapt-amp2-rst {
samsung,pins = "gpp18-2"; /* XAPC_USI14_RTSn_DI */
samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
};
};
/* GPIO_PERIC1 */
&pinctrl_5 {
cs35l41_cs2: cs35l41-cs2 {
samsung,pins = "gpp22-1"; /* XAPC_GPIO5 - AUDIO_AMP2_SPI_CS_L */
samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
};
cs35l41_cs3: cs35l41-cs3 {
samsung,pins = "gpp26-4"; /* XAPC_GPIO6 - AUDIO_AMP3_SPI_CS_L */
samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
};
cs35l41_r_rst: cs35l41-r-rst {
samsung,pins = "gpp25-2"; /* XAPC_USI13_RTSn_DI - AMP2_RESET_L */
samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
};
};
&s2mpg13_pinctrl {
cs35l41_e_rst: cs35l41-e-rst {
};
};
&spi7_cs_func {
samsung,pins = "gpp14-3";
samsung,pin-drv = <GS101_PIN_DRV_5_MA>;
};
&spi_7 {
/* XAPC_USI7 */
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&spi7_bus &spi7_cs_func &cs35l41_cs2 &cs35l41_cs3
&cs35l41_miso &cs35l41_mosi &cs35l41_clk>;
cs-gpios = <&gpp14 3 GPIO_ACTIVE_HIGH>, <&gpp22 1 GPIO_ACTIVE_HIGH>,
<&gpp26 4 GPIO_ACTIVE_HIGH>;
cs35l41_l: cs35l41@0 {
#sound-dai-cells = <1>;
compatible = "cirrus,cs35l41";
spi-max-frequency = <25000000>;
reg = <0>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&cs35l41_l_irq &cs35l41_l_rst>;
interrupt-parent = <&gpa6>;
interrupts = <3 0 0>;
reset-gpios = <&gpp17 1 GPIO_ACTIVE_HIGH>;
VA-supply = <&s_bucka_reg>;
VP-supply = <&V_SYS_dummy>;
cirrus,boost-peak-milliamp = <3500>;
cirrus,boost-ind-nanohenry = <1000>;
cirrus,boost-cap-microfarad = <4>;
cirrus,asp-sdout-hiz = <3>;
cirrus,tuning-has-prefix;
cirrus,left-channel-amp;
cirrus,hw-noise-gate-select = <63>;
/* cirrus,hibernate-enable; */
cirrus,gpio-config2 {
cirrus,gpio-src-select = <0x5>;
cirrus,gpio-output-enable;
};
controller-data {
cs-gpio = <&gpp14 3 GPIO_ACTIVE_HIGH>;
samsung,spi-feedback-delay = <1>;
/* SET SPI CS CONTROL TO AUTOMATIC */
samsung,spi-chip-select-mode = <1>;
};
};
cs35l41_r: cs35l41@1 {
#sound-dai-cells = <1>;
sound-name-prefix = "R";
compatible = "cirrus,cs35l41";
spi-max-frequency = <25000000>;
reg = <1>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&cs35l41_r_irq &cs35l41_r_rst>;
interrupt-parent = <&gpa8>;
interrupts = <6 0 0>;
reset-gpios = <&gpp25 2 GPIO_ACTIVE_HIGH>;
VA-supply = <&s_bucka_reg>;
VP-supply = <&V_SYS_dummy>;
cirrus,boost-peak-milliamp = <3500>;
cirrus,boost-ind-nanohenry = <1000>;
cirrus,boost-cap-microfarad = <4>;
cirrus,asp-sdout-hiz = <3>;
cirrus,tuning-has-prefix;
cirrus,left-channel-amp;
cirrus,hw-noise-gate-select = <63>;
/* cirrus,hibernate-enable; */
cirrus,gpio-config2 {
cirrus,gpio-src-select = <0x5>;
cirrus,gpio-output-enable;
};
controller-data {
cs-gpio =<&gpp22 1 GPIO_ACTIVE_HIGH>;
samsung,spi-feedback-delay = <1>;
/* SET SPI CS CONTROL TO AUTOMATIC */
samsung,spi-chip-select-mode = <1>;
};
};
cs35l41_e: cs35l41@2 {
#sound-dai-cells = <1>;
sound-name-prefix = "E";
compatible = "cirrus,cs35l41";
spi-max-frequency = <25000000>;
reg = <2>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&cs35l41_e_irq &cs35l41_e_rst>;
interrupt-parent = <&gpa6>;
interrupts = <2 0 0>;
reset-gpios = <&s2mpg13_gpio 7 GPIO_ACTIVE_HIGH>;
VA-supply = <&s_bucka_reg>;
VP-supply = <&V_SYS_dummy>;
cirrus,boost-peak-milliamp = <3500>;
cirrus,boost-ind-nanohenry = <1000>;
cirrus,boost-cap-microfarad = <4>;
cirrus,asp-sdout-hiz = <3>;
cirrus,tuning-has-prefix;
cirrus,left-channel-amp;
cirrus,hw-noise-gate-select = <63>;
/* cirrus,hibernate-enable; */
cirrus,gpio-config2 {
cirrus,gpio-src-select = <0x5>;
cirrus,gpio-output-enable;
};
controller-data {
cs-gpio =<&gpp26 4 GPIO_ACTIVE_HIGH>;
samsung,spi-feedback-delay = <1>;
/* SET SPI CS CONTROL TO AUTOMATIC */
samsung,spi-chip-select-mode = <1>;
};
};
};
&hsi2c_15 {
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&hsi2c15_bus>;
clock-frequency = <400000>;
cs40l26a_haptics_2: cs40l26a@43 {
compatible = "cirrus,cs40l26a";
reg = <0x43>;
input-device-name = "cs40l26_input"; /* input device name */
pinctrl-names = "default";
pinctrl-0 = <&hapt_amp2_irq &hapt_amp2_rst &hapt_amp_trig>;
interrupt-parent = <&gpa8>;
interrupts = <0 0 0>;
reset-gpios = <&gpp18 2 0>;
VA-supply = <&s_bucka_reg>;
VP-supply = <&V_SYS_dummy>;
cirrus,bst-dcm-en = <0>;
cirrus,pwle-zero-cross-en;
cirrus,bst-expl-mode-disable;
cirrus,vpbr-enable = <1>;
cirrus,vpbr-thld-mv = <3008>; /* 3.008V */
status = "okay";
cs40l26_codec: cs40l26_codec@snd {
#sound-dai-cells = <1>;
compatible = "cs40l26-codec";
status = "okay";
};
};
cs40l26a_haptics_1: cs40l26a@42 {
compatible = "cirrus,cs40l26a";
reg = <0x42>;
input-device-name = "cs40l26_dual_input"; /* input device name */
pinctrl-names = "default";
pinctrl-0 = <&hapt_amp_irq &hapt_amp_rst>;
interrupt-parent = <&gpa8>;
interrupts = <1 0 0>;
reset-gpios = <&gpp24 3 0>;
VA-supply = <&s_bucka_reg>;
VP-supply = <&V_SYS_dummy>;
cirrus,bst-dcm-en = <0>;
cirrus,pwle-zero-cross-en;
cirrus,bst-expl-mode-disable;
cirrus,vpbr-enable = <1>;
cirrus,vpbr-thld-mv = <3008>; /* 3.008V */
status = "okay";
cs40l26_codec_2: cs40l26_codec_2@snd {
#sound-dai-cells = <1>;
sound-name-prefix = "HR";
compatible = "cs40l26-codec";
status = "okay";
};
};
};