
On Wed, 4 Dec 2019 18:44:31 +0100 Giulio Benetti giulio.benetti@benettiengineering.com wrote:
Add i.MXRT pinctrl driver.
Signed-off-by: Giulio Benetti giulio.benetti@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.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,
+};
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: lukma@denx.de