From patchwork Tue May 18 08:28:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 12264219 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=-11.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,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 C97F8C43461 for ; Tue, 18 May 2021 09:06:05 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 689546108D for ; Tue, 18 May 2021 09:06:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 689546108D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 987906EAF0; Tue, 18 May 2021 09:05:57 +0000 (UTC) Received: from andre.telenet-ops.be (andre.telenet-ops.be [IPv6:2a02:1800:120:4::f00:15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9E4716EADE for ; Tue, 18 May 2021 09:05:55 +0000 (UTC) Received: from ramsan.of.borg ([IPv6:2a02:1810:ac12:ed20:c161:a89e:52bd:1787]) by andre.telenet-ops.be with bizsmtp id 695s2500U446CkP0195sSH; Tue, 18 May 2021 11:05:52 +0200 Received: from rox.of.borg ([192.168.97.57]) by ramsan.of.borg with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.93) (envelope-from ) id 1livfk-006q2F-2z; Tue, 18 May 2021 11:05:52 +0200 Received: from geert by rox.of.borg with local (Exim 4.93) (envelope-from ) id 1liv5J-0069n1-Kq; Tue, 18 May 2021 10:28:13 +0200 From: Geert Uytterhoeven To: Maxime Ripard , David Airlie , Daniel Vetter Subject: [PATCH 0/5] video: fbdev: ssd1307fb: Optimizations and improvements Date: Tue, 18 May 2021 10:28:04 +0200 Message-Id: <20210518082809.1467549-1-geert@linux-m68k.org> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-fbdev@vger.kernel.org, Geert Uytterhoeven , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi all, This patch series optimizes console operations on ssd1307fb, after the customary fixes and cleanups. Currently, each screen update triggers an I2C transfer of all screen data, up to 1 KiB of data for a 128x64 display, which takes at least 20 ms in Fast mode. While many displays are smaller, and thus require less data to be transferred, 20 ms is still an optimistic value, as the actual data transfer may be much slower, especially on bitbanged I2C drivers. After this series, the amount of data transfer is reduced, as fillrect, copyarea, and imageblit only update the rectangle that changed. This has been tested on an Adafruit FeatherWing OLED with an SSD1306 controller and a 128x32 OLED, connected to an OrangeCrab ECP5 FPGA board running a 64 MHz VexRiscv RISC-V softcore, where it reduced the CPU usage for blinking the cursor from more than 70% to ca. 10%. Thanks for your comments! Geert Uytterhoeven (5): video: fbdev: ssd1307fb: Propagate errors via ssd1307fb_update_display() video: fbdev: ssd1307fb: Simplify ssd1307fb_update_display() video: fbdev: ssd1307fb: Extract ssd1307fb_set_address_range() video: fbdev: ssd1307fb: Optimize screen updates video: fbdev: ssd1307fb: Cache address ranges drivers/video/fbdev/ssd1307fb.c | 143 +++++++++++++++++++++----------- 1 file changed, 96 insertions(+), 47 deletions(-)