pinctrl子系统(二):pin名字及编号解析与存储

本文详细解析了IMX6U系列SoC中设备树文件imx6ull.dtsi的compatible属性与驱动程序的交互,重点介绍了imx6ul_pinctrl_probe函数如何处理pinmuxc节点,以及pinctrl相关宏和函数在pin命名、注册和初始化过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

驱动代码分析

引脚名字和编号解析与存储

  • imx6ull.dtsi
iomuxc: iomuxc@20e0000 {
   
				compatible = "fsl,imx6ul-iomuxc";
				reg = <0x20e0000 0x4000>;
			};
  • pinctrl-imx6ul.c
static struct platform_driver imx6ul_pinctrl_driver = {
   
	.driver = {
   
		.name = "imx6ul-pinctrl",
		.of_match_table = imx6ul_pinctrl_of_match,
		.suppress_bind_attrs = true,
	},
	.probe = imx6ul_pinctrl_probe,
};

static const struct of_device_id imx6ul_pinctrl_of_match[] = {
   
	{
    .compatible = "fsl,imx6ul-iomuxc", .data = &imx6ul_pinctrl_info, },
	{
    .compatible = "fsl,imx6ull-iomuxc-snvs", .data = &imx6ull_snvs_pinctrl_info, },
	{
    /* sentinel */ }
};

设备树当中的compatible属性与驱动平台当中的imx6ul_pinctrl_of_match相匹配,匹配成功以后执行对应的imx6ul_pinctrl_probe函数。

imx6ul_pinctrl_probe()函数

drivers/pinctrl/freescale/pinctrl-imx6ul.c

static int imx6ul_pinctrl_probe(struct platform_device *pdev)
{
   
	const struct imx_pinctrl_soc_info *pinctrl_info;
	const struct of_device_id *match;

	//通过dev获取对应的pinctrl信息
	pinctrl_info = of_device_get_match_data(&pdev->dev);
	if (!pinctrl_info)
		return -ENODEV;

	return imx_pinctrl_probe(pdev, pinctrl_info);
}

在这里插入图片描述

imx6ul_pinctrl_pads
  • 引脚的编号和名字表
IMX_PINCTRL_PIN宏

drivers/pinctrl/freescale/pinctrl-imx.h

#define IMX_PINCTRL_PIN(pin) PINCTRL_PIN(pin
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值