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