Help!

[PATCH 0/2] Still not applied (resending again)

 
  

Post new topic   General Reply to Topic (not reply to a specific post)    Forums Home -> Kernel RSS
Next:  [PATCH] jfs: Fix 32bit build warning  
Author Message
Alan Cox
External


Since: Aug 19, 2009
Posts: 13



PostPosted: Fri Nov 06, 2009 7:10 am    Post subject: [PATCH 0/2] Still not applied (resending again)
Archived from groups: linux>kernel (more info?)

Regression fixes for the carrier handling when using O_NDELAY
---

Alan Cox (2):
tty_port: If we are opened non blocking we still need to raise the carrier
cp210x: Fix carrier handling


drivers/char/tty_port.c | 10 ++++++++--
drivers/usb/serial/cp210x.c | 21 +++++++++++++++++++++
2 files changed, 29 insertions(+), 2 deletions(-)

--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo.TakeThisOut@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to top
Alan Cox
External


Since: Aug 19, 2009
Posts: 13



PostPosted: Fri Nov 06, 2009 7:10 am    Post subject: [PATCH 2/2] tty_port: If we are opened non blocking we still need to raise the carrier [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

The tty_port code inherited a bug common to various drivers it was based
upon. If the tty is opened O_NONBLOCK we do not wait for the carrier to be
raised but we must still raise our modem lines if appropriate.

(There is a second question here about whether we should do so if CLOCAL is
set but that can wait)

Signed-off-by: Alan Cox <alan.RemoveThis@linux.intel.com>
---

drivers/char/tty_port.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)


diff --git a/drivers/char/tty_port.c b/drivers/char/tty_port.c
index 0a35600..5e2ac57 100644
--- a/drivers/char/tty_port.c
+++ b/drivers/char/tty_port.c
@@ -241,8 +241,14 @@ int tty_port_block_til_ready(struct tty_port *port,

/* if non-blocking mode is set we can pass directly to open unless
the port has just hung up or is in another error state */
- if ((filp->f_flags & O_NONBLOCK) ||
- (tty->flags & (1 << TTY_IO_ERROR))) {
+ if (tty->flags & (1 << TTY_IO_ERROR)) {
+ port->flags |= ASYNC_NORMAL_ACTIVE;
+ return 0;
+ }
+ if (filp->f_flags & O_NONBLOCK) {
+ /* Indicate we are open */
+ if (tty->termios->c_cflag & CBAUD)
+ tty_port_raise_dtr_rts(port);
port->flags |= ASYNC_NORMAL_ACTIVE;
return 0;
}

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo.RemoveThis@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to top
Alan Cox
External


Since: Aug 19, 2009
Posts: 13



PostPosted: Fri Nov 06, 2009 7:10 am    Post subject: [PATCH 1/2] cp210x: Fix carrier handling [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

9a68e39d4a701fb3be03cae9b462408664ebd205 broke carrier handling so that a
cp210x setup which needed the carrier lines set up (non CLOCAL) which did
not make a call which set the termios bits left the lines down even if
CLOCAL was not asserted.

Fix this not by reverting but by adding the proper dtr_rts and
carrier_raised methods. This both sets the modem lines properly and also
implements the correct blocking semantics for the port as required by
POSIX.

Signed-off-by: Alan Cox <alan.TakeThisOut@linux.intel.com>
---

drivers/usb/serial/cp210x.c | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)


diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
index 698252a..bd254ec 100644
--- a/drivers/usb/serial/cp210x.c
+++ b/drivers/usb/serial/cp210x.c
@@ -50,6 +50,8 @@ static int cp210x_tiocmset_port(struct usb_serial_port *port, struct file *,
static void cp210x_break_ctl(struct tty_struct *, int);
static int cp210x_startup(struct usb_serial *);
static void cp210x_disconnect(struct usb_serial *);
+static void cp210x_dtr_rts(struct usb_serial_port *p, int on);
+static int cp210x_carrier_raised(struct usb_serial_port *p);

static int debug;

@@ -143,6 +145,8 @@ static struct usb_serial_driver cp210x_device = {
.tiocmset = cp210x_tiocmset,
.attach = cp210x_startup,
.disconnect = cp210x_disconnect,
+ .dtr_rts = cp210x_dtr_rts,
+ .carrier_raised = cp210x_carrier_raised
};

/* Config request types */
@@ -746,6 +750,14 @@ static int cp210x_tiocmset_port(struct usb_serial_port *port, struct file *file,
return cp210x_set_config(port, CP210X_SET_MHS, &control, 2);
}

+static void cp210x_dtr_rts(struct usb_serial_port *p, int on)
+{
+ if (on)
+ cp210x_tiocmset_port(p, NULL, TIOCM_DTR|TIOCM_RTS, 0);
+ else
+ cp210x_tiocmset_port(p, NULL, 0, TIOCM_DTR|TIOCM_RTS);
+}
+
static int cp210x_tiocmget (struct tty_struct *tty, struct file *file)
{
struct usb_serial_port *port = tty->driver_data;
@@ -768,6 +780,15 @@ static int cp210x_tiocmget (struct tty_struct *tty, struct file *file)
return result;
}

+static int cp210x_carrier_raised(struct usb_serial_port *p)
+{
+ unsigned int control;
+ cp210x_get_config(p, CP210X_GET_MDMSTS, &control, 1);
+ if (control & CONTROL_DCD)
+ return 1;
+ return 0;
+}
+
static void cp210x_break_ctl (struct tty_struct *tty, int break_state)
{
struct usb_serial_port *port = tty->driver_data;

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo.TakeThisOut@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to top
Greg KH
External


Since: Nov 18, 2004
Posts: 1094



PostPosted: Fri Nov 06, 2009 1:10 pm    Post subject: Re: [PATCH 0/2] Still not applied (resending again) [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

On Fri, Nov 06, 2009 at 11:32:29AM +0000, Alan Cox wrote:
> Regression fixes for the carrier handling when using O_NDELAY

I added these to my tree yesterday, sorry for the delay.

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo.DeleteThis@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to top
Display posts from previous:   
Post new topic   General Reply to Topic (not reply to a specific post)    Forums Home -> Kernel All times are: Eastern Time (US & Canada) (change)
Page 1 of 1

 
You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum