From: Willy Tarreau <w@1wt.eu>
To: Lars Poeschel <poeschel@lemonage.de>
Cc: Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>,
open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 28/32] auxdisplay: hd44780: Remove clear_fast
Date: Tue, 22 Sep 2020 11:21:21 +0200 [thread overview]
Message-ID: <20200922092121.GG16421@1wt.eu> (raw)
In-Reply-To: <20200922084912.sck4j3iazqevaskg@lem-wkst-02.lemonage>
On Tue, Sep 22, 2020 at 10:49:12AM +0200, Lars Poeschel wrote:
> > I might have got confused, but it looks to me like patches 27 and 28
> > basically undo patch 26: in 26 you moved code to hd44780 and wrote a
> > fallback, just to later delete that code.
>
> To be honest: I also got confused by this whole clear code and why are
> there 3 different clear variants. ;-)
> The reason why I did it this way is to show what happened to the
> original code. The original code has a fallback that kind of does the
> same like my naive implementation but it uses the fact, that on hd44780
> displays the underlying buffer can be accessed in a linear manner to
> speed things up a little. This then also clears the not visible area of
> the buffer (which my naive implementation does not). To become
> independent of hd44780 code at this point I had to do something.
> I opted to for this naive implementation as a replacement for the old
> optimized clear loop. The fallback was already there.
> And then I did a separate step to remove it because I found it a bit
> suboptimal. All current users have the clear command...
I'm not contesting your naive implementation, it just looks to me that
patch 26 adds it while moving code that patch 27 removes, and patch 28
removes it. So I don't understand why not to remove it entirely in the
first place. It's possible I missed something related to other users of
that code but that wasn't clear from the patch nor the descriptions.
> > I seem to remember that the reason for the clear_fast() implementation
> > is that the default clear_display() is quite slow for small displays,
> > compared to what can be achieved by just filling the display with spaces
> > (in the order of tens of milliseconds vs hundreds of microseconds). But
> > I could be mistaken given how old this is, so please take my comment
> > with a grain of salt.
>
> ... well, and what the hd44780 controller does when it executes the
> clear command is also writing a space character to all character
> locations (also to the not visible ones). Probably very much the same
> than the original fallback implementation.
I've just checked on some old datasheets, and indeed the Display clear
command takes up to 1.6 ms, which looks very reasonable. But the charlcd
code currently sleeps 15 ms, which is 10 times more than needed. I've
just found its roots inside the panel-0.8.1 version that changed the delay
from 1ms to 15ms on 2001/11/10, and added the lcd_clear_fast() function
as a workaround. Thus probably 1ms was too short for the 1.6 ms spec,
but 15ms was needlessly high. So I think we can get rid of all of this
indeed!
> For me issuing the clear command is faster by at least one order!
> I have one of these cheap china displays with 4x20 characters. The flow
> is like this: i2c -> gpio -> hd44780 in 4 bit mode. And gpio is issuing
> a i2c request for EVERY SINGLE gpio. This is slow as hell. But it works.
> :-)
Good point for sur over i2c it would stink a little bit! Same for those
using 9600 bps serial interfaces.
> As I said I also was a bit confused by the different clean
> implementations, but the only real user of the clear_fast is the panel
> driver. The hd44780 one I use did not provide a clear_fast.
>
> So I would opt for the way I proposed in the patch series with the clear
> command instead of the loop. And let the panel driver use its optimized
> clear.
Or we could align the panel driver to get rid of it as well.
Thanks for the explanation,
Willy
next prev parent reply other threads:[~2020-09-22 9:21 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-16 8:24 [PATCH 1/3] auxdisplay: Make charlcd.[ch] more general Lars Poeschel
2019-10-16 8:26 ` [PATCH 2/3] auxdisplay: lcd2s DT binding doc Lars Poeschel
2019-10-29 1:24 ` Rob Herring
2019-10-16 8:27 ` [PATCH 3/3] auxdisplay: add a driver for lcd2s character display Lars Poeschel
2019-10-16 16:53 ` [PATCH 1/3] auxdisplay: Make charlcd.[ch] more general Miguel Ojeda
2019-10-17 8:07 ` Lars Poeschel
2019-10-17 11:26 ` Andy Shevchenko
2019-10-18 15:08 ` Miguel Ojeda
2019-10-18 15:33 ` Joe Perches
2019-10-18 21:55 ` Andi Kleen
2020-09-21 14:46 ` [PATCH v2 00/33] Make charlcd device independent poeschel
2020-09-21 14:46 ` [PATCH v2 01/32] auxdisplay: Use an enum for charlcd backlight on/off ops poeschel
2020-09-21 14:46 ` [PATCH v2 02/32] auxdisplay: Introduce hd44780_common.[ch] poeschel
2020-09-21 15:30 ` Randy Dunlap
2020-09-21 14:46 ` [PATCH v2 03/32] auxdisplay: Move hwidth and bwidth to struct hd44780_common poeschel
2020-09-21 14:46 ` [PATCH v2 04/32] auxdisplay: Move ifwidth " poeschel
2020-09-21 14:46 ` [PATCH v2 05/32] auxdisplay: Move write_data pointer to hd44780_common poeschel
2020-09-21 14:46 ` [PATCH v2 06/32] auxdisplay: Move write_cmd pointers to hd44780 drivers poeschel
2020-09-21 14:46 ` [PATCH v2 07/32] auxdisplay: Move addr out of charlcd_priv poeschel
2020-09-21 14:46 ` [PATCH v2 08/32] auxdisplay: hd44780_common_print poeschel
2020-09-22 6:31 ` kernel test robot
2020-09-21 14:46 ` [PATCH v2 09/32] auxdisplay: provide hd44780_common_gotoxy poeschel
2020-09-21 14:46 ` [PATCH v2 10/32] auxdisplay: add home to charlcd_ops poeschel
2020-09-21 14:46 ` [PATCH v2 11/32] auxdisplay: Move clear_display to hd44780_common poeschel
2020-09-21 14:46 ` [PATCH v2 12/32] auxdisplay: make charlcd_backlight visible " poeschel
2020-09-21 14:46 ` [PATCH v2 13/32] auxdisplay: Make use of enum for backlight on / off poeschel
2020-09-21 14:46 ` [PATCH v2 14/32] auxdisplay: Move init_display to hd44780_common poeschel
2020-09-21 14:46 ` [PATCH v2 15/32] auxdisplay: implement hd44780_common_shift_cursor poeschel
2020-09-21 14:46 ` [PATCH v2 16/32] auxdisplay: Implement hd44780_common_display_shift poeschel
2020-09-21 14:46 ` [PATCH v2 17/32] auxdisplay: Implement a hd44780_common_display poeschel
2020-09-21 14:46 ` [PATCH v2 18/32] auxdisplay: Implement hd44780_common_cursor poeschel
2020-09-21 14:46 ` [PATCH v2 19/32] auxdisplay: Implement hd44780_common_blink poeschel
2020-09-21 14:46 ` [PATCH v2 20/32] auxdisplay: cleanup unnecessary hd44780 code in charlcd poeschel
2020-09-21 14:46 ` [PATCH v2 21/32] auxdisplay: Implement hd44780_common_fontsize poeschel
2020-09-21 14:46 ` [PATCH v2 22/32] auxdisplay: Implement hd44780_common_lines poeschel
2020-09-21 14:46 ` [PATCH v2 23/32] auxdisplay: Remove unnecessary hd44780 from charlcd poeschel
2020-09-21 14:46 ` [PATCH v2 24/32] auxdisplay: Move char redefine code to hd44780_common poeschel
2020-09-21 14:46 ` [PATCH v2 25/32] auxdisplay: Call charlcd_backlight in place poeschel
2020-09-21 14:46 ` [PATCH v2 26/32] auxdisplay: Move clear_fast to hd44780 poeschel
2020-09-21 14:46 ` [PATCH v2 27/32] auxdisplay: remove naive display clear impl poeschel
2020-09-21 14:46 ` [PATCH v2 28/32] auxdisplay: hd44780: Remove clear_fast poeschel
2020-09-22 5:22 ` Willy Tarreau
2020-09-22 8:49 ` Lars Poeschel
2020-09-22 9:21 ` Willy Tarreau [this message]
2020-09-22 11:51 ` Lars Poeschel
2020-09-21 14:46 ` [PATCH v2 29/32] auxdisplay: charlcd: replace last device specific stuff poeschel
2020-09-21 14:46 ` [PATCH v2 30/32] auxdisplay: Change gotoxy calling interface poeschel
2020-09-21 14:46 ` [PATCH v2 31/32] auxdisplay: charlcd: Do not print chars at end of line poeschel
2020-09-22 5:27 ` Willy Tarreau
2020-09-22 9:44 ` Lars Poeschel
2020-09-22 10:04 ` Willy Tarreau
2020-09-22 10:20 ` Miguel Ojeda
2020-09-22 11:51 ` Lars Poeschel
2020-09-21 14:46 ` [PATCH v2 32/32] auxdisplay: lcd2s DT binding doc poeschel
2020-09-22 15:58 ` Rob Herring
2020-10-02 13:45 ` Lars Poeschel
2020-09-21 14:46 ` [PATCH v2 33/33] auxdisplay: add a driver for lcd2s character display poeschel
2020-09-21 15:33 ` Randy Dunlap
2020-10-02 12:42 ` Pavel Machek
2020-10-02 13:15 ` Lars Poeschel
2020-09-22 5:31 ` [PATCH v2 00/33] Make charlcd device independent Willy Tarreau
2020-09-22 10:23 ` Miguel Ojeda
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200922092121.GG16421@1wt.eu \
--to=w@1wt.eu \
--cc=linux-kernel@vger.kernel.org \
--cc=miguel.ojeda.sandonis@gmail.com \
--cc=poeschel@lemonage.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.