Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 232426
b: refs/heads/master
c: 48c2701
h: refs/heads/master
v: v3
  • Loading branch information
David Engraf authored and Dmitry Torokhov committed Jan 21, 2011
1 parent f6889ad commit 4782161
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b0f05aadf1516c166ba301b7a535bc9429ce1961
refs/heads/master: 48c27016e18f8608c12b7516515ad773093198d8
24 changes: 20 additions & 4 deletions trunk/drivers/input/serio/serport.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,23 +116,39 @@ static void serport_ldisc_close(struct tty_struct *tty)

/*
* serport_ldisc_receive() is called by the low level tty driver when characters
* are ready for us. We forward the characters, one by one to the 'interrupt'
* routine.
* are ready for us. We forward the characters and flags, one by one to the
* 'interrupt' routine.
*/

static void serport_ldisc_receive(struct tty_struct *tty, const unsigned char *cp, char *fp, int count)
{
struct serport *serport = (struct serport*) tty->disc_data;
unsigned long flags;
unsigned int ch_flags;
int i;

spin_lock_irqsave(&serport->lock, flags);

if (!test_bit(SERPORT_ACTIVE, &serport->flags))
goto out;

for (i = 0; i < count; i++)
serio_interrupt(serport->serio, cp[i], 0);
for (i = 0; i < count; i++) {
switch (fp[i]) {
case TTY_FRAME:
ch_flags = SERIO_FRAME;
break;

case TTY_PARITY:
ch_flags = SERIO_PARITY;
break;

default:
ch_flags = 0;
break;
}

serio_interrupt(serport->serio, cp[i], ch_flags);
}

out:
spin_unlock_irqrestore(&serport->lock, flags);
Expand Down

0 comments on commit 4782161

Please sign in to comment.