From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: USB: serial: cp210x: Improve baudrate support for CP2102N From: Johan Hovold Message-Id: <20180619091528.GN32411@localhost> Date: Tue, 19 Jun 2018 11:15:28 +0200 To: Karoly Pados Cc: Johan Hovold , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org List-ID: T24gRnJpLCBKdW4gMTUsIDIwMTggYXQgMTE6Mjk6NTdQTSArMDIwMCwgS2Fyb2x5IFBhZG9zIHdy b3RlOgo+IFRoZSBDUDIxMDJOIHN1cHBvcnRzIG1vcmUgYmF1ZHJhdGVzIHRoYW4gZWFybGllciBj aGlwcyBieSBTaUxhYnMuCj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGFsbCByYXRlcyBk b2N1bWVudGVkIGluIHRoZSBkYXRhc2hlZXQKPiBvZiB0aGlzIGRldmljZS4KPiAKPiBTaWduZWQt b2ZmLWJ5OiBLYXJvbHkgUGFkb3MgPHBhZG9zQHBhZG9zLmh1Pgo+IC0tLQo+ICBkcml2ZXJzL3Vz Yi9zZXJpYWwvY3AyMTB4LmMgfCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2NwMjEweC5jIGIvZHJpdmVycy91 c2Ivc2VyaWFsL2NwMjEweC5jCj4gaW5kZXggYjE4NDlmNjU3ZTAxLi43OTNiODYyNTJjNDYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2NwMjEweC5jCj4gKysrIGIvZHJpdmVycy91 c2Ivc2VyaWFsL2NwMjEweC5jCj4gQEAgLTM1Nyw2ICszNTcsOSBAQCBzdGF0aWMgc3RydWN0IHVz Yl9zZXJpYWxfZHJpdmVyICogY29uc3Qgc2VyaWFsX2RyaXZlcnNbXSA9IHsKPiAgI2RlZmluZSBD UDIxMFhfUEFSVE5VTV9DUDIxMDQJMHgwNAo+ICAjZGVmaW5lIENQMjEwWF9QQVJUTlVNX0NQMjEw NQkweDA1Cj4gICNkZWZpbmUgQ1AyMTBYX1BBUlROVU1fQ1AyMTA4CTB4MDgKPiArI2RlZmluZSBD UDIxMFhfUEFSVE5VTV9DUDIxMDJOX1FGTjI4CTB4MjAKPiArI2RlZmluZSBDUDIxMFhfUEFSVE5V TV9DUDIxMDJOX1FGTjI0CTB4MjEKPiArI2RlZmluZSBDUDIxMFhfUEFSVE5VTV9DUDIxMDJOX1FG TjIwCTB4MjIKPiAgI2RlZmluZSBDUDIxMFhfUEFSVE5VTV9VTktOT1dOCTB4RkYKPiAgCj4gIC8q IENQMjEwWF9HRVRfQ09NTV9TVEFUVVMgcmV0dXJucyB0aGVzZSAweDEzIGJ5dGVzICovCj4gQEAg LTc1OCw4ICs3NjEsMTIgQEAgc3RhdGljIGludCBjcDIxMHhfZ2V0X2xpbmVfY3RsKHN0cnVjdCB1 c2Jfc2VyaWFsX3BvcnQgKnBvcnQsIHUxNiAqY3RsKQo+ICAvKgo+ICAgKiBjcDIxMHhfcXVhbnRp c2VfYmF1ZHJhdGUKPiAgICogUXVhbnRpc2VzIHRoZSBiYXVkIHJhdGUgYXMgcGVyIEFOMjA1IFRh YmxlIDEKPiArICogVGhlIENQMjEwMk4gaXMgZnVsbHkgKGV4Y2VwdCBmb3IgYmF1ZCByYXRlIGFs aWFzaW5nKSBzb2Z0d2FyZS0KPiArICogY29tcGF0aWJsZSwgYnV0IHN1cHBvcnRzIHNvbWUgYWRk aXRpb25hbCBiYXVkcmF0ZXMuIEhvd2V2ZXIsIHRoZXJlIGlzCj4gKyAqIG5vIHF1YW50aXRpc2F0 aW9uIHRhYmxlIGF2YWlsYWJsZSBmb3IgdGhpcyBtb2RlbCwgc28gaW4gdGhpcyBjYXNlIHdlCj4g KyAqIHRha2UgdGhlIHN1cHBvcnRlZCBiYXVkcmF0ZSB3aGljaCBpcyBjbG9zZXN0IHRvIHRoZSBy ZXF1ZXN0ZWQgb25lLgo+ICAgKi8KPiAtc3RhdGljIHVuc2lnbmVkIGludCBjcDIxMHhfcXVhbnRp c2VfYmF1ZHJhdGUodW5zaWduZWQgaW50IGJhdWQpCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgY3Ay MTB4X3F1YW50aXNlX2JhdWRyYXRlKHVuc2lnbmVkIGludCBiYXVkLCBib29sIGNwMjEwMm4pCgpQ YXNzIGluIGEgc3RydWN0IHVzYl9zZXJpYWwgKG9yIHBvcnQpIGFzIGEgZmlyc3QgYXJndW1lbnQg aW5zdGVhZCB3aGljaAphbGxvd3MgZm9yIG1vcmUgcmVhZGFibGUgY29kZSBhcyB3ZWxsIGFzIGZv ciB0aGlzIHRvIGJlIHJldXNlZCB0byBoYW5kbGUKb3RoZXIgZGV2aWNlIHR5cGUgZGlmZmVyZW5j ZXMgKGUuZy4gb25seSAyMTA4IGJlc2lkZXMgMjEwMm4gaGFuZGxlcwpiYXVkcmF0ZXMgb3ZlciA5 MjEuNmspLgoKPiAgewo+ICAJaWYgKGJhdWQgPD0gMzAwKQo+ICAJCWJhdWQgPSAzMDA7Cj4gQEAg LTc5MCwxMCArNzk3LDE3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgY3AyMTB4X3F1YW50aXNlX2Jh dWRyYXRlKHVuc2lnbmVkIGludCBiYXVkKQo+ICAJZWxzZSBpZiAoYmF1ZCA8PSA0OTE1MjApICAg YmF1ZCA9IDQ2MDgwMDsKPiAgCWVsc2UgaWYgKGJhdWQgPD0gNTY3MTM4KSAgIGJhdWQgPSA1MDAw MDA7Cj4gIAllbHNlIGlmIChiYXVkIDw9IDY3MDI1NCkgICBiYXVkID0gNTc2MDAwOwo+IC0JZWxz ZSBpZiAoYmF1ZCA8IDEwMDAwMDApCj4gLQkJYmF1ZCA9IDkyMTYwMDsKPiAtCWVsc2UgaWYgKGJh dWQgPiAyMDAwMDAwKQo+IC0JCWJhdWQgPSAyMDAwMDAwOwo+ICsJZWxzZSBpZiAoY3AyMTAybikg ewoKQWRkIGEgc3RhdGljIGhlbHBlciAobG9va3MgbGlrZSB5b3UgYWRkIGEgZGVmaW5lIGluIHRo ZSBncGlvIHBhdGNoKQpjcDIxMHhfaXNfY3AyMTAybihzZXJpYWwpIGhlcmUuIFlvdSBjYW4gZXZl biB0ZXN0IGZvciBiaXQgMHgyMCBpbiB0aGUKaGVscGVyIGlmIHlvdSBwcmVmZXIgKHdlIGNhbiBh bHdheXMgY2hhbmdlIHRoYXQgbGF0ZXIgaWYgbmVlZGVkKS4KCj4gKwkJaWYgKGJhdWQgPD0gOTYw ODAwKSAgICAgICAgYmF1ZCA9IDkyMTYwMDsKPiArCQllbHNlIGlmIChiYXVkIDw9IDExMDAwMDAp ICBiYXVkID0gMTAwMDAwMDsKPiArCQllbHNlIGlmIChiYXVkIDw9IDEzNTAwMDApICBiYXVkID0g MTIwMDAwMDsKPiArCQllbHNlIGlmIChiYXVkIDw9IDE3NTAwMDApICBiYXVkID0gMTUwMDAwMDsK PiArCQllbHNlIGlmIChiYXVkIDw9IDI1MDAwMDApICBiYXVkID0gMjAwMDAwMDsKPiArCQllbHNl ICAgICAgICAgICAgICAgICAgICAgICBiYXVkID0gMzAwMDAwMDsKCkFuZCBldmVuIGlmIHRoZSBj dXJyZW50IGNvZGUgdXNlcyB0aGlzIG9kZCBmb3JtYXR0aW5nLCB5b3VyIGFtZW5kbWVudHMKc2hv dWxkIG5vdC4KCj4gKwl9IGVsc2Ugewo+ICsJCWlmIChiYXVkIDwgMTAwMDAwMCkgICAgICAgIGJh dWQgPSA5MjE2MDA7Cj4gKwkJZWxzZSBpZiAoYmF1ZCA+IDIwMDAwMDApICAgYmF1ZCA9IDIwMDAw MDA7Cj4gKwl9Cj4gIAlyZXR1cm4gYmF1ZDsKPiAgfQo+ICAKPiBAQCAtMTA0NSwxNiArMTA1OSwx OSBAQCBzdGF0aWMgdm9pZCBjcDIxMHhfZ2V0X3Rlcm1pb3NfcG9ydChzdHJ1Y3QgdXNiX3Nlcmlh bF9wb3J0ICpwb3J0LAo+ICBzdGF0aWMgdm9pZCBjcDIxMHhfY2hhbmdlX3NwZWVkKHN0cnVjdCB0 dHlfc3RydWN0ICp0dHksCj4gIAkJc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwgc3RydWN0 IGt0ZXJtaW9zICpvbGRfdGVybWlvcykKPiAgewo+IC0JdTMyIGJhdWQ7Cj4gLQo+IC0JYmF1ZCA9 IHR0eS0+dGVybWlvcy5jX29zcGVlZDsKPiArCWJvb2wgaXNfY3AyMTAybjsKPiArCXUzMiBiYXVk ID0gdHR5LT50ZXJtaW9zLmNfb3NwZWVkOwo+ICsJc3RydWN0IGNwMjEweF9zZXJpYWxfcHJpdmF0 ZSAqcHJpdiA9IHVzYl9nZXRfc2VyaWFsX2RhdGEocG9ydC0+c2VyaWFsKTsKPiAgCj4gLQkvKiBU aGlzIG1hcHMgdGhlIHJlcXVlc3RlZCByYXRlIHRvIGEgcmF0ZSB2YWxpZCBvbiBjcDIxMDIgb3Ig Y3AyMTAzLAo+IC0JICogb3IgdG8gYW4gYXJiaXRyYXJ5IHJhdGUgaW4gWzFNLDJNXS4KPiArCS8q IFRoaXMgbWFwcyB0aGUgcmVxdWVzdGVkIHJhdGUgdG8gYSByYXRlIHZhbGlkIG9uIGNwMjEwMihu KSBvcgo+ICsJICogY3AyMTAzIG9yIHRvIGFuIGFyYml0cmFyeSByYXRlIGluIFsxTSwyTV0uCj4g IAkgKgo+ICAJICogTk9URTogQjAgaXMgbm90IGltcGxlbWVudGVkLgo+ICAJICovCj4gLQliYXVk ID0gY3AyMTB4X3F1YW50aXNlX2JhdWRyYXRlKGJhdWQpOwo+ICsJaXNfY3AyMTAybiA9CShwcml2 LT5wYXJ0bnVtID09IENQMjEwWF9QQVJUTlVNX0NQMjEwMk5fUUZOMjgpIHx8Cj4gKwkJCShwcml2 LT5wYXJ0bnVtID09IENQMjEwWF9QQVJUTlVNX0NQMjEwMk5fUUZOMjQpIHx8Cj4gKwkJCShwcml2 LT5wYXJ0bnVtID09IENQMjEwWF9QQVJUTlVNX0NQMjEwMk5fUUZOMjApOwo+ICsJYmF1ZCA9IGNw MjEweF9xdWFudGlzZV9iYXVkcmF0ZShiYXVkLCBpc19jcDIxMDJuKTsKClNvIG1vc3Qgb2YgdGhl c2UgY2hhbmdlcyB3b3VsZCBub3QgYmUgbmVlZGVkLiBKdXN0IHBhc3MgaW4gcG9ydC0+c2VyaWFs CnRvIGNwMjEweF9xdWFudGlzZV9iYXVkcmF0ZSgpLgoKVGhhbmtzLApKb2hhbgotLS0KVG8gdW5z dWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4 LXVzYiIgaW4KdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5v cmcKTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRv bW8taW5mby5odG1sCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.9 required=3.0 tests=DKIM_SIGNED, MAILING_LIST_MULTI,SPF_PASS,T_DKIM_INVALID,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9C667C5CFC1 for ; Tue, 19 Jun 2018 09:16:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 563F42083D for ; Tue, 19 Jun 2018 09:16:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pukU/fJA" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 563F42083D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S937442AbeFSJQD (ORCPT ); Tue, 19 Jun 2018 05:16:03 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:46022 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756382AbeFSJQA (ORCPT ); Tue, 19 Jun 2018 05:16:00 -0400 Received: by mail-lf0-f68.google.com with SMTP id a13-v6so8910587lfk.12; Tue, 19 Jun 2018 02:15:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=iZzhhYtx/AxGE+eCWQ/rH02iOjnII9TU6FsFXviERoY=; b=pukU/fJAeaOQ4vN+SLvLBHs2PSZvPyfel8FNNK3WPUOuBTe0cJrATwBa4rzeo4HEmC yh1StQvw/0Ia6B+Lc7PO+w7uH+aO7Z4lCTCl/0fzcTsZCQPCQuKF5cdlKUedzNo4oKny pbcppdEhJRA4EH+li+kWYzEbig9rtXJZhiVmKWo6SEqf6krAxj4LMsadJJxJVaPKoB3V MzQgx8qQooRJPioco+8caB7EddmbEjhCfsrKTela/inAR5pSo+cIZq2PnKXctVjbCSDd 4EiGDPkFu+hnGio5vg9aj8P8LE3pqHLThqgOuVsJ5SaA1+ErQm2nNEHXwUB8oGTAmx63 b3UQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to:user-agent; bh=iZzhhYtx/AxGE+eCWQ/rH02iOjnII9TU6FsFXviERoY=; b=gzIw5T1EEEq9cM+xDUm9roUrhy9IVYWXW1o5LnLaiQcqsNGMI0jkteLnkqc/EleA90 cKjb0MDc1E1RpBRHZ4vu3C5/ASL+1ug8u1d8/oDBdiD/+fFYS1cg0tzqO5V96fzYyflh mXWGWcrvYkbXRmdjh072xWuXCplvqoNFTDzg2pqggoRexEyWKYbOYnDOhA7b4VR1ZIIk 2P5G67NlOx80Nto1XHNT//GwAU5VIduPKIsWpQ6+85iblG1QWnLfoZvQgKOXVRyxefk4 D0BpH3K8qEGC6DozX+VqVcgCpdNSIRtu6UbbwzHAz1P5QxFsvnGofxfLr3gC9sBmGeHg wfDw== X-Gm-Message-State: APt69E1ZIPpCmjIoKUU2YRPuY3EV8q8ByY/kab8YrGx9zYnFiAEWfsnJ PbjoZmccJuIPTyNyxp+vImjfgsWS X-Google-Smtp-Source: ADUXVKJ0t12n6SgpK+FtVYqNfMH8u1I3naf6+dLCI0aDj/HTk9y08C+zyVrY1+Cax8tJpYf2o1eIDQ== X-Received: by 2002:a2e:6588:: with SMTP id e8-v6mr10257455ljf.50.1529399758617; Tue, 19 Jun 2018 02:15:58 -0700 (PDT) Received: from xi.terra (c-8bb2e655.07-184-6d6c6d4.bbcust.telenor.se. [85.230.178.139]) by smtp.gmail.com with ESMTPSA id q10-v6sm87095lfq.52.2018.06.19.02.15.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Jun 2018 02:15:57 -0700 (PDT) Received: from johan by xi.terra with local (Exim 4.90_1) (envelope-from ) id 1fVCjY-0005pv-MP; Tue, 19 Jun 2018 11:15:28 +0200 Date: Tue, 19 Jun 2018 11:15:28 +0200 From: Johan Hovold To: Karoly Pados Cc: Johan Hovold , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] USB: serial: cp210x: Improve baudrate support for CP2102N Message-ID: <20180619091528.GN32411@localhost> References: <20180615212957.26539-1-pados@pados.hu> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180615212957.26539-1-pados@pados.hu> User-Agent: Mutt/1.10.0 (2018-05-17) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jun 15, 2018 at 11:29:57PM +0200, Karoly Pados wrote: > The CP2102N supports more baudrates than earlier chips by SiLabs. > This patch adds support for all rates documented in the datasheet > of this device. > > Signed-off-by: Karoly Pados > --- > drivers/usb/serial/cp210x.c | 39 ++++++++++++++++++++++++++----------- > 1 file changed, 28 insertions(+), 11 deletions(-) > > diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c > index b1849f657e01..793b86252c46 100644 > --- a/drivers/usb/serial/cp210x.c > +++ b/drivers/usb/serial/cp210x.c > @@ -357,6 +357,9 @@ static struct usb_serial_driver * const serial_drivers[] = { > #define CP210X_PARTNUM_CP2104 0x04 > #define CP210X_PARTNUM_CP2105 0x05 > #define CP210X_PARTNUM_CP2108 0x08 > +#define CP210X_PARTNUM_CP2102N_QFN28 0x20 > +#define CP210X_PARTNUM_CP2102N_QFN24 0x21 > +#define CP210X_PARTNUM_CP2102N_QFN20 0x22 > #define CP210X_PARTNUM_UNKNOWN 0xFF > > /* CP210X_GET_COMM_STATUS returns these 0x13 bytes */ > @@ -758,8 +761,12 @@ static int cp210x_get_line_ctl(struct usb_serial_port *port, u16 *ctl) > /* > * cp210x_quantise_baudrate > * Quantises the baud rate as per AN205 Table 1 > + * The CP2102N is fully (except for baud rate aliasing) software- > + * compatible, but supports some additional baudrates. However, there is > + * no quantitisation table available for this model, so in this case we > + * take the supported baudrate which is closest to the requested one. > */ > -static unsigned int cp210x_quantise_baudrate(unsigned int baud) > +static unsigned int cp210x_quantise_baudrate(unsigned int baud, bool cp2102n) Pass in a struct usb_serial (or port) as a first argument instead which allows for more readable code as well as for this to be reused to handle other device type differences (e.g. only 2108 besides 2102n handles baudrates over 921.6k). > { > if (baud <= 300) > baud = 300; > @@ -790,10 +797,17 @@ static unsigned int cp210x_quantise_baudrate(unsigned int baud) > else if (baud <= 491520) baud = 460800; > else if (baud <= 567138) baud = 500000; > else if (baud <= 670254) baud = 576000; > - else if (baud < 1000000) > - baud = 921600; > - else if (baud > 2000000) > - baud = 2000000; > + else if (cp2102n) { Add a static helper (looks like you add a define in the gpio patch) cp210x_is_cp2102n(serial) here. You can even test for bit 0x20 in the helper if you prefer (we can always change that later if needed). > + if (baud <= 960800) baud = 921600; > + else if (baud <= 1100000) baud = 1000000; > + else if (baud <= 1350000) baud = 1200000; > + else if (baud <= 1750000) baud = 1500000; > + else if (baud <= 2500000) baud = 2000000; > + else baud = 3000000; And even if the current code uses this odd formatting, your amendments should not. > + } else { > + if (baud < 1000000) baud = 921600; > + else if (baud > 2000000) baud = 2000000; > + } > return baud; > } > > @@ -1045,16 +1059,19 @@ static void cp210x_get_termios_port(struct usb_serial_port *port, > static void cp210x_change_speed(struct tty_struct *tty, > struct usb_serial_port *port, struct ktermios *old_termios) > { > - u32 baud; > - > - baud = tty->termios.c_ospeed; > + bool is_cp2102n; > + u32 baud = tty->termios.c_ospeed; > + struct cp210x_serial_private *priv = usb_get_serial_data(port->serial); > > - /* This maps the requested rate to a rate valid on cp2102 or cp2103, > - * or to an arbitrary rate in [1M,2M]. > + /* This maps the requested rate to a rate valid on cp2102(n) or > + * cp2103 or to an arbitrary rate in [1M,2M]. > * > * NOTE: B0 is not implemented. > */ > - baud = cp210x_quantise_baudrate(baud); > + is_cp2102n = (priv->partnum == CP210X_PARTNUM_CP2102N_QFN28) || > + (priv->partnum == CP210X_PARTNUM_CP2102N_QFN24) || > + (priv->partnum == CP210X_PARTNUM_CP2102N_QFN20); > + baud = cp210x_quantise_baudrate(baud, is_cp2102n); So most of these changes would not be needed. Just pass in port->serial to cp210x_quantise_baudrate(). Thanks, Johan