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