Commit 99b8517037f212a3cf4bf75ed99fa877fe4e6d9d

Authored by Masahiro Yamada
1 parent 3e0cfaa05d

ARM: uniphier: use Image.gz instead Image for booting ARM64 Linux

The ARM64 Linux raw image now amounts to 15MB and it is getting
bigger and bigger.  Using Image.gz saves about 8MB.  The cost of
unzip is smaller than what we get by saving the kernel loading
from non-volatile devices.

The ARM32 Linux still uses zImage, a self-decompressor image,
so it should not be affected.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

Showing 1 changed file with 22 additions and 14 deletions Side-by-side Diff

include/configs/uniphier.h
... ... @@ -15,6 +15,10 @@
15 15  
16 16 #define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10
17 17  
  18 +#ifdef CONFIG_ARM64
  19 +#define CONFIG_CMD_UNZIP
  20 +#endif
  21 +
18 22 /*-----------------------------------------------------------------------
19 23 * MMU and Cache Setting
20 24 *----------------------------------------------------------------------*/
21 25  
22 26  
23 27  
24 28  
25 29  
26 30  
27 31  
28 32  
29 33  
30 34  
31 35  
... ... @@ -166,46 +170,50 @@
166 170 "__nfsboot=run tftpboot\0"
167 171 #else
168 172 #ifdef CONFIG_ARM64
169   -#define CONFIG_BOOTFILE "Image"
  173 +#define CONFIG_BOOTFILE "Image.gz"
170 174 #define LINUXBOOT_CMD "booti"
  175 +#define KERNEL_ADDR_LOAD "kernel_addr_load=0x84200000\0"
171 176 #define KERNEL_ADDR_R "kernel_addr_r=0x80080000\0"
172   -#define KERNEL_SIZE "kernel_size=0x00c00000\0"
173   -#define RAMDISK_ADDR "ramdisk_addr=0x00e00000\0"
174 177 #else
175 178 #define CONFIG_BOOTFILE "zImage"
176 179 #define LINUXBOOT_CMD "bootz"
  180 +#define KERNEL_ADDR_LOAD "kernel_addr_load=0x80208000\0"
177 181 #define KERNEL_ADDR_R "kernel_addr_r=0x80208000\0"
178   -#define KERNEL_SIZE "kernel_size=0x00800000\0"
179   -#define RAMDISK_ADDR "ramdisk_addr=0x00a00000\0"
180 182 #endif
181 183 #define LINUXBOOT_ENV_SETTINGS \
182 184 "fdt_addr=0x00100000\0" \
183 185 "fdt_addr_r=0x84100000\0" \
184 186 "fdt_size=0x00008000\0" \
185 187 "kernel_addr=0x00200000\0" \
  188 + KERNEL_ADDR_LOAD \
186 189 KERNEL_ADDR_R \
187   - KERNEL_SIZE \
188   - RAMDISK_ADDR \
  190 + "kernel_size=0x00800000\0" \
  191 + "ramdisk_addr=0x00a00000\0" \
189 192 "ramdisk_addr_r=0x84a00000\0" \
190 193 "ramdisk_size=0x00600000\0" \
191 194 "ramdisk_file=rootfs.cpio.uboot\0" \
192   - "boot_common=setexpr bootm_low $kernel_addr_r '&' fe000000 &&" \
  195 + "boot_common=setexpr bootm_low $kernel_addr_r '&' fe000000 && " \
  196 + "if test $kernel_addr_load = $kernel_addr_r; then " \
  197 + "true; " \
  198 + "else " \
  199 + "unzip $kernel_addr_load $kernel_addr_r; " \
  200 + "fi && " \
193 201 LINUXBOOT_CMD " $kernel_addr_r $ramdisk_addr_r $fdt_addr_r\0" \
194   - "norboot=setexpr kernel_addr $nor_base + $kernel_addr &&" \
195   - "setexpr kernel_size $kernel_size / 4 &&" \
196   - "cp $kernel_addr $kernel_addr_r $kernel_size &&" \
  202 + "norboot=setexpr kernel_addr_nor $nor_base + $kernel_addr && " \
  203 + "setexpr kernel_size_div4 $kernel_size / 4 && " \
  204 + "cp $kernel_addr_nor $kernel_addr_load $kernel_size_div4 && " \
197 205 "setexpr ramdisk_addr_r $nor_base + $ramdisk_addr &&" \
198 206 "setexpr fdt_addr_r $nor_base + $fdt_addr &&" \
199 207 "run boot_common\0" \
200   - "nandboot=nand read $kernel_addr_r $kernel_addr $kernel_size &&" \
  208 + "nandboot=nand read $kernel_addr_load $kernel_addr $kernel_size && " \
201 209 "nand read $ramdisk_addr_r $ramdisk_addr $ramdisk_size &&" \
202 210 "nand read $fdt_addr_r $fdt_addr $fdt_size &&" \
203 211 "run boot_common\0" \
204   - "tftpboot=tftpboot $kernel_addr_r $bootfile &&" \
  212 + "tftpboot=tftpboot $kernel_addr_load $bootfile && " \
205 213 "tftpboot $ramdisk_addr_r $ramdisk_file &&" \
206 214 "tftpboot $fdt_addr_r $fdt_file &&" \
207 215 "run boot_common\0" \
208   - "__nfsboot=tftpboot $kernel_addr_r $bootfile &&" \
  216 + "__nfsboot=tftpboot $kernel_addr_load $bootfile && " \
209 217 "tftpboot $fdt_addr_r $fdt_file &&" \
210 218 "setenv ramdisk_addr_r - &&" \
211 219 "run boot_common\0"