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