Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit def299a7 authored by Linhua Xu's avatar Linhua Xu Committed by Greg Kroah-Hartman
Browse files

UPSTREAM: pinctrl: sprd: Use the correct pin output configuration



The Spreadtrum pin controller did not supply registers to set high level
or low level for output mode, instead we should let the pin controller
current configuration drive values on the line. So we should use the
PIN_CONFIG_OUTPUT_ENABLE configuration to enable or disable the output
mode.

bug: 153500755
Change-Id: I290165a7239ddf75281d9a4eaf357cd576f1d009
[Baolin Wang changes the commit message]
Fixes: 41d32cfc ("pinctrl: sprd: Add Spreadtrum pin control driver")
Signed-off-by: default avatarLinhua Xu <linhua.xu@unisoc.com>
Signed-off-by: default avatarBaolin Wang <baolin.wang7@gmail.com>
Link: https://lore.kernel.org/r/8a6f91b49c17beb218e46b23084f59a7c7260f86.1585124562.git.baolin.wang7@gmail.com


Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
(cherry picked from commit bb0f472f96fa2bda2c3e412cd84f16b15d992a56)
parent 88f0b4dc
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -464,7 +464,7 @@ static int sprd_pinconf_get(struct pinctrl_dev *pctldev, unsigned int pin_id,
		case PIN_CONFIG_INPUT_ENABLE:
			arg = (reg >> SLEEP_INPUT_SHIFT) & SLEEP_INPUT_MASK;
			break;
		case PIN_CONFIG_OUTPUT:
		case PIN_CONFIG_OUTPUT_ENABLE:
			arg = reg & SLEEP_OUTPUT_MASK;
			break;
		case PIN_CONFIG_DRIVE_STRENGTH:
@@ -635,9 +635,13 @@ static int sprd_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin_id,
					shift = SLEEP_INPUT_SHIFT;
				}
				break;
			case PIN_CONFIG_OUTPUT:
			case PIN_CONFIG_OUTPUT_ENABLE:
				if (is_sleep_config == true) {
					if (arg > 0)
						val |= SLEEP_OUTPUT;
					else
						val &= ~SLEEP_OUTPUT;

					mask = SLEEP_OUTPUT_MASK;
					shift = SLEEP_OUTPUT_SHIFT;
				}