From mboxrd@z Thu Jan 1 00:00:00 1970 From: Giulio Benetti Date: Mon, 9 Dec 2019 12:54:33 +0100 Subject: [PATCH 12/20] pinctrl: add i.MXRT driver In-Reply-To: <20191208154517.663de138@jawa> References: <20191204174439.69934-1-giulio.benetti@benettiengineering.com> <20191204174439.69934-13-giulio.benetti@benettiengineering.com> <20191208154517.663de138@jawa> Message-ID: <89bb0c48-87ca-c33c-1077-79c91b82a830@benettiengineering.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Lukasz, Stefano, Fabio, all, On 12/8/19 3:45 PM, Lukasz Majewski wrote: > On Wed, 4 Dec 2019 18:44:31 +0100 > Giulio Benetti wrote: > >> Add i.MXRT pinctrl driver. >> >> Signed-off-by: Giulio Benetti >> --- >> 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). Sure, but isn't maybe something to be done in the document below?... > 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 :-) ). Sure, I'm going to provide a ./doc/device-tree-bindings/pinctrl/fsl,imx-pinctrl.txt unique for every imx at this point, ok? And what do you think to provide defines in ./include/dt-bindings/pinctrl/pinctrl-imxrt1050.h for every setting in PAD? Or better, in a pinctrl-imxrt.h to be included in pinctrl-imxrt1050.h(since they are the same) I mean for pull-up/down, drive strength etc. Because, even for me that I'm developing, I see it very difficult to recognize every setting from hexadecimal in dts file, and I loose the overview. I've already used IMX_PAD_SION to set pad as input. Then I would be happy, to add all definitions for every imx and modify every dts file, but I'd need everyone to re-test its board. What about this? Best regards -- Giulio Benetti Benetti Engineering sas >> + 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 >> + */ >> + >> +#include >> +#include >> +#include >> + >> +#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 at denx.de >