| #ifndef PINCTRL_PINCTRL_NOMADIK_H |
| #define PINCTRL_PINCTRL_NOMADIK_H |
| |
| #include <plat/gpio-nomadik.h> |
| |
| /* Package definitions */ |
| #define PINCTRL_NMK_STN8815 0 |
| #define PINCTRL_NMK_DB8500 1 |
| #define PINCTRL_NMK_DB8540 2 |
| |
| /** |
| * struct nmk_function - Nomadik pinctrl mux function |
| * @name: The name of the function, exported to pinctrl core. |
| * @groups: An array of pin groups that may select this function. |
| * @ngroups: The number of entries in @groups. |
| */ |
| struct nmk_function { |
| const char *name; |
| const char * const *groups; |
| unsigned ngroups; |
| }; |
| |
| /** |
| * struct nmk_pingroup - describes a Nomadik pin group |
| * @name: the name of this specific pin group |
| * @pins: an array of discrete physical pins used in this group, taken |
| * from the driver-local pin enumeration space |
| * @num_pins: the number of pins in this group array, i.e. the number of |
| * elements in .pins so we can iterate over that array |
| * @altsetting: the altsetting to apply to all pins in this group to |
| * configure them to be used by a function |
| */ |
| struct nmk_pingroup { |
| const char *name; |
| const unsigned int *pins; |
| const unsigned npins; |
| int altsetting; |
| }; |
| |
| /** |
| * struct nmk_pinctrl_soc_data - Nomadik pin controller per-SoC configuration |
| * @gpio_ranges: An array of GPIO ranges for this SoC |
| * @gpio_num_ranges: The number of GPIO ranges for this SoC |
| * @pins: An array describing all pins the pin controller affects. |
| * All pins which are also GPIOs must be listed first within the |
| * array, and be numbered identically to the GPIO controller's |
| * numbering. |
| * @npins: The number of entries in @pins. |
| * @functions: The functions supported on this SoC. |
| * @nfunction: The number of entries in @functions. |
| * @groups: An array describing all pin groups the pin SoC supports. |
| * @ngroups: The number of entries in @groups. |
| */ |
| struct nmk_pinctrl_soc_data { |
| struct pinctrl_gpio_range *gpio_ranges; |
| unsigned gpio_num_ranges; |
| const struct pinctrl_pin_desc *pins; |
| unsigned npins; |
| const struct nmk_function *functions; |
| unsigned nfunctions; |
| const struct nmk_pingroup *groups; |
| unsigned ngroups; |
| }; |
| |
| #ifdef CONFIG_PINCTRL_STN8815 |
| |
| void nmk_pinctrl_stn8815_init(const struct nmk_pinctrl_soc_data **soc); |
| |
| #else |
| |
| static inline void |
| nmk_pinctrl_stn8815_init(const struct nmk_pinctrl_soc_data **soc) |
| { |
| } |
| |
| #endif |
| |
| #ifdef CONFIG_PINCTRL_DB8500 |
| |
| void nmk_pinctrl_db8500_init(const struct nmk_pinctrl_soc_data **soc); |
| |
| #else |
| |
| static inline void |
| nmk_pinctrl_db8500_init(const struct nmk_pinctrl_soc_data **soc) |
| { |
| } |
| |
| #endif |
| |
| #ifdef CONFIG_PINCTRL_DB8540 |
| |
| void nmk_pinctrl_db8540_init(const struct nmk_pinctrl_soc_data **soc); |
| |
| #else |
| |
| static inline void |
| nmk_pinctrl_db8540_init(const struct nmk_pinctrl_soc_data **soc) |
| { |
| } |
| |
| #endif |
| |
| #endif /* PINCTRL_PINCTRL_NOMADIK_H */ |