From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=209.85.221.49 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793109246; b=LWINXo8yiXoNjmnvwY+lYLGn+IDlLh0G0nIwJuL6T+uIjHozl/UiMsmoaIm/BzN8UNSJ Ma6HiQdlW5fpbVjTVRePHHhzT2J8goOegXC6hXeOaMn9g82LV7unkxheqUpjEERQF6khU yy+lg4B/rYsnkB+eS3ZnzHue59Q5ZvHMvVwl0YcsECbI886LU+SWyO19+B1QlewneocZR fVe1dKXOBqPhNocULueRMO5rI5mqTvUDHRRMazVTLqyC+TPwJBVjNKT3bMyRD95wWrqBR diX5LpnbC3wjdERYsLcUguIShewt6tajuCa7C/ZIrF+H63mbFWswXCfOkXyaUbGBAkg== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793109246; h=DMARC-Filter:Received:DKIM-Signature:X-Google-DKIM-Signature: X-Forwarded-Encrypted:X-Gm-Message-State:X-Gm-Gg:X-Received:Received: From:To:Cc:Subject:Date:Message-Id:X-Mailer:In-Reply-To:References: MIME-Version:Content-Type:Content-Transfer-Encoding; bh=x3TRWoAym08EDkUmxJbEElxgHRIsBB4gzy6Y/BELf6M=; b=wbq1XqjSp8TxCR2YHUKkfrUbM5MJMt2VNHvSjHBRr3J/eIXwJGAkL/99/v7vGL7sqlYd FOsgQnLOhgXRagpdNX1BEAfuDwXzDEZleuFdwAetYnAv7Hzg0sJUXcnZyvrd79FjHNVn/ F9Cg6PrLxgme62ullBFav4faXGJFuGgykMn4dCW7zC2B7qOaad6cnphH68Y52/Gi6kVwV fCNWLnH8p6lE3HASETcXUYSNMd1Z6HSaZTBd+QLSMnPxHpEiipxwYhJSLNJXWZ8SB6vaJ rBi2KvhlDqATQb4aoQm5bB4jkryOEO4x1YL6g4v/f0AZtKbWjPges7eSbF1IaZNPR5g== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=CXibKdWQ; arc=none smtp.remote-ip=209.85.221.49 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 77DD060A3832 for ; Tue, 27 Oct 2026 13:54:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 77DD060A3832 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=CXibKdWQ Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-48c45111bebso1908963f8f.0 for ; Tue, 27 Oct 2026 06:54:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1793109245; x=1793714045; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=x3TRWoAym08EDkUmxJbEElxgHRIsBB4gzy6Y/BELf6M=; b=CXibKdWQ9F7anjrgC0VMM7aDjT7IZMsjrShnAhjebv9ylc+23J4tWOL8QvB+1moPRX +ccoc8d11rCpEb7OtfOrgtPIf/fT8tmb8PVCSRTYx4nbwMkcpY2vtHqVUEpb/OC3PRSX n0Ia7Prd8lLKUDe1UZtgqbfo5N4cIvFxQz6SXiyEYg+iyq3EZ/1FhxyWHv5iBM4l7xCx 7F2ocwI8m+BeAbnle6aJRUD9PWHXDbHOYkGek9AI74WYQgNsj7qt8kMlhNAd0+KVokOO 6MNd4RtF0WI/55ngrMNg6XmUK6c78cp3ggmzgkKmzUywXESizZ7nCpjNOly4WKzfIN4I Qk/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793109245; x=1793714045; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=x3TRWoAym08EDkUmxJbEElxgHRIsBB4gzy6Y/BELf6M=; b=K34rRnLEu5L+O2tAXZdIvDoUje38UsgyIvoT6Kp6N3O2SnK69xzG/zaiwG5dPRoRkX A52qhl/44eXDBebCw8M1KF5M1M9aUfrbu+19d40Kyfnxtk/5opEu8QYGhEBMkcs3TFf9 u9+Mn+AISkdlcoxwSjMHasoJcpth4egvSWPEJZiWSWfL3ndmOFEpq1BE3Cn6rZUTS4RJ PBx+HDw7JdJ9gOn+M2hJRFOgYXTbZiZlYuh//W2EBAimTW09qks0jcKHUT4Yc1LkVdnr WQL8Bm9/AwQDCrj00uFdw1+Ak+Hx7E5A4jKTEJNZ4IeB9AsP6yxq9DiXbIjnvQ1qKYyt vA7g== X-Forwarded-Encrypted: i=1; AKwUvBygCyhLgLEvsa6bjOtwc44JDCNMOj8sBiT77YH/HXJlEujyYXZHD7+0YD9+of6vTYRXhpTGMx7ROR4=@vger.kernel.org X-Gm-Message-State: AFq9FYKvIyWXbYQxfThP5gKUkvkPBKr/orRosn5IQ15opO8PpY3NKOXm zST48jTt1PuAQwUWL/DhZleiNpPeviQ+/FyAsuqC6eQgW6rPLSA1/7fW X-Gm-Gg: AYBFou0w9zgB5yZ8K0J42fga/Z9+yaqAOl0UkbYzlQZDcoEH4Rf/wxZj2jv/gFdHUFN +T4bX85kALSDmiB9gZSZ+gXvakDcIp4S5oQzH/0eDHAfXe8YJpGyQKDPB+eYNLTBccOIYBW11dI rqjzWFCwZnA/qcfnubJ2iht9ibEe1Hem+6IGcd+EG97+ERNzP8G6dwA2mJcvdrKJzCLaFJXsjL2 stgi6IO8GwxWP82rqj9UL2zlduGGOIHcTXuCghyKFWabDvpylK4DDVL7FJz36ZuyVe1Xz3d7eWq Q1DxCAze8FTepVEJiUywrzfhNBYKuhQihmvvMsscMdIIDyBhnQnNtwY6gTMC3oFuKAFj8OdLdkT Zdi9lxf7Gy2EouNiR7TM2he+hEdJU0BwYe3NRgVyX2ZWCkkHBQeoex7rq5dtKygn/NPP+BniF6F w3ckTwXuS1zW7FH0/VHROaTlj7DXLaNIO7IiQigzGwc8l+hCGJ82eUCNAcv8W4JswBCLS2Faih6 bkikND/oDb+daFK0DDCHyRQFO9nDlJXIegtEorWBvPJbRKALS8DbAAweGyjTGogC3ghNqzud2rW EZOVnGwZxy18GIp0Cg1ge4zl/z/y X-Received: by 2002:a5d:5d10:0:b0:48e:1c72:abc with SMTP id ffacd0b85a97d-48e3eb9890amr18924302f8f.35.1793109244645; Tue, 27 Oct 2026 06:54:04 -0700 (PDT) Received: from ingenieria31.oficinasStQ.local ([79.117.46.175]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48e3ebcb846sm23128058f8f.25.2026.10.27.06.54.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Oct 2026 06:54:04 -0700 (PDT) From: =?UTF-8?q?M=C3=A0xim=20Pedraza=20Padilla?= To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Ard Biesheuvel , Jonathan Corbet , Helge Deller , Peter Jones Cc: Francesco Valla , Jani Nikula , Mario Limonciello , Javier Martinez Canillas , Jocelyn Falempe , Sam Ravnborg , Ilias Apalodimas , Shuah Khan , Randy Dunlap , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-efi@vger.kernel.org, linux-fbdev@vger.kernel.org, linux-doc@vger.kernel.org, linux-embedded@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v6 08/15] drm/client: splash: pick the image source in one place Date: Tue, 27 Oct 2026 14:53:35 +0100 Message-Id: <20261027135342.2003632-9-maximpedraza@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20261027135342.2003632-1-maximpedraza@gmail.com> References: <20261027135342.2003632-1-maximpedraza@gmail.com> X-Mailing-List: linux-doc@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The client chooses between two sources with a boolean: the BGRT if the firmware left one, otherwise the BMP loaded as firmware. A third one is coming, and with it an order of preference that a boolean cannot hold. Name the source in use with an enum, picked once by drm_splash_pick_source(), and have drm_splash_image_load() switch on it. No functional change. Suggested-by: Thomas Zimmermann Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Màxim Pedraza Padilla --- drivers/gpu/drm/clients/drm_splash.c | 45 +++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/clients/drm_splash.c b/drivers/gpu/drm/clients/drm_splash.c index 337c7160c4a1..911149b92a52 100644 --- a/drivers/gpu/drm/clients/drm_splash.c +++ b/drivers/gpu/drm/clients/drm_splash.c @@ -39,6 +39,16 @@ * a static image. */ +/* + * Where the image comes from. drm_splash_pick_source() sets the order of + * preference; NONE is zero, so that a new splash starts without a source. + */ +enum drm_splash_source { + DRM_SPLASH_SRC_NONE, + DRM_SPLASH_SRC_BGRT, + DRM_SPLASH_SRC_BMP, +}; + struct drm_splash_scanout { int id; /* Modesets scanning this buffer out, by position in the list */ @@ -87,7 +97,7 @@ struct drm_splash { const struct firmware *fw; void *map_data; - bool use_bgrt; + enum drm_splash_source src; }; static struct drm_splash *client_to_drm_splash(struct drm_client_dev *client) @@ -429,7 +439,7 @@ static int drm_splash_bmp_to_scanout(struct drm_splash *splash, return -EINVAL; } - if (splash->use_bgrt) { + if (splash->src == DRM_SPLASH_SRC_BGRT) { x_pad = efi_bgrt_image_offset_x(); y_pad = efi_bgrt_image_offset_y(); @@ -498,10 +508,31 @@ static int drm_splash_bmp_to_scanout(struct drm_splash *splash, static int drm_splash_image_load(struct drm_splash *splash, const u8 **img_data, size_t *img_data_len) { - if (splash->use_bgrt) + switch (splash->src) { + case DRM_SPLASH_SRC_BGRT: return drm_splash_bgrt_load(splash, img_data, img_data_len); + case DRM_SPLASH_SRC_BMP: + return drm_splash_fw_load(splash, img_data, img_data_len); + case DRM_SPLASH_SRC_NONE: + break; + } + + return -ENOENT; +} + +/* + * Pick the one source the image will come from: the BGRT is whatever the + * firmware shows, and the BMP loaded as firmware is the fallback. With + * neither, only the background colour is drawn. + */ +static enum drm_splash_source drm_splash_pick_source(struct drm_splash *splash) +{ + if (drm_splash_bgrt_available(splash)) + return DRM_SPLASH_SRC_BGRT; + if (IS_ENABLED(CONFIG_DRM_CLIENT_SPLASH_SRC_BMP)) + return DRM_SPLASH_SRC_BMP; - return drm_splash_fw_load(splash, img_data, img_data_len); + return DRM_SPLASH_SRC_NONE; } /* At unregister, once nothing else can use the image */ @@ -818,10 +849,10 @@ static int drm_splash_client_hotplug(struct drm_client_dev *client) if (!splash->source_picked) { splash->source_picked = true; - splash->use_bgrt = drm_splash_bgrt_available(splash); + splash->src = drm_splash_pick_source(splash); - /* If no other image has been loaded, try to load a BMP as firmware */ - if (IS_ENABLED(CONFIG_DRM_CLIENT_SPLASH_SRC_BMP) && !splash->use_bgrt) { + /* The BMP loaded as firmware is the only source that arrives later */ + if (splash->src == DRM_SPLASH_SRC_BMP) { ret = drm_splash_fw_request_bmp(splash); splash->fw_requested = !ret; if (ret) -- 2.39.5