Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp1118281pxv; Fri, 25 Jun 2021 06:00:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzmcHYQbVWypDA7G7xuBtFoqNzjS8sT1EHv0ESJZVoSRqJUu4G5bG6uoQAqzxTzAfIVgVco X-Received: by 2002:a05:6402:51:: with SMTP id f17mr14208570edu.359.1624626041131; Fri, 25 Jun 2021 06:00:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624626041; cv=none; d=google.com; s=arc-20160816; b=muXl707NSdDU5+AYroPBhn4Li62YrTP2sya+7QtHOwEyUHuDX6Orj2WXE39naNrEOc DxHmncuYgKEL4MNktvyBfghCBbWIh+Z9vqr0vDvFgOI4ehEKLrO0Y/aVC0hqGV1NLqBX Lj/bD0nU7rZl6tW1wtW1T+5xsDmmA0iNK59WcfhcVczNM4QnrOs9DimT4gqo07baWidU ViR2edcWp5XCnjyJfn/zYq7RYP04B1NW1OjlmnMwcPslbGrmzCajBh3GaO+7VPk0ECJk 0+FUsXnCETIKCd/QsxGezi2+t/bhVTfCIl05/jYasVYaXwu/Gf9zBm69gntd+nd01pkF Hd0w== 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 :message-id:date:subject:cc:to:from; bh=DLlsRfSEaoHOeauQvwVuJFEygj4R2PWlurcqRRIqEZ4=; b=BgvBlqZfhK2MvZeezcG4SC0Xgi5vo85fk73JXaGrXsVAATZFit+l06SxPEr4Klk0C+ i56YNJf4DBv4UjG9weK1foy7b754g0mgvpNGafCNRpzzKGS3cFQi/aOjTKol9bKI5QRI 2fvJR692RwC3rmjFmFbzwxQ9xLY1nWnFri+EzvGHN8Z14wlpQqDt0hicuxEKwfgVINpq +emrXUPcdjmhPDboWepibxYh9ylwyCVmzXsIlFlI4ogXpTIEA8ZvhEj69OnNOywtiRkP UVxVOqIap7LR09y0oQB19LPEjOH6NvJoxAo9+eeFe34WPLpfhvRGnuXD0sPn/FR5hsLV pCWw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t17si1406078ejb.732.2021.06.25.06.00.17; Fri, 25 Jun 2021 06:00:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231532AbhFYNBk (ORCPT + 99 others); Fri, 25 Jun 2021 09:01:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37118 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231512AbhFYNBi (ORCPT ); Fri, 25 Jun 2021 09:01:38 -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 34BAFC0617A6 for ; Fri, 25 Jun 2021 05:59:17 -0700 (PDT) Received: from ramsan.of.borg ([IPv6:2a02:1810:ac12:ed20:1476:ce84:e216:add8]) by baptiste.telenet-ops.be with bizsmtp id MQzC250052B1U9901QzC7K; Fri, 25 Jun 2021 14:59:13 +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 1lwlQN-003TM9-PD; Fri, 25 Jun 2021 14:59:11 +0200 Received: from geert by rox.of.borg with local (Exim 4.93) (envelope-from ) id 1lwlQN-004sPw-Dn; Fri, 25 Jun 2021 14:59:11 +0200 From: Geert Uytterhoeven To: Robin van der Gracht , Rob Herring , Miguel Ojeda , Paul Burton , Greg Kroah-Hartman , Pavel Machek Cc: devicetree@vger.kernel.org, linux-leds@vger.kernel.org, linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH v2 00/18] auxdisplay: ht16k33: Add character display support Date: Fri, 25 Jun 2021 14:58:44 +0200 Message-Id: <20210625125902.1162428-1-geert@linux-m68k.org> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi all, The Holtek HT16K33 LED controller is not only used for driving dot-matrix displays, but also for driving segment displays. The current auxdisplay driver is limited to dot-matrix displays, which are exposed as a frame buffer device. This patch series extends the driver to 4-digit 7-segment and quad 14-segment alphanumeric displays, allowing the user to display and scroll text messages. List of patches: - Patch 1 provides font data for displaying ASCII characters on 14-segment displays, - Patch 2 updates the HT16K33 DT bindings for segment displays, - Patches 3-5 contain a bug fix and small improvements for the Imagination Technologies ASCII LCD Display driver, - Patch 6 extracts the character line display core support from the Imagination Technologies ASCII LCD Display driver, for reuse, - Patches 7-8 contain cleanups and improvements for the character line display core driver, - Patches 9-16 contain a bug fix, cleanups and improvements for the HT16K33 driver, to prepare for segment display support, - Patch 17 adds support for 7/14-segment displays to the HT16K33 driver, - Patch 18 adds segment display LED support to the HT16K33 driver, to make use of hardware blinking, and to expose display color. Changes compared to v1[1]: - Fix type of color to uint32, - "refresh-rate-hz" is still required for dot-matrix displays. - Move "select LINEDISP" for HT16K33 symbol to correct patch, - Add backwards compatibility "message" symlink to img-ascii-lcd, - Connect backlight to fbdev in ht16k33 dot-matrix mode, - Set "err = -EINVAL" in switch() case that cannot happen, - Use "auxdisplay" instead of DRIVER_NAME in LED name. This series has been tested using an Adafruit 0.54" Quad Alphanumeric Red FeatherWing Display, plugged into an OrangeCrab ECP5-based FPGA board running linux-on-litex-vexriscv. 7-segment display support is based purely on schematics, and has not been tested on actual hardware. The changes to img-ascii-lcd.c are also untested, due to lack of hardware. Thanks for your comments! [1] "[PATCH 00/17] auxdisplay: ht16k33: Add character display support" https://lore.kernel.org/r/20210322144848.1065067-1-geert@linux-m68k.org/ Geert Uytterhoeven (18): uapi: Add dt-bindings: auxdisplay: ht16k33: Document Adafruit segment displays auxdisplay: img-ascii-lcd: Fix lock-up when displaying empty string auxdisplay: img-ascii-lcd: Add helper variable dev auxdisplay: img-ascii-lcd: Convert device attribute to sysfs_emit() auxdisplay: Extract character line display core support auxdisplay: linedisp: Use kmemdup_nul() helper auxdisplay: linedisp: Add support for changing scroll rate auxdisplay: ht16k33: Connect backlight to fbdev auxdisplay: ht16k33: Use HT16K33_FB_SIZE in ht16k33_initialize() auxdisplay: ht16k33: Remove unneeded error check in keypad probe() auxdisplay: ht16k33: Convert to simple i2c probe function auxdisplay: ht16k33: Add helper variable dev auxdisplay: ht16k33: Move delayed work auxdisplay: ht16k33: Extract ht16k33_brightness_set() auxdisplay: ht16k33: Extract frame buffer probing auxdisplay: ht16k33: Add support for segment displays auxdisplay: ht16k33: Add segment display LED support .../bindings/auxdisplay/holtek,ht16k33.yaml | 31 +- drivers/auxdisplay/Kconfig | 8 + drivers/auxdisplay/Makefile | 1 + drivers/auxdisplay/ht16k33.c | 458 ++++++++++++++---- drivers/auxdisplay/img-ascii-lcd.c | 206 ++------ drivers/auxdisplay/line-display.c | 261 ++++++++++ drivers/auxdisplay/line-display.h | 43 ++ include/uapi/linux/map_to_14segment.h | 239 +++++++++ 8 files changed, 989 insertions(+), 258 deletions(-) create mode 100644 drivers/auxdisplay/line-display.c create mode 100644 drivers/auxdisplay/line-display.h create mode 100644 include/uapi/linux/map_to_14segment.h -- 2.25.1 Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds