Re: [RFC PATCH 4/6] serio: serport: add support for buffered write and receive
From: Pavel Machek <hidden>
Date: 2016-08-26 22:24:31
Also in:
linux-bluetooth, lkml
On Fri 2016-08-26 16:27:35, Rob Herring wrote:
On Fri, Aug 26, 2016 at 3:12 PM, Pavel Machek [off-list ref] wrote:quoted
Hi!quoted
@@ -133,26 +133,29 @@ static void serport_ldisc_receive(struct tty_struct *tty, const unsigned char *c if (!test_bit(SERPORT_ACTIVE, &serport->flags)) goto out; - for (i = 0; i < count; i++) { - if (fp) { - switch (fp[i]) { - case TTY_FRAME: - ch_flags = SERIO_FRAME; - break; - - case TTY_PARITY: - ch_flags = SERIO_PARITY; - break; - - default: - ch_flags = 0; - break; + if (serio_buffered_mode_enabled(serport->serio)) { + serio_receive_buf(serport->serio, cp, count);Elsewhere: + /* Use buffer receive if the driver provides a callback */ + if (drv->receive_buf) + set_bit(SERIO_MODE_BUFFERED, &drv->flags); Could we use if (drv->receive_buf) above directly, and not require the bitfield?I'm allowing for allowing drivers to provide both functions and be able to switch between them. However, I didn't provide any mechanism to do so yet.
Dunno -- does switching make sense? IMO we'd want to migrate all the drivers to the "blocks" interface... no need to switch between the two. Best regards, Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html