summaryrefslogtreecommitdiff
path: root/recipes-kernel/linux/linux-toradex-mainline-4.14/0023-mfd-as3722-disable-auto-power-on-when-AC-OK.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-toradex-mainline-4.14/0023-mfd-as3722-disable-auto-power-on-when-AC-OK.patch')
-rw-r--r--recipes-kernel/linux/linux-toradex-mainline-4.14/0023-mfd-as3722-disable-auto-power-on-when-AC-OK.patch88
1 files changed, 88 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-toradex-mainline-4.14/0023-mfd-as3722-disable-auto-power-on-when-AC-OK.patch b/recipes-kernel/linux/linux-toradex-mainline-4.14/0023-mfd-as3722-disable-auto-power-on-when-AC-OK.patch
new file mode 100644
index 0000000..568d50d
--- /dev/null
+++ b/recipes-kernel/linux/linux-toradex-mainline-4.14/0023-mfd-as3722-disable-auto-power-on-when-AC-OK.patch
@@ -0,0 +1,88 @@
+From a7e721386ede46fbb0d78abcccc0f235b257cfe9 Mon Sep 17 00:00:00 2001
+Message-Id: <a7e721386ede46fbb0d78abcccc0f235b257cfe9.1529072479.git.marcel.ziswiler@toradex.com>
+In-Reply-To: <fb4764e8eb658d35e8fc62ae79c77e1f6e2b0ef3.1529072479.git.marcel.ziswiler@toradex.com>
+References: <fb4764e8eb658d35e8fc62ae79c77e1f6e2b0ef3.1529072479.git.marcel.ziswiler@toradex.com>
+From: Marcel Ziswiler <marcel.ziswiler@toradex.com>
+Date: Thu, 14 Jun 2018 05:40:06 +0200
+Subject: [PATCH 23/27] mfd: as3722: disable auto power on when AC OK
+
+On ams AS3722, power on when AC OK is enabled by default.
+Making this option as disable by default and enable only
+when platform need this explicitly.
+
+Change-Id: I103d62ab9170c96b00ce8b58235afb8d24ba5e63
+Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
+Reviewed-on: http://git-master/r/349290
+Reviewed-by: Bibek Basu <bbasu@nvidia.com>
+Tested-by: Bibek Basu <bbasu@nvidia.com>
+
+Downsteam commit 09cd706fecb9 ("mfd: as3722: disable auto power on when
+AC OK").
+
+Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
+---
+ drivers/mfd/as3722.c | 12 ++++++++++++
+ include/linux/mfd/as3722.h | 3 +++
+ 2 files changed, 15 insertions(+)
+
+diff --git a/drivers/mfd/as3722.c b/drivers/mfd/as3722.c
+index f87342c211bc..215465c97759 100644
+--- a/drivers/mfd/as3722.c
++++ b/drivers/mfd/as3722.c
+@@ -349,6 +349,8 @@ static int as3722_i2c_of_probe(struct i2c_client *i2c,
+ "ams,enable-internal-int-pullup");
+ as3722->en_intern_i2c_pullup = of_property_read_bool(np,
+ "ams,enable-internal-i2c-pullup");
++ as3722->en_ac_ok_pwr_on = of_property_read_bool(np,
++ "ams,enable-ac-ok-power-on");
+ as3722->irq_flags = irqd_get_trigger_type(irq_data);
+ dev_dbg(&i2c->dev, "IRQ flags are 0x%08lx\n", as3722->irq_flags);
+ return 0;
+@@ -360,6 +362,7 @@ static int as3722_i2c_probe(struct i2c_client *i2c,
+ struct as3722 *as3722;
+ unsigned long irq_flags;
+ int ret;
++ u8 val = 0;
+
+ as3722 = devm_kzalloc(&i2c->dev, sizeof(struct as3722), GFP_KERNEL);
+ if (!as3722)
+@@ -398,6 +401,15 @@ static int as3722_i2c_probe(struct i2c_client *i2c,
+ if (ret < 0)
+ return ret;
+
++ if (as3722->en_ac_ok_pwr_on)
++ val = AS3722_CTRL_SEQ1_AC_OK_PWR_ON;
++ ret = as3722_update_bits(as3722, AS3722_CTRL_SEQU1_REG,
++ AS3722_CTRL_SEQ1_AC_OK_PWR_ON, val);
++ if (ret < 0) {
++ dev_err(as3722->dev, "CTRL_SEQ1 update failed: %d\n", ret);
++ return ret;
++ }
++
+ ret = devm_mfd_add_devices(&i2c->dev, -1, as3722_devs,
+ ARRAY_SIZE(as3722_devs), NULL, 0,
+ regmap_irq_get_domain(as3722->irq_data));
+diff --git a/include/linux/mfd/as3722.h b/include/linux/mfd/as3722.h
+index 51e6f9414575..8841b9896033 100644
+--- a/include/linux/mfd/as3722.h
++++ b/include/linux/mfd/as3722.h
+@@ -296,6 +296,8 @@
+ #define AS3722_ADC1_CONV_NOTREADY BIT(7)
+ #define AS3722_ADC1_SOURCE_SELECT_MASK 0x1F
+
++#define AS3722_CTRL_SEQ1_AC_OK_PWR_ON BIT(0)
++
+ /* GPIO modes */
+ #define AS3722_GPIO_MODE_MASK 0x07
+ #define AS3722_GPIO_MODE_INPUT 0x00
+@@ -391,6 +393,7 @@ struct as3722 {
+ unsigned long irq_flags;
+ bool en_intern_int_pullup;
+ bool en_intern_i2c_pullup;
++ bool en_ac_ok_pwr_on;
+ struct regmap_irq_chip_data *irq_data;
+ };
+
+--
+2.14.4
+