xref: /rk3399_rockchip-uboot/drivers/pinctrl/nxp/pinctrl-imx6.c (revision 4af0d7e8709eafc4d410697dd64d26eeb1a9590f)
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 
8*4af0d7e8SSimon Glass #include <common.h>
99d922450SSimon Glass #include <dm.h>
10745df68dSPeng Fan #include <dm/pinctrl.h>
11745df68dSPeng Fan 
12745df68dSPeng Fan #include "pinctrl-imx.h"
13745df68dSPeng Fan 
14745df68dSPeng Fan static struct imx_pinctrl_soc_info imx6_pinctrl_soc_info;
15745df68dSPeng Fan 
16ca75159dSPeng Fan static struct imx_pinctrl_soc_info imx6_snvs_pinctrl_soc_info = {
17ca75159dSPeng Fan 	.flags = ZERO_OFFSET_VALID,
18ca75159dSPeng Fan };
19ca75159dSPeng Fan 
imx6_pinctrl_probe(struct udevice * dev)20745df68dSPeng Fan static int imx6_pinctrl_probe(struct udevice *dev)
21745df68dSPeng Fan {
22745df68dSPeng Fan 	struct imx_pinctrl_soc_info *info =
23745df68dSPeng Fan 		(struct imx_pinctrl_soc_info *)dev_get_driver_data(dev);
24745df68dSPeng Fan 
25745df68dSPeng Fan 	return imx_pinctrl_probe(dev, info);
26745df68dSPeng Fan }
27745df68dSPeng Fan 
28745df68dSPeng Fan static const struct udevice_id imx6_pinctrl_match[] = {
29745df68dSPeng Fan 	{ .compatible = "fsl,imx6q-iomuxc", .data = (ulong)&imx6_pinctrl_soc_info },
30745df68dSPeng Fan 	{ .compatible = "fsl,imx6dl-iomuxc", .data = (ulong)&imx6_pinctrl_soc_info },
31745df68dSPeng Fan 	{ .compatible = "fsl,imx6sl-iomuxc", .data = (ulong)&imx6_pinctrl_soc_info },
32ef0afaa0SPeng Fan 	{ .compatible = "fsl,imx6sll-iomuxc-snvs", .data = (ulong)&imx6_snvs_pinctrl_soc_info },
33ef0afaa0SPeng Fan 	{ .compatible = "fsl,imx6sll-iomuxc", .data = (ulong)&imx6_pinctrl_soc_info },
34745df68dSPeng Fan 	{ .compatible = "fsl,imx6sx-iomuxc", .data = (ulong)&imx6_pinctrl_soc_info },
35745df68dSPeng Fan 	{ .compatible = "fsl,imx6ul-iomuxc", .data = (ulong)&imx6_pinctrl_soc_info },
36ca75159dSPeng Fan 	{ .compatible = "fsl,imx6ull-iomuxc-snvs", .data = (ulong)&imx6_snvs_pinctrl_soc_info },
37745df68dSPeng Fan 	{ /* sentinel */ }
38745df68dSPeng Fan };
39745df68dSPeng Fan 
40745df68dSPeng Fan U_BOOT_DRIVER(imx6_pinctrl) = {
41745df68dSPeng Fan 	.name = "imx6-pinctrl",
42745df68dSPeng Fan 	.id = UCLASS_PINCTRL,
43745df68dSPeng Fan 	.of_match = of_match_ptr(imx6_pinctrl_match),
44745df68dSPeng Fan 	.probe = imx6_pinctrl_probe,
45745df68dSPeng Fan 	.remove = imx_pinctrl_remove,
46745df68dSPeng Fan 	.priv_auto_alloc_size = sizeof(struct imx_pinctrl_priv),
47745df68dSPeng Fan 	.ops = &imx_pinctrl_ops,
48745df68dSPeng Fan 	.flags = DM_FLAG_PRE_RELOC,
49745df68dSPeng Fan };
50