The bring-up instrumentation drew two big 7-segment digits per code zone from hot paths (board.c, serial_msm_geni.c, clk-uclass.c, clock-qcom.c), firing dozens of times per second and slowing the boot noticeably. Drop it and draw a 0-100% progress bar instead: rtwo_boot_progress_step() once per initcall entry, rtwo_boot_progress_done() at the end of the boot. The kalama-gcc-v2 GCC compatible fix from the previous commit stays. This is the tree built with ~/pmos/uboot-chainload/build-uboot.sh (patches/0001-rtwo-fixes-and-boot-progress-bar.patch) that produces the u-boot-nodtb.bin currently running on the phone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DnHwDU5yL8L6qgPEN5CV5m
50 lines
1.1 KiB
C
50 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright (c) 2011 The Chromium OS Authors.
|
|
*/
|
|
|
|
#ifndef __INITCALL_H
|
|
#define __INITCALL_H
|
|
|
|
#include <asm/types.h>
|
|
#include <event.h>
|
|
#include <hang.h>
|
|
|
|
_Static_assert(EVT_COUNT < 256, "Can only support 256 event types with 8 bits");
|
|
|
|
#ifdef CONFIG_ARCH_SNAPDRAGON
|
|
void rtwo_boot_progress_step(void);
|
|
#define RTWO_BOOT_PROGRESS() rtwo_boot_progress_step()
|
|
#else
|
|
#define RTWO_BOOT_PROGRESS()
|
|
#endif
|
|
|
|
#define INITCALL(_call) \
|
|
do { \
|
|
RTWO_BOOT_PROGRESS(); \
|
|
if (_call()) { \
|
|
printf("%s(): initcall %s() failed\n", __func__, \
|
|
#_call); \
|
|
hang(); \
|
|
} \
|
|
} while (0)
|
|
|
|
#define INITCALL_EVT(_evt) \
|
|
do { \
|
|
if (event_notify_null(_evt)) { \
|
|
printf("%s(): event %d/%s failed\n", __func__, _evt, \
|
|
event_type_name(_evt)) ; \
|
|
hang(); \
|
|
} \
|
|
} while (0)
|
|
|
|
#if defined(CONFIG_WATCHDOG) || defined(CONFIG_HW_WATCHDOG)
|
|
#define WATCHDOG_INIT() INITCALL(init_func_watchdog_init)
|
|
#define WATCHDOG_RESET() INITCALL(init_func_watchdog_reset)
|
|
#else
|
|
#define WATCHDOG_INIT()
|
|
#define WATCHDOG_RESET()
|
|
#endif
|
|
|
|
#endif
|