]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - drivers/pinctrl/pinctrl-adi2.h
ALSA: hda/realtek - Use a common helper for hp pin reference
[mirror_ubuntu-bionic-kernel.git] / drivers / pinctrl / pinctrl-adi2.h
1 /*
2 * Pinctrl Driver for ADI GPIO2 controller
3 *
4 * Copyright 2007-2013 Analog Devices Inc.
5 *
6 * Licensed under the GPLv2 or later
7 */
8
9 #ifndef PINCTRL_PINCTRL_ADI2_H
10 #define PINCTRL_PINCTRL_ADI2_H
11
12 #include <linux/pinctrl/pinctrl.h>
13
14 /**
15 * struct adi_pin_group - describes a pin group
16 * @name: the name of this pin group
17 * @pins: an array of pins
18 * @num: the number of pins in this array
19 */
20 struct adi_pin_group {
21 const char *name;
22 const unsigned *pins;
23 const unsigned num;
24 const unsigned short *mux;
25 };
26
27 #define ADI_PIN_GROUP(n, p, m) \
28 { \
29 .name = n, \
30 .pins = p, \
31 .num = ARRAY_SIZE(p), \
32 .mux = m, \
33 }
34
35 /**
36 * struct adi_pmx_func - describes function mux setting of pin groups
37 * @name: the name of this function mux setting
38 * @groups: an array of pin groups
39 * @num_groups: the number of pin groups in this array
40 * @mux: the function mux setting array, end by zero
41 */
42 struct adi_pmx_func {
43 const char *name;
44 const char * const *groups;
45 const unsigned num_groups;
46 };
47
48 #define ADI_PMX_FUNCTION(n, g) \
49 { \
50 .name = n, \
51 .groups = g, \
52 .num_groups = ARRAY_SIZE(g), \
53 }
54
55 /**
56 * struct adi_pinctrl_soc_data - ADI pin controller per-SoC configuration
57 * @functions: The functions supported on this SoC.
58 * @nfunction: The number of entries in @functions.
59 * @groups: An array describing all pin groups the pin SoC supports.
60 * @ngroups: The number of entries in @groups.
61 * @pins: An array describing all pins the pin controller affects.
62 * @npins: The number of entries in @pins.
63 */
64 struct adi_pinctrl_soc_data {
65 const struct adi_pmx_func *functions;
66 int nfunctions;
67 const struct adi_pin_group *groups;
68 int ngroups;
69 const struct pinctrl_pin_desc *pins;
70 int npins;
71 };
72
73 void adi_pinctrl_soc_init(const struct adi_pinctrl_soc_data **soc);
74
75 #endif /* PINCTRL_PINCTRL_ADI2_H */