serio: allow registered drivers to get status flag
Subsystems (2)
PATCH 1/1 serio: allow registered drivers to get status flag
Parse the status byte information to the registered serio drivers as well as the character bytes.
drivers/input/serio/serport.c renamed from drivers/input/serio/serport.c.orig +3 -3
@@ -116,8 +116,8 @@ static void serport_ldisc_close(struct t/* * 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)
@@ -132,7 +132,7 @@ static void serport_ldisc_receive(struct goto out;for (i =0 ; i < count; i++) -serio_interrupt (serport->serio, cp[i],0 ); +serio_interrupt (serport->serio, cp[i], fp[i]); out:spin_unlock_irqrestore (&serport->lock, flags);
Dmitry Torokhov
maintainerQuoted 20 lines · David Engraf
Parse the status byte information to the registered serio drivers as well as the character bytes.
Signed-off-by David Engraf <[email protected]>drivers/input/serio/serport.c renamed from drivers/input/serio/serport.c.orig +2
-2@@ -116,8 +116,8 @@ static void serport_ldisc_close(struct t/* * 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)
drivers/input/serio/serport.c static void serport_ldisc_receive(struct · line 136
Quoted 6 lines
drivers/input/serio/serport.c renamed from drivers/input/serio/serport.c.orig +1
-1@@ -132,7 +132,7 @@ static void serport_ldisc_receive(struct goto out;for (i =0 ; i < count; i++) -serio_interrupt (serport->serio, cp[i],0 ); +serio_interrupt (serport->serio, cp[i], fp[i]);
Hi David,
The flags argument that serio_interrupt() accepts not the raw protocol data, but sanitized, protocol-independent SERIO_TIMEOUT, SERIO_PARITY and SERIO_FRAME bits.
Thanks.
Signature · 1 line
Dmitry
Am 18.01.2011 20:57, schrieb Dmitry Torokhov:
Quoted 30 lines · David Engraf
Quoted 20 lines
Parse the status byte information to the registered serio drivers as well as the character bytes.
Signed-off-by David Engraf<[email protected]>drivers/input/serio/serport.c renamed from drivers/input/serio/serport.c.orig +2
-2@@ -116,8 +116,8 @@ static void serport_ldisc_close(struct t/* * 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)drivers/input/serio/serport.c static void serport_ldisc_receive(struct · line 136
Quoted 6 lines
drivers/input/serio/serport.c renamed from drivers/input/serio/serport.c.orig +1
-1@@ -132,7 +132,7 @@ static void serport_ldisc_receive(struct goto out;for (i =0 ; i< count; i++) -serio_interrupt (serport->serio, cp[i],0 ); +serio_interrupt (serport->serio, cp[i], fp[i]);Hi David,
Quoted 6 lines
The flags argument that
serio_interrupt()accepts not the raw protocol data, but sanitized, protocol-independentSERIO_TIMEOUT,SERIO_PARITYandSERIO_FRAMEbits.Thanks.
Hi Dmitry,
I've updated the patch so that the raw protocol is converted to the SERIO_ bits. The raw protocol can parse only one flag, so I don't need to store multiple SERIO_ bits in the character flag variable.
Thanks
- David
drivers/input/serio/serport.c renamed from drivers/input/serio/serport.c.orig +12 -4
@@ -116,14 +116,15 @@ static void serport_ldisc_close(struct t/* * 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);
@@ -131,8 +132,15 @@ static void serport_ldisc_receive(structif (!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++) { + ch_flags =0 ; +if (fp[i] ==TTY_FRAME ) + ch_flags =SERIO_FRAME ; +else if (fp[i] ==TTY_PARITY ) + ch_flags =SERIO_PARITY ; + +serio_interrupt (serport->serio, cp[i], ch_flags); + } out:spin_unlock_irqrestore (&serport->lock, flags);
Am 20.01.2011 10:05, schrieb David Engraf:
Quoted 50 lines
Am 18.01.2011 20:57, schrieb Dmitry Torokhov:
Quoted 36 lines · David Engraf
Quoted 26 lines
Parse the status byte information to the registered serio drivers as well as the character bytes.
Signed-off-by David Engraf<[email protected]>--- linux-2.6.37/drivers/input/serio/serport.c.orig 2011-01-18 12:33:41.421709232 +0100
+++linux-2.6.37/drivers/input/serio/serport.c2011-01-18 13:33:24.521711214 +0100(quoted diff) +0
-0@@ -116,8 +116,8 @@ static void serport_ldisc_close(struct t /* * serport_ldisc_receive() is called by the low level tty driver whencharacters
- * 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)drivers/input/serio/serport.c static void serport_ldisc_receive(struct · line 136
Quoted 6 lines
drivers/input/serio/serport.c renamed from drivers/input/serio/serport.c.orig +1
-1@@ -132,7 +132,7 @@ static void serport_ldisc_receive(struct goto out;for (i =0 ; i< count; i++) -serio_interrupt (serport->serio, cp[i],0 ); +serio_interrupt (serport->serio, cp[i], fp[i]);Hi David,
Quoted 6 lines
The flags argument that
serio_interrupt()accepts not the raw protocol data, but sanitized, protocol-independentSERIO_TIMEOUT,SERIO_PARITYandSERIO_FRAMEbits.Thanks.
Hi Dmitry,
I've updated the patch so that the raw protocol is converted to the
SERIO_bits. The raw protocol can parse only one flag, so I don't need to store multipleSERIO_bits in the character flag variable.
Quoted 6 lines
Thanks
- DavidSigned-off-by David Engraf<[email protected]>
Hi Dmitry,
is my last patch okay for you? Just want to know if I can give you further help on this and if it is planned to integrate my patch.
Thanks
- David
Dmitry Torokhov
maintainerQuoted 55 lines · David Engraf
Am 20.01.2011 10:05, schrieb David Engraf:
Quoted 54 lines
Am 18.01.2011 20:57, schrieb Dmitry Torokhov:
Quoted 36 lines · David Engraf
Quoted 26 lines
Parse the status byte information to the registered serio drivers as well as the character bytes.
Signed-off-by David Engraf<[email protected]>--- linux-2.6.37/drivers/input/serio/serport.c.orig 2011-01-18 12:33:41.421709232 +0100
+++linux-2.6.37/drivers/input/serio/serport.c2011-01-18 13:33:24.521711214 +0100(quoted diff) +0
-0@@ -116,8 +116,8 @@ static void serport_ldisc_close(struct t /* * serport_ldisc_receive() is called by the low level tty driver whencharacters
- * 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)drivers/input/serio/serport.c static void serport_ldisc_receive(struct · line 136
Quoted 6 lines
drivers/input/serio/serport.c renamed from drivers/input/serio/serport.c.orig +1
-1@@ -132,7 +132,7 @@ static void serport_ldisc_receive(struct goto out;for (i =0 ; i< count; i++) -serio_interrupt (serport->serio, cp[i],0 ); +serio_interrupt (serport->serio, cp[i], fp[i]);Hi David,
Quoted 6 lines
The flags argument that
serio_interrupt()accepts not the raw protocol data, but sanitized, protocol-independentSERIO_TIMEOUT,SERIO_PARITYandSERIO_FRAMEbits.Thanks.
Hi Dmitry,
I've updated the patch so that the raw protocol is converted to the
SERIO_bits. The raw protocol can parse only one flag, so I don't need to store multipleSERIO_bits in the character flag variable.Thanks
- David
Quoted 8 lines
Quoted 2 lines
Signed-off-by David Engraf<[email protected]>Hi Dmitry,
is my last patch okay for you? Just want to know if I can give you further help on this and if it is planned to integrate my patch.
Hi David,
The patch should hit mainline real soon now, no action is needed on your part.
Thanks.
Signature · 1 line
Dmitry