mbox series

[v2,00/21] sunxi: Introduce H616 support

Message ID 20210111201153.1800440-1-jernej.skrabec@siol.net
Headers show
Series sunxi: Introduce H616 support | expand

Message

Jernej Škrabec Jan. 11, 2021, 8:11 p.m. UTC
This series introduces H616 support. Later patches add also OrangePi
Zero2 support but since H616 DT is not merged into Linux yet, I don't
expect them to land yet.

Most patches are ready to land, except those which depends on non-upstreamed
DT yet.

This series is based on u-boot-sunxi repo.

Please take a look.

Best regards,
Jernej

Changes from v1:
- collected tags
- replaced AXP805 magic value with macro
- fixed H6 build (missing symbols after refactoring)
- removed premature SPI boot support
- add missing peripherals to prcm map
- reworked mmc sector calculation
- fixed comment in clock function
- used IS_ENABLED ternary instead of #if #else #endif
- renamed DRAM struct field to more meaningful name
- fixed missing space in Kconfig for DRAM symbol
- removed unused macro from sunxi-u-boot.dtsi
- removed padding definition for H616
- added FEL support for H616
- picked patches 1-2 from https://patchwork.ozlabs.org/project/uboot/list/?series=223600
- added mmc support for H616

Andre Przywara (4):
  sunxi: support loading with SPL > 32KB
  mmc: sunxi: Refactor mod clock register offset
  net: sun8i-emac: Always clear syscon EPHY register
  net: sun8i-emac: Determine pinmux based on SoC, not EMAC type

Jernej Skrabec (17):
  sunxi: Add support for AXP305 PMIC
  sunxi: Introduce common symbol for H6 like SoCs
  mmc: sunxi: Replace H6 ifdefs with H6 gen macro
  i2c: mvtwsi: sunxi: update macro
  sunxi: prcm: Add memory map for H6 like SoCs
  sunxi: Add support for I2C on H6 like SoCs
  sunxi: introduce support for H616 clocks
  sunxi: add support for H616 uart0
  sunxi: add support for R_I2C on H616
  sunxi: Add H616 DRAM support
  sunxi: Add support for H616 SoC
  mmc: sunxi: Add H616 clock offset
  sunxi: Add H616 FEL support
  arm: sunxi: add initial H616 DTSI and headers
  sunxi: gpio: introduce compatible for H616
  clk: sunxi: Add support for H616 clocks
  sunxi: Add support for OrangePi Zero2

 arch/arm/cpu/armv8/fel_utils.S                |    5 +-
 arch/arm/dts/Makefile                         |    2 +
 arch/arm/dts/sun50i-h616-orangepi-zero2.dts   |  240 ++++
 arch/arm/dts/sun50i-h616.dtsi                 |  716 ++++++++++++
 arch/arm/dts/sunxi-u-boot.dtsi                |    8 +
 arch/arm/include/asm/arch-sunxi/boot0.h       |    2 +-
 arch/arm/include/asm/arch-sunxi/clock.h       |    2 +-
 .../include/asm/arch-sunxi/clock_sun50i_h6.h  |   19 +-
 arch/arm/include/asm/arch-sunxi/cpu.h         |    2 +-
 .../include/asm/arch-sunxi/cpu_sun50i_h6.h    |    7 +
 arch/arm/include/asm/arch-sunxi/dram.h        |    2 +
 .../include/asm/arch-sunxi/dram_sun50i_h616.h |  159 +++
 arch/arm/include/asm/arch-sunxi/gpio.h        |    2 +
 arch/arm/include/asm/arch-sunxi/mmc.h         |    2 +-
 arch/arm/include/asm/arch-sunxi/prcm.h        |  249 +---
 arch/arm/include/asm/arch-sunxi/prcm_sun50i.h |   47 +
 arch/arm/include/asm/arch-sunxi/prcm_sun6i.h  |  247 ++++
 arch/arm/include/asm/arch-sunxi/timer.h       |    2 +-
 arch/arm/mach-sunxi/Kconfig                   |   75 +-
 arch/arm/mach-sunxi/Makefile                  |    4 +-
 arch/arm/mach-sunxi/board.c                   |   24 +-
 arch/arm/mach-sunxi/clock_sun50i_h6.c         |   37 +-
 arch/arm/mach-sunxi/cpu_info.c                |    2 +
 arch/arm/mach-sunxi/dram_sun50i_h616.c        | 1023 +++++++++++++++++
 arch/arm/mach-sunxi/dram_timings/Makefile     |    2 +
 .../mach-sunxi/dram_timings/h616_ddr3_1333.c  |   94 ++
 arch/arm/mach-sunxi/pmic_bus.c                |    6 +
 arch/arm/mach-sunxi/rmr_switch.S              |    2 +-
 board/sunxi/MAINTAINERS                       |    5 +
 board/sunxi/board.c                           |   14 +-
 common/spl/Kconfig                            |    7 +-
 configs/orangepi_zero2_defconfig              |   15 +
 drivers/clk/sunxi/Kconfig                     |    7 +
 drivers/clk/sunxi/Makefile                    |    1 +
 drivers/clk/sunxi/clk_h616.c                  |  120 ++
 drivers/gpio/sunxi_gpio.c                     |    1 +
 drivers/i2c/mvtwsi.c                          |    2 +-
 drivers/mmc/sunxi_mmc.c                       |   97 +-
 drivers/net/sun8i_emac.c                      |   59 +-
 drivers/power/Kconfig                         |   14 +-
 drivers/power/Makefile                        |    1 +
 drivers/power/axp305.c                        |   83 ++
 include/axp305.h                              |   17 +
 include/axp_pmic.h                            |    3 +
 include/configs/sun50i.h                      |    2 +-
 include/configs/sunxi-common.h                |    7 +
 include/dt-bindings/clock/sun50i-h616-ccu.h   |  115 ++
 include/dt-bindings/reset/sun50i-h616-ccu.h   |   70 ++
 48 files changed, 3258 insertions(+), 364 deletions(-)
 create mode 100644 arch/arm/dts/sun50i-h616-orangepi-zero2.dts
 create mode 100644 arch/arm/dts/sun50i-h616.dtsi
 create mode 100644 arch/arm/include/asm/arch-sunxi/dram_sun50i_h616.h
 create mode 100644 arch/arm/include/asm/arch-sunxi/prcm_sun50i.h
 create mode 100644 arch/arm/include/asm/arch-sunxi/prcm_sun6i.h
 create mode 100644 arch/arm/mach-sunxi/dram_sun50i_h616.c
 create mode 100644 arch/arm/mach-sunxi/dram_timings/h616_ddr3_1333.c
 create mode 100644 configs/orangepi_zero2_defconfig
 create mode 100644 drivers/clk/sunxi/clk_h616.c
 create mode 100644 drivers/power/axp305.c
 create mode 100644 include/axp305.h
 create mode 100644 include/dt-bindings/clock/sun50i-h616-ccu.h
 create mode 100644 include/dt-bindings/reset/sun50i-h616-ccu.h

Comments

Jernej Škrabec Jan. 11, 2021, 8:17 p.m. UTC | #1
Dne ponedeljek, 11. januar 2021 ob 21:11:32 CET je Jernej Skrabec napisal(a):
> This series introduces H616 support. Later patches add also OrangePi
> Zero2 support but since H616 DT is not merged into Linux yet, I don't
> expect them to land yet.
> 
> Most patches are ready to land, except those which depends on non-upstreamed
> DT yet.
> 
> This series is based on u-boot-sunxi repo.

Forgot to say that this series was also tested on H6 (OrangePi 3) to make sure 
it doesn't break anything.

Best regards,
Jernej

> 
> Please take a look.
> 
> Best regards,
> Jernej
> 
> Changes from v1:
> - collected tags
> - replaced AXP805 magic value with macro
> - fixed H6 build (missing symbols after refactoring)
> - removed premature SPI boot support
> - add missing peripherals to prcm map
> - reworked mmc sector calculation
> - fixed comment in clock function
> - used IS_ENABLED ternary instead of #if #else #endif
> - renamed DRAM struct field to more meaningful name
> - fixed missing space in Kconfig for DRAM symbol
> - removed unused macro from sunxi-u-boot.dtsi
> - removed padding definition for H616
> - added FEL support for H616
> - picked patches 1-2 from https://patchwork.ozlabs.org/project/uboot/list/?
series=223600
> - added mmc support for H616
> 
> Andre Przywara (4):
>   sunxi: support loading with SPL > 32KB
>   mmc: sunxi: Refactor mod clock register offset
>   net: sun8i-emac: Always clear syscon EPHY register
>   net: sun8i-emac: Determine pinmux based on SoC, not EMAC type
> 
> Jernej Skrabec (17):
>   sunxi: Add support for AXP305 PMIC
>   sunxi: Introduce common symbol for H6 like SoCs
>   mmc: sunxi: Replace H6 ifdefs with H6 gen macro
>   i2c: mvtwsi: sunxi: update macro
>   sunxi: prcm: Add memory map for H6 like SoCs
>   sunxi: Add support for I2C on H6 like SoCs
>   sunxi: introduce support for H616 clocks
>   sunxi: add support for H616 uart0
>   sunxi: add support for R_I2C on H616
>   sunxi: Add H616 DRAM support
>   sunxi: Add support for H616 SoC
>   mmc: sunxi: Add H616 clock offset
>   sunxi: Add H616 FEL support
>   arm: sunxi: add initial H616 DTSI and headers
>   sunxi: gpio: introduce compatible for H616
>   clk: sunxi: Add support for H616 clocks
>   sunxi: Add support for OrangePi Zero2
> 
>  arch/arm/cpu/armv8/fel_utils.S                |    5 +-
>  arch/arm/dts/Makefile                         |    2 +
>  arch/arm/dts/sun50i-h616-orangepi-zero2.dts   |  240 ++++
>  arch/arm/dts/sun50i-h616.dtsi                 |  716 ++++++++++++
>  arch/arm/dts/sunxi-u-boot.dtsi                |    8 +
>  arch/arm/include/asm/arch-sunxi/boot0.h       |    2 +-
>  arch/arm/include/asm/arch-sunxi/clock.h       |    2 +-
>  .../include/asm/arch-sunxi/clock_sun50i_h6.h  |   19 +-
>  arch/arm/include/asm/arch-sunxi/cpu.h         |    2 +-
>  .../include/asm/arch-sunxi/cpu_sun50i_h6.h    |    7 +
>  arch/arm/include/asm/arch-sunxi/dram.h        |    2 +
>  .../include/asm/arch-sunxi/dram_sun50i_h616.h |  159 +++
>  arch/arm/include/asm/arch-sunxi/gpio.h        |    2 +
>  arch/arm/include/asm/arch-sunxi/mmc.h         |    2 +-
>  arch/arm/include/asm/arch-sunxi/prcm.h        |  249 +---
>  arch/arm/include/asm/arch-sunxi/prcm_sun50i.h |   47 +
>  arch/arm/include/asm/arch-sunxi/prcm_sun6i.h  |  247 ++++
>  arch/arm/include/asm/arch-sunxi/timer.h       |    2 +-
>  arch/arm/mach-sunxi/Kconfig                   |   75 +-
>  arch/arm/mach-sunxi/Makefile                  |    4 +-
>  arch/arm/mach-sunxi/board.c                   |   24 +-
>  arch/arm/mach-sunxi/clock_sun50i_h6.c         |   37 +-
>  arch/arm/mach-sunxi/cpu_info.c                |    2 +
>  arch/arm/mach-sunxi/dram_sun50i_h616.c        | 1023 +++++++++++++++++
>  arch/arm/mach-sunxi/dram_timings/Makefile     |    2 +
>  .../mach-sunxi/dram_timings/h616_ddr3_1333.c  |   94 ++
>  arch/arm/mach-sunxi/pmic_bus.c                |    6 +
>  arch/arm/mach-sunxi/rmr_switch.S              |    2 +-
>  board/sunxi/MAINTAINERS                       |    5 +
>  board/sunxi/board.c                           |   14 +-
>  common/spl/Kconfig                            |    7 +-
>  configs/orangepi_zero2_defconfig              |   15 +
>  drivers/clk/sunxi/Kconfig                     |    7 +
>  drivers/clk/sunxi/Makefile                    |    1 +
>  drivers/clk/sunxi/clk_h616.c                  |  120 ++
>  drivers/gpio/sunxi_gpio.c                     |    1 +
>  drivers/i2c/mvtwsi.c                          |    2 +-
>  drivers/mmc/sunxi_mmc.c                       |   97 +-
>  drivers/net/sun8i_emac.c                      |   59 +-
>  drivers/power/Kconfig                         |   14 +-
>  drivers/power/Makefile                        |    1 +
>  drivers/power/axp305.c                        |   83 ++
>  include/axp305.h                              |   17 +
>  include/axp_pmic.h                            |    3 +
>  include/configs/sun50i.h                      |    2 +-
>  include/configs/sunxi-common.h                |    7 +
>  include/dt-bindings/clock/sun50i-h616-ccu.h   |  115 ++
>  include/dt-bindings/reset/sun50i-h616-ccu.h   |   70 ++
>  48 files changed, 3258 insertions(+), 364 deletions(-)
>  create mode 100644 arch/arm/dts/sun50i-h616-orangepi-zero2.dts
>  create mode 100644 arch/arm/dts/sun50i-h616.dtsi
>  create mode 100644 arch/arm/include/asm/arch-sunxi/dram_sun50i_h616.h
>  create mode 100644 arch/arm/include/asm/arch-sunxi/prcm_sun50i.h
>  create mode 100644 arch/arm/include/asm/arch-sunxi/prcm_sun6i.h
>  create mode 100644 arch/arm/mach-sunxi/dram_sun50i_h616.c
>  create mode 100644 arch/arm/mach-sunxi/dram_timings/h616_ddr3_1333.c
>  create mode 100644 configs/orangepi_zero2_defconfig
>  create mode 100644 drivers/clk/sunxi/clk_h616.c
>  create mode 100644 drivers/power/axp305.c
>  create mode 100644 include/axp305.h
>  create mode 100644 include/dt-bindings/clock/sun50i-h616-ccu.h
>  create mode 100644 include/dt-bindings/reset/sun50i-h616-ccu.h
> 
> -- 
> 2.30.0
> 
>
Andre Przywara Jan. 24, 2021, 2:19 a.m. UTC | #2
On Mon, 11 Jan 2021 21:11:32 +0100
Jernej Skrabec <jernej.skrabec@siol.net> wrote:

Hi,

Jernej: many thanks for your work on this and your persistence!

Jaehoon, Samuel: thanks for the diligent review, that's much
appreciated and very helpful!

> This series introduces H616 support. Later patches add also OrangePi
> Zero2 support but since H616 DT is not merged into Linux yet, I don't
> expect them to land yet.
> 
> Most patches are ready to land, except those which depends on non-upstreamed
> DT yet.

So I put those patches (on top of other pending patches) in the sunxi
master branch, and plan to send a pull request early next week, after
doing some more tests. I took the preliminary DTs, I don't see the
point of waiting for Linux mainline acceptance at this stage of
development. Since this is a new SoC and board, we can update still
after the merge window.

Beside adding all the review tags, I also did minor changes that were
not worth the churn of a respin:
- patch 07/21: extend the comment
- patch 08/21: fix a rebase bug
- patch 12/21: use SUN50I_GEN_H6 instead of MACH_SUN50I_H6
- patch 13/21: drop from this version
- patch 15/21: drop for good, now redundant due to change in 12/21
- patch 16/21: use different base address as suggested by Samuel
- patch 17/21: drop from this version
- patch 18/21: update DT, drop EMAC compatible change
- patch 19/21: add -r-pinctrl name as well
- patch 20/21: fix compilation due to mainline change
- patch 21/21: update .dts, drop Ethernet support

So I dropped the Ethernet support for now, since this relies on some
yet unreviewed EMAC driver changes. Ideally we can still merge them
next week, shall we agree on them.

Jernej, please have a look at those changes and shout if you are not
happy with them! Otherwise I will push them, and we have till April to
iron out any leftover bugs.

https://gitlab.denx.de/u-boot/custodians/u-boot-sunxi/-/commits/master/

Cheers,
Andre

> 
> This series is based on u-boot-sunxi repo.
> 
> Please take a look.
> 
> Best regards,
> Jernej
> 
> Changes from v1:
> - collected tags
> - replaced AXP805 magic value with macro
> - fixed H6 build (missing symbols after refactoring)
> - removed premature SPI boot support
> - add missing peripherals to prcm map
> - reworked mmc sector calculation
> - fixed comment in clock function
> - used IS_ENABLED ternary instead of #if #else #endif
> - renamed DRAM struct field to more meaningful name
> - fixed missing space in Kconfig for DRAM symbol
> - removed unused macro from sunxi-u-boot.dtsi
> - removed padding definition for H616
> - added FEL support for H616
> - picked patches 1-2 from https://patchwork.ozlabs.org/project/uboot/list/?series=223600
> - added mmc support for H616
> 
> Andre Przywara (4):
>   sunxi: support loading with SPL > 32KB
>   mmc: sunxi: Refactor mod clock register offset
>   net: sun8i-emac: Always clear syscon EPHY register
>   net: sun8i-emac: Determine pinmux based on SoC, not EMAC type
> 
> Jernej Skrabec (17):
>   sunxi: Add support for AXP305 PMIC
>   sunxi: Introduce common symbol for H6 like SoCs
>   mmc: sunxi: Replace H6 ifdefs with H6 gen macro
>   i2c: mvtwsi: sunxi: update macro
>   sunxi: prcm: Add memory map for H6 like SoCs
>   sunxi: Add support for I2C on H6 like SoCs
>   sunxi: introduce support for H616 clocks
>   sunxi: add support for H616 uart0
>   sunxi: add support for R_I2C on H616
>   sunxi: Add H616 DRAM support
>   sunxi: Add support for H616 SoC
>   mmc: sunxi: Add H616 clock offset
>   sunxi: Add H616 FEL support
>   arm: sunxi: add initial H616 DTSI and headers
>   sunxi: gpio: introduce compatible for H616
>   clk: sunxi: Add support for H616 clocks
>   sunxi: Add support for OrangePi Zero2
> 
>  arch/arm/cpu/armv8/fel_utils.S                |    5 +-
>  arch/arm/dts/Makefile                         |    2 +
>  arch/arm/dts/sun50i-h616-orangepi-zero2.dts   |  240 ++++
>  arch/arm/dts/sun50i-h616.dtsi                 |  716 ++++++++++++
>  arch/arm/dts/sunxi-u-boot.dtsi                |    8 +
>  arch/arm/include/asm/arch-sunxi/boot0.h       |    2 +-
>  arch/arm/include/asm/arch-sunxi/clock.h       |    2 +-
>  .../include/asm/arch-sunxi/clock_sun50i_h6.h  |   19 +-
>  arch/arm/include/asm/arch-sunxi/cpu.h         |    2 +-
>  .../include/asm/arch-sunxi/cpu_sun50i_h6.h    |    7 +
>  arch/arm/include/asm/arch-sunxi/dram.h        |    2 +
>  .../include/asm/arch-sunxi/dram_sun50i_h616.h |  159 +++
>  arch/arm/include/asm/arch-sunxi/gpio.h        |    2 +
>  arch/arm/include/asm/arch-sunxi/mmc.h         |    2 +-
>  arch/arm/include/asm/arch-sunxi/prcm.h        |  249 +---
>  arch/arm/include/asm/arch-sunxi/prcm_sun50i.h |   47 +
>  arch/arm/include/asm/arch-sunxi/prcm_sun6i.h  |  247 ++++
>  arch/arm/include/asm/arch-sunxi/timer.h       |    2 +-
>  arch/arm/mach-sunxi/Kconfig                   |   75 +-
>  arch/arm/mach-sunxi/Makefile                  |    4 +-
>  arch/arm/mach-sunxi/board.c                   |   24 +-
>  arch/arm/mach-sunxi/clock_sun50i_h6.c         |   37 +-
>  arch/arm/mach-sunxi/cpu_info.c                |    2 +
>  arch/arm/mach-sunxi/dram_sun50i_h616.c        | 1023 +++++++++++++++++
>  arch/arm/mach-sunxi/dram_timings/Makefile     |    2 +
>  .../mach-sunxi/dram_timings/h616_ddr3_1333.c  |   94 ++
>  arch/arm/mach-sunxi/pmic_bus.c                |    6 +
>  arch/arm/mach-sunxi/rmr_switch.S              |    2 +-
>  board/sunxi/MAINTAINERS                       |    5 +
>  board/sunxi/board.c                           |   14 +-
>  common/spl/Kconfig                            |    7 +-
>  configs/orangepi_zero2_defconfig              |   15 +
>  drivers/clk/sunxi/Kconfig                     |    7 +
>  drivers/clk/sunxi/Makefile                    |    1 +
>  drivers/clk/sunxi/clk_h616.c                  |  120 ++
>  drivers/gpio/sunxi_gpio.c                     |    1 +
>  drivers/i2c/mvtwsi.c                          |    2 +-
>  drivers/mmc/sunxi_mmc.c                       |   97 +-
>  drivers/net/sun8i_emac.c                      |   59 +-
>  drivers/power/Kconfig                         |   14 +-
>  drivers/power/Makefile                        |    1 +
>  drivers/power/axp305.c                        |   83 ++
>  include/axp305.h                              |   17 +
>  include/axp_pmic.h                            |    3 +
>  include/configs/sun50i.h                      |    2 +-
>  include/configs/sunxi-common.h                |    7 +
>  include/dt-bindings/clock/sun50i-h616-ccu.h   |  115 ++
>  include/dt-bindings/reset/sun50i-h616-ccu.h   |   70 ++
>  48 files changed, 3258 insertions(+), 364 deletions(-)
>  create mode 100644 arch/arm/dts/sun50i-h616-orangepi-zero2.dts
>  create mode 100644 arch/arm/dts/sun50i-h616.dtsi
>  create mode 100644 arch/arm/include/asm/arch-sunxi/dram_sun50i_h616.h
>  create mode 100644 arch/arm/include/asm/arch-sunxi/prcm_sun50i.h
>  create mode 100644 arch/arm/include/asm/arch-sunxi/prcm_sun6i.h
>  create mode 100644 arch/arm/mach-sunxi/dram_sun50i_h616.c
>  create mode 100644 arch/arm/mach-sunxi/dram_timings/h616_ddr3_1333.c
>  create mode 100644 configs/orangepi_zero2_defconfig
>  create mode 100644 drivers/clk/sunxi/clk_h616.c
>  create mode 100644 drivers/power/axp305.c
>  create mode 100644 include/axp305.h
>  create mode 100644 include/dt-bindings/clock/sun50i-h616-ccu.h
>  create mode 100644 include/dt-bindings/reset/sun50i-h616-ccu.h
>