bug: introduce BUILD_BUG_ON_INVALID() macro
[linux/fpc-iii.git] / drivers / pinctrl / pinctrl-nomadik.h
blobbc91aed7185db0bb46d731523819d6fa0dcbf8e6
1 #ifndef PINCTRL_PINCTRL_NOMADIK_H
2 #define PINCTRL_PINCTRL_NOMADIK_H
4 #include <plat/gpio-nomadik.h>
6 /* Package definitions */
7 #define PINCTRL_NMK_STN8815 0
8 #define PINCTRL_NMK_DB8500 1
10 /**
11 * struct nmk_function - Nomadik pinctrl mux function
12 * @name: The name of the function, exported to pinctrl core.
13 * @groups: An array of pin groups that may select this function.
14 * @ngroups: The number of entries in @groups.
16 struct nmk_function {
17 const char *name;
18 const char * const *groups;
19 unsigned ngroups;
22 /**
23 * struct nmk_pingroup - describes a Nomadik pin group
24 * @name: the name of this specific pin group
25 * @pins: an array of discrete physical pins used in this group, taken
26 * from the driver-local pin enumeration space
27 * @num_pins: the number of pins in this group array, i.e. the number of
28 * elements in .pins so we can iterate over that array
29 * @altsetting: the altsetting to apply to all pins in this group to
30 * configure them to be used by a function
32 struct nmk_pingroup {
33 const char *name;
34 const unsigned int *pins;
35 const unsigned npins;
36 int altsetting;
39 /**
40 * struct nmk_pinctrl_soc_data - Nomadik pin controller per-SoC configuration
41 * @gpio_ranges: An array of GPIO ranges for this SoC
42 * @gpio_num_ranges: The number of GPIO ranges for this SoC
43 * @pins: An array describing all pins the pin controller affects.
44 * All pins which are also GPIOs must be listed first within the
45 * array, and be numbered identically to the GPIO controller's
46 * numbering.
47 * @npins: The number of entries in @pins.
48 * @functions: The functions supported on this SoC.
49 * @nfunction: The number of entries in @functions.
50 * @groups: An array describing all pin groups the pin SoC supports.
51 * @ngroups: The number of entries in @groups.
53 struct nmk_pinctrl_soc_data {
54 struct pinctrl_gpio_range *gpio_ranges;
55 unsigned gpio_num_ranges;
56 const struct pinctrl_pin_desc *pins;
57 unsigned npins;
58 const struct nmk_function *functions;
59 unsigned nfunctions;
60 const struct nmk_pingroup *groups;
61 unsigned ngroups;
64 #ifdef CONFIG_PINCTRL_DB8500
66 void nmk_pinctrl_db8500_init(const struct nmk_pinctrl_soc_data **soc);
68 #else
70 static inline void
71 nmk_pinctrl_db8500_init(const struct nmk_pinctrl_soc_data **soc)
75 #endif
77 #endif /* PINCTRL_PINCTRL_NOMADIK_H */