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=1793109239; b=ddoTX17LK5MtpmI6rDv7FeA+hHdxnviX9u+SWisI9efwZVI+qUqR4NS0F7c4crNaUjtH 3zpzKRqmGHtgYLPuQ4t0YGHZcKYKMb3XEateqWeNNPgqeBhbf3Gwn8eUcoGpYoFC53/ZG QY/jSGI3aHejPLQToSzYFvcOSGEEy21LoHB5E9r35MJMfL4gOR7E5+pRPaKMEOYRdw9F3 kV50bIfD6OZO4q/WbqAZz9NjzEoyuBSeCAGkZXpJGMphcErRVeY2a/3SeIvTV3mGlaEB6 6/bmWcoCMB3XAl/pXyz9SR1f7kM6uRTeHAqhM3Wrw3GpJQQTEoVf97+e2lsRCqnox2Q== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793109239; 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=iAF+WADJmaJJKBPLcOmPpXbmUA9WB4juk/RKph8rg+s=; b=4Yd57oAX7O0a5yuIg+BwqkAiFdwGy0uRSEoapZsf55iEHP0QOZQQ4tUlCIsUubeMHdg4 WKH+Fn43vhxqz+Mxec9KWB7Wx7pCPCpT44yi6fCns22gFP2Op5dLmHgSlf7PF1VpdlRu7 xOhOtSwwb6M7glIIOQZd1iC3avKFt/OtjQznOAMBXTXliOI+rgPgl/8z3bVbxZAFMWNQI cp87Ppxai9THtfhDsCrWJvjTcNNWBgnQz+KfHPkrBgyvYmoVNWaFJbkaTb+xfY0YCmrDd h+N9IXcysAKXE3U4PJ8GiBZTTbRcN4U6jcSiVQ1HsZJ7YuA3dWI/S5rgY7F8WqsUS6A== 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=hJWyLBAn; 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 9D243606A327 for ; Tue, 27 Oct 2026 13:53:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 9D243606A327 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=hJWyLBAn Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-48df4f540ebso2078737f8f.3 for ; Tue, 27 Oct 2026 06:53:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1793109236; x=1793714036; 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=iAF+WADJmaJJKBPLcOmPpXbmUA9WB4juk/RKph8rg+s=; b=hJWyLBAn0ZDREXs6tHLd3MSBcBqHB9WaQKZf+wqlmBhO4/0uL9OMJSh93mKnss1gO3 HUTCBpKmAx4RPsBR48wMC9aaEJh7B4GSer1GjPDuCdw7vlyuEYHzp3tZ9yxGJlTYedb1 P7TJa4ztoOQ4B5fiPGRfnrq8q+gGsKCiwWCESIr2FR9u7rcz0j9vxxl4tStkjrMmMTEr t4UdxVwNSkKWCskCGu/VoZaRO5/QfE2jottAgEvVxg2lyRSDJWL61V+2IvC8JxjUYs1p st/6pYkwmgyRqgB5cvieUbzO6/PYU1G/A1GcDsPCtdhJ0wXH0W1y1R/aumpjgwVPcr2t eBhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793109236; x=1793714036; 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=iAF+WADJmaJJKBPLcOmPpXbmUA9WB4juk/RKph8rg+s=; b=ExHES0AHpc7sNura9Nyw82kiqMZ/W4rYd8y2zzDDhoCIpkMOceKR06dNveJogDPscs d/EDvPTnl+tj+ATeQ8g5OLvUIch7zbNOhchFmXoe1j1qnovln3IjDSDRHZLFO6YbKslL p9MJTS2XjzRMlTkUTjeMtNjyUosIgTUWWTQroN2WVuznZjY95cJd3KUmyIs2q9Gft0CJ t/rRPt7u4fKL2ObiOzJEJSTKQ7MhkBw6WX+YfUFvvrM98gkrcPo5o1ChuYC2kg2zim5p dhh/Amuvq8OB+CXAo/YGdhFZV3o8Kn4GrsBTtU6M+9oYFNwgmqEKwMfks3l/WOr0vhxQ fM6Q== X-Forwarded-Encrypted: i=1; AKwUvBxm+UNvw3y11ZYWtd6gXgBpjUK2V2Exh/Hgxrvwi5rQ0QWUUoOEnB/MQ9a+lW3c9v5lgwjgMkRmPnuImQ==@vger.kernel.org X-Gm-Message-State: AFq9FYIHUIqRASU53cNV+sGfARTV/IMXF089Oo8pj0lXJsOXFvJ9KEzC s3NEiz9NpFN8+Pbeepv039g3K0MtWUvgkwrWmJuFJfKxBiuP+UJkSHMg X-Gm-Gg: AYBFou1d46oVTqo1Cq/zmBk6cmwZgtn39nnXTYgG5tDD1IpOJUcS3WNG3M0RrgEqZ4C vknSaotIkwNRvFYwGKw2yPdpr3eMgf8VQGjI4flCAH49BQhFBcmORnfxvdEHOnK0/GYmtyRG54j LCfMjpbIbDiB5mFPPjFKPdTN8gSAnVO9V5BYw7N+hj+a5ZpBJ6f4+9Peg/gt9704QeUpQUb7IsV Pa0snCOGjgj7PicdIMcGz/qGNFtSFlAorUJj+PwN3pagdRfqrQxahizi0FMDqKEITG7FoX91J7u 2hKsR/HiP8mlM9NmRe1Vk8ZOx7pdSRkDvbkmXW+/HPg/Pj+I5pYEzSY6kW/5EDcQZ0Yj0oo4n4M HFKgWCB9Xa65S+lePu0GN3lV8Yiedt5Y5Cif+/SZ3wb1Nh1eYjRESuK5zT1MHPgYZQzBZXJW4r2 ZOxyuUOgRtVpuUwIjArFhCUYuoZ8CJHSDrSnS0xf+mw9CVLDyi+rVD+9d3cYhbNU9GVKgSTY9ua R2T3wKTMZ+z5ZJkV7+8BYtuI4i8tjEgIbSc0t3aL/Fs3+iYAjuXGC6q2ZA2D4ztZPvju3qiF7KS 0KHeP12u X-Received: by 2002:a05:6000:152:b0:48e:a13:7c8d with SMTP id ffacd0b85a97d-48e3eba57f8mr14927645f8f.49.1793109235692; Tue, 27 Oct 2026 06:53:55 -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.53.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Oct 2026 06:53:54 -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 04/15] drm: client: add splash client Date: Tue, 27 Oct 2026 14:53:31 +0100 Message-Id: <20261027135342.2003632-5-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-fbdev@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. 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