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,1/6] usb: serial: f81534: add high baud rate support From: "Ji-Ze Hong \(Peter Hong\)" Message-Id: <1515653240-5420-1-git-send-email-hpeter+linux_kernel@gmail.com> Date: Thu, 11 Jan 2018 14:47:15 +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 YW5kIGJhdWQgcmF0ZXMKY2FuIGJlIHVwIHRvIDEuNU1iaXRzIHdpdGggMjRNSHouCgpUaGlzIGRl dmljZSBtYXkgZ2VuZXJhdGUgZGF0YSBvdmVycnVuIHdoZW4gYmF1ZCByYXRlIHNldHRpbmcgdG8g OTIxNjAwYnBzCm9yIGhpZ2hlciB3aXRoIG9sZCBVQVJUIHRyaWdnZXIgbGV2ZWwgc2V0dGluZyAo OHgxND0xMTIpIHdpdGggZnVsbApsb2FkaW5nLiBXZSdsbCBjaGFuZ2UgdHJpZ2dlciBsZXZlbCBm cm9tIDh4MTQ9MTEyIHRvIDh4OD02NCB0byBhdm9pZCBkYXRhCm92ZXJydW4uCgpBbHNvIHRoZSBy ZWFkL3dyaXRlIG9mIEVQMCB3aWxsIGJlIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guIFRoZSB3b3Jz dCBjYXNlCm9mIHJlc3BvbmRpbmcgdGltZSBpcyAyMHMgd2hlbiBhbGwgc2VyaWFsIHBvcnQgYXJl IGZ1bGwgbG9hZGluZyBhbmQgdHJ5aW5nCnRvIGFjY2VzcyBFUDAsIHNvIHdlIGNoYW5nZSBFUDAg dGltZW91dCBmcm9tIDEwIHRvIDIwcy4KCkY4MTUzMi81MzQgQ2xvY2sgcmVnaXN0ZXIgKG9mZnNl dCArMDhoKQoKQml0MDoJVUFSVCBFbmFibGUgKGFsd2F5cyBvbikKQml0Mi0xOglDbG9jayBzb3Vy Y2Ugc2VsZWN0b3IKCQkJMDA6IDEuODQ2TUh6LgoJCQkwMTogMTguNDZNSHouCgkJCTEwOiAyNE1I ei4KCQkJMTE6IDE0Ljc3TUh6LgoKU2lnbmVkLW9mZi1ieTogSmktWmUgSG9uZyAoUGV0ZXIgSG9u ZykgPGhwZXRlcitsaW51eF9rZXJuZWxAZ21haWwuY29tPgotLS0KVjM6CgkxOiBTZXBhcmF0ZSBV QVJUIEVuYWJsZSBiaXQgZnJvbSBjbG9jayBzb3VyY2VzIGFuZCBhY3RpdmUgaXQgaW4KCSAgIHBv cnRfcHJvYmUoKSB3aXRoIHBvcnRfcHJpdi0+c2hhZG93X2Nsay4KCTI6IEFkZCBzYW5pdHkgY2hl Y2sgZm9yIGNsb2Nrc291cmNlIGlkeCBpbiBzZXRfcG9ydF9jb25maWcoKS4KCTM6IGNoYW5nZSBj YWxjX2JhdWRfZGl2aXNvcigpIHBhcmFtZXRlciBmcm9tIEY4MTUzNF9NQVhfQkFVRFJBVEUKCSAg IHRvIHByaXYtPmJhdWRfYmFzZS4KCnYyOgoJMTogQWRkIGNvbW1pdCBtZXNzYWdlIGZvciBGODE1 MzRfVVNCX1RJTUVPVVQgZnJvbSAxMDAwIHRvIDIwMDAgYW5kCgkgICB0cmlnZ2VyIGxldmVsIGZy b20gVUFSVF9GQ1JfUl9UUklHXzExIHRvIFVBUlRfRkNSX1RSSUdHRVJfOC4KCTI6IFNlcGFyYXRl IFVBUlQgRW5hYmxlIGJpdCBmcm9tIGNsb2NrIHNvdXJjZXMuCgkzOiBBZGQgaGVscCBmdW5jdGlv biAiZjgxNTM0X2ZpbmRfY2xrKCkiIHRvIGNhbGN1bGF0ZSBiYXVkIHJhdGUgYW5kCgkgICBjbG9j ayBzb3VyY2UKCTQ6IEFkZCBzaGFkb3cgY2xvY2sgcmVnaXN0ZXIgZm9yIGZ1dHVyZSB1c2UuIAoK IGRyaXZlcnMvdXNiL3NlcmlhbC9mODE1MzQuYyB8IDkzICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc3IGluc2VydGlvbnMoKyks IDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mODE1MzQu YyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mODE1MzQuYwppbmRleCBlNDU3M2I0Yzg5MzUuLjE1NjNk M2YzNDM4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2Y4MTUzNC5jCisrKyBiL2Ry aXZlcnMvdXNiL3NlcmlhbC9mODE1MzQuYwpAQCAtNDEsNiArNDEsNyBAQAogI2RlZmluZSBGODE1 MzRfTU9ERU1fQ09OVFJPTF9SRUcJKDB4MDQgKyBGODE1MzRfVUFSVF9CQVNFX0FERFJFU1MpCiAj ZGVmaW5lIEY4MTUzNF9MSU5FX1NUQVRVU19SRUcJCSgweDA1ICsgRjgxNTM0X1VBUlRfQkFTRV9B RERSRVNTKQogI2RlZmluZSBGODE1MzRfTU9ERU1fU1RBVFVTX1JFRwkJKDB4MDYgKyBGODE1MzRf VUFSVF9CQVNFX0FERFJFU1MpCisjZGVmaW5lIEY4MTUzNF9DTE9DS19SRUcJCSgweDA4ICsgRjgx NTM0X1VBUlRfQkFTRV9BRERSRVNTKQogI2RlZmluZSBGODE1MzRfQ09ORklHMV9SRUcJCSgweDA5 ICsgRjgxNTM0X1VBUlRfQkFTRV9BRERSRVNTKQogCiAjZGVmaW5lIEY4MTUzNF9ERUZfQ09ORl9B RERSRVNTX1NUQVJUCTB4MzAwMApAQCAtNTcsNyArNTgsNyBAQAogCiAvKiBEZWZhdWx0IFVSQiB0 aW1lb3V0IGZvciBVU0Igb3BlcmF0aW9ucyAqLwogI2RlZmluZSBGODE1MzRfVVNCX01BWF9SRVRS WQkJMTAKLSNkZWZpbmUgRjgxNTM0X1VTQl9USU1FT1VUCQkxMDAwCisjZGVmaW5lIEY4MTUzNF9V U0JfVElNRU9VVAkJMjAwMAogI2RlZmluZSBGODE1MzRfU0VUX0dFVF9SRUdJU1RFUgkJMHhBMAog CiAjZGVmaW5lIEY4MTUzNF9OVU1fUE9SVAkJCTQKQEAgLTk2LDcgKzk3LDYgQEAKICNkZWZpbmUg RjgxNTM0X0NNRF9SRUFECQkJMHgwMwogCiAjZGVmaW5lIEY4MTUzNF9ERUZBVUxUX0JBVURfUkFU RQk5NjAwCi0jZGVmaW5lIEY4MTUzNF9NQVhfQkFVRFJBVEUJCTExNTIwMAogCiAjZGVmaW5lIEY4 MTUzNF9QT1JUX0NPTkZfRElTQUJMRV9QT1JUCUJJVCgzKQogI2RlZmluZSBGODE1MzRfUE9SVF9D T05GX05PVF9FWElTVF9QT1JUCUJJVCg3KQpAQCAtMTA2LDYgKzEwNiwyNCBAQAogI2RlZmluZSBG ODE1MzRfMVhfUlhUUklHR0VSCQkweGMzCiAjZGVmaW5lIEY4MTUzNF84WF9SWFRSSUdHRVIJCTB4 Y2YKIAorLyoKKyAqIEY4MTUzMi81MzQgQ2xvY2sgcmVnaXN0ZXJzIChvZmZzZXQgKzA4aCkKKyAq CisgKiBCaXQwOglVQVJUIEVuYWJsZSAoYWx3YXlzIG9uKQorICogQml0Mi0xOglDbG9jayBzb3Vy Y2Ugc2VsZWN0b3IKKyAqCQkJMDA6IDEuODQ2TUh6LgorICoJCQkwMTogMTguNDZNSHouCisgKgkJ CTEwOiAyNE1Iei4KKyAqCQkJMTE6IDE0Ljc3TUh6LgorICovCisKKyNkZWZpbmUgRjgxNTM0X1VB UlRfRU4JCQlCSVQoMCkKKyNkZWZpbmUgRjgxNTM0X0NMS18xXzg0Nl9NSFoJCTAKKyNkZWZpbmUg RjgxNTM0X0NMS18xOF80Nl9NSFoJCUJJVCgxKQorI2RlZmluZSBGODE1MzRfQ0xLXzI0X01IWgkJ QklUKDIpCisjZGVmaW5lIEY4MTUzNF9DTEtfMTRfNzdfTUhaCQlHRU5NQVNLKDIsIDEpCisjZGVm aW5lIEY4MTUzNF9DTEtfTUFTSwkJCUdFTk1BU0soMiwgMSkKKwogc3RhdGljIGNvbnN0IHN0cnVj dCB1c2JfZGV2aWNlX2lkIGY4MTUzNF9pZF90YWJsZVtdID0gewogCXsgVVNCX0RFVklDRShGSU5U RUtfVkVORE9SX0lEXzEsIEZJTlRFS19ERVZJQ0VfSUQpIH0sCiAJeyBVU0JfREVWSUNFKEZJTlRF S19WRU5ET1JfSURfMiwgRklOVEVLX0RFVklDRV9JRCkgfSwKQEAgLTEyOSwxMiArMTQ3LDE4IEBA IHN0cnVjdCBmODE1MzRfcG9ydF9wcml2YXRlIHsKIAlzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpw b3J0OwogCXVuc2lnbmVkIGxvbmcgdHhfZW1wdHk7CiAJc3BpbmxvY2tfdCBtc3JfbG9jazsKKwl1 MzIgYmF1ZF9iYXNlOwogCXU4IHNoYWRvd19tY3I7CiAJdTggc2hhZG93X2xjcjsKIAl1OCBzaGFk b3dfbXNyOworCXU4IHNoYWRvd19jbGs7CiAJdTggcGh5X251bTsKIH07CiAKK3N0YXRpYyB1MzIg Y29uc3QgYmF1ZHJhdGVfdGFibGVbXSA9IHsgMTE1MjAwLCA5MjE2MDAsIDExNTIwMDAsIDE1MDAw MDAgfTsKK3N0YXRpYyB1OCBjb25zdCBjbG9ja190YWJsZVtdID0geyBGODE1MzRfQ0xLXzFfODQ2 X01IWiwgRjgxNTM0X0NMS18xNF83N19NSFosCisJCQkJRjgxNTM0X0NMS18xOF80Nl9NSFosIEY4 MTUzNF9DTEtfMjRfTUhaIH07CisKIHN0YXRpYyBpbnQgZjgxNTM0X2xvZ2ljX3RvX3BoeV9wb3J0 KHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsCiAJCQkJCXN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQg KnBvcnQpCiB7CkBAIC00NjAsMTMgKzQ4NCw1MiBAQCBzdGF0aWMgdTMyIGY4MTUzNF9jYWxjX2Jh dWRfZGl2aXNvcih1MzIgYmF1ZHJhdGUsIHUzMiBjbG9ja3JhdGUpCiAJcmV0dXJuIERJVl9ST1VO RF9DTE9TRVNUKGNsb2NrcmF0ZSwgYmF1ZHJhdGUpOwogfQogCi1zdGF0aWMgaW50IGY4MTUzNF9z ZXRfcG9ydF9jb25maWcoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwgdTMyIGJhdWRyYXRl LAotCQkJCQl1OCBsY3IpCitzdGF0aWMgaW50IGY4MTUzNF9maW5kX2Nsayh1MzIgYmF1ZHJhdGUp Cit7CisJaW50IGlkeDsKKworCWZvciAoaWR4ID0gMDsgaWR4IDwgQVJSQVlfU0laRShiYXVkcmF0 ZV90YWJsZSk7ICsraWR4KSB7CisJCWlmIChiYXVkcmF0ZSA8PSBiYXVkcmF0ZV90YWJsZVtpZHhd ICYmCisJCQkJYmF1ZHJhdGVfdGFibGVbaWR4XSAlIGJhdWRyYXRlID09IDApCisJCQlyZXR1cm4g aWR4OworCX0KKworCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgaW50IGY4MTUzNF9zZXRf cG9ydF9jb25maWcoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwKKwkJc3RydWN0IHR0eV9z dHJ1Y3QgKnR0eSwgdTMyIGJhdWRyYXRlLCB1MzIgb2xkX2JhdWRyYXRlLCB1OCBsY3IpCiB7CiAJ c3RydWN0IGY4MTUzNF9wb3J0X3ByaXZhdGUgKnBvcnRfcHJpdiA9IHVzYl9nZXRfc2VyaWFsX3Bv cnRfZGF0YShwb3J0KTsKIAl1MzIgZGl2aXNvcjsKIAlpbnQgc3RhdHVzOworCWludCBpOworCWlu dCBpZHg7CiAJdTggdmFsdWU7CisJdTMyIGJhdWRfbGlzdFtdID0ge2JhdWRyYXRlLCBvbGRfYmF1 ZHJhdGUsIEY4MTUzNF9ERUZBVUxUX0JBVURfUkFURX07CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShiYXVkX2xpc3QpOyArK2kpIHsKKwkJaWR4ID0gZjgxNTM0X2ZpbmRfY2xrKGJhdWRf bGlzdFtpXSk7CisJCWlmIChpZHggPj0gMCkgeworCQkJYmF1ZHJhdGUgPSBiYXVkX2xpc3RbaV07 CisJCQl0dHlfZW5jb2RlX2JhdWRfcmF0ZSh0dHksIGJhdWRyYXRlLCBiYXVkcmF0ZSk7CisJCQli cmVhazsKKwkJfQorCX0KKworCWlmIChpZHggPCAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXBv cnRfcHJpdi0+YmF1ZF9iYXNlID0gYmF1ZHJhdGVfdGFibGVbaWR4XTsKKwlwb3J0X3ByaXYtPnNo YWRvd19jbGsgJj0gfkY4MTUzNF9DTEtfTUFTSzsKKwlwb3J0X3ByaXYtPnNoYWRvd19jbGsgfD0g Y2xvY2tfdGFibGVbaWR4XTsKKworCXN0YXR1cyA9IGY4MTUzNF9zZXRfcG9ydF9yZWdpc3Rlcihw b3J0LCBGODE1MzRfQ0xPQ0tfUkVHLAorCQkJcG9ydF9wcml2LT5zaGFkb3dfY2xrKTsKKwlpZiAo c3RhdHVzKSB7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIkNMT0NLX1JFRyBzZXR0aW5nIGZhaWxl ZFxuIik7CisJCXJldHVybiBzdGF0dXM7CisJfQogCiAJaWYgKGJhdWRyYXRlIDw9IDEyMDApCiAJ CXZhbHVlID0gRjgxNTM0XzFYX1JYVFJJR0dFUjsJLyogMTI4IEZJRk8gJiBUTDogMXggKi8KQEAg LTQ4Miw3ICs1NDUsNyBAQCBzdGF0aWMgaW50IGY4MTUzNF9zZXRfcG9ydF9jb25maWcoc3RydWN0 IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwgdTMyIGJhdWRyYXRlLAogCWlmIChiYXVkcmF0ZSA8PSAx MjAwKQogCQl2YWx1ZSA9IFVBUlRfRkNSX1RSSUdHRVJfMSB8IFVBUlRfRkNSX0VOQUJMRV9GSUZP OyAvKiBUTDogMSAqLwogCWVsc2UKLQkJdmFsdWUgPSBVQVJUX0ZDUl9SX1RSSUdfMTEgfCBVQVJU X0ZDUl9FTkFCTEVfRklGTzsgLyogVEw6IDE0ICovCisJCXZhbHVlID0gVUFSVF9GQ1JfVFJJR0dF Ul84IHwgVUFSVF9GQ1JfRU5BQkxFX0ZJRk87IC8qIFRMOiA4ICovCiAKIAlzdGF0dXMgPSBmODE1 MzRfc2V0X3BvcnRfcmVnaXN0ZXIocG9ydCwgRjgxNTM0X0ZJRk9fQ09OVFJPTF9SRUcsCiAJCQkJ CQl2YWx1ZSk7CkBAIC00OTEsNyArNTU0LDcgQEAgc3RhdGljIGludCBmODE1MzRfc2V0X3BvcnRf Y29uZmlnKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsIHUzMiBiYXVkcmF0ZSwKIAkJcmV0 dXJuIHN0YXR1czsKIAl9CiAKLQlkaXZpc29yID0gZjgxNTM0X2NhbGNfYmF1ZF9kaXZpc29yKGJh dWRyYXRlLCBGODE1MzRfTUFYX0JBVURSQVRFKTsKKwlkaXZpc29yID0gZjgxNTM0X2NhbGNfYmF1 ZF9kaXZpc29yKGJhdWRyYXRlLCBwb3J0X3ByaXYtPmJhdWRfYmFzZSk7CiAKIAltdXRleF9sb2Nr KCZwb3J0X3ByaXYtPmxjcl9tdXRleCk7CiAKQEAgLTc0MSw2ICs4MDQsNyBAQCBzdGF0aWMgdm9p ZCBmODE1MzRfc2V0X3Rlcm1pb3Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKIAl1OCBuZXdfbGNy ID0gMDsKIAlpbnQgc3RhdHVzOwogCXUzMiBiYXVkOworCXUzMiBvbGRfYmF1ZDsKIAogCWlmIChD X0JBVUQodHR5KSA9PSBCMCkKIAkJZjgxNTM0X3VwZGF0ZV9tY3RybChwb3J0LCAwLCBUSU9DTV9E VFIgfCBUSU9DTV9SVFMpOwpAQCAtNzgwLDE4ICs4NDQsMTQgQEAgc3RhdGljIHZvaWQgZjgxNTM0 X3NldF90ZXJtaW9zKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksCiAJaWYgKCFiYXVkKQogCQlyZXR1 cm47CiAKLQlpZiAoYmF1ZCA+IEY4MTUzNF9NQVhfQkFVRFJBVEUpIHsKLQkJaWYgKG9sZF90ZXJt aW9zKQotCQkJYmF1ZCA9IHR0eV90ZXJtaW9zX2JhdWRfcmF0ZShvbGRfdGVybWlvcyk7Ci0JCWVs c2UKLQkJCWJhdWQgPSBGODE1MzRfREVGQVVMVF9CQVVEX1JBVEU7Ci0KLQkJdHR5X2VuY29kZV9i YXVkX3JhdGUodHR5LCBiYXVkLCBiYXVkKTsKLQl9CisJaWYgKG9sZF90ZXJtaW9zKQorCQlvbGRf YmF1ZCA9IHR0eV90ZXJtaW9zX2JhdWRfcmF0ZShvbGRfdGVybWlvcyk7CisJZWxzZQorCQlvbGRf YmF1ZCA9IEY4MTUzNF9ERUZBVUxUX0JBVURfUkFURTsKIAogCWRldl9kYmcoJnBvcnQtPmRldiwg IiVzOiBiYXVkOiAlZFxuIiwgX19mdW5jX18sIGJhdWQpOwogCi0Jc3RhdHVzID0gZjgxNTM0X3Nl dF9wb3J0X2NvbmZpZyhwb3J0LCBiYXVkLCBuZXdfbGNyKTsKKwlzdGF0dXMgPSBmODE1MzRfc2V0 X3BvcnRfY29uZmlnKHBvcnQsIHR0eSwgYmF1ZCwgb2xkX2JhdWQsIG5ld19sY3IpOwogCWlmIChz dGF0dXMgPCAwKSB7CiAJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzOiBzZXQgcG9ydCBjb25maWcg ZmFpbGVkOiAlZFxuIiwKIAkJCQlfX2Z1bmNfXywgc3RhdHVzKTsKQEAgLTk0Nyw3ICsxMDA3LDcg QEAgc3RhdGljIGludCBmODE1MzRfZ2V0X3NlcmlhbF9pbmZvKHN0cnVjdCB1c2Jfc2VyaWFsX3Bv cnQgKnBvcnQsCiAJdG1wLnR5cGUgPSBQT1JUXzE2NTUwQTsKIAl0bXAucG9ydCA9IHBvcnQtPnBv cnRfbnVtYmVyOwogCXRtcC5saW5lID0gcG9ydC0+bWlub3I7Ci0JdG1wLmJhdWRfYmFzZSA9IEY4 MTUzNF9NQVhfQkFVRFJBVEU7CisJdG1wLmJhdWRfYmFzZSA9IHBvcnRfcHJpdi0+YmF1ZF9iYXNl OwogCiAJaWYgKGNvcHlfdG9fdXNlcihyZXRpbmZvLCAmdG1wLCBzaXplb2YoKnJldGluZm8pKSkK IAkJcmV0dXJuIC1FRkFVTFQ7CkBAIC0xMjIxLDYgKzEyODEsNyBAQCBzdGF0aWMgaW50IGY4MTUz NF9wb3J0X3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpCiAJaWYgKCFwb3J0X3By aXYpCiAJCXJldHVybiAtRU5PTUVNOwogCisJcG9ydF9wcml2LT5zaGFkb3dfY2xrID0gRjgxNTM0 X1VBUlRfRU47CiAJc3Bpbl9sb2NrX2luaXQoJnBvcnRfcHJpdi0+bXNyX2xvY2spOwogCW11dGV4 X2luaXQoJnBvcnRfcHJpdi0+bWNyX211dGV4KTsKIAltdXRleF9pbml0KCZwb3J0X3ByaXYtPmxj cl9tdXRleCk7Cg==