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: [V5,2/3] USB: serial: f81232: add high baud rate support From: "Ji-Ze Hong \(Peter Hong\)" Message-Id: <1554272790-26747-2-git-send-email-hpeter+linux_kernel@gmail.com> Date: Wed, 3 Apr 2019 14:26:29 +0800 To: peter_hong@fintek.com.tw, johan@kernel.org, gregkh@linuxfoundation.org Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, "Ji-Ze Hong \(Peter Hong\)" List-ID: VGhlIEY4MTIzMiBoYWQgNCBjbG9ja3NvdXJjZSAxLjg0Ni8xOC40Ni8xNC43Ny8yNE1IeiBhbmQg YmF1ZCByYXRlcwpjYW4gYmUgdXAgdG8gMS41TWJpdHMgd2l0aCAyNE1Iei4KCkY4MTIzMiBDbG9j ayByZWdpc3RlcnMgKDEwNmgpCgpCaXQxLTA6ICAgICBDbG9jayBzb3VyY2Ugc2VsZWN0b3IKICAg ICAgICAgICAgICAgICAgICAwMDogMS44NDZNSHouCiAgICAgICAgICAgICAgICAgICAgMDE6IDE4 LjQ2TUh6LgogICAgICAgICAgICAgICAgICAgIDEwOiAyNE1Iei4KICAgICAgICAgICAgICAgICAg ICAxMTogMTQuNzdNSHouCgpTaWduZWQtb2ZmLWJ5OiBKaS1aZSBIb25nIChQZXRlciBIb25nKSA8 aHBldGVyK2xpbnV4X2tlcm5lbEBnbWFpbC5jb20+Ci0tLQp2NToKCTE6IG5vIGNoYW5nZQoKdjQ6 CgkxOiBubyBjaGFuZ2UKCnYzOgoJMTogY2hhbmdlIHRoZSBiYXVkX2Jhc2UgaW4gZjgxMjMyX2dl dF9zZXJpYWxfaW5mbygpCgogZHJpdmVycy91c2Ivc2VyaWFsL2Y4MTIzMi5jIHwgMTA1ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg OTQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91 c2Ivc2VyaWFsL2Y4MTIzMi5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2Y4MTIzMi5jCmluZGV4IGQ4 YTBiYjdhNDFmMC4uMzJlZmY4ZmFkNTZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwv ZjgxMjMyLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2Y4MTIzMi5jCkBAIC0yOCw3ICsyOCw4 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBpZF90YWJsZVtdID0gewogTU9E VUxFX0RFVklDRV9UQUJMRSh1c2IsIGlkX3RhYmxlKTsKIAogLyogTWF4aW11bSBiYXVkcmF0ZSBm b3IgRjgxMjMyICovCi0jZGVmaW5lIEY4MTIzMl9NQVhfQkFVRFJBVEUJCTExNTIwMAorI2RlZmlu ZSBGODEyMzJfTUFYX0JBVURSQVRFCQkxNTAwMDAwCisjZGVmaW5lIEY4MTIzMl9ERUZfQkFVRFJB VEUJCTk2MDAKIAogLyogVVNCIENvbnRyb2wgRVAgcGFyYW1ldGVyICovCiAjZGVmaW5lIEY4MTIz Ml9SRUdJU1RFUl9SRVFVRVNUCQkweGEwCkBAIC00NCwxOCArNDUsNDIgQEAgTU9EVUxFX0RFVklD RV9UQUJMRSh1c2IsIGlkX3RhYmxlKTsKICNkZWZpbmUgTElORV9TVEFUVVNfUkVHSVNURVIJCSgw eDA1ICsgU0VSSUFMX0JBU0VfQUREUkVTUykKICNkZWZpbmUgTU9ERU1fU1RBVFVTX1JFR0lTVEVS CQkoMHgwNiArIFNFUklBTF9CQVNFX0FERFJFU1MpCiAKKy8qCisgKiBGODEyMzIgQ2xvY2sgcmVn aXN0ZXJzICgxMDZoKQorICoKKyAqIEJpdDEtMDoJQ2xvY2sgc291cmNlIHNlbGVjdG9yCisgKgkJ CTAwOiAxLjg0Nk1Iei4KKyAqCQkJMDE6IDE4LjQ2TUh6LgorICoJCQkxMDogMjRNSHouCisgKgkJ CTExOiAxNC43N01Iei4KKyAqLworI2RlZmluZSBGODEyMzJfQ0xLX1JFR0lTVEVSCQkweDEwNgor I2RlZmluZSBGODEyMzJfQ0xLXzFfODQ2X01IWgkJMAorI2RlZmluZSBGODEyMzJfQ0xLXzE4XzQ2 X01IWgkJQklUKDApCisjZGVmaW5lIEY4MTIzMl9DTEtfMjRfTUhaCQlCSVQoMSkKKyNkZWZpbmUg RjgxMjMyX0NMS18xNF83N19NSFoJCShCSVQoMSkgfCBCSVQoMCkpCisjZGVmaW5lIEY4MTIzMl9D TEtfTUFTSwkJCUdFTk1BU0soMSwgMCkKKwogc3RydWN0IGY4MTIzMl9wcml2YXRlIHsKIAlzdHJ1 Y3QgbXV0ZXggbG9jazsKIAl1OCBtb2RlbV9jb250cm9sOwogCXU4IG1vZGVtX3N0YXR1czsKKwlz cGVlZF90IGJhdWRfYmFzZTsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgbHNyX3dvcms7CiAJc3RydWN0 IHdvcmtfc3RydWN0IGludGVycnVwdF93b3JrOwogCXN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBv cnQ7CiB9OwogCi1zdGF0aWMgaW50IGNhbGNfYmF1ZF9kaXZpc29yKHNwZWVkX3QgYmF1ZHJhdGUp CitzdGF0aWMgdTMyIGNvbnN0IGJhdWRyYXRlX3RhYmxlW10gPSB7IDExNTIwMCwgOTIxNjAwLCAx MTUyMDAwLCAxNTAwMDAwIH07CitzdGF0aWMgdTggY29uc3QgY2xvY2tfdGFibGVbXSA9IHsgRjgx MjMyX0NMS18xXzg0Nl9NSFosIEY4MTIzMl9DTEtfMTRfNzdfTUhaLAorCQkJCUY4MTIzMl9DTEtf MThfNDZfTUhaLCBGODEyMzJfQ0xLXzI0X01IWiB9OworCitzdGF0aWMgaW50IGNhbGNfYmF1ZF9k aXZpc29yKHNwZWVkX3QgYmF1ZHJhdGUsIHNwZWVkX3QgY2xvY2tyYXRlKQogewotCXJldHVybiBE SVZfUk9VTkRfQ0xPU0VTVChGODEyMzJfTUFYX0JBVURSQVRFLCBiYXVkcmF0ZSk7CisJaWYgKCFi YXVkcmF0ZSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoY2xvY2ty YXRlLCBiYXVkcmF0ZSk7CiB9CiAKIHN0YXRpYyBpbnQgZjgxMjMyX2dldF9yZWdpc3RlcihzdHJ1 Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LCB1MTYgcmVnLCB1OCAqdmFsKQpAQCAtMTI5LDYgKzE1 NCwyMSBAQCBzdGF0aWMgaW50IGY4MTIzMl9zZXRfcmVnaXN0ZXIoc3RydWN0IHVzYl9zZXJpYWxf cG9ydCAqcG9ydCwgdTE2IHJlZywgdTggdmFsKQogCXJldHVybiBzdGF0dXM7CiB9CiAKK3N0YXRp YyBpbnQgZjgxMjMyX3NldF9tYXNrX3JlZ2lzdGVyKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBv cnQsIHUxNiByZWcsCisJCQkJCXU4IG1hc2ssIHU4IHZhbCkKK3sKKwlpbnQgc3RhdHVzOworCXU4 IHRtcDsKKworCXN0YXR1cyA9IGY4MTIzMl9nZXRfcmVnaXN0ZXIocG9ydCwgcmVnLCAmdG1wKTsK KwlpZiAoc3RhdHVzKQorCQlyZXR1cm4gc3RhdHVzOworCisJdG1wID0gKHRtcCAmIH5tYXNrKSB8 ICh2YWwgJiBtYXNrKTsKKworCXJldHVybiBmODEyMzJfc2V0X3JlZ2lzdGVyKHBvcnQsIHJlZywg dG1wKTsKK30KKwogc3RhdGljIHZvaWQgZjgxMjMyX3JlYWRfbXNyKHN0cnVjdCB1c2Jfc2VyaWFs X3BvcnQgKnBvcnQpCiB7CiAJaW50IHN0YXR1czsKQEAgLTM0OSwxMyArMzg5LDUzIEBAIHN0YXRp YyB2b2lkIGY4MTIzMl9icmVha19jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGJyZWFr X3N0YXRlKQogCSAqLwogfQogCi1zdGF0aWMgdm9pZCBmODEyMzJfc2V0X2JhdWRyYXRlKHN0cnVj dCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsIHNwZWVkX3QgYmF1ZHJhdGUpCitzdGF0aWMgaW50IGY4 MTIzMl9maW5kX2NsayhzcGVlZF90IGJhdWRyYXRlKQoreworCWludCBpZHg7CisKKwlmb3IgKGlk eCA9IDA7IGlkeCA8IEFSUkFZX1NJWkUoYmF1ZHJhdGVfdGFibGUpOyArK2lkeCkgeworCQlpZiAo YmF1ZHJhdGUgPD0gYmF1ZHJhdGVfdGFibGVbaWR4XSAmJgorCQkJCWJhdWRyYXRlX3RhYmxlW2lk eF0gJSBiYXVkcmF0ZSA9PSAwKQorCQkJcmV0dXJuIGlkeDsKKwl9CisKKwlyZXR1cm4gLUVJTlZB TDsKK30KKworc3RhdGljIHZvaWQgZjgxMjMyX3NldF9iYXVkcmF0ZShzdHJ1Y3QgdHR5X3N0cnVj dCAqdHR5LAorCQkJCXN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsIHNwZWVkX3QgYmF1ZHJh dGUsCisJCQkJc3BlZWRfdCBvbGRfYmF1ZHJhdGUpCiB7CisJc3RydWN0IGY4MTIzMl9wcml2YXRl ICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpOwogCXU4IGxjcjsKIAlpbnQg ZGl2aXNvcjsKIAlpbnQgc3RhdHVzID0gMDsKKwlpbnQgaTsKKwlpbnQgaWR4OworCXNwZWVkX3Qg YmF1ZF9saXN0W10gPSB7YmF1ZHJhdGUsIG9sZF9iYXVkcmF0ZSwgRjgxMjMyX0RFRl9CQVVEUkFU RX07CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShiYXVkX2xpc3QpOyArK2kpIHsKKwkJ aWR4ID0gZjgxMjMyX2ZpbmRfY2xrKGJhdWRfbGlzdFtpXSk7CisJCWlmIChpZHggPj0gMCkgewor CQkJYmF1ZHJhdGUgPSBiYXVkX2xpc3RbaV07CisJCQl0dHlfZW5jb2RlX2JhdWRfcmF0ZSh0dHks IGJhdWRyYXRlLCBiYXVkcmF0ZSk7CisJCQlicmVhazsKKwkJfQorCX0KIAotCWRpdmlzb3IgPSBj YWxjX2JhdWRfZGl2aXNvcihiYXVkcmF0ZSk7CisJaWYgKGlkeCA8IDApCisJCXJldHVybjsKKwor CXByaXYtPmJhdWRfYmFzZSA9IGJhdWRyYXRlX3RhYmxlW2lkeF07CisJZGl2aXNvciA9IGNhbGNf YmF1ZF9kaXZpc29yKGJhdWRyYXRlLCBwcml2LT5iYXVkX2Jhc2UpOworCisJc3RhdHVzID0gZjgx MjMyX3NldF9tYXNrX3JlZ2lzdGVyKHBvcnQsIEY4MTIzMl9DTEtfUkVHSVNURVIsCisJCQlGODEy MzJfQ0xLX01BU0ssIGNsb2NrX3RhYmxlW2lkeF0pOworCWlmIChzdGF0dXMpIHsKKwkJZGV2X2Vy cigmcG9ydC0+ZGV2LCAiJXMgZmFpbGVkIHRvIHNldCBDTEtfUkVHOiAlZFxuIiwKKwkJCV9fZnVu Y19fLCBzdGF0dXMpOworCQlyZXR1cm47CisJfQogCiAJc3RhdHVzID0gZjgxMjMyX2dldF9yZWdp c3Rlcihwb3J0LCBMSU5FX0NPTlRST0xfUkVHSVNURVIsCiAJCQkgJmxjcik7IC8qIGdldCBMQ1Ig Ki8KQEAgLTQ0NSw2ICs1MjUsNyBAQCBzdGF0aWMgdm9pZCBmODEyMzJfc2V0X3Rlcm1pb3Moc3Ry dWN0IHR0eV9zdHJ1Y3QgKnR0eSwKIAl1OCBuZXdfbGNyID0gMDsKIAlpbnQgc3RhdHVzID0gMDsK IAlzcGVlZF90IGJhdWRyYXRlOworCXNwZWVkX3Qgb2xkX2JhdWQ7CiAKIAkvKiBEb24ndCBjaGFu Z2UgYW55dGhpbmcgaWYgbm90aGluZyBoYXMgY2hhbmdlZCAqLwogCWlmIChvbGRfdGVybWlvcyAm JiAhdHR5X3Rlcm1pb3NfaHdfY2hhbmdlKCZ0dHktPnRlcm1pb3MsIG9sZF90ZXJtaW9zKSkKQEAg LTQ1NywxMSArNTM4LDEyIEBAIHN0YXRpYyB2b2lkIGY4MTIzMl9zZXRfdGVybWlvcyhzdHJ1Y3Qg dHR5X3N0cnVjdCAqdHR5LAogCiAJYmF1ZHJhdGUgPSB0dHlfZ2V0X2JhdWRfcmF0ZSh0dHkpOwog CWlmIChiYXVkcmF0ZSA+IDApIHsKLQkJaWYgKGJhdWRyYXRlID4gRjgxMjMyX01BWF9CQVVEUkFU RSkgewotCQkJYmF1ZHJhdGUgPSBGODEyMzJfTUFYX0JBVURSQVRFOwotCQkJdHR5X2VuY29kZV9i YXVkX3JhdGUodHR5LCBiYXVkcmF0ZSwgYmF1ZHJhdGUpOwotCQl9Ci0JCWY4MTIzMl9zZXRfYmF1 ZHJhdGUocG9ydCwgYmF1ZHJhdGUpOworCQlpZiAob2xkX3Rlcm1pb3MpCisJCQlvbGRfYmF1ZCA9 IHR0eV90ZXJtaW9zX2JhdWRfcmF0ZShvbGRfdGVybWlvcyk7CisJCWVsc2UKKwkJCW9sZF9iYXVk ID0gRjgxMjMyX0RFRl9CQVVEUkFURTsKKworCQlmODEyMzJfc2V0X2JhdWRyYXRlKHR0eSwgcG9y dCwgYmF1ZHJhdGUsIG9sZF9iYXVkKTsKIAl9CiAKIAlpZiAoQ19QQVJFTkIodHR5KSkgewpAQCAt NTk3LDExICs2NzksMTIgQEAgc3RhdGljIGludCBmODEyMzJfZ2V0X3NlcmlhbF9pbmZvKHN0cnVj dCB0dHlfc3RydWN0ICp0dHksCiAJCXN0cnVjdCBzZXJpYWxfc3RydWN0ICpzcykKIHsKIAlzdHJ1 Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0ID0gdHR5LT5kcml2ZXJfZGF0YTsKKwlzdHJ1Y3QgZjgx MjMyX3ByaXZhdGUgKnByaXYgPSB1c2JfZ2V0X3NlcmlhbF9wb3J0X2RhdGEocG9ydCk7CiAKIAlz cy0+dHlwZSA9IFBPUlRfMTY1NTBBOwogCXNzLT5saW5lID0gcG9ydC0+bWlub3I7CiAJc3MtPnBv cnQgPSBwb3J0LT5wb3J0X251bWJlcjsKLQlzcy0+YmF1ZF9iYXNlID0gRjgxMjMyX01BWF9CQVVE UkFURTsKKwlzcy0+YmF1ZF9iYXNlID0gcHJpdi0+YmF1ZF9iYXNlOwogCXJldHVybiAwOwogfQog Cg==