Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1699719
| Path | csiph.com!news.mixmin.net!news.unit0.net!fu-berlin.de!bofh.it!news.nic.it!robomod |
|---|---|
| From | Masahiro Yamada <yamada.masahiro@socionext.com> |
| Newsgroups | linux.kernel |
| Subject | [PATCH 2/6] pinctrl: uniphier: fix pin_config_get() for input-enable |
| Date | Mon, 31 Jul 2017 08:30:03 +0200 |
| Message-ID | <u9cnh-2LC-9@gated-at.bofh.it> (permalink) |
| References | <u9cng-2LC-5@gated-at.bofh.it> |
| X-Original-To | linux-gpio@vger.kernel.org |
| Dkim-Filter | OpenDKIM Filter v2.10.3 conuserg-10.nifty.com v6V6M3A3000955 |
| Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1501482127; bh=q/p8CbcQsoho1ayP9lJ2n4DZUgHY8rsBJbDYDSTW4AE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RYFuAVoY7xXw1+QfBa7a66axR5yE5CqSy1le2meG9i/YK8mWJOW6rxwYhvDerxv4U Sp3T4vrYO7HrG0euhPSPtsru+dGt7+hnwSel1oWhbKdAE9pNi5d7VFkfdwhGsFntIb +Z50v4XGR4mCLqs4zDBkIopJrbwLc7Kkdr6/qE+SqNsRsX/Qwlhq+50dWyVNLhylf0 8cXxLuyqwhMMdt4LNs2iorZdyxvZqt8Ky1+kHDMfTyj4BsL1IGNbFA5NFDfkVVnXbM B1YAHn3NCPO1ucBg0rxUwKDAIq2pc7eJPqRVuFKm0/pisWQZOpZ5sTs1KKSMjL2I2c 3G+NjYfwfN+tQ== |
| X-Nifty-Srcip | [153.142.97.92] |
| X-Mailer | git-send-email 2.7.4 |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 62 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | Masahiro Yamada <yamada.masahiro@socionext.com>, Linus Walleij <linus.walleij@linaro.org>, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org |
| X-Original-Date | Mon, 31 Jul 2017 15:21:07 +0900 |
| X-Original-Message-ID | <1501482071-9819-3-git-send-email-yamada.masahiro@socionext.com> |
| X-Original-References | <1501482071-9819-1-git-send-email-yamada.masahiro@socionext.com> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1699719 |
Show key headers only | View raw
For LD11/LD20 SoCs (capable of per-pin input enable), iectrl bits are
located across multiple registers. So, the register offset must be
taken into account. Otherwise, wrong input-enable status is displayed.
While we here, rename the macro because it is a base address.
Fixes: aa543888ca8c ("pinctrl: uniphier: support per-pin input enable for new SoCs")
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---
drivers/pinctrl/uniphier/pinctrl-uniphier-core.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c
index c649e835bd54..f2f0f9dcfec3 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c
@@ -32,7 +32,7 @@
#define UNIPHIER_PINCTRL_DRV2CTRL_BASE 0x1900
#define UNIPHIER_PINCTRL_DRV3CTRL_BASE 0x1980
#define UNIPHIER_PINCTRL_PUPDCTRL_BASE 0x1a00
-#define UNIPHIER_PINCTRL_IECTRL 0x1d00
+#define UNIPHIER_PINCTRL_IECTRL_BASE 0x1d00
struct uniphier_pinctrl_priv {
struct pinctrl_desc pctldesc;
@@ -252,18 +252,21 @@ static int uniphier_conf_pin_input_enable_get(struct pinctrl_dev *pctldev,
{
struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev);
unsigned int iectrl = uniphier_pin_get_iectrl(desc->drv_data);
- unsigned int val;
+ unsigned int reg, mask, val;
int ret;
if (iectrl == UNIPHIER_PIN_IECTRL_NONE)
/* This pin is always input-enabled. */
return 0;
- ret = regmap_read(priv->regmap, UNIPHIER_PINCTRL_IECTRL, &val);
+ reg = UNIPHIER_PINCTRL_IECTRL_BASE + iectrl / 32 * 4;
+ mask = BIT(iectrl % 32);
+
+ ret = regmap_read(priv->regmap, reg, &val);
if (ret)
return ret;
- return val & BIT(iectrl) ? 0 : -EINVAL;
+ return val & mask ? 0 : -EINVAL;
}
static int uniphier_conf_pin_config_get(struct pinctrl_dev *pctldev,
@@ -456,7 +459,7 @@ static int uniphier_conf_pin_input_enable(struct pinctrl_dev *pctldev,
if (iectrl == UNIPHIER_PIN_IECTRL_NONE)
return enable ? 0 : -EINVAL;
- reg = UNIPHIER_PINCTRL_IECTRL + iectrl / 32 * 4;
+ reg = UNIPHIER_PINCTRL_IECTRL_BASE + iectrl / 32 * 4;
mask = BIT(iectrl % 32);
return regmap_update_bits(priv->regmap, reg, mask, enable ? mask : 0);
--
2.7.4
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
[PATCH 2/6] pinctrl: uniphier: fix pin_config_get() for input-enable Masahiro Yamada <yamada.masahiro@socionext.com> - 2017-07-31 08:30 +0200 Re: [PATCH 2/6] pinctrl: uniphier: fix pin_config_get() for input-enable Linus Walleij <linus.walleij@linaro.org> - 2017-08-01 10:20 +0200
csiph-web