lkml.org 
[lkml]   [2014]   [Feb]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 09/13] pinctrl: mvebu: armada-xp: provide generic mpp callbacks
    Date
    We want to get rid of passing register addresses to common pinctrl
    driver, so provide set/get callbacks for generic mpp pins that will
    be used later.

    Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
    ---
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Cc: Andrew Lunn <andrew@lunn.ch>
    Cc: Gregory Clement <gregory.clement@free-electrons.com>
    Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Cc: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    ---
    drivers/pinctrl/mvebu/pinctrl-armada-xp.c | 24 ++++++++++++++++++++++++
    1 file changed, 24 insertions(+)

    diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-xp.c b/drivers/pinctrl/mvebu/pinctrl-armada-xp.c
    index 843a51f9d129..b5381b421284 100644
    --- a/drivers/pinctrl/mvebu/pinctrl-armada-xp.c
    +++ b/drivers/pinctrl/mvebu/pinctrl-armada-xp.c
    @@ -33,6 +33,30 @@

    #include "pinctrl-mvebu.h"

    +static void __iomem *mpp_base;
    +
    +static int armada_xp_mpp_ctrl_get(unsigned pid, unsigned long *config)
    +{
    + unsigned off = (pid / MVEBU_MPPS_PER_REG) * MVEBU_MPP_BITS;
    + unsigned shift = (pid % MVEBU_MPPS_PER_REG) * MVEBU_MPP_BITS;
    +
    + *config = (readl(mpp_base + off) >> shift) & MVEBU_MPP_MASK;
    +
    + return 0;
    +}
    +
    +static int armada_xp_mpp_ctrl_set(unsigned pid, unsigned long config)
    +{
    + unsigned off = (pid / MVEBU_MPPS_PER_REG) * MVEBU_MPP_BITS;
    + unsigned shift = (pid % MVEBU_MPPS_PER_REG) * MVEBU_MPP_BITS;
    + unsigned long reg;
    +
    + reg = readl(mpp_base + off) & ~(MVEBU_MPP_MASK << shift);
    + writel(reg | (config << shift), mpp_base + off);
    +
    + return 0;
    +}
    +
    enum armada_xp_variant {
    V_MV78230 = BIT(0),
    V_MV78260 = BIT(1),
    --
    1.8.5.3


    \
     
     \ /
      Last update: 2014-02-12 17:41    [W:4.072 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site