diff options
| -rw-r--r-- | arch/arm/boot/dts/omap3-minnow-p0-p1a.dts | 7 | ||||
| -rw-r--r-- | arch/arm/boot/dts/omap3-minnow-p1b-p2.4.dts | 6 | ||||
| -rw-r--r-- | arch/arm/boot/dts/omap3-minnow.dtsi | 1 | ||||
| -rw-r--r-- | drivers/input/touchscreen/atmxt.c | 13 |
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); |