1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (c) 2022, Svyatoslav Ryhel <clamor95@gmail.com>.
4 */
5
6#ifndef __TRANSFORMER_COMMON_H
7#define __TRANSFORMER_COMMON_H
8
9/* High-level configuration options */
10#define CFG_TEGRA_BOARD_STRING		"ASUS Transformer"
11
12#define TRANSFORMER_FLASH_UBOOT \
13	"flash_uboot=echo Preparing RAM;" \
14		"mw ${kernel_addr_r} 0 ${boot_block_size_r};" \
15		"mw ${ramdisk_addr_r} 0 ${boot_block_size_r};" \
16		"echo Reading BCT;" \
17		"mmc dev 0 1;" \
18		"mmc read ${kernel_addr_r} 0 ${boot_block_size};" \
19		"echo Reading bootloader;" \
20		"if load mmc 1:1 ${ramdisk_addr_r} ${bootloader_file};" \
21		"then echo Calculating bootloader size;" \
22			"size mmc 1:1 ${bootloader_file};" \
23			"ebtupdate ${kernel_addr_r} ${ramdisk_addr_r} ${filesize};" \
24			"echo Writing bootloader to eMMC;" \
25			"mmc dev 0 1;" \
26			"mmc write ${kernel_addr_r} 0 ${boot_block_size};" \
27			"mmc dev 0 2;" \
28			"mmc write ${ramdisk_addr_r} 0 ${boot_block_size};" \
29			"echo Bootloader written successfully;" \
30			"pause 'Press ANY key to reboot device...'; reset;" \
31		"else echo Reading bootloader failed;" \
32			"pause 'Press ANY key to return to bootmenu...'; bootmenu; fi\0"
33
34#define TRANSFORMER_FLASH_SPI \
35	"update_spi=sf probe 0:1;" \
36		"echo Dumping current SPI flash content ...;" \
37		"sf read ${kernel_addr_r} 0x0 ${spi_size};" \
38		"if fatwrite mmc 1:1 ${kernel_addr_r} spi-flash-backup.bin ${spi_size};" \
39		"then echo SPI flash content was successfully written into spi-flash-backup.bin;" \
40			"echo Reading SPI flash binary;" \
41			"if load mmc 1:1 ${kernel_addr_r} repart-block.bin;" \
42			"then echo Writing bootloader into SPI flash;" \
43				"sf probe 0:1;" \
44				"sf update ${kernel_addr_r} 0x0 ${spi_size};" \
45				"poweroff;" \
46			"else echo Preparing RAM;" \
47				"mw ${kernel_addr_r} 0 ${boot_block_size_r};" \
48				"mw ${ramdisk_addr_r} 0 ${boot_block_size_r};" \
49				"echo Reading BCT;" \
50				"sf read ${kernel_addr_r} 0x0 ${boot_block_size_r};" \
51				"echo Reading bootloader;" \
52				"if load mmc 1:1 ${ramdisk_addr_r} ${bootloader_file};" \
53				"then echo Calculating bootloader size;" \
54					"size mmc 1:1 ${bootloader_file};" \
55					"ebtupdate ${kernel_addr_r} ${ramdisk_addr_r} ${filesize};" \
56					"echo Writing bootloader into SPI flash;" \
57					"sf probe 0:1;" \
58					"sf update ${kernel_addr_r} 0x0 ${boot_block_size_r};" \
59					"sf update ${ramdisk_addr_r} ${boot_block_size_r} ${boot_block_size_r};" \
60					"echo Bootloader written successfully; poweroff;" \
61				"else echo Reading bootloader failed;" \
62					"poweroff; fi;" \
63			"fi;" \
64		"else echo SPI flash backup FAILED! Aborting ...;" \
65			"poweroff; fi\0"
66
67#define TRANSFORMER_BOOTMENU \
68	TRANSFORMER_FLASH_UBOOT \
69	TRANSFORMER_FLASH_SPI \
70	"bootmenu_0=mount internal storage=usb start && ums 0 mmc 0; bootmenu\0" \
71	"bootmenu_1=mount external storage=usb start && ums 0 mmc 1; bootmenu\0" \
72	"bootmenu_2=fastboot=echo Starting Fastboot protocol ...; fastboot usb 0; bootmenu\0" \
73	"bootmenu_3=update bootloader=run flash_uboot\0" \
74	"bootmenu_4=reboot RCM=enterrcm\0" \
75	"bootmenu_5=reboot=reset\0" \
76	"bootmenu_6=power off=poweroff\0" \
77	"bootmenu_delay=-1\0"
78
79#define BOARD_EXTRA_ENV_SETTINGS \
80	"spi_size=0x400000\0" \
81	"boot_block_size_r=0x200000\0" \
82	"boot_block_size=0x1000\0" \
83	"bootloader_file=u-boot-dtb-tegra.bin\0" \
84	"button_cmd_0_name=Volume Down\0" \
85	"button_cmd_0=bootmenu\0" \
86	"button_cmd_1_name=Lid sensor\0" \
87	"button_cmd_1=poweroff\0" \
88	"partitions=name=emmc,start=0,size=-,uuid=${uuid_gpt_rootfs}\0" \
89	TRANSFORMER_BOOTMENU
90
91#endif /* __CONFIG_H */
92