Re: [PATCH] pinctrl-msm: Support output-{high,low} configuration

2014-02-06 Thread Linus Walleij
On Wed, Feb 5, 2014 at 4:55 AM, Bjorn Andersson  wrote:

> Add support for configuring pins as output with value as from the
> pinconf-generic interface.
>
> Signed-off-by: Bjorn Andersson 

Patch applied.

Yours,
Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] pinctrl-msm: Support output-{high,low} configuration

2014-02-04 Thread Bjorn Andersson
Add support for configuring pins as output with value as from the
pinconf-generic interface.

Signed-off-by: Bjorn Andersson 
---
 drivers/pinctrl/pinctrl-msm.c |   27 +++
 1 file changed, 27 insertions(+)

diff --git a/drivers/pinctrl/pinctrl-msm.c b/drivers/pinctrl/pinctrl-msm.c
index ef2bf31..2cfb1d4 100644
--- a/drivers/pinctrl/pinctrl-msm.c
+++ b/drivers/pinctrl/pinctrl-msm.c
@@ -228,6 +228,11 @@ static int msm_config_reg(struct msm_pinctrl *pctrl,
*bit = g->drv_bit;
*mask = 7;
break;
+   case PIN_CONFIG_OUTPUT:
+   *reg = g->ctl_reg;
+   *bit = g->oe_bit;
+   *mask = 1;
+   break;
default:
dev_err(pctrl->dev, "Invalid config param %04x\n", param);
return -ENOTSUPP;
@@ -301,6 +306,14 @@ static int msm_config_group_get(struct pinctrl_dev 
*pctldev,
case PIN_CONFIG_DRIVE_STRENGTH:
arg = msm_regval_to_drive[arg];
break;
+   case PIN_CONFIG_OUTPUT:
+   /* Pin is not output */
+   if (!arg)
+   return -EINVAL;
+
+   val = readl(pctrl->regs + g->io_reg);
+   arg = !!(val & BIT(g->in_bit));
+   break;
default:
dev_err(pctrl->dev, "Unsupported config parameter: %x\n",
param);
@@ -357,6 +370,20 @@ static int msm_config_group_set(struct pinctrl_dev 
*pctldev,
else
arg = msm_drive_to_regval[arg];
break;
+   case PIN_CONFIG_OUTPUT:
+   /* set output value */
+   spin_lock_irqsave(&pctrl->lock, flags);
+   val = readl(pctrl->regs + g->io_reg);
+   if (arg)
+   val |= BIT(g->out_bit);
+   else
+   val &= ~BIT(g->out_bit);
+   writel(val, pctrl->regs + g->io_reg);
+   spin_unlock_irqrestore(&pctrl->lock, flags);
+
+   /* enable output */
+   arg = 1;
+   break;
default:
dev_err(pctrl->dev, "Unsupported config parameter: 
%x\n",
param);
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/