pinctrl学习笔记---重要结构体

本文详细探讨了Linux系统中pinctrl(引脚控制器)的数据结构,包括用于引脚枚举、复用和配置的相关头文件及驱动实现。pinctrl在设备驱动中起到重要作用,如定义引脚功能、设置GPIO、I2C等,并能配置上拉、下拉等电气特性。同时,文章还涉及了与pinctrl交互的client数据结构及其相关头文件。
摘要由CSDN通过智能技术生成

pincontroller数据结构

pinctrl的作用:
1.引脚枚举和命名
2.引脚复用,比如用作GPIO、I2C或其他功能
3.引脚配置,比如上拉、下拉、open drain、驱动强度等

~/include/linux/pinctrl/pinctrl.h

struct pinctrl_desc {
   
	const char *name;
	const struct pinctrl_pin_desc *pins;
	unsigned int npins;
	const struct pinctrl_ops *pctlops;
	const struct pinmux_ops *pmxops;
	const struct pinconf_ops *confops;
	struct module *owner;
#ifdef CONFIG_GENERIC_PINCONF
	unsigned int num_custom_params;
	const struct pinconf_generic_params *custom_params;
	const struct pin_config_item *custom_conf_items;
#endif
	bool link_consumers;
};

~/include/linux/pinctrl/pinctrl.h

struct pinctrl_pin_desc {
   
	unsigned number;
	const char *name;
	void *drv_data;
};

~/include/linux/pinctrl/pinctrl.h

struct pinctrl_ops {
   
	int (*get_groups_count) (struct pinctrl_dev *pctldev);
	const char *(*get_group_name) (struct pinctrl_dev *pctldev,
				       unsigned selector);
	int (*get_group_pins) (struct pinctrl_dev *pctldev,
			       unsigned selector,
			       const unsigned **pins,
			       unsigned *num_pins);
	void (*pin_dbg_show) (struct pinctrl_dev *pctldev, struct seq_file *s,
			  unsigned offset);
	int (*dt_node_to_map) (struct pinctrl_dev *pctldev,
			       struct device_node *np_config,
			       struct pinctrl_map **map, unsigned *num_maps);
	void (*dt_free_map) (struct pinctrl_dev *pctldev,
			     struct pinctrl_map *map, unsigned num_maps);
};

~/include/linux/pinctrl/pinmux.h

struct pinmux_ops {
   
	int (*request) (struct pinctrl_dev *pctldev, unsigned offset);
	int (*free) (struct pinctrl_dev *pctldev, unsigned offset);
	int (*get_functions_count
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值