From 558bc91d93068b4157688a4f409fc2876359490d Mon Sep 17 00:00:00 2001 From: Gao Pan Date: Mon, 4 Dec 2017 13:27:00 +0800 Subject: [PATCH] MLK-17061-1 sensor: set sensor interrupt pins as open-drain The sensors share an interrupt pin on imx8qm/imx8qxp mek. As a result, the interrupt signals will be interfered by each other in default push-pull status. This patch sets sensor interrupt pins as open-drain when necessary. Signed-off-by: Gao Pan (cherry-picked from 48bcb7aafa2a3ced923d1a1753bb19d89a9fc273) Signed-off-by: Vipul Kumar --- drivers/misc/fxas2100x.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/misc/fxas2100x.c b/drivers/misc/fxas2100x.c index 3ac718067a75..04541cfb5d14 100644 --- a/drivers/misc/fxas2100x.c +++ b/drivers/misc/fxas2100x.c @@ -147,6 +147,8 @@ static int fxas2100x_device_init(struct i2c_client *client) { int result; u8 val; + struct device_node *np = client->dev.of_node; + struct fxas2100x_data *pdata = i2c_get_clientdata(client); if (pdata->chip_id == FXAS21000_CHIP_ID) val = (0x01 << 2); /* fxas21000 dr 200HZ */ @@ -155,6 +157,14 @@ static int fxas2100x_device_init(struct i2c_client *client) result = i2c_smbus_write_byte_data(client, FXAS2100X_CTRL_REG1, val); if (result < 0) goto out; + + /* set interrupt pin as open-drain */ + if (of_get_property(np, "interrupt-open-drain", NULL)) { + result = i2c_smbus_write_byte_data(client, FXAS2100X_CTRL_REG2, 0x01); + if (result < 0) + goto out; + } + atomic_set(&pdata->active, STANDBY); return 0; out: