summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/boot/dts/omap3-minnow-p0-p1a.dts7
-rw-r--r--arch/arm/boot/dts/omap3-minnow-p1b-p2.4.dts6
-rw-r--r--arch/arm/boot/dts/omap3-minnow.dtsi1
-rw-r--r--drivers/input/touchscreen/atmxt.c13
4 files changed, 25 insertions, 2 deletions
diff --git a/arch/arm/boot/dts/omap3-minnow-p0-p1a.dts b/arch/arm/boot/dts/omap3-minnow-p0-p1a.dts
index f5a9e3f1c8e..8b0b4214370 100644
--- a/arch/arm/boot/dts/omap3-minnow-p0-p1a.dts
+++ b/arch/arm/boot/dts/omap3-minnow-p0-p1a.dts
@@ -23,3 +23,10 @@
&spi_flash {
m25p,m4sensorhub_cb;
};
+
+&i2c1 {
+ atmxt@4a {
+ support-snowflake = <0>;
+ };
+};
+
diff --git a/arch/arm/boot/dts/omap3-minnow-p1b-p2.4.dts b/arch/arm/boot/dts/omap3-minnow-p1b-p2.4.dts
index 6d46b7ce37b..1a63bad571b 100644
--- a/arch/arm/boot/dts/omap3-minnow-p1b-p2.4.dts
+++ b/arch/arm/boot/dts/omap3-minnow-p1b-p2.4.dts
@@ -22,3 +22,9 @@
};
};
+
+&i2c1 {
+ atmxt@4a {
+ support-snowflake = <0>;
+ };
+};
diff --git a/arch/arm/boot/dts/omap3-minnow.dtsi b/arch/arm/boot/dts/omap3-minnow.dtsi
index a818a15cb5a..c75b875d377 100644
--- a/arch/arm/boot/dts/omap3-minnow.dtsi
+++ b/arch/arm/boot/dts/omap3-minnow.dtsi
@@ -265,6 +265,7 @@
pinctrl-names = "pullup", "pulldown";
pinctrl-0 = <&atmxt_int_pullup>;
pinctrl-1 = <&atmxt_int_pulldown>;
+ support-snowflake = <1>;
};
};
diff --git a/drivers/input/touchscreen/atmxt.c b/drivers/input/touchscreen/atmxt.c
index 80028f13b21..8ea5473850a 100644
--- a/drivers/input/touchscreen/atmxt.c
+++ b/drivers/input/touchscreen/atmxt.c
@@ -196,17 +196,24 @@ static int atmxt_pctrl_sel_state(struct device *dev, struct pinctrl *pctrl,
inline int atmxt_tdat_detect_snowflake(struct i2c_client *client,
struct touch_platform_data *pdata)
{
- int r;
+ int r, need = 0;
struct pinctrl *pctrl = devm_pinctrl_get(&client->dev);
if (IS_ERR(pctrl)) {
dev_err(&client->dev, "no pinctrl handle\n");
return PTR_ERR(pctrl);
}
+
+ r = of_property_read_u32(client->dev.of_node,
+ "support-snowflake", &need);
+ if (r || !need) {
+ dev_dbg(&client->dev, "do not support snowflake\n");
+ goto exit_pullup;
+ }
+
/* To detect new snowflake touch sensor, it needs set touch_irq
* to pull-down, then read it back, the low value means snowflake
* touch is connected
*/
-
r = atmxt_pctrl_sel_state(&client->dev, pctrl, "pulldown");
if (r)
goto exit;
@@ -225,6 +232,8 @@ inline int atmxt_tdat_detect_snowflake(struct i2c_client *client,
pdata->filename = (char *)fp;
}
+exit_pullup:
+ /* switch to pullup by default that allow touch interrupt */
r = atmxt_pctrl_sel_state(&client->dev, pctrl, "pullup");
dev_dbg(&client->dev, "tdat file is %s\n", pdata->filename);