// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2012 ST-Ericsson AB
 *
 * Device Tree for the TVK1281618 family of UIBs
 */

#include <dt-bindings/interrupt-controller/irq.h>

/ {
	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;
		vdd-supply = <&ab8500_ldo_aux1_reg>;
		pinctrl-names = "default";
		pinctrl-0 = <&prox_tvk_mode>, <&hall_tvk_mode>;

		button@139 {
			/* Proximity sensor */
			gpios = <&gpio6 25 GPIO_ACTIVE_HIGH>;
			linux,code = <11>; /* SW_FRONT_PROXIMITY */
			label = "SFH7741 Proximity Sensor";
		};
		button@145 {
			/* Hall sensor */
			gpios = <&gpio4 17 GPIO_ACTIVE_HIGH>;
			linux,code = <0>; /* SW_LID */
			label = "HED54XXU11 Hall Effect Sensor";
		};
	};

	soc {
		i2c@80004000 {
			tc35893@44 {
				compatible = "toshiba,tc35893";
				reg = <0x44>;
				interrupt-parent = <&gpio6>;
				interrupts = <26 IRQ_TYPE_EDGE_RISING>;
				pinctrl-names = "default";
				pinctrl-0 = <&tc35893_tvk_mode>;

				interrupt-controller;
				#interrupt-cells = <1>;

				tc3589x_gpio {
					compatible = "toshiba,tc3589x-gpio";
					interrupts = <0>;

					interrupt-controller;
					#interrupt-cells = <2>;
					gpio-controller;
					#gpio-cells = <2>;
				};
				tc3589x_keypad {
					compatible = "toshiba,tc3589x-keypad";
					interrupts = <6>;
					debounce-delay-ms = <4>;
					keypad,num-columns = <8>;
					keypad,num-rows = <8>;
					linux,no-autorepeat;
					wakeup-source;
					linux,keymap = <0x0301006b
						        0x04010066
							0x06040072
							0x040200d7
							0x0303006a
							0x0205000e
							0x0607008b
							0x0500001c
							0x0403000b
							0x03040034
							0x05020067
							0x0305006c
							0x040500e7
							0x0005009e
							0x06020073
							0x01030039
							0x07060069
							0x050500d9>;
				};
			};
		};
		/* Sensors mounted on all board variants */
		i2c@80128000 {
			ak8974@f {
				/* Magnetometer */
				compatible = "asahi-kasei,ak8974";
				reg = <0x0f>;
				avdd-supply = <&ab8500_ldo_aux1_reg>;
				dvdd-supply = <&db8500_vsmps2_reg>;
				pinctrl-names = "default";
				pinctrl-0 = <&gyro_magn_tvk_mode>;
				/*
				 * These interrupts cannot be used: the other component
				 * ST-Micro L3D4200D gyro that is connected to the same lines
				 * cannot set its DRDY line to open drain, so it cannot be
				 * shared with other peripherals. The should be defined for
				 * the falling edge if they could be wired together.
				 *
				 * interrupts-extended =
				 * <&gpio1 0 IRQ_TYPE_EDGE_FALLING>,
				 * <&gpio0 31 IRQ_TYPE_EDGE_FALLING>;
				 */
			};
			l3g4200d@68 {
				/* Gyroscope */
				compatible = "st,l3g4200d-gyro";
				st,drdy-int-pin = <2>;
				reg = <0x68>;
				vdd-supply = <&ab8500_ldo_aux1_reg>;
				vddio-supply = <&db8500_vsmps2_reg>;
				pinctrl-names = "default";
				pinctrl-0 = <&gyro_magn_tvk_mode>;
				interrupts-extended =
				<&gpio1 0 IRQ_TYPE_EDGE_RISING>,
				<&gpio0 31 IRQ_TYPE_EDGE_RISING>;
			};
			lsp001wm@5c {
				/* Barometer/pressure sensor */
				compatible = "st,lps001wp-press";
				reg = <0x5c>;
				vdd-supply = <&ab8500_ldo_aux1_reg>;
				vddio-supply = <&db8500_vsmps2_reg>;
			};
		};

		i2c@80110000 {
			synaptics@4b {
				/* Synaptics RMI4 TM1217 touchscreen */
				compatible = "syna,rmi4-i2c";
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <0x4b>;
				vdd-supply = <&ab8500_ldo_aux1_reg>;
				vddio-supply = <&db8500_vsmps2_reg>;
				pinctrl-names = "default";
				pinctrl-0 = <&synaptics_tvk_mode>;
				interrupt-parent = <&gpio2>;
				interrupts = <20 IRQ_TYPE_EDGE_FALLING>;

				rmi-f01@1 {
					reg = <0x1>;
					syna,nosleep = <1>;
				};
				rmi-f11@11 {
					reg = <0x11>;
					touchscreen-inverted-x;
					syna,sensor-type = <1>;
				};
			};
		};

		pinctrl {
			/* Pull up this GPIO pin */
			tc35893 {
				tc35893_tvk_mode: tc35893_tvk {
					tvk_cfg {
						pins = "GPIO218_AH11";
						ste,config = <&gpio_in_pu>;
					};
				};
			};
			prox {
				prox_tvk_mode: prox_tvk {
					tvk_cfg {
						pins = "GPIO217_AH12";
						ste,config = <&gpio_in_pu>;
					};
				};
			};
			hall {
				hall_tvk_mode: hall_tvk {
					tvk_cfg {
						pins = "GPIO145_C13";
						ste,config = <&gpio_in_pu>;
					};
				};
			};
			accelerometer {
				accel_tvk_mode: accel_tvk {
					/* Accelerometer interrupt lines 1 & 2 */
					tvk_cfg {
						pins = "GPIO82_C1", "GPIO83_D3";
						ste,config = <&gpio_in_pd>;
					};
				};
			};
			gyroscope {
				/*
				 * These lines are shared between Gyroscope l3g400dh
				 * and AK8974 magnetometer.
				 */
				gyro_magn_tvk_mode: gyro_magn_tvk {
					 /* GPIO 31 used for INT pull down the line */
					tvk_cfg1 {
						pins = "GPIO31_V3";
						ste,config = <&gpio_in_pd>;
					};
					/* GPIO 32 used for DRDY, pull this down */
					tvk_cfg2 {
						pins = "GPIO32_V2";
						ste,config = <&gpio_in_pd>;
					};
				};
			};
			synaptics {
				synaptics_tvk_mode: synaptics_tvk {
					/* Touchscreen uses GPIO 84 */
					tvk_cfg1 {
						pins = "GPIO84_C2";
						ste,config = <&gpio_in_pu>;
					};
				};
			};
		};
	};
};
