Re: [U-Boot] [PATCH 0/6] Add Pine64 support
Hi, On 31-03-16 21:22, Hans de Goede wrote: Hi, On 31-03-16 21:15, Alexander Graf wrote: Am 31.03.2016 um 20:53 schrieb Hans de Goede: Hi, On 29-03-16 18:08, Alexander Graf wrote: On 29.03.16 17:45, Hans de Goede wrote: Hi, On 03/29/2016 05:29 PM, Alexander Graf wrote: The Pine64 is a kickstarter backed SBC that runs on the Allwinner A64 SoC. This SoC can run AArch64 code, so this patch set lifts all arm version indepenent sunxi code into a mach directory and builds the A64 code as armv8 (aarch64) code. With these patches applied, I can successfully boot my 1GB Pine64+ board with an openSUSE EFI image. Can you provide some quick instructions on how to test this ? Bonus point for a link to a boot0.bin which I can dd to a sdcard and use with a u-boot.bin build with these patches. Sure. Grab these all the files in this directory: http://csgraf.de/agraf/pine64 Then do $ gcc pine64_image.c -o pine64_image $ cat bl31.bin /u-boot.bin > bl31uboot.bin $ ./pine64_image scp.bin bl31uboot.bin u-boot.img $ dd if=boot0.bin of=/dev/mmcblk0 seek=16 $ dd if=u-boot.img of=/dev/mmcblk0 seek=80 That should give you a working system. The scp.bin and boot0.bin are from the Allwinner binary distribution. ATF (bl31.bin) is built from these sources: https://build.opensuse.org/package/show/devel:ARM:Factory:Contrib:Pine64/firmware-pine64 Enjoy, Thanks, works like a charm. I've applied the entire series to my tree, except for "[PATCH 3/6] arm: Allow u32 as addrs for readX/writeX" instead I've added 2 extra casts to your "[PATCH 4/6] sunxi: Explicitly cast u32 pointer conversions" patch, which is enough to build warning free for me. I still have some other patches to process, I'll send a pull-req tomorrow morning. Thanks :) Note I've squashed the following fixes into "[PATCH 5/6] sunxi: Add support for Allwinner A64 SoCs" : --- a/arch/arm/include/asm/arch-sunxi/clock_sun6i.h +++ b/arch/arm/include/asm/arch-sunxi/clock_sun6i.h @@ -352,10 +352,10 @@ struct sunxi_ccm_reg { #if defined(CONFIG_MACH_SUN50I) #define MBUS_CLK_DEFAULT 0x8102 /* PLL6x2 / 3 */ -#elif !defined(CONFIG_MACH_SUN8I) -#define MBUS_CLK_DEFAULT 0x8101 /* PLL6 / 2 */ -#else +#elif defined(CONFIG_MACH_SUN8I) #define MBUS_CLK_DEFAULT 0x8103 /* PLL6 / 4 */ +#else +#define MBUS_CLK_DEFAULT 0x8101 /* PLL6 / 2 */ #endif #define MBUS_CLK_GATE (0x1 << 31) --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h @@ -92,12 +92,6 @@ static inline unsigned long read_mpidr(void) #define BSP_COREID 0 -static inline void sdelay(unsigned long n) -{ - int i; - for (i = 0; i < n; i++) asm volatile(""); -} - How did you manage to build without sdelay? The sun6i clock code used it, no? Or is something there guarded with CONFIG_SPL_BUILD? The code in question is #ifdef CONFIG_SPL_BUILD I guess we will need to fix this somehow when we get SPL support, I'm pretty sure the above is not the right solution. p.s. This patchset broke every other sunxi board! 2 very minor issues, already fixed up in my tree. I always build all sunxi builds before sending out a pull-req :) Regards, Hans ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 0/6] Add Pine64 support
Hi, On 31-03-16 21:15, Alexander Graf wrote: Am 31.03.2016 um 20:53 schrieb Hans de Goede: Hi, On 29-03-16 18:08, Alexander Graf wrote: On 29.03.16 17:45, Hans de Goede wrote: Hi, On 03/29/2016 05:29 PM, Alexander Graf wrote: The Pine64 is a kickstarter backed SBC that runs on the Allwinner A64 SoC. This SoC can run AArch64 code, so this patch set lifts all arm version indepenent sunxi code into a mach directory and builds the A64 code as armv8 (aarch64) code. With these patches applied, I can successfully boot my 1GB Pine64+ board with an openSUSE EFI image. Can you provide some quick instructions on how to test this ? Bonus point for a link to a boot0.bin which I can dd to a sdcard and use with a u-boot.bin build with these patches. Sure. Grab these all the files in this directory: http://csgraf.de/agraf/pine64 Then do $ gcc pine64_image.c -o pine64_image $ cat bl31.bin /u-boot.bin > bl31uboot.bin $ ./pine64_image scp.bin bl31uboot.bin u-boot.img $ dd if=boot0.bin of=/dev/mmcblk0 seek=16 $ dd if=u-boot.img of=/dev/mmcblk0 seek=80 That should give you a working system. The scp.bin and boot0.bin are from the Allwinner binary distribution. ATF (bl31.bin) is built from these sources: https://build.opensuse.org/package/show/devel:ARM:Factory:Contrib:Pine64/firmware-pine64 Enjoy, Thanks, works like a charm. I've applied the entire series to my tree, except for "[PATCH 3/6] arm: Allow u32 as addrs for readX/writeX" instead I've added 2 extra casts to your "[PATCH 4/6] sunxi: Explicitly cast u32 pointer conversions" patch, which is enough to build warning free for me. I still have some other patches to process, I'll send a pull-req tomorrow morning. Thanks :) Note I've squashed the following fixes into "[PATCH 5/6] sunxi: Add support for Allwinner A64 SoCs" : --- a/arch/arm/include/asm/arch-sunxi/clock_sun6i.h +++ b/arch/arm/include/asm/arch-sunxi/clock_sun6i.h @@ -352,10 +352,10 @@ struct sunxi_ccm_reg { #if defined(CONFIG_MACH_SUN50I) #define MBUS_CLK_DEFAULT 0x8102 /* PLL6x2 / 3 */ -#elif !defined(CONFIG_MACH_SUN8I) -#define MBUS_CLK_DEFAULT 0x8101 /* PLL6 / 2 */ -#else +#elif defined(CONFIG_MACH_SUN8I) #define MBUS_CLK_DEFAULT 0x8103 /* PLL6 / 4 */ +#else +#define MBUS_CLK_DEFAULT 0x8101 /* PLL6 / 2 */ #endif #define MBUS_CLK_GATE (0x1 << 31) --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h @@ -92,12 +92,6 @@ static inline unsigned long read_mpidr(void) #define BSP_COREID 0 -static inline void sdelay(unsigned long n) -{ - int i; - for (i = 0; i < n; i++) asm volatile(""); -} - How did you manage to build without sdelay? The sun6i clock code used it, no? Or is something there guarded with CONFIG_SPL_BUILD? The code in question is #ifdef CONFIG_SPL_BUILD I guess we will need to fix this somehow when we get SPL support, I'm pretty sure the above is not the right solution. Regards, Hans ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 0/6] Add Pine64 support
> Am 31.03.2016 um 20:53 schrieb Hans de Goede: > > Hi, > >> On 29-03-16 18:08, Alexander Graf wrote: >> >> >>> On 29.03.16 17:45, Hans de Goede wrote: >>> Hi, >>> On 03/29/2016 05:29 PM, Alexander Graf wrote: The Pine64 is a kickstarter backed SBC that runs on the Allwinner A64 SoC. This SoC can run AArch64 code, so this patch set lifts all arm version indepenent sunxi code into a mach directory and builds the A64 code as armv8 (aarch64) code. With these patches applied, I can successfully boot my 1GB Pine64+ board with an openSUSE EFI image. >>> >>> Can you provide some quick instructions on how to test this ? Bonus >>> point for a link to a boot0.bin which I can dd to a sdcard and use >>> with a u-boot.bin build with these patches. >> >> Sure. Grab these all the files in this directory: >> >> http://csgraf.de/agraf/pine64 >> >> Then do >> >> $ gcc pine64_image.c -o pine64_image >> $ cat bl31.bin /u-boot.bin > bl31uboot.bin >> $ ./pine64_image scp.bin bl31uboot.bin u-boot.img >> $ dd if=boot0.bin of=/dev/mmcblk0 seek=16 >> $ dd if=u-boot.img of=/dev/mmcblk0 seek=80 >> >> That should give you a working system. The scp.bin and boot0.bin are >> from the Allwinner binary distribution. ATF (bl31.bin) is built from >> these sources: >> >> >> https://build.opensuse.org/package/show/devel:ARM:Factory:Contrib:Pine64/firmware-pine64 >> >> >> Enjoy, > > Thanks, works like a charm. > > I've applied the entire series to my tree, except for > "[PATCH 3/6] arm: Allow u32 as addrs for readX/writeX" > instead I've added 2 extra casts to your > "[PATCH 4/6] sunxi: Explicitly cast u32 pointer conversions" > patch, which is enough to build warning free for me. > > I still have some other patches to process, I'll send a pull-req > tomorrow morning. Thanks :) > > Note I've squashed the following fixes into > "[PATCH 5/6] sunxi: Add support for Allwinner A64 SoCs" : > > --- a/arch/arm/include/asm/arch-sunxi/clock_sun6i.h > +++ b/arch/arm/include/asm/arch-sunxi/clock_sun6i.h > @@ -352,10 +352,10 @@ struct sunxi_ccm_reg { > > #if defined(CONFIG_MACH_SUN50I) > #define MBUS_CLK_DEFAULT 0x8102 /* PLL6x2 / 3 */ > -#elif !defined(CONFIG_MACH_SUN8I) > -#define MBUS_CLK_DEFAULT 0x8101 /* PLL6 / 2 */ > -#else > +#elif defined(CONFIG_MACH_SUN8I) > #define MBUS_CLK_DEFAULT 0x8103 /* PLL6 / 4 */ > +#else > +#define MBUS_CLK_DEFAULT 0x8101 /* PLL6 / 2 */ > #endif > #define MBUS_CLK_GATE (0x1 << 31) > > > --- a/arch/arm/include/asm/system.h > +++ b/arch/arm/include/asm/system.h > @@ -92,12 +92,6 @@ static inline unsigned long read_mpidr(void) > > #define BSP_COREID 0 > > -static inline void sdelay(unsigned long n) > -{ > - int i; > - for (i = 0; i < n; i++) asm volatile(""); > -} > - How did you manage to build without sdelay? The sun6i clock code used it, no? Or is something there guarded with CONFIG_SPL_BUILD? Alex > void __asm_flush_dcache_all(void); > void __asm_invalidate_dcache_all(void); > void __asm_flush_dcache_range(u64 start, u64 end); > > --- a/board/sunxi/board.c > +++ b/board/sunxi/board.c > @@ -76,10 +76,7 @@ DECLARE_GLOBAL_DATA_PTR; > /* add board specific code here */ > int board_init(void) > { > -#ifndef CONFIG_ARM64 > - int id_pfr1; > -#endif > - int ret; > + __maybe_unused int id_pfr1, ret; > >gd->bd->bi_boot_params = (PHYS_SDRAM_0 + 0x100); > > Regards, > > Hans ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 0/6] Add Pine64 support
Hi, On 29-03-16 18:08, Alexander Graf wrote: On 29.03.16 17:45, Hans de Goede wrote: Hi, On 03/29/2016 05:29 PM, Alexander Graf wrote: The Pine64 is a kickstarter backed SBC that runs on the Allwinner A64 SoC. This SoC can run AArch64 code, so this patch set lifts all arm version indepenent sunxi code into a mach directory and builds the A64 code as armv8 (aarch64) code. With these patches applied, I can successfully boot my 1GB Pine64+ board with an openSUSE EFI image. Can you provide some quick instructions on how to test this ? Bonus point for a link to a boot0.bin which I can dd to a sdcard and use with a u-boot.bin build with these patches. Sure. Grab these all the files in this directory: http://csgraf.de/agraf/pine64 Then do $ gcc pine64_image.c -o pine64_image $ cat bl31.bin /u-boot.bin > bl31uboot.bin $ ./pine64_image scp.bin bl31uboot.bin u-boot.img $ dd if=boot0.bin of=/dev/mmcblk0 seek=16 $ dd if=u-boot.img of=/dev/mmcblk0 seek=80 That should give you a working system. The scp.bin and boot0.bin are from the Allwinner binary distribution. ATF (bl31.bin) is built from these sources: https://build.opensuse.org/package/show/devel:ARM:Factory:Contrib:Pine64/firmware-pine64 Enjoy, Thanks, works like a charm. I've applied the entire series to my tree, except for "[PATCH 3/6] arm: Allow u32 as addrs for readX/writeX" instead I've added 2 extra casts to your "[PATCH 4/6] sunxi: Explicitly cast u32 pointer conversions" patch, which is enough to build warning free for me. I still have some other patches to process, I'll send a pull-req tomorrow morning. Note I've squashed the following fixes into "[PATCH 5/6] sunxi: Add support for Allwinner A64 SoCs" : --- a/arch/arm/include/asm/arch-sunxi/clock_sun6i.h +++ b/arch/arm/include/asm/arch-sunxi/clock_sun6i.h @@ -352,10 +352,10 @@ struct sunxi_ccm_reg { #if defined(CONFIG_MACH_SUN50I) #define MBUS_CLK_DEFAULT 0x8102 /* PLL6x2 / 3 */ -#elif !defined(CONFIG_MACH_SUN8I) -#define MBUS_CLK_DEFAULT 0x8101 /* PLL6 / 2 */ -#else +#elif defined(CONFIG_MACH_SUN8I) #define MBUS_CLK_DEFAULT 0x8103 /* PLL6 / 4 */ +#else +#define MBUS_CLK_DEFAULT 0x8101 /* PLL6 / 2 */ #endif #define MBUS_CLK_GATE (0x1 << 31) --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h @@ -92,12 +92,6 @@ static inline unsigned long read_mpidr(void) #define BSP_COREID 0 -static inline void sdelay(unsigned long n) -{ - int i; - for (i = 0; i < n; i++) asm volatile(""); -} - void __asm_flush_dcache_all(void); void __asm_invalidate_dcache_all(void); void __asm_flush_dcache_range(u64 start, u64 end); --- a/board/sunxi/board.c +++ b/board/sunxi/board.c @@ -76,10 +76,7 @@ DECLARE_GLOBAL_DATA_PTR; /* add board specific code here */ int board_init(void) { -#ifndef CONFIG_ARM64 - int id_pfr1; -#endif - int ret; + __maybe_unused int id_pfr1, ret; gd->bd->bi_boot_params = (PHYS_SDRAM_0 + 0x100); Regards, Hans ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 0/6] Add Pine64 support
Hi, On 29-03-16 18:08, Alexander Graf wrote: On 29.03.16 17:45, Hans de Goede wrote: Hi, On 03/29/2016 05:29 PM, Alexander Graf wrote: The Pine64 is a kickstarter backed SBC that runs on the Allwinner A64 SoC. This SoC can run AArch64 code, so this patch set lifts all arm version indepenent sunxi code into a mach directory and builds the A64 code as armv8 (aarch64) code. With these patches applied, I can successfully boot my 1GB Pine64+ board with an openSUSE EFI image. Can you provide some quick instructions on how to test this ? Bonus point for a link to a boot0.bin which I can dd to a sdcard and use with a u-boot.bin build with these patches. Sure. Grab these all the files in this directory: http://csgraf.de/agraf/pine64 Then do $ gcc pine64_image.c -o pine64_image $ cat bl31.bin /u-boot.bin > bl31uboot.bin $ ./pine64_image scp.bin bl31uboot.bin u-boot.img $ dd if=boot0.bin of=/dev/mmcblk0 seek=16 $ dd if=u-boot.img of=/dev/mmcblk0 seek=80 That should give you a working system. The scp.bin and boot0.bin are from the Allwinner binary distribution. ATF (bl31.bin) is built from these sources: https://build.opensuse.org/package/show/devel:ARM:Factory:Contrib:Pine64/firmware-pine64 Cool thanks. I'll give this a try this weekend. Regards, Hans ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 0/6] Add Pine64 support
On 29.03.16 17:45, Hans de Goede wrote: > Hi, > > On 03/29/2016 05:29 PM, Alexander Graf wrote: >> The Pine64 is a kickstarter backed SBC that runs on the Allwinner A64 >> SoC. >> This SoC can run AArch64 code, so this patch set lifts all arm version >> indepenent sunxi code into a mach directory and builds the A64 code >> as armv8 (aarch64) code. >> >> With these patches applied, I can successfully boot my 1GB Pine64+ board >> with an openSUSE EFI image. > > Can you provide some quick instructions on how to test this ? Bonus > point for a link to a boot0.bin which I can dd to a sdcard and use > with a u-boot.bin build with these patches. Sure. Grab these all the files in this directory: http://csgraf.de/agraf/pine64 Then do $ gcc pine64_image.c -o pine64_image $ cat bl31.bin /u-boot.bin > bl31uboot.bin $ ./pine64_image scp.bin bl31uboot.bin u-boot.img $ dd if=boot0.bin of=/dev/mmcblk0 seek=16 $ dd if=u-boot.img of=/dev/mmcblk0 seek=80 That should give you a working system. The scp.bin and boot0.bin are from the Allwinner binary distribution. ATF (bl31.bin) is built from these sources: https://build.opensuse.org/package/show/devel:ARM:Factory:Contrib:Pine64/firmware-pine64 Enjoy, Alex ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 0/6] Add Pine64 support
Hi, On 03/29/2016 05:29 PM, Alexander Graf wrote: The Pine64 is a kickstarter backed SBC that runs on the Allwinner A64 SoC. This SoC can run AArch64 code, so this patch set lifts all arm version indepenent sunxi code into a mach directory and builds the A64 code as armv8 (aarch64) code. With these patches applied, I can successfully boot my 1GB Pine64+ board with an openSUSE EFI image. Can you provide some quick instructions on how to test this ? Bonus point for a link to a boot0.bin which I can dd to a sdcard and use with a u-boot.bin build with these patches. I've a pine64+ myself to test. Note "[PATCH 3/6] arm: Allow u32 as addrs for readX/writeX" will need an ack from Albert, the ARM maintainer. Regards, Hans Alex Alexander Graf (4): sunxi: Move cpu independent code to mach directory sunxi: Depend SPL configs on SUPPORT_SPL arm: Allow u32 as addrs for readX/writeX sunxi: Explicitly cast u32 pointer conversions Siarhei Siamashka (2): sunxi: Add support for Allwinner A64 SoCs sunxi: Add Pine64+ support arch/arm/Kconfig | 4 +- arch/arm/Makefile | 1 + arch/arm/cpu/armv7/sunxi/Makefile | 40 +- arch/arm/dts/Makefile | 2 + arch/arm/dts/a64.dtsi | 564 + arch/arm/dts/pine64.dts| 62 +++ arch/arm/dts/pine64_common.dtsi| 76 +++ arch/arm/dts/pine64_plus.dts | 63 +++ arch/arm/include/asm/arch-sunxi/clock.h| 3 +- arch/arm/include/asm/arch-sunxi/clock_sun6i.h | 4 +- arch/arm/include/asm/arch-sunxi/gpio.h | 1 + arch/arm/include/asm/arch-sunxi/spl.h | 5 +- arch/arm/include/asm/io.h | 18 +- arch/arm/include/asm/system.h | 6 + arch/arm/mach-sunxi/Makefile | 51 ++ arch/arm/{cpu/armv7/sunxi => mach-sunxi}/board.c | 30 +- arch/arm/{cpu/armv7/sunxi => mach-sunxi}/clock.c | 0 .../{cpu/armv7/sunxi => mach-sunxi}/clock_sun4i.c | 0 .../{cpu/armv7/sunxi => mach-sunxi}/clock_sun6i.c | 0 .../armv7/sunxi => mach-sunxi}/clock_sun8i_a83t.c | 0 .../{cpu/armv7/sunxi => mach-sunxi}/clock_sun9i.c | 0 .../arm/{cpu/armv7/sunxi => mach-sunxi}/cpu_info.c | 2 + .../{cpu/armv7/sunxi => mach-sunxi}/dram_helpers.c | 0 .../{cpu/armv7/sunxi => mach-sunxi}/dram_sun4i.c | 0 .../{cpu/armv7/sunxi => mach-sunxi}/dram_sun6i.c | 0 .../armv7/sunxi => mach-sunxi}/dram_sun8i_a23.c| 0 .../armv7/sunxi => mach-sunxi}/dram_sun8i_a33.c| 0 .../armv7/sunxi => mach-sunxi}/dram_sun8i_a83t.c | 0 .../armv7/sunxi => mach-sunxi}/dram_sun8i_h3.c | 0 arch/arm/{cpu/armv7/sunxi => mach-sunxi}/p2wi.c| 0 arch/arm/{cpu/armv7/sunxi => mach-sunxi}/pinmux.c | 0 .../arm/{cpu/armv7/sunxi => mach-sunxi}/pmic_bus.c | 0 arch/arm/{cpu/armv7/sunxi => mach-sunxi}/prcm.c| 0 arch/arm/{cpu/armv7/sunxi => mach-sunxi}/rsb.c | 0 arch/arm/{cpu/armv7/sunxi => mach-sunxi}/usb_phy.c | 2 +- board/sunxi/Kconfig| 9 +- board/sunxi/board.c| 38 +- configs/pine64_plus_defconfig | 12 + drivers/mmc/sunxi_mmc.c| 6 +- drivers/power/Kconfig | 2 +- include/configs/sun50i.h | 22 + include/configs/sunxi-common.h | 20 +- 42 files changed, 977 insertions(+), 66 deletions(-) create mode 100644 arch/arm/dts/a64.dtsi create mode 100644 arch/arm/dts/pine64.dts create mode 100644 arch/arm/dts/pine64_common.dtsi create mode 100644 arch/arm/dts/pine64_plus.dts create mode 100644 arch/arm/mach-sunxi/Makefile rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/board.c (91%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/clock.c (100%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/clock_sun4i.c (100%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/clock_sun6i.c (100%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/clock_sun8i_a83t.c (100%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/clock_sun9i.c (100%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/cpu_info.c (97%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/dram_helpers.c (100%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/dram_sun4i.c (100%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/dram_sun6i.c (100%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/dram_sun8i_a23.c (100%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/dram_sun8i_a33.c (100%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/dram_sun8i_a83t.c (100%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/dram_sun8i_h3.c (100%) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/p2wi.c (100%) rename