13d0407baSopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 23d0407baSopenharmony_ci/* 33d0407baSopenharmony_ci * Internal interface between the core pin control system and the 43d0407baSopenharmony_ci * pin config portions 53d0407baSopenharmony_ci * 63d0407baSopenharmony_ci * Copyright (C) 2011 ST-Ericsson SA 73d0407baSopenharmony_ci * Written on behalf of Linaro for ST-Ericsson 83d0407baSopenharmony_ci * Based on bits of regulator core, gpio core and clk core 93d0407baSopenharmony_ci * 103d0407baSopenharmony_ci * Author: Linus Walleij <linus.walleij@linaro.org> 113d0407baSopenharmony_ci */ 123d0407baSopenharmony_ci 133d0407baSopenharmony_ci#ifdef CONFIG_PINCONF 143d0407baSopenharmony_ci 153d0407baSopenharmony_ciint pinconf_check_ops(struct pinctrl_dev *pctldev); 163d0407baSopenharmony_ciint pinconf_validate_map(const struct pinctrl_map *map, int i); 173d0407baSopenharmony_ciint pinconf_map_to_setting(const struct pinctrl_map *map, 183d0407baSopenharmony_ci struct pinctrl_setting *setting); 193d0407baSopenharmony_civoid pinconf_free_setting(const struct pinctrl_setting *setting); 203d0407baSopenharmony_ciint pinconf_apply_setting(const struct pinctrl_setting *setting); 213d0407baSopenharmony_ci 223d0407baSopenharmony_ciint pinconf_set_config(struct pinctrl_dev *pctldev, unsigned pin, 233d0407baSopenharmony_ci unsigned long *configs, size_t nconfigs); 243d0407baSopenharmony_ci 253d0407baSopenharmony_ci/* 263d0407baSopenharmony_ci * You will only be interested in these if you're using PINCONF 273d0407baSopenharmony_ci * so don't supply any stubs for these. 283d0407baSopenharmony_ci */ 293d0407baSopenharmony_ciint pin_config_get_for_pin(struct pinctrl_dev *pctldev, unsigned pin, 303d0407baSopenharmony_ci unsigned long *config); 313d0407baSopenharmony_ciint pin_config_group_get(const char *dev_name, const char *pin_group, 323d0407baSopenharmony_ci unsigned long *config); 333d0407baSopenharmony_ci 343d0407baSopenharmony_ci#else 353d0407baSopenharmony_ci 363d0407baSopenharmony_cistatic inline int pinconf_check_ops(struct pinctrl_dev *pctldev) 373d0407baSopenharmony_ci{ 383d0407baSopenharmony_ci return 0; 393d0407baSopenharmony_ci} 403d0407baSopenharmony_ci 413d0407baSopenharmony_cistatic inline int pinconf_validate_map(const struct pinctrl_map *map, int i) 423d0407baSopenharmony_ci{ 433d0407baSopenharmony_ci return 0; 443d0407baSopenharmony_ci} 453d0407baSopenharmony_ci 463d0407baSopenharmony_cistatic inline int pinconf_map_to_setting(const struct pinctrl_map *map, 473d0407baSopenharmony_ci struct pinctrl_setting *setting) 483d0407baSopenharmony_ci{ 493d0407baSopenharmony_ci return 0; 503d0407baSopenharmony_ci} 513d0407baSopenharmony_ci 523d0407baSopenharmony_cistatic inline void pinconf_free_setting(const struct pinctrl_setting *setting) 533d0407baSopenharmony_ci{ 543d0407baSopenharmony_ci} 553d0407baSopenharmony_ci 563d0407baSopenharmony_cistatic inline int pinconf_apply_setting(const struct pinctrl_setting *setting) 573d0407baSopenharmony_ci{ 583d0407baSopenharmony_ci return 0; 593d0407baSopenharmony_ci} 603d0407baSopenharmony_ci 613d0407baSopenharmony_cistatic inline int pinconf_set_config(struct pinctrl_dev *pctldev, unsigned pin, 623d0407baSopenharmony_ci unsigned long *configs, size_t nconfigs) 633d0407baSopenharmony_ci{ 643d0407baSopenharmony_ci return -ENOTSUPP; 653d0407baSopenharmony_ci} 663d0407baSopenharmony_ci 673d0407baSopenharmony_ci#endif 683d0407baSopenharmony_ci 693d0407baSopenharmony_ci#if defined(CONFIG_PINCONF) && defined(CONFIG_DEBUG_FS) 703d0407baSopenharmony_ci 713d0407baSopenharmony_civoid pinconf_show_map(struct seq_file *s, const struct pinctrl_map *map); 723d0407baSopenharmony_civoid pinconf_show_setting(struct seq_file *s, 733d0407baSopenharmony_ci const struct pinctrl_setting *setting); 743d0407baSopenharmony_civoid pinconf_init_device_debugfs(struct dentry *devroot, 753d0407baSopenharmony_ci struct pinctrl_dev *pctldev); 763d0407baSopenharmony_ci 773d0407baSopenharmony_ci#else 783d0407baSopenharmony_ci 793d0407baSopenharmony_cistatic inline void pinconf_show_map(struct seq_file *s, 803d0407baSopenharmony_ci const struct pinctrl_map *map) 813d0407baSopenharmony_ci{ 823d0407baSopenharmony_ci} 833d0407baSopenharmony_ci 843d0407baSopenharmony_cistatic inline void pinconf_show_setting(struct seq_file *s, 853d0407baSopenharmony_ci const struct pinctrl_setting *setting) 863d0407baSopenharmony_ci{ 873d0407baSopenharmony_ci} 883d0407baSopenharmony_ci 893d0407baSopenharmony_cistatic inline void pinconf_init_device_debugfs(struct dentry *devroot, 903d0407baSopenharmony_ci struct pinctrl_dev *pctldev) 913d0407baSopenharmony_ci{ 923d0407baSopenharmony_ci} 933d0407baSopenharmony_ci 943d0407baSopenharmony_ci#endif 953d0407baSopenharmony_ci 963d0407baSopenharmony_ci/* 973d0407baSopenharmony_ci * The following functions are available if the driver uses the generic 983d0407baSopenharmony_ci * pin config. 993d0407baSopenharmony_ci */ 1003d0407baSopenharmony_ci 1013d0407baSopenharmony_ci#if defined(CONFIG_GENERIC_PINCONF) && defined(CONFIG_DEBUG_FS) 1023d0407baSopenharmony_ci 1033d0407baSopenharmony_civoid pinconf_generic_dump_pins(struct pinctrl_dev *pctldev, 1043d0407baSopenharmony_ci struct seq_file *s, const char *gname, 1053d0407baSopenharmony_ci unsigned pin); 1063d0407baSopenharmony_ci 1073d0407baSopenharmony_civoid pinconf_generic_dump_config(struct pinctrl_dev *pctldev, 1083d0407baSopenharmony_ci struct seq_file *s, unsigned long config); 1093d0407baSopenharmony_ci#else 1103d0407baSopenharmony_ci 1113d0407baSopenharmony_cistatic inline void pinconf_generic_dump_pins(struct pinctrl_dev *pctldev, 1123d0407baSopenharmony_ci struct seq_file *s, 1133d0407baSopenharmony_ci const char *gname, unsigned pin) 1143d0407baSopenharmony_ci{ 1153d0407baSopenharmony_ci return; 1163d0407baSopenharmony_ci} 1173d0407baSopenharmony_ci 1183d0407baSopenharmony_cistatic inline void pinconf_generic_dump_config(struct pinctrl_dev *pctldev, 1193d0407baSopenharmony_ci struct seq_file *s, 1203d0407baSopenharmony_ci unsigned long config) 1213d0407baSopenharmony_ci{ 1223d0407baSopenharmony_ci return; 1233d0407baSopenharmony_ci} 1243d0407baSopenharmony_ci#endif 1253d0407baSopenharmony_ci 1263d0407baSopenharmony_ci#if defined(CONFIG_GENERIC_PINCONF) && defined(CONFIG_OF) 1273d0407baSopenharmony_ciint pinconf_generic_parse_dt_config(struct device_node *np, 1283d0407baSopenharmony_ci struct pinctrl_dev *pctldev, 1293d0407baSopenharmony_ci unsigned long **configs, 1303d0407baSopenharmony_ci unsigned int *nconfigs); 1313d0407baSopenharmony_ci#endif 132