u-boot.lists.denx.de archive mirror
 help / color / mirror / Atom feed
From: Andre Przywara <andre.przywara@arm.com>
To: Samuel Holland <samuel@sholland.org>,
	Jagan Teki <jagan@amarulasolutions.com>
Cc: u-boot@lists.denx.de, Icenowy Zheng <uwu@icenowy.me>,
	Jernej Skrabec <jernej.skrabec@gmail.com>
Subject: [RFC PATCH 00/17] sunxi: rework pinctrl and add T113s support
Date: Tue,  6 Dec 2022 00:45:32 +0000	[thread overview]
Message-ID: <20221206004549.29015-1-andre.przywara@arm.com> (raw)

Hi,

this is some early attempt at supporting the new SoC series that covers
the Allwinner D1 siblings R528 and T113s. They all share the same die,
although the D1 and D1s use RISC-V cores, which requires more plumbing,
to use the sunxi code across two architectures. Getting the R528 support
in should help a bit in sorting out what's new peripheral code and what
is architecture dependent. IIUC, Samuel has that running, although with
some hacks, the number of which this series tries to reduce.

The most interesting part of this is the pincontroller rework, this
tackles two issues:
- For the first time in the history of mainline Allwinner support the
  pincontroller changed the register layout. The code here tries to
  abstract the differences away, so both variants can share the code
  peacefully.
- For the above mentioned reason, the pincontroller code is quite old,
  and is mostly spread out across arch/arm, in a pre-DM style, even
  though we have real DM support in U-Boot proper. We need the non-DM
  version for the (ARM-only?) legacy SPL, so can't get rid of that
  completely. This series also tries to modernise that code, and moves
  it into board/sunxi/, where it can be more easily shared with RISC-V.

The preliminary MangoPi MQ-R bits on top are mostly for illustration
purposes, and in case someone wants to give it a try. For some probably
stupid reason MMC doesn't work, although the driver loads fine. Also
this omits the DRAM code, although there is some GPLed code out there,
which can be lifted into here, with some extra work.

I would mostly appreciate to have some opinion on the pinctrl patches: I
understand that patch 03/17 isn't strictly necessary, but I always
disliked U-Boot's "use C structs to model MMIO register frames"
approach, so thought now is the time to get rid of that ;-)
Also I am unsure about patch 06/17, which seems like a step back
(spreading per-SoC data over several files), but I actually aim at
getting rid of cpu_sun[x]i.h altogether, since we should not really need
it, except for some exceptions.
The third patch I would like to hear feedback about is patch 08/17.
Finally patch 14/17 would deserve some extra pair of eyes.

Please let me know if you have any opinions!

Cheers,
Andre

P.S. I understand there is some code to support those SoCs out there,
apologies if I just re-implemented some of it. Please point me to
patches that seem upstream-worthy, and I will happily integrate them in
here, potentially replacing some of my patches.

Andre Przywara (15):
  sunxi: remove CONFIG_SATAPWR
  sunxi: remove CONFIG_MACPWR
  pinctrl: sunxi: remove struct sunxi_gpio
  pinctrl: sunxi: add GPIO in/out wrappers
  pinctrl: sunxi: move pinctrl code and remove GPIO_EXTRA_HEADER
  pinctrl: sunxi: move PIO_BASE into sunxi_gpio.h
  pinctrl: sunxi: add new D1 pinctrl support
  sunxi: introduce NCAT2 generation model
  pinctrl: sunxi: add Allwinner D1 pinctrl description
  sunxi: clock: D1/R528: Enable PLL LDO during PLL1 setup
  sunxi: clock: support D1/R528 PLL6 clock
  sunxi: add early Allwinner R528/T113 SoC support
  sunxi: refactor serial base addresses to avoid asm/arch/cpu.h
  arm: sunxi: add Allwinner T113s devicetree stub
  sunxi: add preliminary MangoPi MQ-R board support

Samuel Holland (2):
  clk: sunxi: Add support for the D1 CCU
  riscv: dts: allwinner: Add the D1/D1s SoC devicetree

 arch/arm/Kconfig                              |   3 +-
 arch/arm/cpu/armv7/sunxi/sram.c               |   1 +
 arch/arm/cpu/armv8/fel_utils.S                |   1 +
 arch/arm/dts/Makefile                         |   2 +
 arch/arm/dts/sun8i-t113s-mangopi-mq-r.dts     |  54 ++
 arch/arm/dts/sun8i-t113s.dtsi                 |  59 ++
 arch/arm/include/asm/arch-sunxi/clock.h       |   3 +-
 .../include/asm/arch-sunxi/clock_sun50i_h6.h  |   8 +
 arch/arm/include/asm/arch-sunxi/cpu.h         |   2 +
 arch/arm/include/asm/arch-sunxi/cpu_sun4i.h   |  17 -
 .../include/asm/arch-sunxi/cpu_sun50i_h6.h    |   7 -
 arch/arm/include/asm/arch-sunxi/cpu_sun9i.h   |   9 -
 .../include/asm/arch-sunxi/cpu_sunxi_ncat2.h  |  49 +
 arch/arm/include/asm/arch-sunxi/mmc.h         |   2 +-
 arch/arm/include/asm/arch-sunxi/prcm.h        |   2 +-
 arch/arm/include/asm/arch-sunxi/serial.h      |  32 +
 arch/arm/include/asm/arch-sunxi/timer.h       |   2 +-
 arch/arm/mach-sunxi/Kconfig                   |  51 +-
 arch/arm/mach-sunxi/Makefile                  |   2 +-
 arch/arm/mach-sunxi/board.c                   |   9 +-
 arch/arm/mach-sunxi/clock_sun50i_h6.c         |  38 +-
 arch/arm/mach-sunxi/cpu_info.c                |   2 +
 arch/arm/mach-sunxi/dram_suniv.c              |   2 +-
 arch/arm/mach-sunxi/gtbus_sun9i.c             |   1 +
 arch/arm/mach-sunxi/pinmux.c                  |  78 --
 arch/arm/mach-sunxi/spl_spi_sunxi.c           |   1 +
 arch/arm/mach-sunxi/timer.c                   |   1 +
 arch/riscv/dts/sun20i-d1.dtsi                 |  66 ++
 arch/riscv/dts/sun20i-d1s.dtsi                |  76 ++
 arch/riscv/dts/sunxi-d1-t113.dtsi             |  15 +
 arch/riscv/dts/sunxi-d1s-t113.dtsi            | 844 ++++++++++++++++++
 board/sunxi/Makefile                          |   2 +
 board/sunxi/board.c                           |  25 +-
 board/sunxi/chip.c                            |   2 +-
 board/sunxi/dram_sun8i_r528.c                 |   9 +
 board/sunxi/pinctrl.c                         |  94 ++
 common/spl/Kconfig                            |   2 +-
 configs/A10-OLinuXino-Lime_defconfig          |   1 -
 configs/A20-OLinuXino-Lime2-eMMC_defconfig    |   1 -
 configs/A20-OLinuXino-Lime2_defconfig         |   1 -
 configs/A20-OLinuXino-Lime_defconfig          |   1 -
 configs/A20-OLinuXino_MICRO-eMMC_defconfig    |   1 -
 configs/A20-OLinuXino_MICRO_defconfig         |   1 -
 configs/A20-Olimex-SOM-EVB_defconfig          |   1 -
 configs/A20-Olimex-SOM204-EVB-eMMC_defconfig  |   1 -
 configs/A20-Olimex-SOM204-EVB_defconfig       |   1 -
 configs/Bananapi_M2_Ultra_defconfig           |   1 -
 configs/Bananapi_defconfig                    |   1 -
 configs/Bananapro_defconfig                   |   1 -
 configs/Cubieboard2_defconfig                 |   1 -
 configs/Cubieboard_defconfig                  |   1 -
 configs/Cubietruck_defconfig                  |   1 -
 configs/Itead_Ibox_A20_defconfig              |   1 -
 configs/Lamobo_R1_defconfig                   |   2 -
 configs/Linksprite_pcDuino3_Nano_defconfig    |   1 -
 configs/Linksprite_pcDuino3_defconfig         |   1 -
 configs/Mele_A1000_defconfig                  |   1 -
 configs/Orangepi_defconfig                    |   1 -
 configs/Orangepi_mini_defconfig               |   1 -
 configs/Sinovoip_BPI_M3_defconfig             |   1 -
 configs/bananapi_m1_plus_defconfig            |   1 -
 configs/bananapi_m2_plus_h3_defconfig         |   1 -
 configs/bananapi_m2_plus_h5_defconfig         |   1 -
 configs/i12-tvbox_defconfig                   |   1 -
 configs/jesurun_q5_defconfig                  |   1 -
 configs/mangopi_mq_r_defconfig                |  12 +
 configs/mixtile_loftq_defconfig               |   1 -
 configs/nanopi_m1_plus_defconfig              |   1 -
 configs/nanopi_neo_plus2_defconfig            |   1 -
 configs/nanopi_r1s_h5_defconfig               |   1 -
 configs/orangepi_pc2_defconfig                |   1 -
 configs/orangepi_plus2e_defconfig             |   1 -
 configs/orangepi_plus_defconfig               |   2 -
 configs/orangepi_win_defconfig                |   1 -
 configs/pine_h64_defconfig                    |   1 -
 configs/zeropi_defconfig                      |   1 -
 drivers/ata/ahci_sunxi.c                      |   9 +
 drivers/clk/sunxi/Kconfig                     |   6 +
 drivers/clk/sunxi/Makefile                    |   1 +
 drivers/clk/sunxi/clk_d1.c                    | 101 +++
 drivers/gpio/axp_gpio.c                       |   1 +
 drivers/gpio/sunxi_gpio.c                     |  30 +-
 drivers/i2c/sun6i_p2wi.c                      |   2 +-
 drivers/i2c/sun8i_rsb.c                       |   2 +-
 drivers/mmc/sunxi_mmc.c                       |  12 +-
 drivers/net/sun8i_emac.c                      |   9 +-
 drivers/net/sunxi_emac.c                      |  10 +-
 drivers/pinctrl/sunxi/Kconfig                 |   5 +
 drivers/pinctrl/sunxi/pinctrl-sunxi.c         |  43 +-
 drivers/video/hitachi_tx18d42vm_lcd.c         |   1 +
 drivers/video/ssd2828.c                       |   1 -
 drivers/video/sunxi/sunxi_display.c           |   1 +
 drivers/video/sunxi/sunxi_lcd.c               |   1 +
 include/configs/sunxi-common.h                |   2 +-
 include/dt-bindings/clock/sun20i-d1-ccu.h     | 156 ++++
 include/dt-bindings/clock/sun20i-d1-r-ccu.h   |  19 +
 include/dt-bindings/reset/sun20i-d1-ccu.h     |  77 ++
 include/dt-bindings/reset/sun20i-d1-r-ccu.h   |  16 +
 .../arch-sunxi/gpio.h => include/sunxi_gpio.h | 102 ++-
 99 files changed, 1936 insertions(+), 296 deletions(-)
 create mode 100644 arch/arm/dts/sun8i-t113s-mangopi-mq-r.dts
 create mode 100644 arch/arm/dts/sun8i-t113s.dtsi
 create mode 100644 arch/arm/include/asm/arch-sunxi/cpu_sunxi_ncat2.h
 create mode 100644 arch/arm/include/asm/arch-sunxi/serial.h
 delete mode 100644 arch/arm/mach-sunxi/pinmux.c
 create mode 100644 arch/riscv/dts/sun20i-d1.dtsi
 create mode 100644 arch/riscv/dts/sun20i-d1s.dtsi
 create mode 100644 arch/riscv/dts/sunxi-d1-t113.dtsi
 create mode 100644 arch/riscv/dts/sunxi-d1s-t113.dtsi
 create mode 100644 board/sunxi/dram_sun8i_r528.c
 create mode 100644 board/sunxi/pinctrl.c
 create mode 100644 configs/mangopi_mq_r_defconfig
 create mode 100644 drivers/clk/sunxi/clk_d1.c
 create mode 100644 include/dt-bindings/clock/sun20i-d1-ccu.h
 create mode 100644 include/dt-bindings/clock/sun20i-d1-r-ccu.h
 create mode 100644 include/dt-bindings/reset/sun20i-d1-ccu.h
 create mode 100644 include/dt-bindings/reset/sun20i-d1-r-ccu.h
 rename arch/arm/include/asm/arch-sunxi/gpio.h => include/sunxi_gpio.h (74%)

-- 
2.35.5


             reply	other threads:[~2022-12-06  0:47 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-06  0:45 Andre Przywara [this message]
2022-12-06  0:45 ` [RFC PATCH 01/17] sunxi: remove CONFIG_SATAPWR Andre Przywara
2022-12-14  8:37   ` Samuel Holland
2022-12-14 14:25     ` Andre Przywara
2022-12-14 23:40       ` Samuel Holland
2022-12-06  0:45 ` [RFC PATCH 02/17] sunxi: remove CONFIG_MACPWR Andre Przywara
2022-12-14  9:09   ` Samuel Holland
2022-12-14 14:23     ` Andre Przywara
2022-12-06  0:45 ` [RFC PATCH 03/17] pinctrl: sunxi: remove struct sunxi_gpio Andre Przywara
2022-12-06  0:45 ` [RFC PATCH 04/17] pinctrl: sunxi: add GPIO in/out wrappers Andre Przywara
2022-12-15  5:59   ` Samuel Holland
2022-12-06  0:45 ` [RFC PATCH 05/17] pinctrl: sunxi: move pinctrl code and remove GPIO_EXTRA_HEADER Andre Przywara
2022-12-06  0:45 ` [RFC PATCH 06/17] pinctrl: sunxi: move PIO_BASE into sunxi_gpio.h Andre Przywara
2022-12-06  0:45 ` [RFC PATCH 07/17] pinctrl: sunxi: add new D1 pinctrl support Andre Przywara
2022-12-06  0:45 ` [RFC PATCH 08/17] sunxi: introduce NCAT2 generation model Andre Przywara
2022-12-06  5:38   ` Icenowy Zheng
2023-05-16  2:32   ` Sam Edwards
2023-05-16 21:08     ` Andre Przywara
2023-05-16 23:53       ` Sam Edwards
2023-05-17  0:43         ` Andre Przywara
2023-05-17  8:56           ` Andre Przywara
2023-05-17 14:04             ` Maxim Kiselev
2023-05-25 18:25               ` Maksim Kiselev
2023-05-26 11:05                 ` Andre Przywara
2023-06-03 18:03   ` Sam Edwards
2022-12-06  0:45 ` [RFC PATCH 09/17] pinctrl: sunxi: add Allwinner D1 pinctrl description Andre Przywara
2022-12-06  0:45 ` [RFC PATCH 10/17] clk: sunxi: Add support for the D1 CCU Andre Przywara
2023-05-22  3:57   ` Sam Edwards
2023-05-24  0:58     ` Andre Przywara
2023-05-26  0:34   ` Sam Edwards
2023-05-26 10:50     ` Andre Przywara
2023-05-26 19:27       ` Maksim Kiselev
2023-05-26 20:22         ` Sam Edwards
2023-05-26 22:07           ` Andre Przywara
2023-05-27  2:15             ` Sam Edwards
2023-05-30  0:58               ` Sam Edwards
2023-05-31 15:19                 ` Andre Przywara
2022-12-06  0:45 ` [RFC PATCH 11/17] sunxi: clock: D1/R528: Enable PLL LDO during PLL1 setup Andre Przywara
2022-12-06  0:45 ` [RFC PATCH 12/17] sunxi: clock: support D1/R528 PLL6 clock Andre Przywara
2022-12-06  0:45 ` [RFC PATCH 13/17] sunxi: add early Allwinner R528/T113 SoC support Andre Przywara
2023-05-16  2:52   ` Sam Edwards
2023-05-16 22:01     ` Andre Przywara
2022-12-06  0:45 ` [RFC PATCH 14/17] sunxi: refactor serial base addresses to avoid asm/arch/cpu.h Andre Przywara
2022-12-06  0:45 ` [RFC PATCH 15/17] riscv: dts: allwinner: Add the D1/D1s SoC devicetree Andre Przywara
2022-12-06  0:45 ` [RFC PATCH 16/17] arm: sunxi: add Allwinner T113s devicetree stub Andre Przywara
2022-12-06  5:55   ` Icenowy Zheng
2023-01-03 17:38     ` Andre Przywara
2023-01-04  5:49       ` Icenowy Zheng
2022-12-06  0:45 ` [RFC PATCH 17/17] sunxi: add preliminary MangoPi MQ-R board support Andre Przywara
2023-06-09 22:16 ` [RFC PATCH 00/17] sunxi: rework pinctrl and add T113s support Sam Edwards
2023-06-12  0:20   ` Andre Przywara
2023-06-12 21:18     ` Sam Edwards
2023-06-15  0:07       ` Andre Przywara
2023-06-18 19:01         ` Sam Edwards
2023-06-20 12:42           ` Andre Przywara
2023-06-20 22:11             ` Sam Edwards
2023-06-21 10:55               ` Andre Przywara
2023-06-21 20:22                 ` Sam Edwards
2023-06-16 15:59       ` Andre Przywara
2023-06-16 16:27         ` Maxim Kiselev
2023-06-16 16:36           ` Andre Przywara
2023-06-17  8:26             ` Maxim Kiselev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221206004549.29015-1-andre.przywara@arm.com \
    --to=andre.przywara@arm.com \
    --cc=jagan@amarulasolutions.com \
    --cc=jernej.skrabec@gmail.com \
    --cc=samuel@sholland.org \
    --cc=u-boot@lists.denx.de \
    --cc=uwu@icenowy.me \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).