From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=209.85.221.51 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794784934; b=AajAjkWgwMYD3pWhhF8qpWdNPujM/TdJYrhs8QECF++e6QjWn2OFVWMpqXXYVmJabBZx lMi5d7hEB5DH9zQx93VdoE3AQixD774KQbGqXJhH3ggE7/HnpQrHQfPTxk333cTtLiKHg 3qOU3rfe8748sK4ttBFlhO0cV4IfL8b6cUiz9b2Jc3bNmDAy6oV3J8WJxznI2jZPVRUro N9VgaUscUjX0x0iuSbkx0msGTi/PF8jRGiOKiZQZ+Z6boYY5LYSJNlV7v9WpCeLg7bbMk NMuOxrU6PeyCqgFWh7qlk9wAZy8k1re0W0YFEXlqWKHfuSlbjTzo+IfJL8TG+CXqOkw== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794784934; 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=OJeZ5lfVBLCJTO2h9IbyBfu46at+wrViI0WypyanlZc=; b=eGVMSPNFizDPTUiwbR7jSoc/dfTJ9hN8R0qZ7gGUAQQLDNpw92uK2OHDVB5xQ8cuRsaW HCLtXWM2727CHTxeH/520egraH+vkNOSrrOTDoHeAqaZ7rJn90YUXb6gg1puTwGCaS2cp S9WgC4CdfKLsCS46qrXueaejvXWj4fP+hEdjYFsm5Th8viNDsJq0ws655xGpQDadAPNwl ZZyL6QSs8QD/QgHu6SRbCrUhnOUyC9VthxG3csj0xczYMTrPKobQv+htt1KMDG9QpnPjC J5T7qmDov/9NpBK6SEHijDbFG+dLIShYLIbLZwlsBP1YoWV/NiDVCH22WkHfe4pzndw== 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=20260707 header.b=ehwW7B0R; arc=none smtp.remote-ip=209.85.221.51 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (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 D2365606A330 for ; Sun, 15 Nov 2026 23:22:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org D2365606A330 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) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20260707 header.b=ehwW7B0R Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-497614c95f0so1246038f8f.1 for ; Sun, 15 Nov 2026 15:22:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20260707; t=1794784931; x=1795389731; 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=OJeZ5lfVBLCJTO2h9IbyBfu46at+wrViI0WypyanlZc=; b=ehwW7B0R2Ep2olUzGeR7M0XQUAv1EgJ8XHVG5TpUDPFcuUygTx30YReBfJ4wvcWor9 0YB2epcEkDV6K6NyUAz/T1+4Fm1biZh2dY65hLu5BQC29XCcgGYW/5hhD3MJRcPPHQu9 0y3ca0NERxWVqx+/PQPrl19zVPQmn2mOwp2laV2eig5oyR+XtHqkeW6Er9shGBN0CKXx ICseacaje9dmXss6Ga33BU5a0m1mDJm6mbsZp6IJExy/WSxEI4VzzJ6tUDaUdZF4hjM7 HEGW7uzM5YKyHDi+ERsbxSieyT1xTZAEwyRFD2a1rVffrqn10r1ttrSWuWnvabtuFaeg 9ytQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794784931; x=1795389731; 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=OJeZ5lfVBLCJTO2h9IbyBfu46at+wrViI0WypyanlZc=; b=Bh9A+9XzvPhMhJjcsU0eY/lWzy9EUnB5f3PTIheSKlHby7Ga/BZWB40xAp809v1w5H GyoTdwUZsC8SJXiuiWww2c9PXbzfRdDYxrdTPzOx4T382GSBgbPgHQ6iJhSHn0tX/iWw GUV6cneneORTDidYlgjQFRAyA10Bi6VOhSZVy/CDNUcPyrkBjxLMkCh2QMeOfp1/sDjQ yUlQuwulqmVqhWiYp5XYq6n4imMTxLUj5UJGWMMlBm9URTRwBwoBftCIOtSE2jrc852W UzXEgUZ4fmKcmqzMPCqmfWMfp3FdAt0fhHbleVpg9pbeCKSs0VtPeeuEFExCDLC9Zx0o wf5w== X-Forwarded-Encrypted: i=1; AL+hErFsrmnsp5vzLEgxxJFwJhVkFjj5PU0MKwqqptlL/GdqSTAtp3YS++DE6RVgLMCgz9yAp3rTB44JNBg=@vger.kernel.org X-Gm-Message-State: APuU4Z9ADfohjvSrX+wYWYcChXNG8gBSJ9OTNSAHKRoXCxEFq49z9mFN nIvySDvnQyyRroQr4R5tn16lY6mJ90m6i9I04SsrHbGItFRuYZ3tpGWV X-Gm-Gg: AYBFou19Q5JW/UtiDAJr3znuAwUClsHkHi6kvneqzS4RIKgGiChvTfm5xXouCHYED6r ThVTBqQYikbJLQR9HokOqH68aQnEhlOYdzawUUn7Hm4XXQmedzkj3GjVKe2X95d89BY1RwzKqtH ghikL9BL9MIFEjtSoEMzNIeFYTwtayEAdk0f0UdyqRTZi9OXZSlJDt4EfCGwvgAgw9rWNlzZeU7 V3frpkcukWG0EKw7LfbLAezPv4YpGNHxNCoM5I//czULKf5qMXiZRpK/4kg7lLGuhwgrJA0F6os upBuoWea/+qSB3/QC9D6xjJvTTSTZxT2GUu3mFbVGgpVT98YaLQ8oLUJDUEt2dUToZWXBGVZl4z smR3xIBc0PnhYGgKxq1scgYdbWjNILvPW9/l81nQKgtDDeb4uoZFLNc6sNQVtbU9dYtXAt6yz3P 2X51fNQNLnrT2EB2rpH9aXFEZoDFyXJUu6Zm9gKnl/rKDN429mmPH041LlEe88kvPR3mh+AGtts oiUjW3DoAxS8VUdf+0AbnXOCTp30jVVRflaHdSuub1JqN9ByvcraauoE581JWUaZy/CXTl04dL5 7ehVEne9GtGoVzq8G5JXoVuJ9PeUgcddiPlSnor54emeniEopTtT0p+z X-Received: by 2002:a05:600c:890d:b0:4bb:5c97:f4b1 with SMTP id 5b1f17b1804b1-4bb5c97f545mr120954425e9.24.1794784930830; Sun, 15 Nov 2026 15:22:10 -0800 (PST) Received: from ingenieria31.oficinasStQ.local ([79.117.0.220]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4bb571f976esm127920955e9.3.2026.11.15.15.22.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 15 Nov 2026 15:22:10 -0800 (PST) From: =?UTF-8?q?M=C3=A0xim=20Pedraza=20Padilla?= To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , 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, 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 v7 4/6] drm: client: add splash client Date: Mon, 16 Nov 2026 01:21:54 +0100 Message-Id: <20261116002156.1027726-5-maximpedraza@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20261116002156.1027726-1-maximpedraza@gmail.com> References: <20261116002156.1027726-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 From: Francesco Valla Add a DRM client that draws a simple splash, with possibility to show: - the logo provided by EFI BGRT; - a static BMP image (loaded as firmware); - a colored background. The client is not meant to replace a full-featured bootsplash, but rather to remove some complexity (and hopefully boot time) on small embedded platforms or on systems with a limited scope (e.g: recovery or manufacturing images). The background color is set at build time from a dedicated config option. Any color in RGB888 format can be used. If enabled, the static BMP image is loaded using the kernel firmware infrastructure; a valid BMP image with 24bpp color and no compression is expected. The name of the image is set at build time, with the default being 'drm_splash.bmp'. Just like the existing DRM clients, the splash can be enabled from the kernel command line using drm_client_lib.active=splash. v7: - restore leaves the commit to the work, which draws what is missing first, commits even with no scanouts left, and keeps a forced restore forced across suspend - a hotplug while userspace has the display waits for the next restore, as fbdev does - only a lack of memory makes the image be drawn again - unregister cancels the work before it looks for a firmware request, which a restore can now make too - the MAINTAINERS entry comes with this patch, with Màxim as maintainer and Francesco as reviewer - rename the BMP source to FW, which is where it comes from: the BGRT is a BMP too - fw_load() returns 0 when the firmware source is disabled, and image_load() does not call it then - read the tile group id under mode_config.mutex, which an EDID update holds while it changes or frees the group v6: - draw from a work item on system_power_efficient_wq instead of a render thread - set the scanouts up again on every hotplug, and keep the image for the outputs plugged in later - keep the scanouts on screen until the new ones are committed, so that a hotplug does not blank every output - also when the commit or the hotplug fails; restore retires them too - redraw the image after a background that is drawn again - accept the V4 and V5 BMP headers - limit the background color to RGB888 - point no modeset at the framebuffer it had, which a probe without connectors leaves in place - leave restore to the work while the device is suspended - say in DRM_CLIENT_SPLASH_BMP_NAME that the BMP is requested only once - don't fail a hotplug, which would stop the later ones for good - restore commits whatever the modesets hold: an output without a buffer has no mode either, and is switched off - take the BMP headers from