diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/pinctrl/nxp/Kconfig | 14 | ||||
| -rw-r--r-- | drivers/pinctrl/nxp/Makefile | 1 | ||||
| -rw-r--r-- | drivers/pinctrl/nxp/pinctrl-imxrt.c | 40 | 
3 files changed, 55 insertions, 0 deletions
| diff --git a/drivers/pinctrl/nxp/Kconfig b/drivers/pinctrl/nxp/Kconfig index f2e67ca2319..ec55351e61e 100644 --- a/drivers/pinctrl/nxp/Kconfig +++ b/drivers/pinctrl/nxp/Kconfig @@ -99,6 +99,20 @@ config PINCTRL_MXS  	  familiy, e.g. i.MX28. This feature depends on device tree  	  configuration. +config PINCTRL_IMXRT +	bool "IMXRT pinctrl driver" +	depends on ARCH_IMXRT && PINCTRL_FULL +	select DEVRES +	select PINCTRL_IMX +	help +	  Say Y here to enable the imxrt pinctrl driver + +	  This provides a simple pinctrl driver for i.MXRT SoC familiy. +	  This feature depends on device tree configuration. This driver +	  is different from the linux one, this is a simple implementation, +	  only parses the 'fsl,pins' property and configure related +	  registers. +  config PINCTRL_VYBRID  	bool "Vybrid (vf610) pinctrl driver"  	depends on ARCH_VF610 && PINCTRL_FULL diff --git a/drivers/pinctrl/nxp/Makefile b/drivers/pinctrl/nxp/Makefile index b86448aac9a..066ca75b65f 100644 --- a/drivers/pinctrl/nxp/Makefile +++ b/drivers/pinctrl/nxp/Makefile @@ -8,3 +8,4 @@ obj-$(CONFIG_PINCTRL_IMX8)		+= pinctrl-imx8.o  obj-$(CONFIG_PINCTRL_IMX8M)		+= pinctrl-imx8m.o  obj-$(CONFIG_PINCTRL_MXS)		+= pinctrl-mxs.o  obj-$(CONFIG_PINCTRL_VYBRID)		+= pinctrl-vf610.o +obj-$(CONFIG_PINCTRL_IMXRT)		+= pinctrl-imxrt.o diff --git a/drivers/pinctrl/nxp/pinctrl-imxrt.c b/drivers/pinctrl/nxp/pinctrl-imxrt.c new file mode 100644 index 00000000000..4a939419275 --- /dev/null +++ b/drivers/pinctrl/nxp/pinctrl-imxrt.c @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2019 + * Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com> + */ + +#include <common.h> +#include <dm.h> +#include <dm/pinctrl.h> + +#include "pinctrl-imx.h" + +static struct imx_pinctrl_soc_info imxrt_pinctrl_soc_info = { +	.flags = ZERO_OFFSET_VALID, +}; + +static int imxrt_pinctrl_probe(struct udevice *dev) +{ +	struct imx_pinctrl_soc_info *info = +		(struct imx_pinctrl_soc_info *)dev_get_driver_data(dev); + +	return imx_pinctrl_probe(dev, info); +} + +static const struct udevice_id imxrt_pinctrl_match[] = { +	{ .compatible = "fsl,imxrt-iomuxc", +	  .data = (ulong)&imxrt_pinctrl_soc_info }, +	{ /* sentinel */ } +}; + +U_BOOT_DRIVER(imxrt_pinctrl) = { +	.name = "imxrt-pinctrl", +	.id = UCLASS_PINCTRL, +	.of_match = of_match_ptr(imxrt_pinctrl_match), +	.probe = imxrt_pinctrl_probe, +	.remove = imx_pinctrl_remove, +	.priv_auto_alloc_size = sizeof(struct imx_pinctrl_priv), +	.ops = &imx_pinctrl_ops, +	.flags = DM_FLAG_PRE_RELOC, +}; | 
