xref: /rk3399_rockchip-uboot/scripts/rkpatch.sh (revision c4e6abcd5e33b08affcf6b9eb33af1294e1443a5)
1fcccd23aSJoseph Chen#!/bin/bash
2fcccd23aSJoseph Chen#
3fcccd23aSJoseph Chen# Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd
4fcccd23aSJoseph Chen#
5fcccd23aSJoseph Chen# SPDX-License-Identifier: GPL-2.0
6fcccd23aSJoseph Chen#
7fcccd23aSJoseph Chen
8fcccd23aSJoseph Chencase $1 in
9fcccd23aSJoseph Chen--help|-help|help|--h|-h|debug|'')
10fcccd23aSJoseph Chen	echo
11*c4e6abcdSJoseph Chen	echo "    0. set CONFIG_BOOTDELAY=0"
12fcccd23aSJoseph Chen	echo "    1. lib/initcall.c debug() -> printf()"
13fcccd23aSJoseph Chen	echo "    2. common/board_r.c and common/board_f.c debug() -> printf()"
14fcccd23aSJoseph Chen	echo "    3. global #define DEBUG"
15fcccd23aSJoseph Chen	echo "    4. enable CONFIG_ROCKCHIP_DEBUGGER"
16*c4e6abcdSJoseph Chen	echo "    5. set CONFIG_BOOTDELAY=5"
17fcccd23aSJoseph Chen	echo "    6. enable CONFIG_BOOTSTAGE_PRINTF_TIMESTAMP"
18*c4e6abcdSJoseph Chen	echo "    7. armv7 start.S: print entry warning"
19*c4e6abcdSJoseph Chen	echo "    8. armv8 start.S: print entry warning"
20*c4e6abcdSJoseph Chen	echo "    9. enable CONFIG_ROCKCHIP_CRASH_DUMP"
21*c4e6abcdSJoseph Chen	echo "   10. enable CONFIG_ROCKCHIP_CRC"
22fcccd23aSJoseph Chen	echo "   11. firmware bootflow debug() -> printf()"
23fcccd23aSJoseph Chen	echo "   12. bootstage timing report"
24fcccd23aSJoseph Chen	echo "   13. starting kernel halt dump"
25fcccd23aSJoseph Chen	echo
26fcccd23aSJoseph Chen	echo "Enabled in .config: "
27fcccd23aSJoseph Chen	grep '^CONFIG_ROCKCHIP_DEBUGGER=y' .config > /dev/null \
28fcccd23aSJoseph Chen	&& echo "    CONFIG_ROCKCHIP_DEBUGGER"
29fcccd23aSJoseph Chen	grep '^CONFIG_ROCKCHIP_CRC=y' .config > /dev/null \
30fcccd23aSJoseph Chen	&& echo "    CONFIG_ROCKCHIP_CRC"
31fcccd23aSJoseph Chen	grep '^CONFIG_BOOTSTAGE_PRINTF_TIMESTAMP=y' .config > /dev/null \
32fcccd23aSJoseph Chen	&& echo "    CONFIG_BOOTSTAGE_PRINTF_TIMESTAMP"
33fcccd23aSJoseph Chen	grep '^CONFIG_ROCKCHIP_CRASH_DUMP=y' .config > /dev/null \
34fcccd23aSJoseph Chen	&& echo "    CONFIG_ROCKCHIP_CRASH_DUMP"
35fcccd23aSJoseph Chen	;;
36*c4e6abcdSJoseph Chen0)
37*c4e6abcdSJoseph Chen	sed -i 's/^CONFIG_BOOTDELAY=5/CONFIG_BOOTDELAY=0/g' .config
38*c4e6abcdSJoseph Chen	echo "DEBUG [0]: CONFIG_BOOTDELAY is 0s"
39*c4e6abcdSJoseph Chen	;;
40fcccd23aSJoseph Chen1)
41fcccd23aSJoseph Chen	sed -i 's/\<debug\>/printf/g' lib/initcall.c
42fcccd23aSJoseph Chen	sed -i 's/ifdef DEBUG/if 1/g' lib/initcall.c
43fcccd23aSJoseph Chen	echo "DEBUG [1]: lib/initcall.c debug() -> printf()"
44fcccd23aSJoseph Chen	;;
45fcccd23aSJoseph Chen2)
46fcccd23aSJoseph Chen	sed -i 's/\<debug\>/printf/g' ./common/board_f.c
47fcccd23aSJoseph Chen	sed -i 's/\<debug\>/printf/g' ./common/board_r.c
48fcccd23aSJoseph Chen	echo "DEBUG [2]: common/board_r.c and common/board_f.c debug() -> printf()"
49fcccd23aSJoseph Chen	;;
50fcccd23aSJoseph Chen3)
51fcccd23aSJoseph Chen	sed -i '$i \#define DEBUG\' include/configs/rockchip-common.h
52fcccd23aSJoseph Chen	echo "DEBUG [3]: global #define DEBUG"
53fcccd23aSJoseph Chen	;;
54fcccd23aSJoseph Chen4)
55fcccd23aSJoseph Chen	sed -i 's/\# CONFIG_ROCKCHIP_DEBUGGER is not set/CONFIG_ROCKCHIP_DEBUGGER=y/g' .config
56fcccd23aSJoseph Chen	echo "DEBUG [4]: CONFIG_ROCKCHIP_DEBUGGER is enabled"
57fcccd23aSJoseph Chen	;;
58fcccd23aSJoseph Chen5)
59*c4e6abcdSJoseph Chen	sed -i 's/^CONFIG_BOOTDELAY=0/CONFIG_BOOTDELAY=5/g' .config
60*c4e6abcdSJoseph Chen	echo "DEBUG [5]: CONFIG_BOOTDELAY is 5s"
61fcccd23aSJoseph Chen	;;
62fcccd23aSJoseph Chen6)
63fcccd23aSJoseph Chen	sed -i 's/\# CONFIG_BOOTSTAGE_PRINTF_TIMESTAMP is not set/CONFIG_BOOTSTAGE_PRINTF_TIMESTAMP=y/g' .config
64fcccd23aSJoseph Chen	echo "DEBUG [6]: CONFIG_BOOTSTAGE_PRINTF_TIMESTAMP is enabled"
65fcccd23aSJoseph Chen	;;
66fcccd23aSJoseph Chen7)
67fcccd23aSJoseph Chen	sed -i '/save_boot_params_ret:/a\ldr r0, =CONFIG_DEBUG_UART_BASE\nmov r1, #100\nloop:\nmov r2, #0x55\nstr r2, [r0]\nsub r1, r1, #1\ncmp r1, #0\nbne loop\ndsb' \
68fcccd23aSJoseph Chen	./arch/arm/cpu/armv7/start.S
69*c4e6abcdSJoseph Chen	echo "DEBUG [7]: armv7 start.S entry warning 'UUUU...'"
70fcccd23aSJoseph Chen	;;
71*c4e6abcdSJoseph Chen8)
72fcccd23aSJoseph Chen	sed -i '/save_boot_params_ret:/a\ldr x0, =CONFIG_DEBUG_UART_BASE\nmov x1, #100\nloop:\nmov x2, #0x55\nstr x2, [x0]\nsub x1, x1, #1\ncmp x1, #0\nb.ne loop\ndsb sy' \
73fcccd23aSJoseph Chen	./arch/arm/cpu/armv8/start.S
74*c4e6abcdSJoseph Chen	echo "DEBUG [8]: armv8 start.S entry warning 'UUUU...'"
75*c4e6abcdSJoseph Chen	;;
76*c4e6abcdSJoseph Chen9)
77*c4e6abcdSJoseph Chen	sed -i 's/\# CONFIG_ROCKCHIP_CRASH_DUMP is not set/CONFIG_ROCKCHIP_CRASH_DUMP=y/g' .config
78*c4e6abcdSJoseph Chen	echo "DEBUG [9]: CONFIG_ROCKCHIP_CRASH_DUMP is enabled"
79*c4e6abcdSJoseph Chen	;;
80*c4e6abcdSJoseph Chen10)
81*c4e6abcdSJoseph Chen	sed -i 's/\# CONFIG_ROCKCHIP_CRC is not set/CONFIG_ROCKCHIP_CRC=y/g' .config
82*c4e6abcdSJoseph Chen	echo "DEBUG [10]: CONFIG_ROCKCHIP_CRC is enabled"
83fcccd23aSJoseph Chen	;;
84fcccd23aSJoseph Chen11)
85fcccd23aSJoseph Chen	sed -i 's/\<debug\>/printf/g' common/fdt_support.c
86fcccd23aSJoseph Chen	sed -i 's/\<debug\>/printf/g' common/image-fdt.c
87fcccd23aSJoseph Chen	sed -i 's/\<debug\>/printf/g' common/image.c
88fcccd23aSJoseph Chen	sed -i 's/\<debug\>/printf/g' arch/arm/lib/bootm.c
89fcccd23aSJoseph Chen	sed -i 's/\<debug\>/printf/g' common/bootm.c
90fcccd23aSJoseph Chen	sed -i 's/\<debug\>/printf/g' common/image.c
91fcccd23aSJoseph Chen	sed -i 's/\<debug\>/printf/g' common/image-android.c
92fcccd23aSJoseph Chen	sed -i 's/\<debug\>/printf/g' common/android_bootloader.c
93fcccd23aSJoseph Chen	echo "DEBUG [11]: firmware bootflow debug() -> printf()"
94fcccd23aSJoseph Chen	;;
95fcccd23aSJoseph Chen12)
96fcccd23aSJoseph Chen	sed -i '$a\CONFIG_BOOTSTAGE=y\' .config
97fcccd23aSJoseph Chen	sed -i '$a\CONFIG_BOOTSTAGE_REPORT=y\' .config
98fcccd23aSJoseph Chen	sed -i '$a\CONFIG_CMD_BOOTSTAGE=y\' .config
99fcccd23aSJoseph Chen	echo "DEBUG [12]: bootstage timing report"
100fcccd23aSJoseph Chen	;;
101fcccd23aSJoseph Chen13)
102fcccd23aSJoseph Chen	sed -i 's/\# CONFIG_ROCKCHIP_DEBUGGER is not set/CONFIG_ROCKCHIP_DEBUGGER=y/g' .config
103fcccd23aSJoseph Chen	sed -i '/br x4/i\b .' arch/arm/cpu/armv8/transition.S
104fcccd23aSJoseph Chen	sed -i 's/announce_and_cleanup(fake);/if (0)announce_and_cleanup(fake);/g' arch/arm/lib/bootm.c
105fcccd23aSJoseph Chen	sed -i '/announce_and_cleanup(fake)/a\enable_interrupts()\;' arch/arm/lib/bootm.c
106fcccd23aSJoseph Chen	sed -i '/kernel_entry(0, machid, r2)/i\printf("#### Jump to kernel!!")\;' arch/arm/lib/bootm.c
107fcccd23aSJoseph Chen	sed -i '/kernel_entry(0, machid, r2)/i\__asm("b .")\;' arch/arm/lib/bootm.c
108fcccd23aSJoseph Chen	sed -i 's/\<debug\>/printf/g' arch/arm/lib/bootm.c
109fcccd23aSJoseph Chen	echo "DEBUG [13]: starting kernel halt dump"
110fcccd23aSJoseph Chen	;;
111fcccd23aSJoseph Chen*)
112fcccd23aSJoseph Chen	echo "Unknown command: $1"
113fcccd23aSJoseph Chenesac
114fcccd23aSJoseph Chenecho
115