数据结构设计
31 Jan 2024
Read time: 2 minute(s)
- aic_desc_function
struct aic_desc_function { const unsigned char num; //pin 脚功能所对应的,最终写入寄存器的索引值 const char *name; //pin 脚对应的功能的名字 };
- aic_desc_pin
struct aic_desc_pin { struct pinctrl_pin_desc pin; //pin 脚的描述符 const struct aic_desc_function *functions; //该 pin 脚所能设置的功能列表 };
- aic_pinctrl_group
struct aic_pinctrl_group { const char *name; //group 名字 u32 config; //pin 脚的配置参数 u32 pin; //pin 脚索引值 };
- aic_pinctrl_function
struct aic_pinctrl_function { const char *name; //function 名字 const char **groups; //function 所对应的所有 group 列表 u32 ngroups; //function 所对应的 group 个数 };
- aic_gpio_bank
struct aic_gpio_bank { u32 bank_nr; //gpio port 索引值,GPIOA 为 0,GPIOB 为 1… int irq; u32 saved_mask; spinlock_t lock; struct gpio_chip gpio_chip; //gpio port 的 chip 结构 struct pinctrl_gpio_range range; //该 port 的 range 范围 struct irq_domain *domain; //转换 hwirq 到 irq 的结构体指针 struct aic_gpio_regs regs; //GPIO 控制器的寄存器 struct aic_pinctrl *pctl; };
- aic_pinctrl
struct aic_pinctrl { void __iomem *base; struct device *dev; struct pinctrl_dev *pctl_dev; struct pinctrl_desc pctl_desc; struct aic_pinctrl_group *groups; //pin controller 包含的 group 列表 u32 ngroups; //pin controller 包含的 group 个数 const char **grp_names; //pin controller 包含的 group 名字 struct aic_pinctrl_function *functions; //pin controller 包含的 functions 列表 u32 nfunctions; //pin controller 包含的 functions 个数 struct aic_gpio_bank *banks; //pin controller 包含的 bank 列表 u32 nbanks; //pin controller 包含的 bank 个数 struct aic_desc_pin *pins; //pin controller 包含的 pin 列表 u32 npins; //pin controller 包含的 pin 个数 struct reset_control *reset; struct clk *clk; };