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