From patchwork Thu Jul 13 13:17:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 119900 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp1829496vqm; Thu, 13 Jul 2023 06:35:19 -0700 (PDT) X-Google-Smtp-Source: APBJJlGZJOLEQ7fqUNP1+WScPmGPm2Zjb/XS/JQdbwKVjk5aQiD0owbpobKCsoVEbs+M5PD8hasW X-Received: by 2002:a05:6358:5908:b0:134:c8cb:6a00 with SMTP id g8-20020a056358590800b00134c8cb6a00mr1824066rwf.12.1689255319555; Thu, 13 Jul 2023 06:35:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689255319; cv=none; d=google.com; s=arc-20160816; b=kS7WU8d1+VCMMUVpC7fFNL0VyMcSJ1J9mgyu1AeWDnGXXrVUCPrQlD8JbwyX/7bGGg AxpD4XCt5Q4d/+VEZvS7mS/E9W57z5pQb48A7mNQ6MPWfYgC1dyZHo1Yn3odMPT7mIHc 8VnRSDTQzJUmmxgcnfrI7UPWcSdiKak80zYGkgy0tANJcq2yL+cudXoeHKr2ipusdESu OGIDZw7KYw5AsuIBsTe4NPTdZEresnlCJKX1oBs6W73eu3+tzDXAA+dkIfYXaBpnVDIp iWtU1eM3pH4WqSrGpwQrsmCxseEnFsKMtk6clrO5MtRFJlldbXyFeV3x16JfU4G65pMk lHIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=AD03TurK3yrna6bUlF5S7Xlqaw3WfrhUwhigUB5F+xs=; fh=wcJXU+GRAJ+lFf7so8itXL2pGJ6fujr2XomH/f1be3s=; b=ruHq3Hgs6MF0c4ovr3VAnY/RQp7dv4bB+FZSU/1/JEjGGz9BlVgmNtLUcNoPuma/FZ 64xgza4fUgU8RV6lCDxatfWiLpiXr53/17Q5uxnjSrlHUnvcmXgx5y+k5ALwBv8biaX3 HzUZ88BX1x/CrxFikT9veisQtTxQfdOeQyPkE2yKqnX8l19K3OCv7EHjVfPESAeCmkvi Q4SE+9FR6WLKrctDRMtcg1hjDhGP4/ZLkQ3ROjsdWiaZVkYUfAtBC1WsXV8tKd1QAOJv t4/UCc2L/oVFG3qdkwW0zJtfENs6K+8ICTQLsNizhPaWuKDzVWMuiMZJ9euY/UUkN/JR MRIw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m16-20020a63fd50000000b005578a320ea8si5173678pgj.867.2023.07.13.06.35.06; Thu, 13 Jul 2023 06:35:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234976AbjGMNRo (ORCPT + 99 others); Thu, 13 Jul 2023 09:17:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51228 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234791AbjGMNRb (ORCPT ); Thu, 13 Jul 2023 09:17:31 -0400 Received: from laurent.telenet-ops.be (laurent.telenet-ops.be [IPv6:2a02:1800:110:4::f00:19]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A689271F for ; Thu, 13 Jul 2023 06:17:25 -0700 (PDT) Received: from ramsan.of.borg ([IPv6:2a02:1810:ac12:ed40:6264:77e5:42e2:477d]) by laurent.telenet-ops.be with bizsmtp id LdHN2A00P3wy6xv01dHNpY; Thu, 13 Jul 2023 15:17:23 +0200 Received: from rox.of.borg ([192.168.97.57]) by ramsan.of.borg with esmtp (Exim 4.95) (envelope-from ) id 1qJwC3-001Gqo-0L; Thu, 13 Jul 2023 15:17:22 +0200 Received: from geert by rox.of.borg with local (Exim 4.95) (envelope-from ) id 1qJwCA-00GWyV-MV; Thu, 13 Jul 2023 15:17:22 +0200 From: Geert Uytterhoeven To: Javier Martinez Canillas , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH 1/8] drm/ssd130x: Fix pitch calculation in ssd130x_fb_blit_rect() Date: Thu, 13 Jul 2023 15:17:09 +0200 Message-Id: <54deec2ec533e90544faa8c60a0c2518c58f3e9c.1689252746.git.geert@linux-m68k.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771312585886604665 X-GMAIL-MSGID: 1771312585886604665 The page height must be taken into account only for vertical coordinates and heights, not for horizontal coordinates and widths. Fixes: 179a790aaf2a0127 ("drm/ssd130x: Set the page height value in the device info data") Signed-off-by: Geert Uytterhoeven Reviewed-by: Javier Martinez Canillas --- drivers/gpu/drm/solomon/ssd130x.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ssd130x.c index afb08a8aa9fcdaf2..b4c376962629580b 100644 --- a/drivers/gpu/drm/solomon/ssd130x.c +++ b/drivers/gpu/drm/solomon/ssd130x.c @@ -596,7 +596,7 @@ static int ssd130x_fb_blit_rect(struct drm_framebuffer *fb, const struct iosys_m rect->y1 = round_down(rect->y1, page_height); rect->y2 = min_t(unsigned int, round_up(rect->y2, page_height), ssd130x->height); - dst_pitch = DIV_ROUND_UP(drm_rect_width(rect), page_height); + dst_pitch = DIV_ROUND_UP(drm_rect_width(rect), 8); ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE); if (ret) From patchwork Thu Jul 13 13:17:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 119887 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp1821261vqm; Thu, 13 Jul 2023 06:22:38 -0700 (PDT) X-Google-Smtp-Source: APBJJlEd0AtXwEI5q1mEpzjgUsFTZlVdJ4D8nC9loUhqSxzSVS+NainkKiy0lgFEvw3La4SF8/9/ X-Received: by 2002:aa7:d4c7:0:b0:51d:d4c3:6858 with SMTP id t7-20020aa7d4c7000000b0051dd4c36858mr1851190edr.12.1689254558292; Thu, 13 Jul 2023 06:22:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689254558; cv=none; d=google.com; s=arc-20160816; b=uSlvQ4AQObKlc2OguagfnGzApOZVyQ+CidunBcNBcEQPU05TosUVFHfEjZwZ6jNfdl iWUA7sgg/o4fYvVE7DFBCVhtyJFx0iC9jdJoESEcD1kM2XcgDMWjFy8LPMYEUwAB3oiT CD1fn0rbppiUtLZJp/dbbH4XzAx4pK7Dpjo1x9ybqhYdf+RAOz/pm3f4JH8xmfV/uLAr kRKM+UUT2q3BCGh2K6HCPAnn9/kliRHjkfxr5qbgoVTqrkCHbXUDKDgtiHNgOsCYrAk7 KX9kJeDCn+iqO6ZlRta/Gl3uNv6C95tos81na8TONC/MUZuOq7dkEekVrUnM0nGm/Ut/ b9Ow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=upsR0EQflRzVJg5f3axK8d7HO6BKHnExZeYGh88QMjI=; fh=wcJXU+GRAJ+lFf7so8itXL2pGJ6fujr2XomH/f1be3s=; b=AHZ7xLOs+bUKoaHo6aKUuIhcfvY3Z5Vzy+ZYga8ZueXX2bfQaiVVLWvLeec6cI7omJ todgv/oMQHTMz6PLhPWh3vzwVSz32i4c21nYTO0OFj2b/HauYbVs75WdbM7tudwaM2Pz +91BA+3Bwc/ycF0LxaImQeWEKuGlSnMOqPMKntwwo+sT+vMUekhr8yzVtzeYTm1Z3G+N yYqTrYx33wwMiEkZjo7QUKBrZR2Zvy/6oL8+s0E04rLSljFQwYiklnQsTvAW52rvsuiR 0+CqPsSihVqGWYKytf8poldt6o1YOVpDeHXx/2mhfdyzPGDNzNZudU3IZdVt2MHN4g5D hZnw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i8-20020a056402054800b0051e0ecd88dcsi6943131edx.687.2023.07.13.06.22.14; Thu, 13 Jul 2023 06:22:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232943AbjGMNRz (ORCPT + 99 others); Thu, 13 Jul 2023 09:17:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51248 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234806AbjGMNRb (ORCPT ); Thu, 13 Jul 2023 09:17:31 -0400 Received: from michel.telenet-ops.be (michel.telenet-ops.be [IPv6:2a02:1800:110:4::f00:18]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A01E270D for ; Thu, 13 Jul 2023 06:17:25 -0700 (PDT) Received: from ramsan.of.borg ([IPv6:2a02:1810:ac12:ed40:6264:77e5:42e2:477d]) by michel.telenet-ops.be with bizsmtp id LdHN2A00Z3wy6xv06dHNad; Thu, 13 Jul 2023 15:17:23 +0200 Received: from rox.of.borg ([192.168.97.57]) by ramsan.of.borg with esmtp (Exim 4.95) (envelope-from ) id 1qJwC3-001Gqq-0u; Thu, 13 Jul 2023 15:17:22 +0200 Received: from geert by rox.of.borg with local (Exim 4.95) (envelope-from ) id 1qJwCA-00GWyY-N9; Thu, 13 Jul 2023 15:17:22 +0200 From: Geert Uytterhoeven To: Javier Martinez Canillas , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH 2/8] drm/dumb-buffers: Fix drm_mode_create_dumb() for bpp < 8 Date: Thu, 13 Jul 2023 15:17:10 +0200 Message-Id: <5ba8ac5e465121b646a59487dc75b27017e0c769.1689252746.git.geert@linux-m68k.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771311787664315250 X-GMAIL-MSGID: 1771311787664315250 drm_mode_create_dumb() calculates the number of characters per pixel from the number of bits per pixel by rounding up, which is not correct as the actual value of cpp may be non-integer. While we do not need to care here about complex formats like YUV, bpp < 8 is a valid use case. - The overflow check for the buffer width is not correct if bpp < 8. However, it doesn't hurt, as widths larger than U32_MAX / 8 should not happen for real anyway. Add a comment to clarify. - Calculating the stride from the number of characters per pixel is not correct. Fix this by calculating it from the number of bits per pixel instead. Signed-off-by: Geert Uytterhoeven Reviewed-by: Javier Martinez Canillas --- Why is drm_mode_create_dumb.size __u64? The test for "args->height > U32_MAX / stride" rejects all sizes not fitting in __u32 anyway. --- drivers/gpu/drm/drm_dumb_buffers.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_dumb_buffers.c b/drivers/gpu/drm/drm_dumb_buffers.c index 70032bba1c97e787..21a04c32a5e3d785 100644 --- a/drivers/gpu/drm/drm_dumb_buffers.c +++ b/drivers/gpu/drm/drm_dumb_buffers.c @@ -71,10 +71,11 @@ int drm_mode_create_dumb(struct drm_device *dev, /* overflow checks for 32bit size calculations */ if (args->bpp > U32_MAX - 8) return -EINVAL; + /* Incorrect (especially if bpp < 8), but doesn't hurt much */ cpp = DIV_ROUND_UP(args->bpp, 8); if (cpp > U32_MAX / args->width) return -EINVAL; - stride = cpp * args->width; + stride = DIV_ROUND_UP(args->bpp * args->width, 8); if (args->height > U32_MAX / stride) return -EINVAL; From patchwork Thu Jul 13 13:17:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 119912 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp1834257vqm; Thu, 13 Jul 2023 06:43:56 -0700 (PDT) X-Google-Smtp-Source: APBJJlGPYF2JNJL8MT8p6yq+nujlmZ2yTGmSAlY4bYOWAsaIbCj+QzuHqsFQNGQ0p5ce0ESJ6Unr X-Received: by 2002:a05:6a20:54a3:b0:10b:f590:5a1f with SMTP id i35-20020a056a2054a300b0010bf5905a1fmr1197770pzk.0.1689255835825; Thu, 13 Jul 2023 06:43:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689255835; cv=none; d=google.com; s=arc-20160816; b=MmlidUBI04Ei46pJVpColnjrsx4Ra3mZoC8i/eP3RQhiMP8G8dWvMmdpHnd0FVJyhW +chPOFzrIcp32wixBRMRRVT6H5TyEdvWu8wr7SBz4rZrTml9mux3ZjhxrBCG0wy5Smvs MFM5aUaubmY+4fHgKR+QnzIk+2yVpK0IJTICAx/UaqjbXXQSM1v14lCqvu1gV5i2IebK r/aFCwf8pdg5HT1cpeg2c7RcdBUSAl5nax9E3kxfsxM4hPUJcJI33hhIvlxurS2HphNz fFwOjgpTLh7U6EYWghU30wmvHa3UcBHBNrA4qHiicJmEUG6NGplADTQb29OC22xYUKhn AAUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=NygaF4PK7WxAH7U+IKXWA61yrEEURoEnlgH0pj8Tf/M=; fh=wcJXU+GRAJ+lFf7so8itXL2pGJ6fujr2XomH/f1be3s=; b=n1O6OWEkb7phn3lMoWOVO8GoEw5DTR1px+jzhkxqHMO+nGBkIBHBwVxsuCpaiXRFN/ Y16ZwcwXcBdBIvIqBWFBOlEnqRzLur9Dfg4RIwgQfjNZeb9Z9myfWH9RP5QcLl5mLTew X/dzeVeKbzywzVlIAHrig5S80Nw2RVdD3a6Q3gScCQPU5VsUr0g74AHanguovBheZjTv zVkdStcRldiiCoMVXkJfWX4v5sG0nWDhE4v1HS+j/CpXmaiiHpYb+kl4ZAl4Tk1Q0D38 ZbFqdxbKDIYEUn+df/pSbd3VWPjwUhgKfQmG6hpPJOoDOAt+tGHrLCJJYpmUkzgcLph8 7oZg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f20-20020a056a0022d400b00682646da338si5309141pfj.60.2023.07.13.06.43.43; Thu, 13 Jul 2023 06:43:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234692AbjGMNSJ (ORCPT + 99 others); Thu, 13 Jul 2023 09:18:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51250 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234827AbjGMNRc (ORCPT ); Thu, 13 Jul 2023 09:17:32 -0400 Received: from laurent.telenet-ops.be (laurent.telenet-ops.be [IPv6:2a02:1800:110:4::f00:19]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A2DC2711 for ; Thu, 13 Jul 2023 06:17:25 -0700 (PDT) Received: from ramsan.of.borg ([IPv6:2a02:1810:ac12:ed40:6264:77e5:42e2:477d]) by laurent.telenet-ops.be with bizsmtp id LdHN2A00R3wy6xv01dHNpa; Thu, 13 Jul 2023 15:17:23 +0200 Received: from rox.of.borg ([192.168.97.57]) by ramsan.of.borg with esmtp (Exim 4.95) (envelope-from ) id 1qJwC3-001Gqu-1Z; Thu, 13 Jul 2023 15:17:22 +0200 Received: from geert by rox.of.borg with local (Exim 4.95) (envelope-from ) id 1qJwCA-00GWyd-No; Thu, 13 Jul 2023 15:17:22 +0200 From: Geert Uytterhoeven To: Javier Martinez Canillas , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH/RFC 3/8] drm/ssd130x: Bail out early if data_array is not yet available Date: Thu, 13 Jul 2023 15:17:11 +0200 Message-Id: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771313127482629474 X-GMAIL-MSGID: 1771313127482629474 Calling ssd130x_buf_alloc() from ssd130x_encoder_helper_atomic_enable() is too late, causing a NULL pointer dereference: ssd130x_update_rect.isra.0+0x13c/0x340 ssd130x_primary_plane_helper_atomic_update+0x26c/0x284 drm_atomic_helper_commit_planes+0xfc/0x27c Work around that by checking if data_array is valid. Obviously this needs a better fix... Fixes: 49d7d581ceaf4cf8 ("drm/ssd130x: Don't allocate buffers on each plane update") Signed-off-by: Geert Uytterhoeven --- drivers/gpu/drm/solomon/ssd130x.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ssd130x.c index b4c376962629580b..8ef5f61854fd7340 100644 --- a/drivers/gpu/drm/solomon/ssd130x.c +++ b/drivers/gpu/drm/solomon/ssd130x.c @@ -481,6 +481,7 @@ static int ssd130x_update_rect(struct ssd130x_device *ssd130x, struct drm_rect * u32 array_idx = 0; int ret, i, j, k; +if (!data_array) { pr_info("%s: data_array not yet initialized\n", __func__); return 0; } drm_WARN_ONCE(drm, y % 8 != 0, "y must be aligned to screen page\n"); /* From patchwork Thu Jul 13 13:17:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 119898 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp1828887vqm; Thu, 13 Jul 2023 06:34:24 -0700 (PDT) X-Google-Smtp-Source: APBJJlF0XEvlrRqOjrhw22ptEC8WMFF84c84scDDumxn2oDkrlvC+YTY+ZH491f5VdY/meD4HZ3H X-Received: by 2002:a05:6a21:3399:b0:12d:5999:6224 with SMTP id yy25-20020a056a21339900b0012d59996224mr1185540pzb.13.1689255264094; Thu, 13 Jul 2023 06:34:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689255264; cv=none; d=google.com; s=arc-20160816; b=KtEs0WyGJW1lqfD9FwYVAqquBBWXsuu2LoKOP+pHGVM2dsytTkK2M/8Z4nzIQMue40 OPklbNNTfaLT1bh5f297xPL3mFko6WrYYUVRzZiuoejOCWG+rnie20hLS6+3I2n92F79 LhkzL3GaGMFvEH1lj+e5X7WQOC7nCt4q0dG4CNUl2cnegiEFDO5N3hm9v6q4Bjr9XaWT 5TSvUuL3ksB0UxTNpW9SoZWIIfRwYnCQV7XSSKTOAADO3RmaleGOnw2UU2r0DHcPOY7y PTLLpMp3CZL4ci6FJCG59fzvlKKctRbw7cDj3lrBNVmWHRQp2wZvGvy5CmgRlKVr2zwp HE9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=H4UZqVatzVeerkc3BcP+81o3Np1apiJABcnDwX+pAlA=; fh=wcJXU+GRAJ+lFf7so8itXL2pGJ6fujr2XomH/f1be3s=; b=0c3M/zI843lKsqLlu1QQaQ8xYk7IalgFbaDRKmeijpIfKHkHeTBEdnK3lXJaHX0AgQ flOPc+I+SugPS60BUdr/cSb5Qbp7nt/cLVmr2cqaPaH3OnoNv3J21Uzq31YXCso5ckNe fP1z8Un8zsS3RT2nzHUuOHU8SgTZxkGJJzKlODsZKWxehKJ5111CrtVZcO6xxjTq6KJt ZXgHeiF3jnSLM62UzX8mmMYbCeYUPCFCBLLIa8C5KT+SxbRRhyiUQYnSB+YnLjI2eTTw 3koKv5eKyZOt1GjMl+jV8Mmi3wMZlLycfaaKoDtUQMJ4TOxP4JGTqNHYqy636JCJpj7w dC0A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b7-20020a656687000000b0055c770439f3si2162659pgw.296.2023.07.13.06.34.11; Thu, 13 Jul 2023 06:34:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234872AbjGMNR6 (ORCPT + 99 others); Thu, 13 Jul 2023 09:17:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234817AbjGMNRb (ORCPT ); Thu, 13 Jul 2023 09:17:31 -0400 Received: from laurent.telenet-ops.be (laurent.telenet-ops.be [IPv6:2a02:1800:110:4::f00:19]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 19DA1270B for ; Thu, 13 Jul 2023 06:17:25 -0700 (PDT) Received: from ramsan.of.borg ([IPv6:2a02:1810:ac12:ed40:6264:77e5:42e2:477d]) by laurent.telenet-ops.be with bizsmtp id LdHN2A00U3wy6xv01dHNpb; Thu, 13 Jul 2023 15:17:23 +0200 Received: from rox.of.borg ([192.168.97.57]) by ramsan.of.borg with esmtp (Exim 4.95) (envelope-from ) id 1qJwC3-001Gqw-2D; Thu, 13 Jul 2023 15:17:22 +0200 Received: from geert by rox.of.borg with local (Exim 4.95) (envelope-from ) id 1qJwCA-00GWyh-OV; Thu, 13 Jul 2023 15:17:22 +0200 From: Geert Uytterhoeven To: Javier Martinez Canillas , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH 4/8] drm/ssd130x: Add support for DRM_FORMAT_R1 Date: Thu, 13 Jul 2023 15:17:12 +0200 Message-Id: <72746f6d9c47f09fc057ad7a4bbb3b7f423af803.1689252746.git.geert@linux-m68k.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771312527869268324 X-GMAIL-MSGID: 1771312527869268324 The native display format is monochrome light-on-dark (R1). Hence add support for R1, so monochrome applications can avoid the overhead of back-and-forth conversions between R1 and XR24. Signed-off-by: Geert Uytterhoeven Reviewed-by: Javier Martinez Canillas --- This work interfered with commit 49d7d581ceaf4cf8 ("drm/ssd130x: Don't allocate buffers on each plane update") in drm-misc/for-linux-next, which always allocates the buffer upfront, while it is no longer needed when never using XR24. Probably ssd130x->buffer should be allocated on first use. And why not allocate the buffers using devm_kcalloc()? --- drivers/gpu/drm/solomon/ssd130x.c | 57 ++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ssd130x.c index 8ef5f61854fd7340..130e33a1ba3cba00 100644 --- a/drivers/gpu/drm/solomon/ssd130x.c +++ b/drivers/gpu/drm/solomon/ssd130x.c @@ -466,15 +466,14 @@ static int ssd130x_init(struct ssd130x_device *ssd130x) SSD130X_SET_ADDRESS_MODE_HORIZONTAL); } -static int ssd130x_update_rect(struct ssd130x_device *ssd130x, struct drm_rect *rect) +static int ssd130x_update_rect(struct ssd130x_device *ssd130x, u8 *buf, + unsigned int pitch, struct drm_rect *rect) { unsigned int x = rect->x1; unsigned int y = rect->y1; - u8 *buf = ssd130x->buffer; u8 *data_array = ssd130x->data_array; unsigned int width = drm_rect_width(rect); unsigned int height = drm_rect_height(rect); - unsigned int line_length = DIV_ROUND_UP(width, 8); unsigned int page_height = ssd130x->device_info->page_height; unsigned int pages = DIV_ROUND_UP(height, page_height); struct drm_device *drm = &ssd130x->drm; @@ -534,7 +533,7 @@ if (!data_array) { pr_info("%s: data_array not yet initialized\n", __func__); re u8 data = 0; for (k = 0; k < m; k++) { - u8 byte = buf[(8 * i + k) * line_length + j / 8]; + u8 byte = buf[(8 * i + k) * pitch + j / 8]; u8 bit = (byte >> (j % 8)) & 1; data |= bit << k; @@ -570,6 +569,8 @@ if (!data_array) { pr_info("%s: data_array not yet initialized\n", __func__); re static void ssd130x_clear_screen(struct ssd130x_device *ssd130x) { + unsigned int pitch = DIV_ROUND_UP(ssd130x->width, 8); + u8 *buf = ssd130x->buffer; struct drm_rect fullscreen = { .x1 = 0, .x2 = ssd130x->width, @@ -577,7 +578,7 @@ static void ssd130x_clear_screen(struct ssd130x_device *ssd130x) .y2 = ssd130x->height, }; - ssd130x_update_rect(ssd130x, &fullscreen); + ssd130x_update_rect(ssd130x, buf, pitch, &fullscreen); } static int ssd130x_fb_blit_rect(struct drm_framebuffer *fb, const struct iosys_map *vmap, @@ -588,27 +589,48 @@ static int ssd130x_fb_blit_rect(struct drm_framebuffer *fb, const struct iosys_m struct iosys_map dst; unsigned int dst_pitch; int ret = 0; - u8 *buf = ssd130x->buffer; - - if (!buf) - return 0; + u8 *buf; /* Align y to display page boundaries */ rect->y1 = round_down(rect->y1, page_height); rect->y2 = min_t(unsigned int, round_up(rect->y2, page_height), ssd130x->height); - dst_pitch = DIV_ROUND_UP(drm_rect_width(rect), 8); + switch (fb->format->format) { + case DRM_FORMAT_R1: + /* Align x to byte boundaries */ + rect->x1 = round_down(rect->x1, 8); + rect->x2 = round_up(rect->x2, 8); - ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE); - if (ret) - return ret; + ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE); + if (ret) + return ret; - iosys_map_set_vaddr(&dst, buf); - drm_fb_xrgb8888_to_mono(&dst, &dst_pitch, vmap, fb, rect); + dst_pitch = fb->pitches[0]; + buf = vmap[0].vaddr + rect->y1 * dst_pitch + rect->x1 / 8; - drm_gem_fb_end_cpu_access(fb, DMA_FROM_DEVICE); + ssd130x_update_rect(ssd130x, buf, dst_pitch, rect); - ssd130x_update_rect(ssd130x, rect); + drm_gem_fb_end_cpu_access(fb, DMA_FROM_DEVICE); + break; + + case DRM_FORMAT_XRGB8888: + dst_pitch = DIV_ROUND_UP(drm_rect_width(rect), 8); + buf = ssd130x->buffer; + if (!buf) + return 0; + + ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE); + if (ret) + return ret; + + iosys_map_set_vaddr(&dst, buf); + drm_fb_xrgb8888_to_mono(&dst, &dst_pitch, vmap, fb, rect); + + drm_gem_fb_end_cpu_access(fb, DMA_FROM_DEVICE); + + ssd130x_update_rect(ssd130x, buf, dst_pitch, rect); + break; + } return ret; } @@ -797,6 +819,7 @@ static const struct drm_mode_config_funcs ssd130x_mode_config_funcs = { }; static const uint32_t ssd130x_formats[] = { + DRM_FORMAT_R1, DRM_FORMAT_XRGB8888, }; From patchwork Thu Jul 13 13:17:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 119886 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp1821193vqm; Thu, 13 Jul 2023 06:22:32 -0700 (PDT) X-Google-Smtp-Source: APBJJlFr0ifENtUxVcYUexe/df+yl+pPUo0Mzg9jOCiRr1C6LFunlXud98m2CwcmjBO7VhAJnvzv X-Received: by 2002:a17:906:10d9:b0:993:eef2:5d59 with SMTP id v25-20020a17090610d900b00993eef25d59mr1816509ejv.0.1689254552113; Thu, 13 Jul 2023 06:22:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689254552; cv=none; d=google.com; s=arc-20160816; b=CvOHVIdko9jiL3ogbu2UOMZV1OqUWQ1c+mHd6Ro+JWzvPpwSOdCdEdzLVYjXPhEAKE AD+tPSei3xnKyK1EJQUZIlOZRyReFE3gWBFnxOINCXRtdsOeOODpzSwQuHVVvEHM8TDp JE4jggn9Z4tvUxIXROjoW3R7mWQc9eoJzpMoHHfyu+4A5gBqnRkou2Y2o1IGWBvcln9E cGLeaijDj7wWPyvIwirlCSujZBqP62KAGACj0qKY1pK9+n6gYmrTiJfc8cvLUNhygXG1 wZRZWLz4ndiGSg27aXBCoXCwbQvI4hHx9WTH5EcNlJZTS33tUbTw0e7r6XorkI/T1DN2 nbBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=GG87n6OyM2fV+LRgWh5SL+C/GMDrJvGgagstcZ2HbjA=; fh=wcJXU+GRAJ+lFf7so8itXL2pGJ6fujr2XomH/f1be3s=; b=Bj/qJodkKsaq9pBedWS1yAkdo0xT0de7ufy887deUfwyRrnlh7JDUa+TsWn0K5Lt8U FQJjKMKMk9OSNEXv1w4jsP7fyL7ZwypnZxuLltJSsyQc9VF5eTF+JRkKas2kX2TCVGOc fIQ2wiiqu0w9nsI8AOe5gXzxzoI6PXLsHr0KLM3yNkLllaRY23P/icCPSmfdkFZ21GTQ ZFTIY2KCfYuzo+T1H6+yUPIEiLJIAUlm0uVd3e1u2mhio+E34bGmJUhVATqbMN5xyEw6 1j86r1qF9am4eTm6JRvK5gEHOcJzJh3g1CZyY90G9Ia7SgB3KKJOsRH8PMeeBzj24m3B kz7g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d19-20020a170906345300b009932537925bsi6753811ejb.578.2023.07.13.06.22.07; Thu, 13 Jul 2023 06:22:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234786AbjGMNRs (ORCPT + 99 others); Thu, 13 Jul 2023 09:17:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234802AbjGMNRb (ORCPT ); Thu, 13 Jul 2023 09:17:31 -0400 Received: from laurent.telenet-ops.be (laurent.telenet-ops.be [IPv6:2a02:1800:110:4::f00:19]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A4042713 for ; Thu, 13 Jul 2023 06:17:25 -0700 (PDT) Received: from ramsan.of.borg ([IPv6:2a02:1810:ac12:ed40:6264:77e5:42e2:477d]) by laurent.telenet-ops.be with bizsmtp id LdHN2A00V3wy6xv01dHNpc; Thu, 13 Jul 2023 15:17:23 +0200 Received: from rox.of.borg ([192.168.97.57]) by ramsan.of.borg with esmtp (Exim 4.95) (envelope-from ) id 1qJwC3-001Gr1-2r; Thu, 13 Jul 2023 15:17:22 +0200 Received: from geert by rox.of.borg with local (Exim 4.95) (envelope-from ) id 1qJwCA-00GWyl-PB; Thu, 13 Jul 2023 15:17:22 +0200 From: Geert Uytterhoeven To: Javier Martinez Canillas , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH 5/8] drm/client: Convert drm_mode_create_dumb() to drm_mode_addfb2() Date: Thu, 13 Jul 2023 15:17:13 +0200 Message-Id: <9090c1b423e0b56c8e906155fe53ff0841830a03.1689252746.git.geert@linux-m68k.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771311781689837961 X-GMAIL-MSGID: 1771311781689837961 Currently drm_client_buffer_addfb() uses the legacy drm_mode_addfb(), which uses bpp and depth to guess the wanted buffer format. However, drm_client_buffer_addfb() already knows the exact buffer format, so there is no need to convert back and forth between buffer format and bpp/depth, and the function can just call drm_mode_addfb2() directly instead. Signed-off-by: Geert Uytterhoeven Reviewed-by: Javier Martinez Canillas --- drivers/gpu/drm/drm_client.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c index f6292ba0e6fc3783..de660a25ad7c6f06 100644 --- a/drivers/gpu/drm/drm_client.c +++ b/drivers/gpu/drm/drm_client.c @@ -374,19 +374,16 @@ static int drm_client_buffer_addfb(struct drm_client_buffer *buffer, u32 handle) { struct drm_client_dev *client = buffer->client; - struct drm_mode_fb_cmd fb_req = { }; - const struct drm_format_info *info; + struct drm_mode_fb_cmd2 fb_req = { }; int ret; - info = drm_format_info(format); - fb_req.bpp = drm_format_info_bpp(info, 0); - fb_req.depth = info->depth; fb_req.width = width; fb_req.height = height; - fb_req.handle = handle; - fb_req.pitch = buffer->pitch; + fb_req.pixel_format = format; + fb_req.handles[0] = handle; + fb_req.pitches[0] = buffer->pitch; - ret = drm_mode_addfb(client->dev, &fb_req, client->file); + ret = drm_mode_addfb2(client->dev, &fb_req, client->file); if (ret) return ret; From patchwork Thu Jul 13 13:17:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 119904 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp1832162vqm; Thu, 13 Jul 2023 06:39:59 -0700 (PDT) X-Google-Smtp-Source: APBJJlGCYSy8v5orSvp3dkSe6IickEScFkvXbIvOoNAnQt1qW9RJgh+0pgONqnoXSQXCEDZitnTS X-Received: by 2002:a17:906:6bc6:b0:988:c3f9:3ad6 with SMTP id t6-20020a1709066bc600b00988c3f93ad6mr1251865ejs.42.1689255598945; Thu, 13 Jul 2023 06:39:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689255598; cv=none; d=google.com; s=arc-20160816; b=s5AlnSfglppKdCzSpFpNeihW2L4ykHFgL6ImUmLLdS9hmHABO1sIoDfEJdSF8TjDYp 6hb0S/RsZ2muw4Po1cErWCqOJ6XEEuT7E9D/1dyaB9veVkwEkpbLfmEjo9dWCzFq9jEz 8AeJswcMcd2twZpcXsO3A4tG1Qpj/Hz74yKRV4gnsWegXwm4WPKoKPD+DW8yHHQI1QPT jfBXkBHDMhdUPK/NsqRzXZfST01gwmVsg7azQ0KYnj70Z7r6/1EZAhDO8FL5y26ZhQl6 R98KtoawFZbR4X+NMmty73pSCS+btTyEzTTbr1wXcofYFnzpwU3OA0arTkb85VY/3uJm P9Rw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=5qu+QE9riGz/y4zhd8OaTLIVikldFWoR+1sQo0LuB7Q=; fh=wcJXU+GRAJ+lFf7so8itXL2pGJ6fujr2XomH/f1be3s=; b=dIXftgvK3dNipwK8lsT72wiaqeKFbG1ZhOV/sHRzG2ujuMf1/QX12iyErEmjeN2xlc XQmpUPYUZ6o1N9yJelQAd6szfZXWzWPKZ9K7cNRNc7OgV+ogPetkwK7yggnfTDIgaXz7 Ffy5n+jClPnsfRrGdmpGEIr83rZoTkFpsCJDq4TCGAJj0HLTiVp+1MfHuHl/JaQMrJSM PVOSqpLaUVjryR+yy6IxXsf7svPTL5JriF0pJoOOrAcWP0/CwyfDtYhfOG9cEJm8M9aV xDXPeklQWsMCBLQmiXgtc1PhFTGV0nnc4rY2LzRCQdpOLWpKOg5jBYo4Rcxf7Mh2YPpd QWvw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g19-20020a1709063b1300b0098e42bef73asi6422048ejf.98.2023.07.13.06.39.34; Thu, 13 Jul 2023 06:39:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234779AbjGMNRe (ORCPT + 99 others); Thu, 13 Jul 2023 09:17:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51120 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234748AbjGMNRb (ORCPT ); Thu, 13 Jul 2023 09:17:31 -0400 Received: from baptiste.telenet-ops.be (baptiste.telenet-ops.be [IPv6:2a02:1800:120:4::f00:13]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EE3BA2708 for ; Thu, 13 Jul 2023 06:17:25 -0700 (PDT) Received: from ramsan.of.borg ([IPv6:2a02:1810:ac12:ed40:6264:77e5:42e2:477d]) by baptiste.telenet-ops.be with bizsmtp id LdHN2A00V3wy6xv01dHPUr; Thu, 13 Jul 2023 15:17:23 +0200 Received: from rox.of.borg ([192.168.97.57]) by ramsan.of.borg with esmtp (Exim 4.95) (envelope-from ) id 1qJwC3-001Gr8-3Z; Thu, 13 Jul 2023 15:17:22 +0200 Received: from geert by rox.of.borg with local (Exim 4.95) (envelope-from ) id 1qJwCA-00GWyp-Pq; Thu, 13 Jul 2023 15:17:22 +0200 From: Geert Uytterhoeven To: Javier Martinez Canillas , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH 6/8] drm/fb-helper: Pass buffer format via drm_fb_helper_surface_size Date: Thu, 13 Jul 2023 15:17:14 +0200 Message-Id: <00790d022752b672a28256db7b9393eca0801b99.1689252746.git.geert@linux-m68k.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771312878776728602 X-GMAIL-MSGID: 1771312878776728602 drm_fb_helper_single_fb_probe() first calls drm_fb_helper_find_sizes(), followed by drm_fbdev_generic_helper_fb_probe(): - The former tries to find a suitable buffer format, taking into account limitations of the whole display pipeline, - The latter just calls drm_mode_legacy_fb_format() again. Simplify this by passing the buffer format between these functions via a new buffer format member in the drm_fb_helper_surface_size structure. Signed-off-by: Geert Uytterhoeven Reviewed-by: Javier Martinez Canillas --- drivers/gpu/drm/drm_fb_helper.c | 1 + drivers/gpu/drm/drm_fbdev_generic.c | 9 ++++----- include/drm/drm_fb_helper.h | 2 ++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 61a5d450cc20ef0a..e870b2ce7a8625e3 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1564,6 +1564,7 @@ static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, info = drm_format_info(surface_format); sizes->surface_bpp = drm_format_info_bpp(info, 0); sizes->surface_depth = info->depth; + sizes->surface_format = surface_format; /* first up get a count of crtcs now in use and new min/maxes width/heights */ crtc_count = 0; diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 98ae703848a02fa3..953056896c1a5652 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -77,16 +77,15 @@ static int drm_fbdev_generic_helper_fb_probe(struct drm_fb_helper *fb_helper, struct fb_info *info; size_t screen_size; void *screen_buffer; - u32 format; int ret; - drm_dbg_kms(dev, "surface width(%d), height(%d) and bpp(%d)\n", + drm_info(dev, "surface width(%d), height(%d), bpp(%d) and format(%p4cc)\n", sizes->surface_width, sizes->surface_height, - sizes->surface_bpp); + sizes->surface_bpp, &sizes->surface_format); - format = drm_mode_legacy_fb_format(sizes->surface_bpp, sizes->surface_depth); buffer = drm_client_framebuffer_create(client, sizes->surface_width, - sizes->surface_height, format); + sizes->surface_height, + sizes->surface_format); if (IS_ERR(buffer)) return PTR_ERR(buffer); diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index 4863b0f8299e89b6..430a17b530fa49e6 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -45,6 +45,7 @@ struct drm_fb_helper; * @surface_height: scanout buffer height * @surface_bpp: scanout buffer bpp * @surface_depth: scanout buffer depth + * @surface_format: scanout buffer format (optional) * * Note that the scanout surface width/height may be larger than the fbdev * width/height. In case of multiple displays, the scanout surface is sized @@ -61,6 +62,7 @@ struct drm_fb_helper_surface_size { u32 surface_height; u32 surface_bpp; u32 surface_depth; + u32 surface_format; }; /** From patchwork Thu Jul 13 13:17:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 119910 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp1833482vqm; Thu, 13 Jul 2023 06:42:26 -0700 (PDT) X-Google-Smtp-Source: APBJJlFUa3or1LLXys6meXHC+i0OgQ2X/mewZCacElpC6HsPZ5wsO90EdwPMMaYXrKZUa/dAWOtW X-Received: by 2002:a17:90a:9ab:b0:263:5efe:5ff with SMTP id 40-20020a17090a09ab00b002635efe05ffmr808755pjo.33.1689255746131; Thu, 13 Jul 2023 06:42:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689255746; cv=none; d=google.com; s=arc-20160816; b=HAI4X2mfxQMJs/pgO4/4cPb+V6VWbbUfEaxzCwluzlTYeKDXfLkj3WgeQ0yJx3gQPs mnouDmA1Rm+5kflO/3sxZWP5M8nKlEHp8OKEsNMMfr/fZOy9a5iaWi+/UoCi4XtDejhG 7a0rgF8fxQ3jkmIvV53/dPisSMX56bXYIh80DVnVrtN363bmJDm8+N6Fo/p0I0xKfVN1 9T/EU+Pk2Dd9M8GadEnU47P9XXhDfOoEAVfwDoIqszKTSXTMB/y1zOdGnRrxINus22ex JyNH1vidz02APH6mmODD4cs7Xba8+09/4t8j7KlK6FKhYvyxxwEXFD0Xb2OcFx/H4VP1 fMnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=pT2FE91ag9OkKnFDs9UKmMHUQrSCgwrljab+WLVkfdU=; fh=wcJXU+GRAJ+lFf7so8itXL2pGJ6fujr2XomH/f1be3s=; b=HwTHZ+PNlccnrfJhR5TgxjlhAOhq02ZbRCUSJMAlghfdnhZa0PoGFTqiYtrCJ5lIV7 paJDLb87oCxA9Suj+3csmxLMoWPevxgZo6K3YUm0qF/HNXLaZhHHF2MkhXWs/Bt0N95m CA+a1eySEBuv2ngRNXzoWBDuK9GzmETYK2gB9qWu9cLRXNFYPqGywK735xmNY3S+u6Wj 5DFgWu0EF9sW+RbIqHl34sJ7Cm65SRqV8HcQCzcJXvCJXsI1P9DbCa5KtYay8KJ8XZ8n 2pmO1x1sFGFwYG/ae2JSQ5tvwcafTqYWN8edj8u6E3HrGoYmCoR2tZgoC3yj6gMEO8X+ KQng== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i11-20020a17090a974b00b0026309d5ac17si1237693pjw.71.2023.07.13.06.42.13; Thu, 13 Jul 2023 06:42:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234829AbjGMNRi (ORCPT + 99 others); Thu, 13 Jul 2023 09:17:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51116 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231761AbjGMNRb (ORCPT ); Thu, 13 Jul 2023 09:17:31 -0400 Received: from michel.telenet-ops.be (michel.telenet-ops.be [IPv6:2a02:1800:110:4::f00:18]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 18EAC270A for ; Thu, 13 Jul 2023 06:17:25 -0700 (PDT) Received: from ramsan.of.borg ([IPv6:2a02:1810:ac12:ed40:6264:77e5:42e2:477d]) by michel.telenet-ops.be with bizsmtp id LdHN2A00d3wy6xv06dHNae; Thu, 13 Jul 2023 15:17:23 +0200 Received: from rox.of.borg ([192.168.97.57]) by ramsan.of.borg with esmtp (Exim 4.95) (envelope-from ) id 1qJwC3-001GrC-48; Thu, 13 Jul 2023 15:17:22 +0200 Received: from geert by rox.of.borg with local (Exim 4.95) (envelope-from ) id 1qJwCA-00GWyv-QU; Thu, 13 Jul 2023 15:17:22 +0200 From: Geert Uytterhoeven To: Javier Martinez Canillas , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH 7/8] drm/fb-helper: Add support for DRM_FORMAT_R1 Date: Thu, 13 Jul 2023 15:17:15 +0200 Message-Id: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771313033324352670 X-GMAIL-MSGID: 1771313033324352670 Add support for the monochrome light-on-dark buffer format (R1) to the fb helper, so this format can be used for fbdev emulation and for the text console. This avoids the overhead of using XR24 and the associated conversions on display hardware that supports only a simple monochrome format. R1 is very similar to C1 (monochrome indexed color), and shares the same depth and bpp. As drm_mode_legacy_fb_format() returns a format based on only depth and bpp, it cannot distinguish between R1 and C1. Hence drm_fb_helper_find_format() is modified to try to fall back to R1 if C1 is not supported. Signed-off-by: Geert Uytterhoeven Reviewed-by: Javier Martinez Canillas --- drivers/gpu/drm/drm_fb_helper.c | 41 ++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index e870b2ce7a8625e3..1f1bfa764b6b9f00 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1130,7 +1130,7 @@ static void drm_fb_helper_fill_pixel_fmt(struct fb_var_screeninfo *var, { u8 depth = format->depth; - if (format->is_color_indexed) { + if (format->format == DRM_FORMAT_R1 || format->is_color_indexed) { var->red.offset = 0; var->green.offset = 0; var->blue.offset = 0; @@ -1236,6 +1236,7 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var, case DRM_FORMAT_C1: case DRM_FORMAT_C2: case DRM_FORMAT_C4: + case DRM_FORMAT_R1: /* supported format with sub-byte pixels */ break; @@ -1439,12 +1440,24 @@ int drm_fb_helper_pan_display(struct fb_var_screeninfo *var, } EXPORT_SYMBOL(drm_fb_helper_pan_display); +static bool is_supported_format(uint32_t format, const uint32_t *formats, + size_t format_count) +{ + size_t i; + + for (i = 0; i < format_count; ++i) { + if (formats[i] == format) + return true; + } + + return false; +} + static uint32_t drm_fb_helper_find_format(struct drm_fb_helper *fb_helper, const uint32_t *formats, size_t format_count, uint32_t bpp, uint32_t depth) { struct drm_device *dev = fb_helper->dev; uint32_t format; - size_t i; /* * Do not consider YUV or other complicated formats @@ -1457,10 +1470,12 @@ static uint32_t drm_fb_helper_find_format(struct drm_fb_helper *fb_helper, const if (!format) goto err; - for (i = 0; i < format_count; ++i) { - if (formats[i] == format) - return format; - } + if (is_supported_format(format, formats, format_count)) + return format; + + if (format == DRM_FORMAT_C1 && + is_supported_format(DRM_FORMAT_R1, formats, format_count)) + return DRM_FORMAT_R1; err: /* We found nothing. */ @@ -1680,11 +1695,15 @@ static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper) } static void drm_fb_helper_fill_fix(struct fb_info *info, uint32_t pitch, - bool is_color_indexed) + const struct drm_format_info *format) { info->fix.type = FB_TYPE_PACKED_PIXELS; - info->fix.visual = is_color_indexed ? FB_VISUAL_PSEUDOCOLOR - : FB_VISUAL_TRUECOLOR; + if (format->format == DRM_FORMAT_R1) + info->fix.visual = FB_VISUAL_MONO10; + else if (format->is_color_indexed) + info->fix.visual = FB_VISUAL_PSEUDOCOLOR; + else + info->fix.visual = FB_VISUAL_TRUECOLOR; info->fix.mmio_start = 0; info->fix.mmio_len = 0; info->fix.type_aux = 0; @@ -1707,6 +1726,7 @@ static void drm_fb_helper_fill_var(struct fb_info *info, case DRM_FORMAT_C1: case DRM_FORMAT_C2: case DRM_FORMAT_C4: + case DRM_FORMAT_R1: /* supported format with sub-byte pixels */ break; @@ -1747,8 +1767,7 @@ void drm_fb_helper_fill_info(struct fb_info *info, { struct drm_framebuffer *fb = fb_helper->fb; - drm_fb_helper_fill_fix(info, fb->pitches[0], - fb->format->is_color_indexed); + drm_fb_helper_fill_fix(info, fb->pitches[0], fb->format); drm_fb_helper_fill_var(info, fb_helper, sizes->fb_width, sizes->fb_height); From patchwork Thu Jul 13 13:17:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 119885 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp1821159vqm; Thu, 13 Jul 2023 06:22:29 -0700 (PDT) X-Google-Smtp-Source: APBJJlHdu0rdYSfngV+u4ucxiAZWvmKMETc8dJi6qA1cOqCSyUmBnRT/P0WHbzJ9dg+YuixM+WYg X-Received: by 2002:a19:5016:0:b0:4f9:52f3:9a2b with SMTP id e22-20020a195016000000b004f952f39a2bmr1192023lfb.54.1689254549475; Thu, 13 Jul 2023 06:22:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689254549; cv=none; d=google.com; s=arc-20160816; b=sBNroku1/J2FWuFgeF1bK2ZWc8Rs9Mf+B9DQPcwkq7sPgtp0u0HoPdFnS0dLaiOPTz BgKo5Fkrj3cJv01vCHb2AEWlJ5euzoVwKzwm4qfVvx1uLISICWa9Fuqt/Flv01HBn1Uj /lraOloAfWgKnfXmvEvFfADR3smVNVoMnn9BJ/ksinJtq43eFnA/jLq62yzCEGt8ref/ 3SUZVlE+4oy3vliTZtIkNHiLZU7MxNd/FDdL/j6HkNRMycq08X4qwFiEcfmzvahZfuyG bBxe41d7NFjSDok5KDxhoWqf0rv7QXWrAIWMczodbd73XCibiU+VcQuDKKp1l5Pko9D3 nJKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=zCELy2khAkG4axRwZtPwY3iEsiDnFMjmxW3+rwsrrqw=; fh=wcJXU+GRAJ+lFf7so8itXL2pGJ6fujr2XomH/f1be3s=; b=ReGH2wI0RMtpzgkDFu5cAo/1KwthPmPLIKJUeGs1l89P54AoNAUWtAmjFm1Og7OX+1 3Q8xswFdqAV+YfdMqz1MZct8PS3sWjnkbzrMYW7EOPed0XhJMz9g4Jwt0TYS+ckZQtr4 NwTXo4+V7sW5ZE6+4NXPaIQjDyRLjCUWUoooNQCZ+6ueZiy0EZs4qeafhhK2zkqQUFMF XeQo7r4oGQvAAotoYN0+g4AZ3Fj+y7aPN14m+uHvDlVIU+rgLPTEBt//JUk+zvSNAkne gJZK2kzBkqNV8FV5+XomMSj2n8Dcc5kZRZPZca+TenhdA8RNyKNGpoCkZU9kakcPDAAH VOOw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w17-20020a056402071100b0051de55a2347si6742878edx.283.2023.07.13.06.22.05; Thu, 13 Jul 2023 06:22:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235112AbjGMNRr (ORCPT + 99 others); Thu, 13 Jul 2023 09:17:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234786AbjGMNRb (ORCPT ); Thu, 13 Jul 2023 09:17:31 -0400 Received: from xavier.telenet-ops.be (xavier.telenet-ops.be [IPv6:2a02:1800:120:4::f00:14]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A497271E for ; Thu, 13 Jul 2023 06:17:25 -0700 (PDT) Received: from ramsan.of.borg ([IPv6:2a02:1810:ac12:ed40:6264:77e5:42e2:477d]) by xavier.telenet-ops.be with bizsmtp id LdHN2A00N3wy6xv01dHNtD; Thu, 13 Jul 2023 15:17:23 +0200 Received: from rox.of.borg ([192.168.97.57]) by ramsan.of.borg with esmtp (Exim 4.95) (envelope-from ) id 1qJwC3-001GrG-4q; Thu, 13 Jul 2023 15:17:22 +0200 Received: from geert by rox.of.borg with local (Exim 4.95) (envelope-from ) id 1qJwCA-00GWyz-RB; Thu, 13 Jul 2023 15:17:22 +0200 From: Geert Uytterhoeven To: Javier Martinez Canillas , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH 8/8] drm/ssd130x: Switch preferred_bpp/depth to 1 Date: Thu, 13 Jul 2023 15:17:16 +0200 Message-Id: <6b97ca629131a8c1c047947a21b2c558ece9ce87.1689252746.git.geert@linux-m68k.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771311778308027098 X-GMAIL-MSGID: 1771311778308027098 The native display format is R1. Hence change the preferred_depth and preferred_bpp to 1, to avoid the overhead of using XR24 and the associated conversions when using fbdev emulation and its text console. Signed-off-by: Geert Uytterhoeven Reviewed-by: Javier Martinez Canillas --- drivers/gpu/drm/solomon/ssd130x.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ssd130x.c index 130e33a1ba3cba00..93af2e5fc816b5f0 100644 --- a/drivers/gpu/drm/solomon/ssd130x.c +++ b/drivers/gpu/drm/solomon/ssd130x.c @@ -945,7 +945,7 @@ static int ssd130x_init_modeset(struct ssd130x_device *ssd130x) drm->mode_config.max_width = max_width; drm->mode_config.min_height = mode->vdisplay; drm->mode_config.max_height = max_height; - drm->mode_config.preferred_depth = 24; + drm->mode_config.preferred_depth = 1; drm->mode_config.funcs = &ssd130x_mode_config_funcs; /* Primary plane */ @@ -1075,7 +1075,7 @@ struct ssd130x_device *ssd130x_probe(struct device *dev, struct regmap *regmap) if (ret) return ERR_PTR(dev_err_probe(dev, ret, "DRM device register failed\n")); - drm_fbdev_generic_setup(drm, 32); + drm_fbdev_generic_setup(drm, 1); return ssd130x; }