142 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Internal interface between the core pin control system and the4 * pin config portions5 *6 * Copyright (C) 2011 ST-Ericsson SA7 * Written on behalf of Linaro for ST-Ericsson8 * Based on bits of regulator core, gpio core and clk core9 *10 * Author: Linus Walleij <linus.walleij@linaro.org>11 */12 13#include <linux/errno.h>14 15struct dentry;16struct device_node;17struct seq_file;18 19struct pinctrl_dev;20struct pinctrl_map;21struct pinctrl_setting;22 23#ifdef CONFIG_PINCONF24 25int pinconf_check_ops(struct pinctrl_dev *pctldev);26int pinconf_validate_map(const struct pinctrl_map *map, int i);27int pinconf_map_to_setting(const struct pinctrl_map *map,28 struct pinctrl_setting *setting);29void pinconf_free_setting(const struct pinctrl_setting *setting);30int pinconf_apply_setting(const struct pinctrl_setting *setting);31 32int pinconf_set_config(struct pinctrl_dev *pctldev, unsigned int pin,33 unsigned long *configs, size_t nconfigs);34 35/*36 * You will only be interested in these if you're using PINCONF37 * so don't supply any stubs for these.38 */39int pin_config_get_for_pin(struct pinctrl_dev *pctldev, unsigned int pin,40 unsigned long *config);41int pin_config_group_get(const char *dev_name, const char *pin_group,42 unsigned long *config);43 44#else45 46static inline int pinconf_check_ops(struct pinctrl_dev *pctldev)47{48 return 0;49}50 51static inline int pinconf_validate_map(const struct pinctrl_map *map, int i)52{53 return 0;54}55 56static inline int pinconf_map_to_setting(const struct pinctrl_map *map,57 struct pinctrl_setting *setting)58{59 return 0;60}61 62static inline void pinconf_free_setting(const struct pinctrl_setting *setting)63{64}65 66static inline int pinconf_apply_setting(const struct pinctrl_setting *setting)67{68 return 0;69}70 71static inline int pinconf_set_config(struct pinctrl_dev *pctldev, unsigned int pin,72 unsigned long *configs, size_t nconfigs)73{74 return -ENOTSUPP;75}76 77#endif78 79#if defined(CONFIG_PINCONF) && defined(CONFIG_DEBUG_FS)80 81void pinconf_show_map(struct seq_file *s, const struct pinctrl_map *map);82void pinconf_show_setting(struct seq_file *s,83 const struct pinctrl_setting *setting);84void pinconf_init_device_debugfs(struct dentry *devroot,85 struct pinctrl_dev *pctldev);86 87#else88 89static inline void pinconf_show_map(struct seq_file *s,90 const struct pinctrl_map *map)91{92}93 94static inline void pinconf_show_setting(struct seq_file *s,95 const struct pinctrl_setting *setting)96{97}98 99static inline void pinconf_init_device_debugfs(struct dentry *devroot,100 struct pinctrl_dev *pctldev)101{102}103 104#endif105 106/*107 * The following functions are available if the driver uses the generic108 * pin config.109 */110 111#if defined(CONFIG_GENERIC_PINCONF) && defined(CONFIG_DEBUG_FS)112 113void pinconf_generic_dump_pins(struct pinctrl_dev *pctldev,114 struct seq_file *s, const char *gname,115 unsigned int pin);116 117void pinconf_generic_dump_config(struct pinctrl_dev *pctldev,118 struct seq_file *s, unsigned long config);119#else120 121static inline void pinconf_generic_dump_pins(struct pinctrl_dev *pctldev,122 struct seq_file *s,123 const char *gname, unsigned int pin)124{125 return;126}127 128static inline void pinconf_generic_dump_config(struct pinctrl_dev *pctldev,129 struct seq_file *s,130 unsigned long config)131{132 return;133}134#endif135 136#if defined(CONFIG_GENERIC_PINCONF) && defined(CONFIG_OF)137int pinconf_generic_parse_dt_config(struct device_node *np,138 struct pinctrl_dev *pctldev,139 unsigned long **configs,140 unsigned int *nconfigs);141#endif142