Re: [RFC PATCH 4/6] serio: serport: add support for buffered write and receive

From: Rob Herring
Date: Fri Aug 26 2016 - 17:37:46 EST


On Fri, Aug 26, 2016 at 3:12 PM, Pavel Machek <pavel@xxxxxx> wrote:
> Hi!
>
>> @@ -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.

Rob