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