[PATCH 3/3] arm64: dts: exynos7870-j6lte: add Sharp GP2AP070S proximity sensor
From: Kaustabh Chakraborty
Date: Thu Jul 23 2026 - 13:44:41 EST
The Sharp GP2AP070S is a proximity sensor, which is connected to a
GPIO-driven I2C line. Define the devicetree node for the sensor.
The sensor requires two voltage supplies, one of which is from the
primary regulator bank of the device, while the other one is controlled
by the GPIO. Add a regulator wrapping over the concerned GPIO so as to
feed it to the sensor node.
Signed-off-by: Kaustabh Chakraborty <kauschluss@xxxxxxxxxxx>
---
arch/arm64/boot/dts/exynos/exynos7870-j6lte.dts | 55 ++++++++++++++++++++++++-
1 file changed, 53 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/exynos/exynos7870-j6lte.dts b/arch/arm64/boot/dts/exynos/exynos7870-j6lte.dts
index de30d0970336..dd493138fed6 100644
--- a/arch/arm64/boot/dts/exynos/exynos7870-j6lte.dts
+++ b/arch/arm64/boot/dts/exynos/exynos7870-j6lte.dts
@@ -73,6 +73,35 @@ key-volup {
};
};
+ i2c-proximity {
+ compatible = "i2c-gpio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c_proxm_bus>;
+
+ sda-gpios = <&gpf4 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ scl-gpios = <&gpf4 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+
+ i2c-gpio,delay-us = <2>;
+
+ proximity@39 {
+ compatible = "sharp,gp2ap070s";
+ reg = <0x39>;
+ interrupt-parent = <&gpa0>;
+ interrupts = <5 IRQ_TYPE_EDGE_BOTH>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&proxm_irq>;
+
+ vdd-supply = <&vdd_fixed_proxm>;
+ vled-supply = <&vdd_ldo33>;
+
+ proximity-near-level = <500>;
+ };
+ };
+
memory@40000000 {
device_type = "memory";
reg = <0x0 0x40000000 0x3d800000>,
@@ -94,6 +123,16 @@ vdd_fixed_mmc2: regulator-fixed-mmc2 {
enable-active-high;
};
+ /* proximity: vdd */
+ vdd_fixed_proxm: regulator-fixed-proxm {
+ compatible = "regulator-fixed";
+ regulator-name = "vdd_fixed_proxm";
+ regulator-max-microvolt = <3300000>;
+ regulator-min-microvolt = <3300000>;
+ gpio = <&gpd2 3 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
reserved-memory {
#address-cells = <2>;
#size-cells = <1>;
@@ -354,13 +393,12 @@ vdd_ldo32: ldo32 {
regulator-ramp-delay = <12000>;
};
+ /* proximity: vled */
vdd_ldo33: ldo33 {
regulator-name = "vdd_ldo33";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-ramp-delay = <12000>;
- regulator-boot-on;
- regulator-always-on;
};
/* touchscreen: vdd */
@@ -556,6 +594,13 @@ pmic_irq: pmic-irq-pins {
samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
};
+ proxm_irq: proxm-irq-pins {
+ samsung,pins = "gpa0-5";
+ samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+ samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+ samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+ };
+
touch_irq: touch-irq-pins {
samsung,pins = "gpa0-6";
samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
@@ -579,6 +624,12 @@ bt_enable: bt-enable-pins {
samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
};
+ i2c_proxm_bus: i2c-proxm-bus-pins {
+ samsung,pins = "gpf4-3", "gpf4-2";
+ samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+ samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+ };
+
wlan_enable: wlan-enable-pins {
samsung,pins = "gpd3-6";
samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
--
2.54.0