mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-16 18:26:42 +00:00
5d421ff557
Since pin control provides a generic data type for the pin function, use it in the driver. Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com> Link: https://lore.kernel.org/r/20240530085745.1539925-2-andy.shevchenko@gmail.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
57 lines
1.2 KiB
C
57 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Marvell Berlin SoC pinctrl driver.
|
|
*
|
|
* Copyright (C) 2014 Marvell Technology Group Ltd.
|
|
*
|
|
* Antoine Ténart <antoine.tenart@free-electrons.com>
|
|
*/
|
|
|
|
#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;
|
|
};
|
|
|
|
#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);
|
|
|
|
int berlin_pinctrl_probe_regmap(struct platform_device *pdev,
|
|
const struct berlin_pinctrl_desc *desc,
|
|
struct regmap *regmap);
|
|
|
|
#endif /* __PINCTRL_BERLIN_H */
|