From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D20A3C433EF for ; Thu, 16 Sep 2021 13:01:53 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E990360EE9 for ; Thu, 16 Sep 2021 13:01:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org E990360EE9 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=openbsd.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4B8088317A; Thu, 16 Sep 2021 15:01:46 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=openbsd.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) id F10D88310F; Thu, 16 Sep 2021 15:01:42 +0200 (CEST) Received: from lb3-smtp-cloud8.xs4all.net (lb3-smtp-cloud8.xs4all.net [194.109.24.29]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id F159082F4D for ; Thu, 16 Sep 2021 15:01:37 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=openbsd.org Authentication-Results: phobos.denx.de; spf=fail smtp.mailfrom=kettenis@openbsd.org Received: from cust-df1d398c ([IPv6:fc0c:c1f5:9ac0:c45f:1583:5c5b:91fa:2436]) by smtp-cloud8.xs4all.net with ESMTPA id Qr14ma2YReJ0cQr1FmsVry; Thu, 16 Sep 2021 15:01:37 +0200 From: Mark Kettenis To: u-boot@lists.denx.de Cc: Mark Kettenis , Anatolij Gustschin , Heinrich Schuchardt , Alexander Graf Subject: [PATCH 1/3] video: Add 30bpp support Date: Thu, 16 Sep 2021 15:01:15 +0200 Message-Id: <20210916130117.20894-2-kettenis@openbsd.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210916130117.20894-1-kettenis@openbsd.org> References: <20210916130117.20894-1-kettenis@openbsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CMAE-Envelope: MS4xfL6icmsBq30HSLcFF1lhn/OUZcMR7lnvHJlmJMOpkR0/KUtMXOCJu87Ykc1dStF786/iw8rpXOU2EP5Fc69Egh3YT+PwvMZ7jPY32zITMUuDGRZIkYvM 9FJHT76kowvF6n1cbFdCgRgm3RVISZbWaOBQ1cbnrubDP6E9OmnmfXharZYnrJnx+YFlrMAKwr2Ivka1t+u6ZLhr/cjSniTYozbYVGmVVfXRVo0AzBhSytk5 4RoT3wkY8d47c9cqhK4wgINRkSCOqdaNBunSxefFZJA5PKjBgfcCDDt5klQyuK4NOk1XTkX6mT/DnC706s0b9Q== X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean Add support for 30bpp mode where pixels are picked in 32-bit integers but use 10 bits instead of 8 bits for each component. Signed-off-by: Mark Kettenis --- drivers/video/console_normal.c | 2 ++ drivers/video/console_rotate.c | 6 ++++++ drivers/video/console_truetype.c | 3 +++ drivers/video/vidconsole-uclass.c | 7 +++++++ drivers/video/video-uclass.c | 1 + include/video.h | 1 + 6 files changed, 20 insertions(+) diff --git a/drivers/video/console_normal.c b/drivers/video/console_normal.c index 04f022491e..e0b89cbb93 100644 --- a/drivers/video/console_normal.c +++ b/drivers/video/console_normal.c @@ -41,6 +41,7 @@ static int console_normal_set_row(struct udevice *dev, uint row, int clr) end = dst; break; } + case VIDEO_BPP30: case VIDEO_BPP32: if (IS_ENABLED(CONFIG_VIDEO_BPP32)) { uint32_t *dst = line; @@ -126,6 +127,7 @@ static int console_normal_putc_xy(struct udevice *dev, uint x_frac, uint y, } break; } + case VIDEO_BPP30: case VIDEO_BPP32: if (IS_ENABLED(CONFIG_VIDEO_BPP32)) { uint32_t *dst = line; diff --git a/drivers/video/console_rotate.c b/drivers/video/console_rotate.c index 36c8d0609d..bf81b80a39 100644 --- a/drivers/video/console_rotate.c +++ b/drivers/video/console_rotate.c @@ -40,6 +40,7 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) *dst++ = clr; break; } + case VIDEO_BPP30: case VIDEO_BPP32: if (IS_ENABLED(CONFIG_VIDEO_BPP32)) { uint32_t *dst = line; @@ -128,6 +129,7 @@ static int console_putc_xy_1(struct udevice *dev, uint x_frac, uint y, char ch) } break; } + case VIDEO_BPP30: case VIDEO_BPP32: if (IS_ENABLED(CONFIG_VIDEO_BPP32)) { uint32_t *dst = line; @@ -183,6 +185,7 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) end = dst; break; } + case VIDEO_BPP30: case VIDEO_BPP32: if (IS_ENABLED(CONFIG_VIDEO_BPP32)) { uint32_t *dst = line; @@ -266,6 +269,7 @@ static int console_putc_xy_2(struct udevice *dev, uint x_frac, uint y, char ch) } break; } + case VIDEO_BPP30: case VIDEO_BPP32: if (IS_ENABLED(CONFIG_VIDEO_BPP32)) { uint32_t *dst = line; @@ -318,6 +322,7 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) *dst++ = clr; break; } + case VIDEO_BPP30: case VIDEO_BPP32: if (IS_ENABLED(CONFIG_VIDEO_BPP32)) { uint32_t *dst = line; @@ -402,6 +407,7 @@ static int console_putc_xy_3(struct udevice *dev, uint x_frac, uint y, char ch) } break; } + case VIDEO_BPP30: case VIDEO_BPP32: if (IS_ENABLED(CONFIG_VIDEO_BPP32)) { uint32_t *dst = line; diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c index 98427f4c61..0195d996de 100644 --- a/drivers/video/console_truetype.c +++ b/drivers/video/console_truetype.c @@ -153,6 +153,7 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) } #endif #ifdef CONFIG_VIDEO_BPP32 + case VIDEO_BPP30: case VIDEO_BPP32: { u32 *dst = line; @@ -299,6 +300,7 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, } #endif #ifdef CONFIG_VIDEO_BPP32 + case VIDEO_BPP30: case VIDEO_BPP32: { u32 *dst = (u32 *)line + xoff; int i; @@ -381,6 +383,7 @@ static int console_truetype_erase(struct udevice *dev, int xstart, int ystart, } #endif #ifdef CONFIG_VIDEO_BPP32 + case VIDEO_BPP30: case VIDEO_BPP32: { uint32_t *dst = line; diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c index 8132efa55a..cc274b45fe 100644 --- a/drivers/video/vidconsole-uclass.c +++ b/drivers/video/vidconsole-uclass.c @@ -153,6 +153,13 @@ u32 vid_console_color(struct video_priv *priv, unsigned int idx) ((colors[idx].b >> 3) << 0); } break; + case VIDEO_BPP30: + if (CONFIG_IS_ENABLED(VIDEO_BPP32)) { + return (colors[idx].r << 22) | + (colors[idx].g << 12) | + (colors[idx].b << 2); + } + break; case VIDEO_BPP32: if (CONFIG_IS_ENABLED(VIDEO_BPP32)) { return (colors[idx].r << 16) | diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c index 9f8cf6ef2a..28bf701f41 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c @@ -129,6 +129,7 @@ int video_clear(struct udevice *dev) *ppix++ = priv->colour_bg; break; } + case VIDEO_BPP30: case VIDEO_BPP32: if (IS_ENABLED(CONFIG_VIDEO_BPP32)) { u32 *ppix = priv->fb; diff --git a/include/video.h b/include/video.h index 827733305e..04c636b317 100644 --- a/include/video.h +++ b/include/video.h @@ -53,6 +53,7 @@ enum video_log2_bpp { VIDEO_BPP4, VIDEO_BPP8, VIDEO_BPP16, + VIDEO_BPP30, VIDEO_BPP32, }; -- 2.33.0