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: [V3,6/6] usb: serial: f81534: fix tx error on some baud rate From: "Ji-Ze Hong \(Peter Hong\)" Message-Id: <1515653240-5420-6-git-send-email-hpeter+linux_kernel@gmail.com> Date: Thu, 11 Jan 2018 14:47:20 +0800 To: johan@kernel.org Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, peter_hong@fintek.com.tw, "Ji-Ze Hong \(Peter Hong\)" List-ID: VGhlIEY4MTUzMi81MzQgaGFkIDQgY2xvY2tzb3VyY2UgMS44NDYvMTguNDYvMTQuNzcvMjRNSHog YW5kIGJhdWQgcmF0ZXMKY2FuIGJlIHVwIHRvIDEuNU1iaXRzIHdpdGggMjRNSHouIEJ1dCBvbiBz b21lIGJhdWQgcmF0ZSAoMzg0fjUwMGtwcyksIHRoZQpUWCBzaWRlIHdpbGwgc2VuZCB0aGUgZGF0 YSBmcmFtZSB0b28gY2xvc2UgdG8gdHJlYXQgZnJhbWUgZXJyb3Igb24gUlgKc2lkZS4gVGhpcyBw YXRjaCB3aWxsIGZvcmNlIGFsbCBUWCBkYXRhIGZyYW1lIHdpdGggZGVsYXkgMWJpdCBnYXAuCgpT aWduZWQtb2ZmLWJ5OiBKaS1aZSBIb25nIChQZXRlciBIb25nKSA8aHBldGVyK2xpbnV4X2tlcm5l bEBnbWFpbC5jb20+Ci0tLQpWMzoKCTE6IGhhZCBub3Qgbm90aWNlYWJsZSBjaGFuZ2VzLgoKVjI6 CgkxOiBGaXJzdCBpbnRyb2R1Y2VkIGluIHRoaXMgc2VyaWVzIHBhdGNoZXMuCgogZHJpdmVycy91 c2Ivc2VyaWFsL2Y4MTUzNC5jIHwgOCArKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9m ODE1MzQuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mODE1MzQuYwppbmRleCAwOGVmNzJlYTJlZWMu LjkyYzlkOGYxOGE1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2Y4MTUzNC5jCisr KyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mODE1MzQuYwpAQCAtMTMxLDYgKzEzMSw4IEBACiAjZGVm aW5lIEY4MTUzNF9DTEtfMjRfTUhaCQlCSVQoMikKICNkZWZpbmUgRjgxNTM0X0NMS18xNF83N19N SFoJCUdFTk1BU0soMiwgMSkKICNkZWZpbmUgRjgxNTM0X0NMS19NQVNLCQkJR0VOTUFTSygyLCAx KQorI2RlZmluZSBGODE1MzRfQ0xLX1RYX0RFTEFZXzFCSVQJQklUKDMpCisKICNkZWZpbmUgRjgx NTM0X0NMS19SUzQ4NV9NT0RFCQlCSVQoNCkKICNkZWZpbmUgRjgxNTM0X0NMS19SUzQ4NV9JTlZF UlQJCUJJVCg1KQogCkBAIC0xMzg2LDcgKzEzODgsMTEgQEAgc3RhdGljIGludCBmODE1MzRfcG9y dF9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQogCWlmICghcG9ydF9wcml2KQog CQlyZXR1cm4gLUVOT01FTTsKIAotCXBvcnRfcHJpdi0+c2hhZG93X2NsayA9IEY4MTUzNF9VQVJU X0VOOworCS8qCisJICogV2UnbGwgbWFrZSB0eCBmcmFtZSBlcnJvciB3aGVuIGJhdWQgcmF0ZSBm cm9tIDM4NH41MDBrcHMuIFNvIHdlJ2xsCisJICogZGVsYXkgYWxsIHR4IGRhdGEgZnJhbWUgd2l0 aCAxYml0LgorCSAqLworCXBvcnRfcHJpdi0+c2hhZG93X2NsayA9IEY4MTUzNF9VQVJUX0VOIHwg RjgxNTM0X0NMS19UWF9ERUxBWV8xQklUOwogCXNwaW5fbG9ja19pbml0KCZwb3J0X3ByaXYtPm1z cl9sb2NrKTsKIAltdXRleF9pbml0KCZwb3J0X3ByaXYtPm1jcl9tdXRleCk7CiAJbXV0ZXhfaW5p dCgmcG9ydF9wcml2LT5sY3JfbXV0ZXgpOwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932569AbeAKGrh (ORCPT + 1 other); Thu, 11 Jan 2018 01:47:37 -0500 Received: from mail-pf0-f193.google.com ([209.85.192.193]:41336 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932292AbeAKGrc (ORCPT ); Thu, 11 Jan 2018 01:47:32 -0500 X-Google-Smtp-Source: ACJfBovjivQoJelCbwIpOAWi9fTFQbaF0CYbIsgzsyoZw1lnnj7d9BElxvZahJCPvTCnkdyCQl6Kqw== From: "Ji-Ze Hong (Peter Hong)" X-Google-Original-From: "Ji-Ze Hong (Peter Hong)" To: johan@kernel.org Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, peter_hong@fintek.com.tw, "Ji-Ze Hong (Peter Hong)" Subject: [PATCH V3 6/6] usb: serial: f81534: fix tx error on some baud rate Date: Thu, 11 Jan 2018 14:47:20 +0800 Message-Id: <1515653240-5420-6-git-send-email-hpeter+linux_kernel@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515653240-5420-1-git-send-email-hpeter+linux_kernel@gmail.com> References: <1515653240-5420-1-git-send-email-hpeter+linux_kernel@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: The F81532/534 had 4 clocksource 1.846/18.46/14.77/24MHz and baud rates can be up to 1.5Mbits with 24MHz. But on some baud rate (384~500kps), the TX side will send the data frame too close to treat frame error on RX side. This patch will force all TX data frame with delay 1bit gap. Signed-off-by: Ji-Ze Hong (Peter Hong) --- V3: 1: had not noticeable changes. V2: 1: First introduced in this series patches. drivers/usb/serial/f81534.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/usb/serial/f81534.c b/drivers/usb/serial/f81534.c index 08ef72ea2eec..92c9d8f18a5a 100644 --- a/drivers/usb/serial/f81534.c +++ b/drivers/usb/serial/f81534.c @@ -131,6 +131,8 @@ #define F81534_CLK_24_MHZ BIT(2) #define F81534_CLK_14_77_MHZ GENMASK(2, 1) #define F81534_CLK_MASK GENMASK(2, 1) +#define F81534_CLK_TX_DELAY_1BIT BIT(3) + #define F81534_CLK_RS485_MODE BIT(4) #define F81534_CLK_RS485_INVERT BIT(5) @@ -1386,7 +1388,11 @@ static int f81534_port_probe(struct usb_serial_port *port) if (!port_priv) return -ENOMEM; - port_priv->shadow_clk = F81534_UART_EN; + /* + * We'll make tx frame error when baud rate from 384~500kps. So we'll + * delay all tx data frame with 1bit. + */ + port_priv->shadow_clk = F81534_UART_EN | F81534_CLK_TX_DELAY_1BIT; spin_lock_init(&port_priv->msr_lock); mutex_init(&port_priv->mcr_mutex); mutex_init(&port_priv->lcr_mutex); -- 2.7.4