On Wed, 4 Dec 2019 18:44:31 +0100 Giulio Benetti <giulio.bene...@benettiengineering.com> wrote:
> Add i.MXRT pinctrl driver. > > Signed-off-by: Giulio Benetti <giulio.bene...@benettiengineering.com> > --- > drivers/pinctrl/nxp/Kconfig | 14 ++++++++++ > drivers/pinctrl/nxp/Makefile | 1 + > drivers/pinctrl/nxp/pinctrl-imxrt.c | 40 > +++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+) > create mode 100644 drivers/pinctrl/nxp/pinctrl-imxrt.c > > diff --git a/drivers/pinctrl/nxp/Kconfig b/drivers/pinctrl/nxp/Kconfig > index f2e67ca231..ec55351e61 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, Could you add proper documentation entry (in ./doc/*) in which you would point out the differences between the full blown Linux driver and this U-Boot driver (I do guess that "only parsing 'fsl,pins'" is not the only difference - more details are welcome). And a bit more generic request - it is also nice to add some kind of ./doc/README.* documentation in which one can put some hints (or usage patterns) for in-uboot boards (like during development discovered HW issues, etc.). Such information is priceless when other community member wants to use this code/board (and NXP is very often silence about them :-) ). > + 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 b86448aac9..066ca75b65 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 0000000000..4a93941927 > --- /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.bene...@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, > +}; Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lu...@denx.de
pgpcV8eest_H5.pgp
Description: OpenPGP digital signature