blob: 0bab6927826fdbd3b8b5649348e5314d7e0efeba [file] [log] [blame]
/*
* Device Tree config for the CS40L25 chip - Haptics actuator
*/
#include <dt-bindings/pinctrl/samsung.h>
&gpa1 {
#interrupt-cells = <2>;
};
&pinctrl_0 {
pinctrl-names = "default";
// IRQ pin is shared between haptics and smart amp and the pinctrl framework
// does not allow for multiple drivers to own a pin via pinctrl-0, thus the
// ownership is given directly to pinctrl_0. This will hog the pin as soon as
// pinmux gets initialized.
pinctrl-0 = <&audio_haptics_irq>;
// IRQ pin is shared between haptics and audio
audio_haptics_irq: audio_haptics-irq {
// gpio8
samsung,pins = "gpa1-0";
samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
};
haptics_refclk: haptics-refclk {
samsung,pins = "gpa1-2";
samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
};
};
&pinctrl_5 {
// GPIO 95
smart_amp_rst: smart_amp-rst {
samsung,pins = "gpg1-1";
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 106
haptics_rst: haptics-rst {
samsung,pins = "gpg7-0";
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>;
};
};
// Used to generate 32kHz reference clock for haptics and BT/Wifi devices
&exynos_rtc {
status = "ok";
pinctrl-names = "default";
pinctrl-0 = <&haptics_refclk>;
};
&i2c_2 {
#address-cells = <1>;
#size-cells = <0>;
status = "ok";
dev2_cs40l25: dev2-cs40l25@43 {
compatible = "cirrus,cs40l25";
pinctrl-names = "default";
pinctrl-0 = <&haptics_rst>;
reset-gpios = <&gpg7 0 GPIO_ACTIVE_HIGH>;
reg = <0x43>;
status = "disabled";
interrupts-extended = <&gpa1 0 IRQ_TYPE_LEVEL_LOW>;
cirrus,boost-ind-nanohenry = <1000>;
cirrus,boost-cap-microfarad = <4>;
cirrus,boost-ipk-milliamp = <4500>;
cirrus,boost-clab-millivolt = <5000>; /* 5V */
cirrus,boost-ctl-millivolt = <5000>; /* 5V */
cirrus,boost-ovp-millivolt = <9000>; /* 9V */
cirrus,f0-default = <2514000>; /* 153 Hz */
cirrus,redc-default = <327728>; /* 15 Ohm */
cirrus,hiber-enable = <1>;
cirrus,refclk-gpio2;
cirrus,asp-fmt = <0>;
cirrus,asp-bclk-freq-hz = <3072000>;
cirrus,asp-slot-num = <2>;
cirrus,asp-slot-width = <16>;
cirrus,asp-samp-width = <16>;
cirrus,fw-id-remap = <0x1400CB>;
};
};
&hsi2c_8 {
#address-cells = <1>;
#size-cells = <0>;
status = "ok";
cs35l41: cs35l41@40 {
#sound-dai-cells = <0>;
compatible = "cirrus,cs35l41";
reg = <0x40>;
pinctrl-names = "default";
pinctrl-0 = <&smart_amp_rst>;
reset-gpios = <&gpg1 1 GPIO_ACTIVE_HIGH>;
interrupts-extended = <&gpa1 0 IRQ_TYPE_LEVEL_LOW>;
cirrus,boost-peak-milliamp = <1600>;
cirrus,boost-ind-nanohenry = <1000>;
cirrus,boost-cap-microfarad = <30>;
cirrus,boost-ctl-millivolt = <4000>;
cirrus,hibernate-enable = <1>;
// Mode 3: Hi-Z during unused slots and while all transmit channels disabled
cirrus,asp-sdout-hiz = <3>;
// GPIO/INT pin configuration
cirrus,gpio-config2 {
// Mode 2: Open Drain INTB
cirrus,gpio-src-select = <2>;
};
};
proto1_cs40l25: proto1-cs40l25@43 {
compatible = "cirrus,cs40l25";
pinctrl-names = "default";
pinctrl-0 = <&haptics_rst>;
reset-gpios = <&gpg7 0 GPIO_ACTIVE_HIGH>;
reg = <0x43>;
status = "disabled";
interrupts-extended = <&gpa1 0 IRQ_TYPE_LEVEL_LOW>;
cirrus,boost-ind-nanohenry = <1000>;
cirrus,boost-cap-microfarad = <4>;
cirrus,boost-ipk-milliamp = <4500>;
cirrus,boost-clab-millivolt = <5000>; /* 5V */
cirrus,boost-ctl-millivolt = <5000>; /* 5V */
cirrus,boost-ovp-millivolt = <9000>; /* 9V */
cirrus,f0-default = <2514000>; /* 153 Hz */
cirrus,redc-default = <327728>; /* 15 Ohm */
cirrus,hiber-enable = <1>;
cirrus,refclk-gpio2;
cirrus,asp-fmt = <0>;
cirrus,asp-bclk-freq-hz = <3072000>;
cirrus,asp-slot-num = <2>;
cirrus,asp-slot-width = <16>;
cirrus,asp-samp-width = <16>;
cirrus,fw-id-remap = <0x1400CB>;
};
};