Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3248118pxk; Mon, 5 Oct 2020 05:14:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyiM29XoGPHSkct8yuWd2OSbE8Ukao8EDkXKnQgTslubLePXT/WvCP7qI0jUr9Oi0JRtgMy X-Received: by 2002:aa7:d988:: with SMTP id u8mr11242376eds.64.1601900040042; Mon, 05 Oct 2020 05:14:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601900040; cv=none; d=google.com; s=arc-20160816; b=e469e1kaTXOk6DL/Igs6tlfYxbfc92q8P+0LBZwHRgKOCeMz/PPbK/eiA7/mRdO1jp jbx/vCgV0BajCHHv0KLxDUziGjsMYd7OqF4kwOR8TizCHn05s5Cw4O0gYaMaTmH4Ej6O Fs/fldsQzpTEteTBkeMO05yGhSX3uLyf1ltbtBOUshhQmGJqasCjthaD8S+VDEExGyaJ yv+d6BNw2iecKQGtB1P2c1f8LsN0yD3d0G/L2Rrx6a9mNkdJhprXcksFXSq3DyXEazyh lc+86dMjW4tdqPcIo5HD26bYN6F0ZNjQO5BUGlf9n4zRWS5oicn88zMmYj8DwSYwt/52 dvrA== 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=SOw259Y8+ADs8eQZMtMFzvpIU4RzolduX6I2z/VRBWY=; b=gRug/6q4jUKJmgiJ3zURtlbzv1EGXpS0/2X79+xVipjjuMjjBDO8d8Iboqgh+v6euz bFxdxNkTCIYu6zjhEvyqYHZLu7qubwk7gGXy/f9RzpLpIzrCo89F2dSA3YzNbcZast5a lADDypeH6iUA+PbUaeZEsz6idGqtDrxYxr9GRXAyR/dJnsHUTw2IhyZh8ihe5jalCcBf UptZr23bEF9cRCtpskZC0NGbHU4pH51x9DM/mv+LvsGVwOGlWwbhDfE33rG8wwX+beS4 fnYrF64ceGVYhMNI7ErXUyC6OwYn5qf7Iaxkc3lUGsejDPt1C/XZjlJm3orraJf737Vh dvwA== 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 ak12si4047762ejc.728.2020.10.05.05.13.37; Mon, 05 Oct 2020 05:14:00 -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 S1725973AbgJEMMU (ORCPT + 99 others); Mon, 5 Oct 2020 08:12:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46326 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725960AbgJEMMT (ORCPT ); Mon, 5 Oct 2020 08:12:19 -0400 Received: from smtp2-2.goneo.de (smtp2.goneo.de [IPv6:2001:1640:5::8:33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E97A4C0613A7 for ; Mon, 5 Oct 2020 05:12:18 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by smtp2.goneo.de (Postfix) with ESMTP id 74EBC23F8B9; Mon, 5 Oct 2020 14:12:17 +0200 (CEST) X-Virus-Scanned: by goneo X-Spam-Flag: NO X-Spam-Score: -2.996 X-Spam-Level: X-Spam-Status: No, score=-2.996 tagged_above=-999 tests=[ALL_TRUSTED=-1, AWL=-0.096, BAYES_00=-1.9] autolearn=ham Received: from smtp2.goneo.de ([127.0.0.1]) by localhost (smtp2.goneo.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id UNJ50ltrtRyG; Mon, 5 Oct 2020 14:12:16 +0200 (CEST) Received: from lem-wkst-02.lemonage.de. (hq.lemonage.de [87.138.178.34]) by smtp2.goneo.de (Postfix) with ESMTPA id C1D5623F823; Mon, 5 Oct 2020 14:12:15 +0200 (CEST) From: poeschel@lemonage.de To: Miguel Ojeda Sandonis , Willy Tarreau , Ksenija Stanojevic , linux-kernel@vger.kernel.org Cc: Lars Poeschel Subject: [PATCH v3 00/32] Make charlcd device independent Date: Mon, 5 Oct 2020 14:11:28 +0200 Message-Id: <20201005121200.3427363-1-poeschel@lemonage.de> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Lars Poeschel This tries to make charlcd device independent. At the moment hd44780 device specific code is contained deep in charlcd. This moves this out into a hd44780_common module, where the two hd44780 drivers we have at the moment (hd44780 and panel) can use this from. The goal is that at the end other drivers can use the charlcd interface. I add one such driver at the end with the last patch. I submitted this already some time ago, where the wish was so split this into smaller chunks what I try to do with this new patchset. Most of the patches pick one specific function in charlcd and move the device specific code into hd44780_common. As a note to patch 30: This might slightly change behaviour. On hd44780 displays with one or two lines the previous implementation did still write characters to the buffer of the display even if they are currently not visible. The shift_display command could be used so set the "viewing window" to a new position in the buffer and then you could see the characters previously written. This described behaviour does not work for hd44780 displays with more than two display lines. There simply is not enough buffer. So the behaviour was a bit inconsistens across different displays. The new behaviour is to stop writing character at the end of a visible line, even if there would be room in the buffer. This allows us to have an easy implementation, that should behave equal on all supported displays. This is not hd44780 hardware dependents anymore. Link: https://lore.kernel.org/lkml/20191016082430.5955-1-poeschel@lemonage.de/ Link: https://lore.kernel.org/lkml/CANiq72kS-u_Xd_m+2CQVh-JCncPf1XNXrXAZ=4z+mze8fwv2kw@mail.gmail.com/ Lars Poeschel (32): auxdisplay: Use an enum for charlcd backlight on/off ops auxdisplay: Introduce hd44780_common.[ch] auxdisplay: Move hwidth and bwidth to struct hd44780_common auxdisplay: Move ifwidth to struct hd44780_common auxdisplay: Move write_data pointer to hd44780_common auxdisplay: Move write_cmd pointers to hd44780 drivers auxdisplay: Move addr out of charlcd_priv auxdisplay: hd44780_common_print auxdisplay: provide hd44780_common_gotoxy auxdisplay: add home to charlcd_ops auxdisplay: Move clear_display to hd44780_common auxdisplay: make charlcd_backlight visible to hd44780_common auxdisplay: Make use of enum for backlight on / off auxdisplay: Move init_display to hd44780_common auxdisplay: implement hd44780_common_shift_cursor auxdisplay: Implement hd44780_common_display_shift auxdisplay: Implement a hd44780_common_display auxdisplay: Implement hd44780_common_cursor auxdisplay: Implement hd44780_common_blink auxdisplay: cleanup unnecessary hd44780 code in charlcd auxdisplay: Implement hd44780_common_fontsize auxdisplay: Implement hd44780_common_lines auxdisplay: Remove unnecessary hd44780 from charlcd auxdisplay: Move char redefine code to hd44780_common auxdisplay: Call charlcd_backlight in place auxdisplay: hd44780_common: Reduce clear_display timeout auxdisplay: hd44780: Remove clear_fast auxdisplay: charlcd: replace last device specific stuff auxdisplay: Change gotoxy calling interface auxdisplay: charlcd: Do not print chars at end of line auxdisplay: lcd2s DT binding doc auxdisplay: add a driver for lcd2s character display .../bindings/auxdisplay/modtronix,lcd2s.yaml | 58 +++ .../devicetree/bindings/vendor-prefixes.yaml | 2 + drivers/auxdisplay/Kconfig | 31 ++ drivers/auxdisplay/Makefile | 2 + drivers/auxdisplay/charlcd.c | 412 +++++------------- drivers/auxdisplay/charlcd.h | 86 +++- drivers/auxdisplay/hd44780.c | 120 +++-- drivers/auxdisplay/hd44780_common.c | 368 ++++++++++++++++ drivers/auxdisplay/hd44780_common.h | 34 ++ drivers/auxdisplay/lcd2s.c | 409 +++++++++++++++++ drivers/auxdisplay/panel.c | 180 ++++---- 11 files changed, 1252 insertions(+), 450 deletions(-) create mode 100644 Documentation/devicetree/bindings/auxdisplay/modtronix,lcd2s.yaml create mode 100644 drivers/auxdisplay/hd44780_common.c create mode 100644 drivers/auxdisplay/hd44780_common.h create mode 100644 drivers/auxdisplay/lcd2s.c -- 2.28.0