Hi, > Hi Andre, > > > Hi, > > > > this is a first draft of the things Amit and I have been working on > > in the last months. It introduces support for an SoC called "Nexell > > S5P6818". This is an Octa-core ARMv8 SoC with Cortex-A53 cores, > > which apparently is closely related to (older) Samsung SoCs. Many > > peripherals are compatible to Samsung IP (UART, MMC, Ethernet, > > timers, ...), but some core peripherals like the clocks and the pin > > controller seem to be completely different. We used the NanoPi M3 > > board [1] for testing, which uses this SoC along with the usual > > suspects of on-board components and connectors. This port is done > > completely from scratch, by just looking at the manual. This allows > > a much cleaner and modern U-Boot support than the BSP code. > > > > The ARM Generic Timer (aka. arch timer) does not seem to work on > > this SoC. Ideally there would be some (hidden?) register enabling > > the right clock source, though we haven't found one (yet). But as > > also other code for this SoC out there on the net does not seem to > > be able to use the arch timer, I am not too hopeful here. While > > this does not impose a real problem to U-Boot (patch 3/13 takes > > care of that), it is a showstopper for mainline arm64 Linux, which > > heavily relies on the arch timer (since it's a mandatory part of > > the ARMv8 architecture). There is only a very small chance that the > > arch timer ever becomes optional in the mainline arm64 kernel. > > However our arm(32) kernel ports works quite nicely so far, also a > > (hacked) arm64 kernel boots to the prompt. We will submit Linux > > patches at a later time. > > > > We would be grateful to get some comments on the patches. > > The first five patches adapt existing code to simplify support for > > this SoC. The following six patches then successively enable and add > > SoC support, culmulating in the addition of a nanopi_m3_defconfig > > file in patch 11/13. The SoC support code is actually architecture > > agnostic, though up until the last patch it generates an AArch64 > > binary. To overcome the problems with the arch timer mentioned > > above, the final patch switches the port over to AArch32, which can > > more naturally launch arm kernels. > > > > This code so far does not include an SPL, instead it relies on some > > vendor provided code to initialise the DRAM and load U-Boot proper. > > The original BSP code provided a binary blob for that (called > > "secondboot"), although there is some GPLed version of that > > available on github([2]). We can load a 32-bit U-Boot with both the > > vendor blob and Rafaello's GPL version, the 64-bit version is only > > usable with the GPL code. Instruction on how to create a bootable > > SD card are contained in the arch/arm/mach-nexell/README file. > > > > We would be very grateful to get some first feedback on those > > patches and the approach in general taken here. > > Just to ask - why it is not possible to add this to: > > /arch/arm/mach-exynos ? And start new mach-nexell ?
Ok. I was too fast :-) Nexell is a separate company - also from Korea - so mach-nexell is a correct approach. Sorry. > > As fair as I remember, many Samsung SoCs (especially S5P) share IP > blocks, so maybe there is a place for unification? But unification if possible is more than welcome - as it was done in this patch set with uart code. > > Also, it would be quite challenging to support first armv8 Samsung soc > in the current directory structure..... Considering above - mach-nexell is probably the way to go. > > > +CC Jaehoon - who may have some comments here. > > > > > Cheers, > > Andre. > > > > [1] http://nanopi.io/nanopi-m3.html > > [2] https://github.com/rafaello7/bl1-nanopi-m3 > > > > Amit Singh Tomar (4): > > reset: add driver for generic reset controllers > > mmc: add MMC (glue) driver for Nexell SoCs > > arm: nexell: add ARM64 MMU regions > > arm: nexell: add timer support > > > > Andre Przywara (9): > > serial: s5p: rework Samsung UART driver to get rid of uart.h > > serial: S5P/Samsung: refactor and Kconfig-ize UART selection > > arm: move SYS_ARCH_TIMER to KConfig > > arm: add basic framework for Nexell S5P6818 support > > arm: nexell: embed NSIH header > > arm: nexell: add UART support > > arm: nexell: add preliminary S5P6818 SoC device tree > > arm: add NanoPi M3 board support > > arm: nexell: switch to 32-bit > > > > arch/arm/Kconfig | 29 +++++ > > arch/arm/Makefile | 1 + > > arch/arm/cpu/armv8/Makefile | 2 +- > > arch/arm/dts/s5p6818-nanopi-m3.dts | 30 +++++ > > arch/arm/dts/s5p6818.dtsi | 196 > > ++++++++++++++++++++++++++++++ > > arch/arm/dts/s5pc1xx-goni.dts | 2 +- > > arch/arm/dts/s5pc1xx-smdkc100.dts | 2 +- > > arch/arm/include/asm/arch-nexell/boot0.h | 35 ++++++ > > arch/arm/include/asm/arch-nexell/clk.h | 15 +++ > > arch/arm/include/asm/arch-nexell/pwm.h | 62 ++++++++++ > > arch/arm/mach-exynos/include/mach/uart.h | 44 ------- > > arch/arm/mach-imx/mx7ulp/Kconfig | 1 + > > arch/arm/mach-nexell/Kconfig | 9 ++ > > arch/arm/mach-nexell/Makefile | 10 ++ > > arch/arm/mach-nexell/README | 49 ++++++++ > > arch/arm/mach-nexell/board.c | 128 +++++++++++++++++++ > > arch/arm/mach-nexell/mmu-arm64.c | 39 ++++++ > > arch/arm/mach-s5pc1xx/Kconfig | 2 + > > arch/arm/mach-s5pc1xx/include/mach/uart.h | 44 ------- > > configs/nanopi_m3_defconfig | 12 ++ > > drivers/mmc/Kconfig | 8 ++ > > drivers/mmc/Makefile | 1 + > > drivers/mmc/nexell_dw_mmc.c | 159 > > ++++++++++++++++++++++++ drivers/reset/Kconfig > > | 6 + drivers/reset/Makefile | 1 + > > drivers/reset/reset-generic.c | 111 +++++++++++++++++ > > drivers/serial/Kconfig | 6 + > > drivers/serial/Makefile | 2 +- > > drivers/serial/serial_s5p.c | 45 ++++++- > > include/configs/mx7ulp_evk.h | 1 - > > include/configs/s5p6818.h | 35 ++++++ > > include/configs/ti_armv7_keystone2.h | 1 - > > scripts/config_whitelist.txt | 1 - 33 files changed, > > 989 insertions(+), 100 deletions(-) create mode 100644 > > arch/arm/dts/s5p6818-nanopi-m3.dts create mode 100644 > > arch/arm/dts/s5p6818.dtsi create mode 100644 > > arch/arm/include/asm/arch-nexell/boot0.h create mode 100644 > > arch/arm/include/asm/arch-nexell/clk.h create mode 100644 > > arch/arm/include/asm/arch-nexell/pwm.h delete mode 100644 > > arch/arm/mach-exynos/include/mach/uart.h create mode 100644 > > arch/arm/mach-nexell/Kconfig create mode 100644 > > arch/arm/mach-nexell/Makefile create mode 100644 > > arch/arm/mach-nexell/README create mode 100644 > > arch/arm/mach-nexell/board.c create mode 100644 > > arch/arm/mach-nexell/mmu-arm64.c delete mode 100644 > > arch/arm/mach-s5pc1xx/include/mach/uart.h create mode 100644 > > configs/nanopi_m3_defconfig create mode 100644 > > drivers/mmc/nexell_dw_mmc.c create mode 100644 > > drivers/reset/reset-generic.c create mode 100644 > > include/configs/s5p6818.h > > > > > > 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-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de 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-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
pgp3Mvb5i9tSO.pgp
Description: OpenPGP digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot