From: heiko@sntech.de (Heiko Stübner)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 5/5] pinctrl: rockchip: correctly handle arguments of pinconf options
Date: Fri, 14 Jun 2013 17:44:20 +0200 [thread overview]
Message-ID: <201306141744.21117.heiko@sntech.de> (raw)
In-Reply-To: <201306141741.46077.heiko@sntech.de>
Change the rockchip pinctrl driver to handle the arguments of 0 or 1 to
the pull pinconfig options correctly, so that the pull gets disabled when
either the bias_disable options is set or the pull option has the argument 0.
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
---
drivers/pinctrl/pinctrl-rockchip.c | 37 +++++++++++++++++++++++++++++++-----
1 file changed, 32 insertions(+), 5 deletions(-)
diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index c605b63..2568afc 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -563,6 +563,25 @@ static const struct pinmux_ops rockchip_pmx_ops = {
* Pinconf_ops handling
*/
+static bool rockchip_pinconf_pull_valid(struct rockchip_pin_ctrl *ctrl,
+ enum pin_config_param pull)
+{
+ /* rk3066b does support any pulls */
+ if (!ctrl->pull_offset)
+ return pull ? false : true;
+
+ if (ctrl->pull_auto) {
+ if (pull != PIN_CONFIG_BIAS_PULL_PIN_DEFAULT &&
+ pull != PIN_CONFIG_BIAS_DISABLE)
+ return false;
+ } else {
+ if (pull == PIN_CONFIG_BIAS_PULL_PIN_DEFAULT)
+ return false;
+ }
+
+ return true;
+}
+
/* set the pin config settings for a specified pin */
static int rockchip_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
unsigned long config)
@@ -570,12 +589,21 @@ static int rockchip_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
struct rockchip_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
struct rockchip_pin_bank *bank = pin_to_bank(info, pin);
enum pin_config_param param = pinconf_to_config_param(config);
+ u16 arg = pinconf_to_config_argument(config);
switch (param) {
case PIN_CONFIG_BIAS_DISABLE:
+ return rockchip_set_pull(bank, pin - bank->pin_base, param);
+ break;
case PIN_CONFIG_BIAS_PULL_UP:
case PIN_CONFIG_BIAS_PULL_DOWN:
case PIN_CONFIG_BIAS_PULL_PIN_DEFAULT:
+ if (!rockchip_pinconf_pull_valid(info->ctrl, param))
+ return -ENOTSUPP;
+
+ if (!arg)
+ param = PIN_CONFIG_BIAS_DISABLE;
+
return rockchip_set_pull(bank, pin - bank->pin_base, param);
break;
default:
@@ -600,12 +628,11 @@ static int rockchip_pinconf_get(struct pinctrl_dev *pctldev, unsigned int pin,
case PIN_CONFIG_BIAS_PULL_UP:
case PIN_CONFIG_BIAS_PULL_DOWN:
case PIN_CONFIG_BIAS_PULL_PIN_DEFAULT:
- pull = rockchip_get_pull(bank, pin - bank->pin_base);
-
- if (pull != param)
- return -EINVAL;
+ if (!rockchip_pinconf_pull_valid(info->ctrl, param))
+ return -ENOTSUPP;
- *config = 0;
+ pull = rockchip_get_pull(bank, pin - bank->pin_base);
+ *config = (pull == param) ? 1 : 0;
break;
default:
return -ENOTSUPP;
--
1.7.10.4
WARNING: multiple messages have this Message-ID (diff)
From: "Heiko Stübner" <heiko@sntech.de>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: "linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Grant Likely <grant.likely@linaro.org>,
rob.herring@calxeda.com, devicetree-discuss@lists.ozlabs.org,
James Hogan <james.hogan@imgtec.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Subject: [PATCH 5/5] pinctrl: rockchip: correctly handle arguments of pinconf options
Date: Fri, 14 Jun 2013 17:44:20 +0200 [thread overview]
Message-ID: <201306141744.21117.heiko@sntech.de> (raw)
In-Reply-To: <201306141741.46077.heiko@sntech.de>
Change the rockchip pinctrl driver to handle the arguments of 0 or 1 to
the pull pinconfig options correctly, so that the pull gets disabled when
either the bias_disable options is set or the pull option has the argument 0.
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
---
drivers/pinctrl/pinctrl-rockchip.c | 37 +++++++++++++++++++++++++++++++-----
1 file changed, 32 insertions(+), 5 deletions(-)
diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index c605b63..2568afc 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -563,6 +563,25 @@ static const struct pinmux_ops rockchip_pmx_ops = {
* Pinconf_ops handling
*/
+static bool rockchip_pinconf_pull_valid(struct rockchip_pin_ctrl *ctrl,
+ enum pin_config_param pull)
+{
+ /* rk3066b does support any pulls */
+ if (!ctrl->pull_offset)
+ return pull ? false : true;
+
+ if (ctrl->pull_auto) {
+ if (pull != PIN_CONFIG_BIAS_PULL_PIN_DEFAULT &&
+ pull != PIN_CONFIG_BIAS_DISABLE)
+ return false;
+ } else {
+ if (pull == PIN_CONFIG_BIAS_PULL_PIN_DEFAULT)
+ return false;
+ }
+
+ return true;
+}
+
/* set the pin config settings for a specified pin */
static int rockchip_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
unsigned long config)
@@ -570,12 +589,21 @@ static int rockchip_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
struct rockchip_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
struct rockchip_pin_bank *bank = pin_to_bank(info, pin);
enum pin_config_param param = pinconf_to_config_param(config);
+ u16 arg = pinconf_to_config_argument(config);
switch (param) {
case PIN_CONFIG_BIAS_DISABLE:
+ return rockchip_set_pull(bank, pin - bank->pin_base, param);
+ break;
case PIN_CONFIG_BIAS_PULL_UP:
case PIN_CONFIG_BIAS_PULL_DOWN:
case PIN_CONFIG_BIAS_PULL_PIN_DEFAULT:
+ if (!rockchip_pinconf_pull_valid(info->ctrl, param))
+ return -ENOTSUPP;
+
+ if (!arg)
+ param = PIN_CONFIG_BIAS_DISABLE;
+
return rockchip_set_pull(bank, pin - bank->pin_base, param);
break;
default:
@@ -600,12 +628,11 @@ static int rockchip_pinconf_get(struct pinctrl_dev *pctldev, unsigned int pin,
case PIN_CONFIG_BIAS_PULL_UP:
case PIN_CONFIG_BIAS_PULL_DOWN:
case PIN_CONFIG_BIAS_PULL_PIN_DEFAULT:
- pull = rockchip_get_pull(bank, pin - bank->pin_base);
-
- if (pull != param)
- return -EINVAL;
+ if (!rockchip_pinconf_pull_valid(info->ctrl, param))
+ return -ENOTSUPP;
- *config = 0;
+ pull = rockchip_get_pull(bank, pin - bank->pin_base);
+ *config = (pull == param) ? 1 : 0;
break;
default:
return -ENOTSUPP;
--
1.7.10.4
next prev parent reply other threads:[~2013-06-14 15:44 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-14 15:41 [PATCH 0/5] pinctrl: fix some issues with new pinconfig dt parsing Heiko Stübner
2013-06-14 15:41 ` Heiko Stübner
2013-06-14 15:42 ` [PATCH 1/5] pinctrl: update the documentation for some pinconfig params Heiko Stübner
2013-06-14 15:42 ` Heiko Stübner
2013-06-16 10:26 ` Linus Walleij
2013-06-16 10:26 ` Linus Walleij
2013-06-16 10:26 ` Linus Walleij
2013-06-16 10:45 ` Heiko Stübner
2013-06-16 10:45 ` Heiko Stübner
2013-06-16 10:45 ` Heiko Stübner
2013-06-16 12:26 ` Linus Walleij
2013-06-16 12:26 ` Linus Walleij
2013-06-14 15:42 ` [PATCH 2/5] pinctrl: clarify some dt pinconfig options Heiko Stübner
2013-06-14 15:42 ` Heiko Stübner
2013-06-16 10:28 ` Linus Walleij
2013-06-16 10:28 ` Linus Walleij
2013-06-19 22:10 ` Stephen Warren
2013-06-19 22:10 ` Stephen Warren
2013-06-24 9:51 ` Linus Walleij
2013-06-24 9:51 ` Linus Walleij
2013-06-14 15:43 ` [PATCH 3/5] pinctrl: handle zero found dt pinconfig properties better Heiko Stübner
2013-06-14 15:43 ` Heiko Stübner
2013-06-16 10:29 ` Linus Walleij
2013-06-16 10:29 ` Linus Walleij
2013-06-14 15:43 ` [PATCH 4/5] pinctrl: dynamically alloc temp array when parsing dt pinconf options Heiko Stübner
2013-06-14 15:43 ` Heiko Stübner
2013-06-16 10:31 ` Linus Walleij
2013-06-16 10:31 ` Linus Walleij
2013-06-14 15:44 ` Heiko Stübner [this message]
2013-06-14 15:44 ` [PATCH 5/5] pinctrl: rockchip: correctly handle arguments of " Heiko Stübner
2013-06-16 10:35 ` Linus Walleij
2013-06-16 10:35 ` Linus Walleij
2013-06-16 11:02 ` Heiko Stübner
2013-06-16 11:02 ` Heiko Stübner
2013-06-16 11:02 ` Heiko Stübner
2013-06-16 12:35 ` Linus Walleij
2013-06-16 12:35 ` Linus Walleij
2013-06-16 12:35 ` Linus Walleij
2013-06-16 15:41 ` [PATCH v2] " Heiko Stübner
2013-06-16 15:41 ` Heiko Stübner
2013-06-17 15:48 ` Linus Walleij
2013-06-17 15:48 ` Linus Walleij
2013-06-14 15:53 ` [PATCH 0/5] pinctrl: fix some issues with new pinconfig dt parsing James Hogan
2013-06-14 15:53 ` James Hogan
2013-06-14 15:53 ` James Hogan
2013-06-17 3:03 ` Laurent Pinchart
2013-06-17 3:03 ` Laurent Pinchart
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201306141744.21117.heiko@sntech.de \
--to=heiko@sntech.de \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.