drivers/pinctrl/pinconf.h
Source file repositories/reference/linux-study-clean/drivers/pinctrl/pinconf.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/pinctrl/pinconf.h- Extension
.h- Size
- 5763 bytes
- Lines
- 215
- Domain
- Driver Families
- Bucket
- drivers/pinctrl
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/errno.h
Detected Declarations
struct dentrystruct device_nodestruct seq_filestruct pinctrl_devstruct pinctrl_mapstruct pinctrl_settingfunction pinconf_check_opsfunction pinconf_validate_mapfunction pinconf_map_to_settingfunction pinconf_free_settingfunction pinconf_set_configfunction pin_config_get_for_pinfunction pinconf_show_mapfunction pinconf_generic_dump_pinsfunction pinconf_generic_dump_configfunction pinconf_generic_parse_dt_configfunction pinconf_generic_parse_dt_pinmuxfunction pinctrl_generic_pins_function_dt_node_to_mapfunction pinctrl_generic_pinmux_dt_node_to_mapfunction pinctrl_generic_to_map
Annotated Snippet
#include <linux/errno.h>
struct dentry;
struct device_node;
struct seq_file;
struct pinctrl_dev;
struct pinctrl_map;
struct pinctrl_setting;
#ifdef CONFIG_PINCONF
int pinconf_check_ops(struct pinctrl_dev *pctldev);
int pinconf_validate_map(const struct pinctrl_map *map, int i);
int pinconf_map_to_setting(const struct pinctrl_map *map,
struct pinctrl_setting *setting);
void pinconf_free_setting(const struct pinctrl_setting *setting);
int pinconf_apply_setting(const struct pinctrl_setting *setting);
int pinconf_set_config(struct pinctrl_dev *pctldev, unsigned int pin,
unsigned long *configs, size_t nconfigs);
/*
* You will only be interested in these if you're using PINCONF
* so don't supply any stubs for these.
*/
int pin_config_get_for_pin(struct pinctrl_dev *pctldev, unsigned int pin,
unsigned long *config);
int pin_config_group_get(const char *dev_name, const char *pin_group,
unsigned long *config);
#else
static inline int pinconf_check_ops(struct pinctrl_dev *pctldev)
{
return 0;
}
static inline int pinconf_validate_map(const struct pinctrl_map *map, int i)
{
return 0;
}
static inline int pinconf_map_to_setting(const struct pinctrl_map *map,
struct pinctrl_setting *setting)
{
return 0;
}
static inline void pinconf_free_setting(const struct pinctrl_setting *setting)
{
}
static inline int pinconf_apply_setting(const struct pinctrl_setting *setting)
{
return 0;
}
static inline int pinconf_set_config(struct pinctrl_dev *pctldev, unsigned int pin,
unsigned long *configs, size_t nconfigs)
{
return -ENOTSUPP;
}
static inline int pin_config_get_for_pin(struct pinctrl_dev *pctldev, unsigned int pin,
unsigned long *config)
{
return -ENOTSUPP;
}
#endif
#if defined(CONFIG_PINCONF) && defined(CONFIG_DEBUG_FS)
void pinconf_show_map(struct seq_file *s, const struct pinctrl_map *map);
void pinconf_show_setting(struct seq_file *s,
const struct pinctrl_setting *setting);
void pinconf_init_device_debugfs(struct dentry *devroot,
struct pinctrl_dev *pctldev);
#else
static inline void pinconf_show_map(struct seq_file *s,
const struct pinctrl_map *map)
{
}
static inline void pinconf_show_setting(struct seq_file *s,
const struct pinctrl_setting *setting)
{
Annotation
- Immediate include surface: `linux/errno.h`.
- Detected declarations: `struct dentry`, `struct device_node`, `struct seq_file`, `struct pinctrl_dev`, `struct pinctrl_map`, `struct pinctrl_setting`, `function pinconf_check_ops`, `function pinconf_validate_map`, `function pinconf_map_to_setting`, `function pinconf_free_setting`.
- Atlas domain: Driver Families / drivers/pinctrl.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.