On Wed, Jan 4, 2017 at 9:20 PM, Jagan Teki <ja...@openedev.com> wrote: > On Mon, Jan 2, 2017 at 12:48 PM, Andre Przywara <andre.przyw...@arm.com> > wrote: >> Hi, >> >> hopefully the final version of the SPL support series for the Allwinner A64 >> SoC. Actually no real code changes this time, just rebased on top of recent >> master, adding some comments in patches 16/26 and 19/26 following Maxime's >> suggestions and adding Acked-by:s and Reviewed-by:s. >> I left the final patch 26/26 in for the sake of completeness, but don't >> expect >> it to be merged. We need a clever solution to unify 32-bit and 64-bit board >> configurations, but that shouldn't hold back this series for now. >> Merging everything until and including patch 21/26 (sunxi: A64: enable SPL) >> would be great, the other patches until 25/26 can go in as well, I think. >> >> ------------- >> As the previous versions this one includes support for both AArch64 and >> AArch32 SPL builds. The FIT support is still missing, which means the >> functionality is limited. Due to the missing ARM Trusted Firmware (ATF) >> in this firmware chain we lose Ethernet and SMP, among other minor things. >> A full 64-bit build can be written to an SD card as expected and will >> boot the U-Boot proper prompt. However Linux will crash on boot, as >> PSCI is missing. >> Building the 32-bit version of the SPL and combining this with an ATF >> build and the 64-bit U-Boot proper allows to use FEL booting now: >> # sunxi-fel spl sunxi-spl.bin write 0x4a000000 u-boot-dtb.bin \ >> write 0x44000 bl31.bin reset64 0x44000 >> This way of booting the board gives full functionality. >> >> The first patch is a rather simple fix (with no changes to v2). >> Patches 2-8 prepare the SPL code to be compiled for 64-bit in general and >> AArch64 in particular. >> Patches 9-11 refactor the existing boot0 header functionality to be used >> by patch 12, which introduces the 64-bit switch in the first SPL >> instructions. >> Patches 13-20 then introduce the actual core of the SPL support: the DRAM >> initialization, courtesy of Jens. This piggy backs on the existing >> H3 DRAM code, deviating where needed. This has been reworked compared to >> v2: I added a patch from Philipp to replace the rather uninspired >> register writes in the MBUS priority setup function with some meaningful >> code, explaining the various bits. Also the actual A64 DRAM code is no >> longer #ifdef'ed into the H3 driver, but uses parameters to (static) >> functions. The compiler detects this and removes the dead code from >> the other variant, resulting in the same binary size for the H3. >> >> Patch 21 finally enables the 64-bit SPL support. So now building the >> existing pine64_plus_defconfig will generate a sunxi-spl.bin, which >> can be prepended to the U-Boot proper image (not .bin) to boot from >> an SD card. Due to the missing ATF support this is of limited usability >> at the moment, though. Also FEL support requires more love - to switch >> back to AArch32 before returning to FEL (without crashing, that is ;-), >> so this is disabled. >> On my setup this results in a 26KB SPL binary, which is close to the >> 28K limit mksunxiboot imposes at the moment. Adding anything (like >> FIT support or DEBUG) will exceed this, and although I have patches >> to let mksunxiboot get close to 32KB, this is the ulimate frontier. >> >> So patches 22-25 then teach the SPL how to detect an U-Boot image file >> of a different bitness and do the RMR switch from AArch32 to AArch64, >> if needed. >> This is used by the final patch 26, which creates another _defconfig >> to let the SPL compile for AArch32 using the Thumb2 encoding. This >> results in a binary of less than 17KB in my case, so has plenty of >> room for extensions. >> >> Cheers, >> Andre. >> >> Changelog v3 .. v4: >> - rebased on top of latest HEAD >> - add various Reviewed-by: and Acked-by: tags >> - add comments about register bit meanings in non-ODT-setting fix >> - clarify meaning of delay values in single bit delay support patch >> - removing stray semicolons from boot0.h header >> >> Changelog v2 .. v3: >> - add various Reviewed-by: and Acked-by: tags >> - split tiny-printf fix to handle "-" separately >> - add various comments and extend commit messages >> - add assembly file to re-create the embedded RMR switch code >> - add patch 14/26 to explain the MBUS priority setup >> - move DRAM r/w delay values into #defines to simplify re-usablity >> - replace #ifdef'ed addition of A64 support to the H3 DRAM driver with an >> approach using static parameters >> >> Changelog v1 .. v2: >> - drop SPI build fix (already merged) >> - confine A31 register init change to H3 and A64 >> - use IS_ENABLED() instead of #idef to guard MBUS2 clock init >> - fix tiny-printf (proper sign extension for 32-bit integers) >> - add "size" output in commit msg to document tiny-printf size impact >> - fix sdelay(): use only one register, add "cc" clobber >> - update RMR switch code to provide easy access to RVBAR register address >> - drop redundant DRAM frequency setting from Pine64 defconfig >> - minor changes as requested by reviewers >> >> Andre Przywara (21): >> sun6i: Restrict some register initialization to Allwinner A31 SoC >> armv8: prevent using THUMB >> armv8: add lowlevel_init.S >> SPL: tiny-printf: add "l" modifier >> SPL: tiny-printf: ignore "-" modifier >> move UL() macro from armv8/mmu.h into common.h >> SPL: make struct spl_image 64-bit safe >> armv8: add simple sdelay implementation >> armv8: move reset branch into boot hook >> ARM: boot0 hook: remove macro, include whole header file >> sunxi: introduce extra config option for boot0 header >> sunxi: A64: do an RMR switch if started in AArch32 mode >> sunxi: provide default DRAM config for sun50i in Kconfig >> sunxi: H3/A64: fix non-ODT setting >> sunxi: DRAM: fix H3 DRAM size display on aarch64 >> sunxi: A64: enable SPL >> SPL: read and store arch property from U-Boot image >> Makefile: use "arm64" architecture for U-Boot image files >> ARM: SPL/FIT: differentiate between arm and arm64 arch properties >> sunxi: introduce RMR switch to enter payloads in 64-bit mode >> sunxi: A64: add 32-bit SPL support >> >> Jens Kuske (3): >> sunxi: H3: add and rename some DRAM contoller registers >> sunxi: H3: add DRAM controller single bit delay support >> sunxi: A64: use H3 DRAM initialization code for A64 as well >> >> Philipp Tomsich (2): >> sunxi: H3: Rework MBUS priority setup >> sunxi: clocks: Use the correct pattern register for PLL11 > > Except arm64, applied SPL support (till 21)
The remaining 4 arm64 patches need necessary changes wrt current tree, so updated patchwork status as "Changes Requested" thanks! -- Jagan Teki Free Software Engineer | www.openedev.com U-Boot, Linux | Upstream Maintainer Hyderabad, India. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot