diff mbox series

[v1,2/2] pinctrl: intel: Set default bias in case no particular value given

Message ID 20201014104638.84043-2-andriy.shevchenko@linux.intel.com
State Accepted
Commit f3c75e7a9349d1d33eb53ddc1b31640994969f73
Headers show
Series [v1,1/2] pinctrl: intel: Fix 2 kOhm bias which is 833 Ohm | expand

Commit Message

Andy Shevchenko Oct. 14, 2020, 10:46 a.m. UTC
When GPIO library asks pin control to set the bias, it doesn't pass
any value of it and argument is considered boolean (and this is true
for ACPI GpioIo() / GpioInt() resources, by the way). Thus, individual
drivers must behave well, when they got the resistance value of 1 Ohm,
i.e. transforming it to sane default.

In case of Intel pin control hardware the 5 kOhm sounds plausible
because on one hand it's a minimum of resistors present in all
hardware generations and at the same time it's high enough to minimize
leakage current (will be only 200 uA with the above choice).

Fixes: e57725eabf87 ("pinctrl: intel: Add support for hardware debouncer")
Reported-by: Jamie McClymont <jamie@kwiius.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/pinctrl/intel/pinctrl-intel.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Mika Westerberg Oct. 21, 2020, 9:54 a.m. UTC | #1
On Wed, Oct 14, 2020 at 01:46:38PM +0300, Andy Shevchenko wrote:
> When GPIO library asks pin control to set the bias, it doesn't pass

> any value of it and argument is considered boolean (and this is true

> for ACPI GpioIo() / GpioInt() resources, by the way). Thus, individual

> drivers must behave well, when they got the resistance value of 1 Ohm,

> i.e. transforming it to sane default.

> 

> In case of Intel pin control hardware the 5 kOhm sounds plausible

> because on one hand it's a minimum of resistors present in all

> hardware generations and at the same time it's high enough to minimize

> leakage current (will be only 200 uA with the above choice).

> 

> Fixes: e57725eabf87 ("pinctrl: intel: Add support for hardware debouncer")

> Reported-by: Jamie McClymont <jamie@kwiius.com>

> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>


Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
diff mbox series

Patch

diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c
index df626643f9e4..6d23137489c1 100644
--- a/drivers/pinctrl/intel/pinctrl-intel.c
+++ b/drivers/pinctrl/intel/pinctrl-intel.c
@@ -693,6 +693,10 @@  static int intel_config_set_pull(struct intel_pinctrl *pctrl, unsigned int pin,
 
 		value |= PADCFG1_TERM_UP;
 
+		/* Set default strength value in case none is given */
+		if (arg == 1)
+			arg = 5000;
+
 		switch (arg) {
 		case 20000:
 			value |= PADCFG1_TERM_20K << PADCFG1_TERM_SHIFT;
@@ -715,6 +719,10 @@  static int intel_config_set_pull(struct intel_pinctrl *pctrl, unsigned int pin,
 	case PIN_CONFIG_BIAS_PULL_DOWN:
 		value &= ~(PADCFG1_TERM_UP | PADCFG1_TERM_MASK);
 
+		/* Set default strength value in case none is given */
+		if (arg == 1)
+			arg = 5000;
+
 		switch (arg) {
 		case 20000:
 			value |= PADCFG1_TERM_20K << PADCFG1_TERM_SHIFT;