Skip to contentSkip to conversation

ARM: dts: ux500: configure the accelerometers open drain

PATCH New Linus Walleij 2 participants 2 messages Apr 14, 2016 – Apr 17, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 ARM: dts: ux500: configure the accelerometers open drain

Configure the two accelerometers sharing GPIO line 82 as:

- Open drain so that they can share the same interrupt line.

Configure the corresponding interrupt pin:

- Trigger on the falling edge since open drain implies that we do not actively drive the line high, but we will actively drive it low to generate interrupts and then it moves from high to low i.e. a falling edge.

- Pulled up so the line will be biased to high unless an IRQ is active on any device on the line, and thus it goes high again after the interrupt is deasserted.

Cc linux-iio at vger.kernel.org
Cc Jonathan Cameron <[email protected]>

---
ChangeLog v1->v2:
- Switch to using the drive-mode-open-drain; setting

---
 arch/arm/boot/dts/ste-href-tvk1281618.dtsi | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)
arch/arm/boot/dts/ste-href-tvk1281618.dtsi +7 -5
index 55f9d0cc90f3..aec816c8ecb6 100644
@@ -93,14 +93,15 @@
 				/* Accelerometer */
 				compatible = "st,lsm303dlh-accel";
 				st,drdy-int-pin = <1>;
+				drive-open-drain;
 				reg = <0x18>;
 				vdd-supply = <&ab8500_ldo_aux1_reg>;
 				vddio-supply = <&db8500_vsmps2_reg>;
 				pinctrl-names = "default";
 				pinctrl-0 = <&accel_tvk_mode>;
 				interrupt-parent = <&gpio2>;
-				interrupts = <18 IRQ_TYPE_EDGE_RISING>,
-					     <19 IRQ_TYPE_EDGE_RISING>;
+				interrupts = <18 IRQ_TYPE_EDGE_FALLING>,
+					     <19 IRQ_TYPE_EDGE_FALLING>;
 			};
 			lsm303dlh at 1e {
 				/*
@@ -118,14 +119,15 @@
 				/* Accelerometer */
 				compatible = "st,lis331dl-accel";
 				st,drdy-int-pin = <1>;
+				drive-open-drain;
 				reg = <0x1c>;
 				vdd-supply = <&ab8500_ldo_aux1_reg>;
 				vddio-supply = <&db8500_vsmps2_reg>;
 				pinctrl-names = "default";
 				pinctrl-0 = <&accel_tvk_mode>;
 				interrupt-parent = <&gpio2>;
-				interrupts = <18 IRQ_TYPE_EDGE_RISING>,
-					     <19 IRQ_TYPE_EDGE_RISING>;
+				interrupts = <18 IRQ_TYPE_EDGE_FALLING>,
+					     <19 IRQ_TYPE_EDGE_FALLING>;
 			};
 			ak8974 at 0f {
 				/* Magnetometer */
@@ -216,7 +218,7 @@
 					/* Accelerometer interrupt lines 1 & 2 */
 					tvk_cfg {
 						pins = "GPIO82_C1", "GPIO83_D3";
-						ste,config = <&gpio_in_pd>;
+						ste,config = <&gpio_in_pu>;
 					};
 				};
 			};
Signature · 1 line
2.4.3
maintainer
#1 lore raw

PATCH v2 1/1 ARM: dts: ux500: configure the accelerometers open drain

Quoted 11 lines · Linus Walleij

Configure the two accelerometers sharing GPIO line 82 as:

- Open drain so that they can share the same interrupt line.

Configure the corresponding interrupt pin:

- Trigger on the falling edge since open drain implies that we do not actively drive the line high, but we will actively drive it low to generate interrupts and then it moves from high to low i.e. a falling edge.

Quoted 7 lines

- Pulled up so the line will be biased to high unless an IRQ is active on any device on the line, and thus it goes high again after the interrupt is deasserted.

Cc linux-iio at vger.kernel.org
Cc Jonathan Cameron <[email protected]>

I have just applied the patch supporting this to the iio tree for the next merge window.

Jonathan

Quoted 57 lines

---
ChangeLog v1->v2:
- Switch to using the drive-mode-open-drain; setting

---
 arch/arm/boot/dts/ste-href-tvk1281618.dtsi | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)
arch/arm/boot/dts/ste-href-tvk1281618.dtsi +7 -5
index 55f9d0cc90f3..aec816c8ecb6 100644
@@ -93,14 +93,15 @@
 				/* Accelerometer */
 				compatible = "st,lsm303dlh-accel";
 				st,drdy-int-pin = <1>;
+				drive-open-drain;
 				reg = <0x18>;
 				vdd-supply = <&ab8500_ldo_aux1_reg>;
 				vddio-supply = <&db8500_vsmps2_reg>;
 				pinctrl-names = "default";
 				pinctrl-0 = <&accel_tvk_mode>;
 				interrupt-parent = <&gpio2>;
-				interrupts = <18 IRQ_TYPE_EDGE_RISING>,
-					     <19 IRQ_TYPE_EDGE_RISING>;
+				interrupts = <18 IRQ_TYPE_EDGE_FALLING>,
+					     <19 IRQ_TYPE_EDGE_FALLING>;
 			};
 			lsm303dlh at 1e {
 				/*
@@ -118,14 +119,15 @@
 				/* Accelerometer */
 				compatible = "st,lis331dl-accel";
 				st,drdy-int-pin = <1>;
+				drive-open-drain;
 				reg = <0x1c>;
 				vdd-supply = <&ab8500_ldo_aux1_reg>;
 				vddio-supply = <&db8500_vsmps2_reg>;
 				pinctrl-names = "default";
 				pinctrl-0 = <&accel_tvk_mode>;
 				interrupt-parent = <&gpio2>;
-				interrupts = <18 IRQ_TYPE_EDGE_RISING>,
-					     <19 IRQ_TYPE_EDGE_RISING>;
+				interrupts = <18 IRQ_TYPE_EDGE_FALLING>,
+					     <19 IRQ_TYPE_EDGE_FALLING>;
 			};
 			ak8974 at 0f {
 				/* Magnetometer */
@@ -216,7 +218,7 @@
 					/* Accelerometer interrupt lines 1 & 2 */
 					tvk_cfg {
 						pins = "GPIO82_C1", "GPIO83_D3";
-						ste,config = <&gpio_in_pd>;
+						ste,config = <&gpio_in_pu>;
 					};
 				};
 			};