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