From nobody Mon Nov 17 09:52:05 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1603701739; cv=none; d=zohomail.com; s=zohoarc; b=haZ/T24jny2msZhIRFwk734xTkf+oQ9AMCoS4oe/qAJnwMWTGor2Cfu77t6ljimMX4T9SXjc5jCpPb4eE7JD+NddVnoWh5K0YqaIFV+8x0Du9vralTDkcwtu2aaCH0ZgSe7wfEvowkw3IoISzW8wpuiQDlvxtGX1dX9EI68iNCc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603701739; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NHQ1pm5Grt3GvvAz+MIluZrD8EVvg1zATDUYe/RWAgg=; b=n6B7gSqravIpYAjvuNS1lGbq79MDtsw/CCsTHXxaklyoqQpxj+y+j8o99saKJ6jL/BQAsKPMFSirI9cTmVf93S7O+masid+YyLoVCmmc5aPLYLYKpwS6mWps0rDnXwgeygVensLm2w1npEr7gvy8LGis3qH4uOWMBh1moGN+4Ao= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603701739109875.8096973784916; Mon, 26 Oct 2020 01:42:19 -0700 (PDT) Received: from localhost ([::1]:49346 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kWy53-0002x0-WA for importer@patchew.org; Mon, 26 Oct 2020 04:42:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46080) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kWxxu-0003LZ-9o for qemu-devel@nongnu.org; Mon, 26 Oct 2020 04:34:55 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:46990 helo=mail.default.ilande.uk0.bigv.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kWxxo-00062n-Op for qemu-devel@nongnu.org; Mon, 26 Oct 2020 04:34:54 -0400 Received: from host86-148-103-79.range86-148.btcentralplus.com ([86.148.103.79] helo=kentang.home) by mail.default.ilande.uk0.bigv.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kWxxs-00082O-3R; Mon, 26 Oct 2020 08:34:56 +0000 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, kraxel@redhat.com, samuel.thibault@ens-lyon.org Date: Mon, 26 Oct 2020 08:33:59 +0000 Message-Id: <20201026083401.13231-8-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201026083401.13231-1-mark.cave-ayland@ilande.co.uk> References: <20201026083401.13231-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 86.148.103.79 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 7/9] dev-serial: add support for setting data_bits in QEMUSerialSetParams X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.uk0.bigv.io) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.uk0.bigv.io X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Also implement the behaviour reported in Linux's ftdi_sio.c whereby if an i= nvalid data_bits value is provided then the hardware defaults to using 8. Signed-off-by: Mark Cave-Ayland Reviewed-by: Samuel Thibault --- hw/usb/dev-serial.c | 17 +++++++++++++++++ hw/usb/trace-events | 1 + 2 files changed, 18 insertions(+) diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c index 919e25e1d9..4c374d0790 100644 --- a/hw/usb/dev-serial.c +++ b/hw/usb/dev-serial.c @@ -308,6 +308,23 @@ static void usb_serial_handle_control(USBDevice *dev, = USBPacket *p, break; } case VendorDeviceOutRequest | FTDI_SET_DATA: + switch (value & 0xff) { + case 7: + s->params.data_bits =3D 7; + break; + case 8: + s->params.data_bits =3D 8; + break; + default: + /* + * According to a comment in Linux's ftdi_sio.c original FTDI + * chips fall back to 8 data bits for unsupported data_bits + */ + trace_usb_serial_unsupported_data_bits(bus->busnr, dev->addr, + value & 0xff); + s->params.data_bits =3D 8; + } + switch (value & FTDI_PARITY) { case 0: s->params.parity =3D 'N'; diff --git a/hw/usb/trace-events b/hw/usb/trace-events index 9e984b2e0c..0d0a3e5f2a 100644 --- a/hw/usb/trace-events +++ b/hw/usb/trace-events @@ -327,6 +327,7 @@ usb_serial_handle_control(int bus, int addr, int reques= t, int value) "dev %d:%d usb_serial_unsupported_parity(int bus, int addr, int value) "dev %d:%d uns= upported parity %d" usb_serial_unsupported_stopbits(int bus, int addr, int value) "dev %d:%d u= nsupported stop bits %d" usb_serial_unsupported_control(int bus, int addr, int request, int value) = "dev %d:%d got unsupported/bogus control 0x%x, value 0x%x" +usb_serial_unsupported_data_bits(int bus, int addr, int value) "dev %d:%d = unsupported data bits %d, falling back to 8" usb_serial_bad_token(int bus, int addr) "dev %d:%d bad token" usb_serial_set_baud(int bus, int addr, int baud) "dev %d:%d baud rate %d" usb_serial_set_data(int bus, int addr, int parity, int data, int stop) "de= v %d:%d parity %c, data bits %d, stop bits %d" --=20 2.20.1