pinmux.h (4310B)
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * Internal interface between the core pin control system and the 4 * pinmux portions 5 * 6 * Copyright (C) 2011 ST-Ericsson SA 7 * Written on behalf of Linaro for ST-Ericsson 8 * Based on bits of regulator core, gpio core and clk core 9 * 10 * Author: Linus Walleij <linus.walleij@linaro.org> 11 */ 12#ifdef CONFIG_PINMUX 13 14int pinmux_check_ops(struct pinctrl_dev *pctldev); 15 16int pinmux_validate_map(const struct pinctrl_map *map, int i); 17 18bool pinmux_can_be_used_for_gpio(struct pinctrl_dev *pctldev, unsigned pin); 19 20int pinmux_request_gpio(struct pinctrl_dev *pctldev, 21 struct pinctrl_gpio_range *range, 22 unsigned pin, unsigned gpio); 23void pinmux_free_gpio(struct pinctrl_dev *pctldev, unsigned pin, 24 struct pinctrl_gpio_range *range); 25int pinmux_gpio_direction(struct pinctrl_dev *pctldev, 26 struct pinctrl_gpio_range *range, 27 unsigned pin, bool input); 28 29int pinmux_map_to_setting(const struct pinctrl_map *map, 30 struct pinctrl_setting *setting); 31void pinmux_free_setting(const struct pinctrl_setting *setting); 32int pinmux_enable_setting(const struct pinctrl_setting *setting); 33void pinmux_disable_setting(const struct pinctrl_setting *setting); 34 35#else 36 37static inline int pinmux_check_ops(struct pinctrl_dev *pctldev) 38{ 39 return 0; 40} 41 42static inline int pinmux_validate_map(const struct pinctrl_map *map, int i) 43{ 44 return 0; 45} 46 47static inline bool pinmux_can_be_used_for_gpio(struct pinctrl_dev *pctldev, 48 unsigned pin) 49{ 50 return true; 51} 52 53static inline int pinmux_request_gpio(struct pinctrl_dev *pctldev, 54 struct pinctrl_gpio_range *range, 55 unsigned pin, unsigned gpio) 56{ 57 return 0; 58} 59 60static inline void pinmux_free_gpio(struct pinctrl_dev *pctldev, 61 unsigned pin, 62 struct pinctrl_gpio_range *range) 63{ 64} 65 66static inline int pinmux_gpio_direction(struct pinctrl_dev *pctldev, 67 struct pinctrl_gpio_range *range, 68 unsigned pin, bool input) 69{ 70 return 0; 71} 72 73static inline int pinmux_map_to_setting(const struct pinctrl_map *map, 74 struct pinctrl_setting *setting) 75{ 76 return 0; 77} 78 79static inline void pinmux_free_setting(const struct pinctrl_setting *setting) 80{ 81} 82 83static inline int pinmux_enable_setting(const struct pinctrl_setting *setting) 84{ 85 return 0; 86} 87 88static inline void pinmux_disable_setting(const struct pinctrl_setting *setting) 89{ 90} 91 92#endif 93 94#if defined(CONFIG_PINMUX) && defined(CONFIG_DEBUG_FS) 95 96void pinmux_show_map(struct seq_file *s, const struct pinctrl_map *map); 97void pinmux_show_setting(struct seq_file *s, 98 const struct pinctrl_setting *setting); 99void pinmux_init_device_debugfs(struct dentry *devroot, 100 struct pinctrl_dev *pctldev); 101 102#else 103 104static inline void pinmux_show_map(struct seq_file *s, 105 const struct pinctrl_map *map) 106{ 107} 108 109static inline void pinmux_show_setting(struct seq_file *s, 110 const struct pinctrl_setting *setting) 111{ 112} 113 114static inline void pinmux_init_device_debugfs(struct dentry *devroot, 115 struct pinctrl_dev *pctldev) 116{ 117} 118 119#endif 120 121#ifdef CONFIG_GENERIC_PINMUX_FUNCTIONS 122 123/** 124 * struct function_desc - generic function descriptor 125 * @name: name of the function 126 * @group_names: array of pin group names 127 * @num_group_names: number of pin group names 128 * @data: pin controller driver specific data 129 */ 130struct function_desc { 131 const char *name; 132 const char * const *group_names; 133 int num_group_names; 134 void *data; 135}; 136 137int pinmux_generic_get_function_count(struct pinctrl_dev *pctldev); 138 139const char * 140pinmux_generic_get_function_name(struct pinctrl_dev *pctldev, 141 unsigned int selector); 142 143int pinmux_generic_get_function_groups(struct pinctrl_dev *pctldev, 144 unsigned int selector, 145 const char * const **groups, 146 unsigned * const num_groups); 147 148struct function_desc *pinmux_generic_get_function(struct pinctrl_dev *pctldev, 149 unsigned int selector); 150 151int pinmux_generic_add_function(struct pinctrl_dev *pctldev, 152 const char *name, 153 const char * const *groups, 154 unsigned const num_groups, 155 void *data); 156 157int pinmux_generic_remove_function(struct pinctrl_dev *pctldev, 158 unsigned int selector); 159 160void pinmux_generic_free_functions(struct pinctrl_dev *pctldev); 161 162#else 163 164static inline void pinmux_generic_free_functions(struct pinctrl_dev *pctldev) 165{ 166} 167 168#endif /* CONFIG_GENERIC_PINMUX_FUNCTIONS */