From patchwork Fri Aug 22 14:21:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 115 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755872559; bh=S2pSC79qiDU1qoe/Qn2A0jAWkP0S9nqZIRpAXtVRY0Q=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=G8CiGFVuKX8Vbt8FaLBmRCEgqduGLw2oAFaiErvVMT1FKVTKv6ebJ3DuUdDQb2RAe UQbNPukumifOSYzGu8Ec6yWWeySDLowWuRfNKbGsT4Yn7sBkqekt3TyBHH4JwDXRkn Kh3WISUj/QglwXFdYsBB+BkmVhP6lOLrsjWN9sOCxq0Do9ZjFFlY4EeVOL8Xpby6cd vQ1Quk/uWq8kChy0Yo3CLiGBCwDSAU8RhmgYqns1jQXb4mZSufrokc9Mi+EpDVRewW bT1yhn3Ick1Gh4cdPar1xk7Rw5C2kfGz0ly1WY96LGvQGF98kdMNNCm0mFGCeIJNZ1 Yj3SdO5A3Mb6A== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id E00BE5E45E for ; Fri, 22 Aug 2025 08:22:39 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id xrFKIjO_WLbu for ; Fri, 22 Aug 2025 08:22:39 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755872557; bh=S2pSC79qiDU1qoe/Qn2A0jAWkP0S9nqZIRpAXtVRY0Q=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=jFeKX+BrD9xIWWcH4GUskLuhVvas7+v6tl45G6Y0+U0VEwkHFAi3CVbV5srGgsFrd hKcskKmt9XmKE2q6xV2Zpq32wNg8UU7r41tnxCF/uTugjglJ9HVtv1T48iwhP3ygiv wMvrZ9E9r6GBL7yfhZSIheZcI1HE3UUqrOiECu33Mh7E4+S1oMHrYrjwoyNjKcDgMd fdVCinVkgRH/DeYwGS5RW7i652mf2RbC9MzKW2jynJNiFEoD1W/BU0JLt9LTRaOrk0 88DBaRioq9Vrl0/E6CC7JJDDTbfxT8pZgJsvaq15Bf2PeoionAkYGHLjk62k4WLiw7 +yd1OYR4hpmvw== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 18F166770E for ; Fri, 22 Aug 2025 08:22:37 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755872553; bh=qZkH0AZHIiwPu7XdOo62OEzEZ68EAvI2owfWSr6k2cg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cOA1m4829DWRCFP7YSECR3OZvn1AlAi46PtwL9RsxTai6aGUskMVkpe8VBPbMeZ4h rQTv1oS6QVsfJW8HyseC9gD8JObPlebEC0s01FOa57PrbMUKSm/aunz/Ng5ztLGa51 rBRGkPslHXAhOtI8xBVaqG13pbK9dlZOJ8EBO8skoFIrkMOzcBIoltQ0c4RHmm9dUv Fa2KIBriIUHKWB6ZagzS2S5ZXrWnbiXqPP2GIYkvQl7i84g92PUJf4mPzq3gDdltdL D3WCUgcHX//I0+53oXS7F538R+DVXEQWEuEejpSKRjz5dRm8Q9Aen7e8E7fXgWJHkL RYHJwtDyBSw4g== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id B00AB6771B; Fri, 22 Aug 2025 08:22:33 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id cqYYnCy_KoIz; Fri, 22 Aug 2025 08:22:33 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755872548; bh=DYQVf7R7V5yXdfXNUzXoLqM3MFbLphg/09xxxPhZVpU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lVlq6wMEGB5r6NYRWwQTWI8eRNIkGD9VER/RzrIKQRiUwO0Ux+AvGO78KYWmqoFvv K5sUs5WHZ1jedBEOjEz/e/JtG46eiQgBbAocMbHrEpLwlPW8aJhpe9MCcKis92NZyR yZStYlBubVn44vg0GAFzWxYtdLwHKBoic9DdA4/0sA0anWT9uTlKXWaI1hlI84TVwk 2k5Z9FwHQT4qoNailn2P2YwOmjTNwToym+TYb50hu1+lRTX8Pjw66mool7cWXUgmIY eR41uy39WWn9wbCUSKq+nvs7x0V0DLSTzDw1CZOjjwvyIsqYbItYYJDNSdqNFMDFGk ifL9SnZyfLbdw== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id B3CE86770E; Fri, 22 Aug 2025 08:22:28 -0600 (MDT) From: Simon Glass To: U-Boot Concept Date: Fri, 22 Aug 2025 08:21:41 -0600 Message-ID: <20250822142153.3404275-11-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250822142153.3404275-1-sjg@u-boot.org> References: <20250822142153.3404275-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: XQQXFZTMCIU45OHUQME3BZKL4GUGXF7V X-Message-ID-Hash: XQQXFZTMCIU45OHUQME3BZKL4GUGXF7V X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 10/16] console: Implement an environment var to control the pager List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass The 'pager' environment variable can be used to set the number of lines on the display. Provide a callback for this. Signed-off-by: Simon Glass --- common/pager.c | 28 ++++++++++++++++++++++++++++ doc/usage/environment.rst | 3 +++ include/env_callback.h | 7 +++++++ 3 files changed, 38 insertions(+) diff --git a/common/pager.c b/common/pager.c index 69b05dac5cc..fda02c9a6c0 100644 --- a/common/pager.c +++ b/common/pager.c @@ -7,6 +7,7 @@ #define LOG_CATEGORY LOGC_CONSOLE +#include #include #include #include @@ -156,6 +157,33 @@ void pager_reset(struct pager *pag) pag->line_count = 0; } +static int on_pager(const char *name, const char *value, enum env_op op, + int flags) +{ + struct pager *pag = gd_pager(); + int new_page_len; + + if (!IS_ENABLED(CONFIG_CONSOLE_PAGER) || !pag) + return 0; + + switch (op) { + case env_op_create: + case env_op_overwrite: + if (value) { + new_page_len = simple_strtoul(value, NULL, 16); + pager_set_page_len(pag, new_page_len); + } + break; + case env_op_delete: + /* Reset to default when deleted */ + pager_set_page_len(pag, CONFIG_CONSOLE_PAGER_LINES); + break; + } + + return 0; +} +U_BOOT_ENV_CALLBACK(pager, on_pager); + int pager_init(struct pager **pagp, int page_len, int buf_size) { struct pager *pag; diff --git a/doc/usage/environment.rst b/doc/usage/environment.rst index 1ab3ee7ced9..6235d7276f0 100644 --- a/doc/usage/environment.rst +++ b/doc/usage/environment.rst @@ -335,6 +335,9 @@ netretry Useful on scripts which control the retry operation themselves. +pager + Decimal number of visible lines on the display, or serial console. + rng_seed_size Size of random value added to device-tree node /chosen/rng-seed. This variable is given as a decimal number. diff --git a/include/env_callback.h b/include/env_callback.h index bc8ff1923e1..dccf0bd1464 100644 --- a/include/env_callback.h +++ b/include/env_callback.h @@ -75,6 +75,12 @@ #define DFU_CALLBACK #endif +#ifdef CONFIG_CONSOLE_PAGER +#define PAGER_CALLBACK "pager:pager," +#else +#define PAGER_CALLBACK +#endif + /* * This list of callback bindings is static, but may be overridden by defining * a new association in the ".callbacks" environment variable. @@ -88,6 +94,7 @@ DFU_CALLBACK \ "loadaddr:loadaddr," \ SILENT_CALLBACK \ + PAGER_CALLBACK \ "stdin:console,stdout:console,stderr:console," \ "serial#:serialno," \ CFG_ENV_CALLBACK_LIST_STATIC