Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754717AbcDFL7s (ORCPT ); Wed, 6 Apr 2016 07:59:48 -0400 Received: from lxorguk.ukuu.org.uk ([81.2.110.251]:56370 "EHLO lxorguk.ukuu.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753295AbcDFL7q (ORCPT ); Wed, 6 Apr 2016 07:59:46 -0400 Date: Wed, 6 Apr 2016 12:59:33 +0100 From: One Thousand Gnomes To: Grigori Goronzy Cc: Johan Hovold , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 07/14] USB: ch341: add support for parity, frame length, stop bits Message-ID: <20160406125933.7cb96c54@lxorguk.ukuu.org.uk> In-Reply-To: <1459616843-23829-8-git-send-email-greg@chown.ath.cx> References: <1459616843-23829-1-git-send-email-greg@chown.ath.cx> <1459616843-23829-8-git-send-email-greg@chown.ath.cx> Organization: Intel Corporation X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.29; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1552 Lines: 51 On Sat, 2 Apr 2016 19:07:16 +0200 Grigori Goronzy wrote: > With the new reinitialization method, configuring parity, different > frame lengths and different stop bit settings work as expected on > both CH340G and CH341A. This has been extensively tested with a > logic analyzer. > > Tested-by: Ryan Barber > Signed-off-by: Grigori Goronzy > --- > drivers/usb/serial/ch341.c | 36 ++++++++++++++++++++++++++++++------ > 1 file changed, 30 insertions(+), 6 deletions(-) > > diff --git a/drivers/usb/serial/ch341.c b/drivers/usb/serial/ch341.c > index c001773..4d66f0f 100644 > --- a/drivers/usb/serial/ch341.c > +++ b/drivers/usb/serial/ch341.c > @@ -346,6 +346,7 @@ static void ch341_set_termios(struct tty_struct *tty, > unsigned baud_rate; > unsigned long flags; > unsigned char ctrl; > + unsigned cflag = tty->termios.c_cflag; > int r; > > /* redundant changes may cause the chip to lose bytes */ > @@ -356,7 +357,35 @@ static void ch341_set_termios(struct tty_struct *tty, > > priv->baud_rate = baud_rate; > > - ctrl = CH341_LCR_ENABLE_RX | CH341_LCR_ENABLE_TX | CH341_LCR_CS8; > + ctrl = CH341_LCR_ENABLE_RX | CH341_LCR_ENABLE_TX; > + > + switch (cflag & CSIZE) { > + case CS5: > + ctrl |= CH341_LCR_CS5; > + break; > + case CS6: > + ctrl |= CH341_LCR_CS6; > + break; > + case CS7: > + ctrl |= CH341_LCR_CS7; > + break; > + case CS8: > + default: > + ctrl |= CH341_LCR_CS8; In the default case tty-.termios.c_cflag should also be updated to show CS8 Alan