ARM: dts: s5pv210: Add touchkey support to Aries boards
authorJonathan Bakker <xc-racer2@live.ca>
Fri, 1 May 2020 23:50:09 +0000 (16:50 -0700)
committerKrzysztof Kozlowski <krzk@kernel.org>
Mon, 4 May 2020 15:13:04 +0000 (17:13 +0200)
Aries boards have soft touchkeys, manufactured by Cypress,
attached over i2c-gpio.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
arch/arm/boot/dts/s5pv210-aries.dtsi

index 6233884..6683ece 100644 (file)
@@ -16,6 +16,7 @@
                i2c6 = &i2c_pmic;
                i2c7 = &i2c_musb;
                i2c9 = &i2c_fuel;
+               i2c10 = &i2c_touchkey;
        };
 
        memory@30000000 {
                gpio = <&gpj1 1 GPIO_ACTIVE_HIGH>;
        };
 
+       touchkey_vdd: regulator-fixed-1 {
+               compatible = "regulator-fixed";
+               regulator-name = "VTOUCH_3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               enable-active-high;
+               gpio = <&gpj3 2 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&touchkey_vdd_ena>;
+       };
+
        wifi_pwrseq: wifi-pwrseq {
                compatible = "mmc-pwrseq-simple";
                reset-gpios = <&gpg1 2 GPIO_ACTIVE_LOW>;
                };
        };
 
+       i2c_touchkey: i2c-gpio-5 {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpj3 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpj3 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+               i2c-gpio,delay-us = <2>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&touchkey_i2c_pins>;
+
+               touchkey@20 {
+                       compatible = "cypress,aries-touchkey";
+                       reg = <0x20>;
+                       vdd-supply = <&touchkey_vdd>;
+                       vcc-supply = <&buck3_reg>;
+                       linux,keycodes = <KEY_MENU KEY_BACK
+                                         KEY_HOMEPAGE KEY_SEARCH>;
+                       interrupt-parent = <&gpj4>;
+                       interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&touchkey_irq>;
+               };
+       };
+
        vibrator: pwm-vibrator {
                compatible = "pwm-vibrator";
                pwms = <&pwm 1 44642 0>;
                samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
        };
 
+       touchkey_i2c_pins: touchkey-i2c-pins {
+               samsung,pins = "gpj3-0", "gpj3-1";
+               samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+       };
+
+       touchkey_vdd_ena: touchkey-vdd-ena {
+               samsung,pins = "gpj3-2";
+               samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+       };
+
        musb_i2c_pins: musb-i2c-pins {
                samsung,pins = "gpj3-4", "gpj3-5";
                samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
                samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
        };
 
+       touchkey_irq: touchkey-irq {
+               samsung,pins = "gpj4-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <S3C64XX_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+       };
+
        fg_i2c_pins: fg-i2c-pins {
                samsung,pins = "mp05-0", "mp05-1";
                samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;