]> Git Repo - linux.git/blob - drivers/pinctrl/berlin/berlin.h
Linux 6.14-rc3
[linux.git] / drivers / pinctrl / berlin / berlin.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Marvell Berlin SoC pinctrl driver.
4  *
5  * Copyright (C) 2014 Marvell Technology Group Ltd.
6  *
7  * Antoine Ténart <[email protected]>
8  */
9
10 #ifndef __PINCTRL_BERLIN_H
11 #define __PINCTRL_BERLIN_H
12
13 struct berlin_desc_function {
14         const char      *name;
15         u8              muxval;
16 };
17
18 struct berlin_desc_group {
19         const char                      *name;
20         u8                              offset;
21         u8                              bit_width;
22         u8                              lsb;
23         struct berlin_desc_function     *functions;
24 };
25
26 struct berlin_pinctrl_desc {
27         const struct berlin_desc_group  *groups;
28         unsigned                        ngroups;
29 };
30
31 #define BERLIN_PINCTRL_GROUP(_name, _offset, _width, _lsb, ...)         \
32         {                                                               \
33                 .name = _name,                                          \
34                 .offset = _offset,                                      \
35                 .bit_width = _width,                                    \
36                 .lsb = _lsb,                                            \
37                 .functions = (struct berlin_desc_function[]){           \
38                         __VA_ARGS__, { } },                             \
39         }
40
41 #define BERLIN_PINCTRL_FUNCTION(_muxval, _name)         \
42         {                                               \
43                 .name = _name,                          \
44                 .muxval = _muxval,                      \
45         }
46
47 #define BERLIN_PINCTRL_FUNCTION_UNKNOWN         {}
48
49 int berlin_pinctrl_probe(struct platform_device *pdev,
50                          const struct berlin_pinctrl_desc *desc);
51
52 int berlin_pinctrl_probe_regmap(struct platform_device *pdev,
53                                 const struct berlin_pinctrl_desc *desc,
54                                 struct regmap *regmap);
55
56 #endif /* __PINCTRL_BERLIN_H */
This page took 0.03416 seconds and 4 git commands to generate.