xref: /rk3399_rockchip-uboot/drivers/pinctrl/nxp/pinctrl-imx6.c (revision ca75159d8abc085b39e3e468ca34ccb2940d2bf5)
1745df68dSPeng Fan 
2745df68dSPeng Fan /*
3745df68dSPeng Fan  * Copyright (C) 2016 Peng Fan <van.freenix@gmail.com>
4745df68dSPeng Fan  *
5745df68dSPeng Fan  * SPDX-License-Identifier:	GPL-2.0+
6745df68dSPeng Fan  */
7745df68dSPeng Fan 
8745df68dSPeng Fan #include <dm/device.h>
9745df68dSPeng Fan #include <dm/pinctrl.h>
10745df68dSPeng Fan 
11745df68dSPeng Fan #include "pinctrl-imx.h"
12745df68dSPeng Fan 
13745df68dSPeng Fan static struct imx_pinctrl_soc_info imx6_pinctrl_soc_info;
14745df68dSPeng Fan 
15*ca75159dSPeng Fan static struct imx_pinctrl_soc_info imx6_snvs_pinctrl_soc_info = {
16*ca75159dSPeng Fan 	.flags = ZERO_OFFSET_VALID,
17*ca75159dSPeng Fan };
18*ca75159dSPeng Fan 
19745df68dSPeng Fan static int imx6_pinctrl_probe(struct udevice *dev)
20745df68dSPeng Fan {
21745df68dSPeng Fan 	struct imx_pinctrl_soc_info *info =
22745df68dSPeng Fan 		(struct imx_pinctrl_soc_info *)dev_get_driver_data(dev);
23745df68dSPeng Fan 
24745df68dSPeng Fan 	return imx_pinctrl_probe(dev, info);
25745df68dSPeng Fan }
26745df68dSPeng Fan 
27745df68dSPeng Fan static const struct udevice_id imx6_pinctrl_match[] = {
28745df68dSPeng Fan 	{ .compatible = "fsl,imx6q-iomuxc", .data = (ulong)&imx6_pinctrl_soc_info },
29745df68dSPeng Fan 	{ .compatible = "fsl,imx6dl-iomuxc", .data = (ulong)&imx6_pinctrl_soc_info },
30745df68dSPeng Fan 	{ .compatible = "fsl,imx6sl-iomuxc", .data = (ulong)&imx6_pinctrl_soc_info },
31745df68dSPeng Fan 	{ .compatible = "fsl,imx6sx-iomuxc", .data = (ulong)&imx6_pinctrl_soc_info },
32745df68dSPeng Fan 	{ .compatible = "fsl,imx6ul-iomuxc", .data = (ulong)&imx6_pinctrl_soc_info },
33*ca75159dSPeng Fan 	{ .compatible = "fsl,imx6ull-iomuxc-snvs", .data = (ulong)&imx6_snvs_pinctrl_soc_info },
34745df68dSPeng Fan 	{ /* sentinel */ }
35745df68dSPeng Fan };
36745df68dSPeng Fan 
37745df68dSPeng Fan U_BOOT_DRIVER(imx6_pinctrl) = {
38745df68dSPeng Fan 	.name = "imx6-pinctrl",
39745df68dSPeng Fan 	.id = UCLASS_PINCTRL,
40745df68dSPeng Fan 	.of_match = of_match_ptr(imx6_pinctrl_match),
41745df68dSPeng Fan 	.probe = imx6_pinctrl_probe,
42745df68dSPeng Fan 	.remove = imx_pinctrl_remove,
43745df68dSPeng Fan 	.priv_auto_alloc_size = sizeof(struct imx_pinctrl_priv),
44745df68dSPeng Fan 	.ops = &imx_pinctrl_ops,
45745df68dSPeng Fan 	.flags = DM_FLAG_PRE_RELOC,
46745df68dSPeng Fan };
47