IMX6ull pinctrl系统以及gpioctrl系统分析
由compatible属性全局搜索fsl,imx6ul-iomuxc,搜索到
static 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, },
{ }
};
static struct platform_driver imx6ul_pinctrl_driver = {
.driver = {
.name = "imx6ul-pinctrl",
.owner = THIS_MODULE,
.of_match_table = of_match_ptr(imx6ul_pinctrl_of_match),
},
.probe = imx6ul_pinctrl_probe,
.remove = imx_pinctrl_remove,
};中probe函数执行
->imx6ul_pinctrl_probe
->imx_pinctrl_probe
->imx_pinctrl_probe_dt
->imx_pinctrl_parse_functions
->imx_pinctrl_parse_groups
->pinctrl_register
************************************************************
由compatible属性全局搜索sl,imx35-gpio,搜索到
static const struct of_device_id mxc_gpio_dt_ids[] = {
{ .compatible = "fsl,imx1-gpio", .data = &mxc_gpio_devtype[IMX1_GPIO], },
{ .compatible = "fsl,imx21-gpio", .data = &mxc_gpio_devtype[IMX21_GPIO], },
{ .compatible = "fsl,imx31-gpio", .data = &mxc_gpio_devtype[IMX31_GPIO], },
{ .compatible = "fsl,imx35-gpio", .data = &mxc_gpio_devtype[IMX35_GPIO], },
{ }
};
->mxc_gpio_probe
->mxc_gpio_get_hw
->platform_get_resource
->devm_ioremap_resource
->platform_get_irq
->irq_set_chained_handler
->bgpio_init
->gpiochip_add