diff options
author | Herve Codina <herve.codina@bootlin.com> | 2021-12-02 10:52:50 +0100 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2021-12-05 00:32:44 +0100 |
commit | d11db044a394e2f842bd6f31b904feb298a4699f (patch) | |
tree | b99db33084aa60e60f28c6bcb1fb2f6d4a8ed27e /drivers/pinctrl/spear/pinctrl-spear.h | |
parent | 896568e5b9c8a170912ff83760dca51703e276f1 (diff) |
pinctrl: spear: spear: Convert to regmap
Resources need to be shared between pinmux and plgpio.
Use regmap (syscon) to access resources to allow an
easy way to share resources.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Link: https://lore.kernel.org/r/20211202095255.165797-2-herve.codina@bootlin.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/spear/pinctrl-spear.h')
-rw-r--r-- | drivers/pinctrl/spear/pinctrl-spear.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/pinctrl/spear/pinctrl-spear.h b/drivers/pinctrl/spear/pinctrl-spear.h index db029b148c87..63a0b5ea56ef 100644 --- a/drivers/pinctrl/spear/pinctrl-spear.h +++ b/drivers/pinctrl/spear/pinctrl-spear.h @@ -15,6 +15,7 @@ #include <linux/gpio/driver.h> #include <linux/io.h> #include <linux/pinctrl/pinctrl.h> +#include <linux/regmap.h> #include <linux/types.h> struct platform_device; @@ -172,24 +173,27 @@ struct spear_pinctrl_machdata { * @dev: pointer to struct dev of platform_device registered * @pctl: pointer to struct pinctrl_dev * @machdata: pointer to SoC or machine specific structure - * @vbase: virtual base address of pinmux controller + * @regmap: regmap of pinmux controller */ struct spear_pmx { struct device *dev; struct pinctrl_dev *pctl; struct spear_pinctrl_machdata *machdata; - void __iomem *vbase; + struct regmap *regmap; }; /* exported routines */ static inline u32 pmx_readl(struct spear_pmx *pmx, u32 reg) { - return readl_relaxed(pmx->vbase + reg); + u32 val; + + regmap_read(pmx->regmap, reg, &val); + return val; } static inline void pmx_writel(struct spear_pmx *pmx, u32 val, u32 reg) { - writel_relaxed(val, pmx->vbase + reg); + regmap_write(pmx->regmap, reg, val); } void pmx_init_addr(struct spear_pinctrl_machdata *machdata, u16 reg); |