Message ID | 20191204174439.69934-13-giulio.benetti@benettiengineering.com |
---|---|
State | Changes Requested |
Delegated to: | Stefano Babic |
Headers | show |
Series | Add i.MXRT family support | expand |
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
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 <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). 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
On Mon, 9 Dec 2019 12:54:33 +0100 Giulio Benetti <giulio.benetti@benettiengineering.com> wrote: > 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 <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). > > Sure, but isn't maybe something to be done in the document below?... +1 > > > 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? I think that it would be ok, to first focus on iMXRT. > > 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. I would prefer to have the same files as are (or would be) in the Linux kernel. Moreover, there are already added ./include/dt-bindings/pinctrl/pads-imx8q* files in this directory. Maybe you could provide similar structure ? > > 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. User readable defines DO HELP a lot. IMX6Q uses for example: fsl,pins = < MX6QDL_PAD_CSI0_DAT10__ECSPI2_MISO 0x100b1 MX6QDL_PAD_CSI0_DAT9__ECSPI2_MOSI 0x100b1 MX6QDL_PAD_CSI0_DAT8__ECSPI2_SCLK 0x100b1 >; which is in sync with Linux kernel. > > 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? Let's keep things in sync with Linux kernel as much as possible. This is one of U-Boot's recent goals to: 1. Reduce maintenance effort 2. Ease porting of Linux drivers. What we do need to focus on (in U-Boot) to trim those drivers to keep U-Boot's footprint _really_ small or at least as small as it was before DTS was introduced (in SPL for e.g. i.MX). > > Best regards 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
Hi Lukasz, On 12/10/19 12:46 AM, Lukasz Majewski wrote: > On Mon, 9 Dec 2019 12:54:33 +0100 > Giulio Benetti <giulio.benetti@benettiengineering.com> wrote: > >> 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 <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). >> >> Sure, but isn't maybe something to be done in the document below?... > > +1 > >> >>> 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? > > I think that it would be ok, to first focus on iMXRT. 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. > > I would prefer to have the same files as are (or would be) in the Linux > kernel. > > Moreover, there are already added > ./include/dt-bindings/pinctrl/pads-imx8q* files in this directory. > Maybe you could provide similar structure ? They are already exactly the same structure. >> >> 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. > > User readable defines DO HELP a lot. > > IMX6Q uses for example: > > fsl,pins = < > MX6QDL_PAD_CSI0_DAT10__ECSPI2_MISO 0x100b1 > MX6QDL_PAD_CSI0_DAT9__ECSPI2_MOSI 0x100b1 > MX6QDL_PAD_CSI0_DAT8__ECSPI2_SCLK 0x100b1 > >; > > which is in sync with Linux kernel. Yes, but what I was asking is about those 0x100b1 that is a bitmask. I would like to introduce or'ed short macros to compose that value. But if the first goal is to keep in sync with Linux kernel then I leave as is and later I will try to introduce this on Linux first and later sync here. >> >> 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? > > Let's keep things in sync with Linux kernel as much as possible. This > is one of U-Boot's recent goals to: > > 1. Reduce maintenance effort > > 2. Ease porting of Linux drivers. > > What we do need to focus on (in U-Boot) to trim those drivers to keep > U-Boot's footprint _really_ small or at least as small as it was > before DTS was introduced (in SPL for e.g. i.MX). Ok Thank you Best regards
On Wed, 11 Dec 2019 13:40:01 +0100 Giulio Benetti <giulio.benetti@benettiengineering.com> wrote: > Hi Lukasz, > > On 12/10/19 12:46 AM, Lukasz Majewski wrote: > > On Mon, 9 Dec 2019 12:54:33 +0100 > > Giulio Benetti <giulio.benetti@benettiengineering.com> wrote: > > > >> 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 <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). > >> > >> Sure, but isn't maybe something to be done in the document > >> below?... > > > > +1 > > > >> > >>> 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? > > > > I think that it would be ok, to first focus on iMXRT. > > 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. > > > > I would prefer to have the same files as are (or would be) in the > > Linux kernel. > > > > Moreover, there are already added > > ./include/dt-bindings/pinctrl/pads-imx8q* files in this directory. > > Maybe you could provide similar structure ? > > They are already exactly the same structure. Ok. > > >> > >> 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. > > > > User readable defines DO HELP a lot. > > > > IMX6Q uses for example: > > > > fsl,pins = < > > MX6QDL_PAD_CSI0_DAT10__ECSPI2_MISO > > 0x100b1 MX6QDL_PAD_CSI0_DAT9__ECSPI2_MOSI 0x100b1 > > MX6QDL_PAD_CSI0_DAT8__ECSPI2_SCLK > > 0x100b1 > > >; > > > > which is in sync with Linux kernel. > > Yes, but what I was asking is about those 0x100b1 that is a bitmask. > I would like to introduce or'ed short macros to compose that value. > But if the first goal is to keep in sync with Linux kernel then I > leave as is and later I will try to introduce this on Linux first and > later sync here. Ok. > > >> > >> 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? > > > > Let's keep things in sync with Linux kernel as much as possible. > > This is one of U-Boot's recent goals to: > > > > 1. Reduce maintenance effort > > > > 2. Ease porting of Linux drivers. > > > > What we do need to focus on (in U-Boot) to trim those drivers to > > keep U-Boot's footprint _really_ small or at least as small as it > > was before DTS was introduced (in SPL for e.g. i.MX). > > Ok > > Thank you > > Best regards 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
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, + 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, +};
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