pinctrl: mvebu: add common mpp reg helper to mvebu pinctrl include
This adds some defines and helper functions for the common mpp reg layout to mvebu pinctrl include. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Tested-by: Andrew Lunn <andrew@lunn.ch>
This commit is contained in:
parent
2035d39da1
commit
f5b85e42d4
|
@ -186,6 +186,34 @@ struct mvebu_pinctrl_soc_info {
|
|||
.npins = _npins, \
|
||||
}
|
||||
|
||||
#define MVEBU_MPPS_PER_REG 8
|
||||
#define MVEBU_MPP_BITS 4
|
||||
#define MVEBU_MPP_MASK 0xf
|
||||
|
||||
static inline int default_mpp_ctrl_get(void __iomem *base, unsigned int 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(base + off) >> shift) & MVEBU_MPP_MASK;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int default_mpp_ctrl_set(void __iomem *base, unsigned int 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(base + off) & ~(MVEBU_MPP_MASK << shift);
|
||||
writel(reg | (config << shift), base + off);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mvebu_pinctrl_probe(struct platform_device *pdev);
|
||||
int mvebu_pinctrl_remove(struct platform_device *pdev);
|
||||
|
||||
|
|
Loading…
Reference in New Issue