From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753454AbbBZKCX (ORCPT ); Thu, 26 Feb 2015 05:02:23 -0500 Received: from mail-pa0-f44.google.com ([209.85.220.44]:35361 "EHLO mail-pa0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752193AbbBZKCU (ORCPT ); Thu, 26 Feb 2015 05:02:20 -0500 From: Peter Hung X-Google-Original-From: Peter Hung To: johan@kernel.org Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, tom_tsai@fintek.com.tw, peter_hong@fintek.com.tw, hpeter@gmail.com, Peter Hung Subject: [PATCH V8 00/10] USB: f81232: V8 patches Date: Thu, 26 Feb 2015 18:02:06 +0800 Message-Id: <1424944936-7117-1-git-send-email-hpeter+linux_kernel@gmail.com> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This series patch V8 is changed from V7 as following: 1. The V7 MSR strange delta value is checked with locking problem. We changed f81232_set_mctrl() & f81232_read_msr() lock mechanism, the old version is only locked with variable protection, new version will lock from start to end with these 2 function. 2. f81232_set_baudrate() add error handling and no longer handle with baudrate B0, change to handle with f81232_set_termios() 3. When user set baudrate larger then 115200, we will change it with 115200 and tty_encode_baud_rate() in f81232_set_termios(). 4. V7 f81232_set_baudrate() divisor declared with type u8, it will make baudrate set failed with smaller then B600 (115200/300=384 overflow :Q). We changed it with integer type for divisor larger then 256. V7 (old change): 1. The buffer of usb_control_msg() in set_register()/get_register() are change from local variable to kmalloc(). (PATCH V7 02/11) 2. Change all set_register()/get_register() return value 0 is success, otherwise are failed. ( return 0 of usb_control_msg() treat as -EIO, PATCH V7 02/11) 3. tty_port_tty_get() called only when DCD has changed. (PATCH V7 05/11) 4. remove likely()/unlikely() branch prediction. 5. Implement DTR/RTS control when baudrate B0. We drop DTR/RTS when B0, otherwise enable it. (PATCH V7 08/11) 6. Change private struct line_control to modem_control with meanful. (PATCH V7 06/11) 7. We confirmd MSR strange delta value is not locking-issue. The issue maybe reproduce with set MCR & get MSR before IIR notice with MSR changed. V6 (old change): 1. transform all function not to use private data as parameter, using usb_serial_port instead. 2. process_read_urb() add process of Break/FrameError/ParityError/OE. (patch: 03/10) 3. fix calc_baud_divisor() will cause divide by zero with B0. (patch: 04/10) 4. Some init step we extract it from set_termios() to f81232_port_init() and run it when open port only. (patch: 04/10) 5. We'll force re-read msr in tiocmget() because the IIR with MSR change maybe delay received. (patch: 05/10) 6. fix MSR status bits changed but delta bits is 0 will cause read serial port malfunctional with update port status. (patch: 08/10) 7. Add MSR change statistic when MSR has been read. (patch: 09/10) 8. clarify a lot of code about Johan suggested. Peter Hung (10): USB: f81232: rename private struct member name USB: f81232: implement RX bulk-in EP USB: f81232: change lock mechanism USB: f81232: implement read IIR/MSR with endpoint USB: f81232: implement MCR/MSR function USB: f81232: implement port enable/disable method USB: f81232: implement set_termios() USB: f81232: clarify f81232_ioctl() and fix USB: f81232: cleanup non-used define USB: f81232: modify/add author drivers/usb/serial/f81232.c | 551 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 453 insertions(+), 98 deletions(-) -- 1.9.1