lkml.org 
[lkml]   [2013]   [Nov]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/3] pinctrl: single: fix pcs_disable with bits_per_mux
    Date
    pcs_enable() uses vals->mask instead of pcs->fmask when bits_per_mux is
    enabled. However, pcs_disable() always uses pcs->fmask.

    Fix pcs_disable() to use vals->mask with bits_per_mux.

    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    ---
    drivers/pinctrl/pinctrl-single.c | 10 ++++++++--
    1 file changed, 8 insertions(+), 2 deletions(-)

    diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
    index 829b98c5c66f..174f4c50cd77 100644
    --- a/drivers/pinctrl/pinctrl-single.c
    +++ b/drivers/pinctrl/pinctrl-single.c
    @@ -525,12 +525,18 @@ static void pcs_disable(struct pinctrl_dev *pctldev, unsigned fselector,
    for (i = 0; i < func->nvals; i++) {
    struct pcs_func_vals *vals;
    unsigned long flags;
    - unsigned val;
    + unsigned val, mask;

    vals = &func->vals[i];
    raw_spin_lock_irqsave(&pcs->lock, flags);
    val = pcs->read(vals->reg);
    - val &= ~pcs->fmask;
    +
    + if (pcs->bits_per_mux)
    + mask = vals->mask;
    + else
    + mask = pcs->fmask;
    +
    + val &= ~mask;
    val |= pcs->foff << pcs->fshift;
    pcs->write(val, vals->reg);
    raw_spin_unlock_irqrestore(&pcs->lock, flags);
    --
    1.8.3.2


    \
     
     \ /
      Last update: 2013-11-28 13:01    [W:4.267 / U:0.204 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site