2018-05-16 15:33:37 +08:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
2014-05-20 01:36:29 +08:00
|
|
|
/*
|
|
|
|
* Marvell Berlin SoC pinctrl driver.
|
|
|
|
*
|
|
|
|
* Copyright (C) 2014 Marvell Technology Group Ltd.
|
|
|
|
*
|
2015-10-14 05:31:41 +08:00
|
|
|
* Antoine Ténart <antoine.tenart@free-electrons.com>
|
2014-05-20 01:36:29 +08:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __PINCTRL_BERLIN_H
|
|
|
|
#define __PINCTRL_BERLIN_H
|
|
|
|
|
|
|
|
struct berlin_desc_function {
|
|
|
|
const char *name;
|
|
|
|
u8 muxval;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct berlin_desc_group {
|
|
|
|
const char *name;
|
|
|
|
u8 offset;
|
|
|
|
u8 bit_width;
|
|
|
|
u8 lsb;
|
|
|
|
struct berlin_desc_function *functions;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct berlin_pinctrl_desc {
|
|
|
|
const struct berlin_desc_group *groups;
|
|
|
|
unsigned ngroups;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct berlin_pinctrl_function {
|
|
|
|
const char *name;
|
|
|
|
const char **groups;
|
|
|
|
unsigned ngroups;
|
|
|
|
};
|
|
|
|
|
|
|
|
#define BERLIN_PINCTRL_GROUP(_name, _offset, _width, _lsb, ...) \
|
|
|
|
{ \
|
|
|
|
.name = _name, \
|
|
|
|
.offset = _offset, \
|
|
|
|
.bit_width = _width, \
|
|
|
|
.lsb = _lsb, \
|
|
|
|
.functions = (struct berlin_desc_function[]){ \
|
|
|
|
__VA_ARGS__, { } }, \
|
|
|
|
}
|
|
|
|
|
|
|
|
#define BERLIN_PINCTRL_FUNCTION(_muxval, _name) \
|
|
|
|
{ \
|
|
|
|
.name = _name, \
|
|
|
|
.muxval = _muxval, \
|
|
|
|
}
|
|
|
|
|
|
|
|
#define BERLIN_PINCTRL_FUNCTION_UNKNOWN {}
|
|
|
|
|
|
|
|
int berlin_pinctrl_probe(struct platform_device *pdev,
|
|
|
|
const struct berlin_pinctrl_desc *desc);
|
|
|
|
|
2015-10-16 15:37:06 +08:00
|
|
|
int berlin_pinctrl_probe_regmap(struct platform_device *pdev,
|
|
|
|
const struct berlin_pinctrl_desc *desc,
|
|
|
|
struct regmap *regmap);
|
|
|
|
|
2014-05-20 01:36:29 +08:00
|
|
|
#endif /* __PINCTRL_BERLIN_H */
|