[PATCH v1 0/8] Convert Tegra pinctrl to DM
Thierry Reding
treding at nvidia.com
Wed Dec 13 12:47:34 CET 2023
On Wed, Dec 13, 2023 at 11:46:58AM +0200, Svyatoslav Ryhel wrote:
>
>
> 9 грудня 2023 р. 16:14:06 GMT+02:00, Tom Rini <trini at konsulko.com> написав(-ла):
> >On Mon, Dec 04, 2023 at 04:45:38PM +0200, Svyatoslav Ryhel wrote:
> >> пн, 4 груд. 2023 р. о 12:26 Thierry Reding <treding at nvidia.com> пише:
> >> >
> >> > On Mon, Dec 04, 2023 at 10:20:46AM +0200, Svyatoslav Ryhel wrote:
> >> > > Create a DM supported wrapper arround existing Tegra pinmux logic.
> >> > > This implementation is backwards compatible with all existing board
> >> > > setups and early stages of setup. All new boards must be device tree
> >> > > based. Linux dts pinmux nodes are fully compatible with this driver.
> >> > >
> >> > > As an example I have converted recently merged T30 boards to this
> >> > > layout (I have those devices and was able to test them properly) and
> >> > > Paz00 T20 board which was tested as well by owner.
> >> > >
> >> > > Svyatoslav Ryhel (8):
> >> > > ARM: mach-tegra: rearrange SPL configs
> >> > > drivers: pinctrl: create Tegra DM pinctrl driver
> >> > > drivers: pinctrl: tegra: incorporate existing code
> >> > > board: asus: grouper: switch to DM pinmux
> >> > > board: lg: x3-t30: switch to DM pinmux
> >> > > board: asus: transformer: switch to DM pinmux
> >> > > board: htc: endeavoru: switch to DM pinmux
> >> > > board: compal: paz00: clean up the board
> >> > >
> >> > > arch/arm/dts/tegra20-paz00.dts | 4 +-
> >> > > arch/arm/dts/tegra30-asus-grouper-common.dtsi | 712 ++++++++++
> >> > > .../dts/tegra30-asus-nexus7-grouper-E1565.dts | 113 ++
> >> > > .../dts/tegra30-asus-nexus7-grouper-PM269.dts | 113 ++
> >> > > .../dts/tegra30-asus-nexus7-tilapia-E1565.dts | 149 +++
> >> > > arch/arm/dts/tegra30-asus-p1801-t.dts | 982 ++++++++++++++
> >> > > arch/arm/dts/tegra30-asus-tf201.dts | 45 +
> >> > > arch/arm/dts/tegra30-asus-tf300t.dts | 45 +
> >> > > arch/arm/dts/tegra30-asus-tf300tg.dts | 128 ++
> >> > > arch/arm/dts/tegra30-asus-tf300tl.dts | 163 +++
> >> > > arch/arm/dts/tegra30-asus-tf600t.dts | 889 +++++++++++++
> >> > > arch/arm/dts/tegra30-asus-tf700t.dts | 53 +
> >> > > arch/arm/dts/tegra30-asus-transformer.dtsi | 984 ++++++++++++++
> >> > > arch/arm/dts/tegra30-htc-endeavoru.dts | 1147 +++++++++++++++++
> >> > > arch/arm/dts/tegra30-lg-p880.dts | 90 ++
> >> > > arch/arm/dts/tegra30-lg-p895.dts | 93 ++
> >> > > arch/arm/dts/tegra30-lg-x3.dtsi | 845 ++++++++++++
> >> > > arch/arm/include/asm/arch-tegra114/pinmux.h | 303 +++++
> >> > > arch/arm/include/asm/arch-tegra124/pinmux.h | 327 +++++
> >> > > arch/arm/include/asm/arch-tegra20/pinmux.h | 291 +++++
> >> > > arch/arm/include/asm/arch-tegra210/pinmux.h | 394 ++++++
> >> > > arch/arm/include/asm/arch-tegra30/pinmux.h | 381 ++++++
> >> > > arch/arm/mach-tegra/Kconfig | 16 +-
> >> > > arch/arm/mach-tegra/Makefile | 1 -
> >> > > arch/arm/mach-tegra/board.c | 6 +-
> >> > > arch/arm/mach-tegra/board2.c | 2 +-
> >> > > arch/arm/mach-tegra/tegra114/Makefile | 2 +-
> >> > > arch/arm/mach-tegra/tegra124/Makefile | 2 -
> >> > > arch/arm/mach-tegra/tegra20/Makefile | 2 +-
> >> > > arch/arm/mach-tegra/tegra210/Makefile | 1 -
> >> > > arch/arm/mach-tegra/tegra30/Makefile | 2 +-
> >> > > board/asus/grouper/grouper.c | 18 -
> >> > > board/asus/grouper/pinmux-config-grouper.h | 362 ------
> >> > > .../pinmux-config-transformer.h | 365 ------
> >> > > board/asus/transformer-t30/transformer-t30.c | 23 -
> >> > > board/compal/paz00/Makefile | 8 -
> >> > > board/compal/paz00/paz00.c | 53 -
> >> > > board/htc/endeavoru/endeavoru.c | 14 -
> >> > > board/htc/endeavoru/pinmux-config-endeavoru.h | 362 ------
> >> > > board/lg/x3-t30/Kconfig | 12 -
> >> > > board/lg/x3-t30/configs/p880.config | 1 -
> >> > > board/lg/x3-t30/configs/p895.config | 1 -
> >> > > board/lg/x3-t30/pinmux-config-x3.h | 449 -------
> >> > > board/lg/x3-t30/x3-t30.c | 23 -
> >> > > configs/paz00_defconfig | 3 +
> >> > > drivers/pinctrl/Kconfig | 1 +
> >> > > drivers/pinctrl/Makefile | 1 +
> >> > > drivers/pinctrl/tegra/Kconfig | 18 +
> >> > > drivers/pinctrl/tegra/Makefile | 16 +
> >> > > .../pinctrl/tegra/funcmux-tegra114.c | 0
> >> > > .../pinctrl/tegra/funcmux-tegra124.c | 0
> >> > > .../pinctrl/tegra/funcmux-tegra20.c | 0
> >> > > .../pinctrl/tegra/funcmux-tegra210.c | 0
> >> > > .../pinctrl/tegra/funcmux-tegra30.c | 0
> >> > > drivers/pinctrl/tegra/pinctrl-tegra.c | 248 ++++
> >> > > drivers/pinctrl/tegra/pinctrl-tegra20.c | 177 +++
> >> > > .../pinctrl/tegra}/pinmux-common.c | 0
> >> > > .../pinctrl/tegra/pinmux-tegra114.c | 0
> >> > > .../pinctrl/tegra/pinmux-tegra124.c | 0
> >> > > .../pinctrl/tegra/pinmux-tegra20.c | 0
> >> > > drivers/pinctrl/tegra/pinmux-tegra210.c | 190 +++
> >> > > .../pinctrl/tegra/pinmux-tegra30.c | 0
> >> > > include/configs/x3-t30.h | 13 +-
> >> > > 63 files changed, 8920 insertions(+), 1723 deletions(-)
> >> >
> >> > So we're adding 7000 extra lines here just to get the same level of
> >> > functionality? Do we really want this?
> >>
> >> Tom, as a project maintainer, may you answer? Does U-Boot really want
> >> this? And ensure there will never ever be a forced pinmux DM
> >> migration.
> >>
> >> >
> >> > For things like the kernel this makes a bit more sense because we can
> >> > have generic kernel images for a wide variety of boards, and
> >> > additionally we can have dynamic reconfiguration of the pinmux at
> >> > runtime. We have neither of those in U-Boot, so do we really need to
> >> > move all this into DT and add this extra overhead?
> >>
> >> There would not be so much overhead if Linux kernel used numbers for
> >> pin definitions, not strings.
> >
> >Well, yes, this is the right direction. One of the goals is to be able
> >to use the linux device trees as-is and be able to pass that along to
> >the OS to use. And so we move a little away from the absolute thinnest
> >case that we used to be and a bit more towards a generic case just like
> >Linux did. In some cases, one can just change the device tree passed to
> >U-Boot and re-use the same binary. And if Tegra platforms moved in that
> >direction that's nice too.
> >
>
> These patches do not discard the existing header system of pinmux
> setup, it is still supported and is not touched whatsoever. These
> patches add DM overlay so that boards which can afford inflated device
> tree and care about size less could move to linux style device tree
> pinmux definition. Well I know how hard it is to rewrite pinmux over
> and over for different projects.
There's actually a set of scripts here[0] that were meant to make this
easier, but for whatever reason people don't want to use them. This was
archived a few years back because there hadn't been any contributions in
a very long time and it didn't look like they would ever need to be
updated. But we could revive that project if it's deemed useful.
Thierry
[0]: https://github.com/NVIDIA/tegra-pinmux-scripts
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20231213/ecea490a/attachment.sig>
More information about the U-Boot
mailing list