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: [V4,2/3] USB: serial: f81232: add high baud rate support From: "Ji-Ze Hong \(Peter Hong\)" Message-Id: <1554182797-12815-2-git-send-email-hpeter+linux_kernel@gmail.com> Date: Tue, 2 Apr 2019 13:26:36 +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+Ci0tLQp2NDoKCTE6IG5vIGNoYW5nZQoKdjM6 CgkxOiBjaGFuZ2UgdGhlIGJhdWRfYmFzZSBpbiBmODEyMzJfZ2V0X3NlcmlhbF9pbmZvKCkKCiBk cml2ZXJzL3VzYi9zZXJpYWwvZjgxMjMyLmMgfCAxMDUgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5NCBpbnNlcnRpb25zKCspLCAx MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZjgxMjMyLmMg Yi9kcml2ZXJzL3VzYi9zZXJpYWwvZjgxMjMyLmMKaW5kZXggOTM0NWYxMzI3NGU5Li4zN2RhMzQ1 YWNhZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mODEyMzIuYworKysgYi9kcml2 ZXJzL3VzYi9zZXJpYWwvZjgxMjMyLmMKQEAgLTI4LDcgKzI4LDggQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCB1c2JfZGV2aWNlX2lkIGlkX3RhYmxlW10gPSB7CiBNT0RVTEVfREVWSUNFX1RBQkxFKHVz YiwgaWRfdGFibGUpOwogCiAvKiBNYXhpbXVtIGJhdWRyYXRlIGZvciBGODEyMzIgKi8KLSNkZWZp bmUgRjgxMjMyX01BWF9CQVVEUkFURQkJMTE1MjAwCisjZGVmaW5lIEY4MTIzMl9NQVhfQkFVRFJB VEUJCTE1MDAwMDAKKyNkZWZpbmUgRjgxMjMyX0RFRl9CQVVEUkFURQkJOTYwMAogCiAvKiBVU0Ig Q29udHJvbCBFUCBwYXJhbWV0ZXIgKi8KICNkZWZpbmUgRjgxMjMyX1JFR0lTVEVSX1JFUVVFU1QJ CTB4YTAKQEAgLTQ0LDE5ICs0NSw0MyBAQCBNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgaWRfdGFi bGUpOwogI2RlZmluZSBMSU5FX1NUQVRVU19SRUdJU1RFUgkJKDB4MDUgKyBTRVJJQUxfQkFTRV9B RERSRVNTKQogI2RlZmluZSBNT0RFTV9TVEFUVVNfUkVHSVNURVIJCSgweDA2ICsgU0VSSUFMX0JB U0VfQUREUkVTUykKIAorLyoKKyAqIEY4MTIzMiBDbG9jayByZWdpc3RlcnMgKDEwNmgpCisgKgor ICogQml0MS0wOglDbG9jayBzb3VyY2Ugc2VsZWN0b3IKKyAqCQkJMDA6IDEuODQ2TUh6LgorICoJ CQkwMTogMTguNDZNSHouCisgKgkJCTEwOiAyNE1Iei4KKyAqCQkJMTE6IDE0Ljc3TUh6LgorICov CisjZGVmaW5lIEY4MTIzMl9DTEtfUkVHSVNURVIJCTB4MTA2CisjZGVmaW5lIEY4MTIzMl9DTEtf MV84NDZfTUhaCQkwCisjZGVmaW5lIEY4MTIzMl9DTEtfMThfNDZfTUhaCQlCSVQoMCkKKyNkZWZp bmUgRjgxMjMyX0NMS18yNF9NSFoJCUJJVCgxKQorI2RlZmluZSBGODEyMzJfQ0xLXzE0Xzc3X01I WgkJKEJJVCgxKSB8IEJJVCgwKSkKKyNkZWZpbmUgRjgxMjMyX0NMS19NQVNLCQkJR0VOTUFTSygx LCAwKQorCiBzdHJ1Y3QgZjgxMjMyX3ByaXZhdGUgewogCXN0cnVjdCBtdXRleCBsb2NrOwogCXU4 IG1vZGVtX2NvbnRyb2w7CiAJdTggbW9kZW1fc3RhdHVzOworCXNwZWVkX3QgYmF1ZF9iYXNlOwog CWJvb2wgbHNyX3dvcmtfcmVzY2hlZDsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgbHNyX3dvcms7CiAJ c3RydWN0IHdvcmtfc3RydWN0IGludGVycnVwdF93b3JrOwogCXN0cnVjdCB1c2Jfc2VyaWFsX3Bv cnQgKnBvcnQ7CiB9OwogCi1zdGF0aWMgaW50IGNhbGNfYmF1ZF9kaXZpc29yKHNwZWVkX3QgYmF1 ZHJhdGUpCitzdGF0aWMgdTMyIGNvbnN0IGJhdWRyYXRlX3RhYmxlW10gPSB7IDExNTIwMCwgOTIx NjAwLCAxMTUyMDAwLCAxNTAwMDAwIH07CitzdGF0aWMgdTggY29uc3QgY2xvY2tfdGFibGVbXSA9 IHsgRjgxMjMyX0NMS18xXzg0Nl9NSFosIEY4MTIzMl9DTEtfMTRfNzdfTUhaLAorCQkJCUY4MTIz Ml9DTEtfMThfNDZfTUhaLCBGODEyMzJfQ0xLXzI0X01IWiB9OworCitzdGF0aWMgaW50IGNhbGNf YmF1ZF9kaXZpc29yKHNwZWVkX3QgYmF1ZHJhdGUsIHNwZWVkX3QgY2xvY2tyYXRlKQogewotCXJl dHVybiBESVZfUk9VTkRfQ0xPU0VTVChGODEyMzJfTUFYX0JBVURSQVRFLCBiYXVkcmF0ZSk7CisJ aWYgKCFiYXVkcmF0ZSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1Qo Y2xvY2tyYXRlLCBiYXVkcmF0ZSk7CiB9CiAKIHN0YXRpYyBpbnQgZjgxMjMyX2dldF9yZWdpc3Rl cihzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LCB1MTYgcmVnLCB1OCAqdmFsKQpAQCAtMTMw LDYgKzE1NSwyMSBAQCBzdGF0aWMgaW50IGY4MTIzMl9zZXRfcmVnaXN0ZXIoc3RydWN0IHVzYl9z ZXJpYWxfcG9ydCAqcG9ydCwgdTE2IHJlZywgdTggdmFsKQogCXJldHVybiBzdGF0dXM7CiB9CiAK K3N0YXRpYyBpbnQgZjgxMjMyX3NldF9tYXNrX3JlZ2lzdGVyKHN0cnVjdCB1c2Jfc2VyaWFsX3Bv cnQgKnBvcnQsIHUxNiByZWcsCisJCQkJCXU4IG1hc2ssIHU4IHZhbCkKK3sKKwlpbnQgc3RhdHVz OworCXU4IHRtcDsKKworCXN0YXR1cyA9IGY4MTIzMl9nZXRfcmVnaXN0ZXIocG9ydCwgcmVnLCAm dG1wKTsKKwlpZiAoc3RhdHVzKQorCQlyZXR1cm4gc3RhdHVzOworCisJdG1wID0gKHRtcCAmIH5t YXNrKSB8ICh2YWwgJiBtYXNrKTsKKworCXJldHVybiBmODEyMzJfc2V0X3JlZ2lzdGVyKHBvcnQs IHJlZywgdG1wKTsKK30KKwogc3RhdGljIHZvaWQgZjgxMjMyX3JlYWRfbXNyKHN0cnVjdCB1c2Jf c2VyaWFsX3BvcnQgKnBvcnQpCiB7CiAJaW50IHN0YXR1czsKQEAgLTM0NywxMyArMzg3LDUzIEBA IHN0YXRpYyB2b2lkIGY4MTIzMl9icmVha19jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50 IGJyZWFrX3N0YXRlKQogCSAqLwogfQogCi1zdGF0aWMgdm9pZCBmODEyMzJfc2V0X2JhdWRyYXRl KHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsIHNwZWVkX3QgYmF1ZHJhdGUpCitzdGF0aWMg aW50IGY4MTIzMl9maW5kX2NsayhzcGVlZF90IGJhdWRyYXRlKQoreworCWludCBpZHg7CisKKwlm b3IgKGlkeCA9IDA7IGlkeCA8IEFSUkFZX1NJWkUoYmF1ZHJhdGVfdGFibGUpOyArK2lkeCkgewor CQlpZiAoYmF1ZHJhdGUgPD0gYmF1ZHJhdGVfdGFibGVbaWR4XSAmJgorCQkJCWJhdWRyYXRlX3Rh YmxlW2lkeF0gJSBiYXVkcmF0ZSA9PSAwKQorCQkJcmV0dXJuIGlkeDsKKwl9CisKKwlyZXR1cm4g LUVJTlZBTDsKK30KKworc3RhdGljIHZvaWQgZjgxMjMyX3NldF9iYXVkcmF0ZShzdHJ1Y3QgdHR5 X3N0cnVjdCAqdHR5LAorCQkJCXN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsIHNwZWVkX3Qg YmF1ZHJhdGUsCisJCQkJc3BlZWRfdCBvbGRfYmF1ZHJhdGUpCiB7CisJc3RydWN0IGY4MTIzMl9w cml2YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpOwogCXU4IGxjcjsK IAlpbnQgZGl2aXNvcjsKIAlpbnQgc3RhdHVzID0gMDsKKwlpbnQgaTsKKwlpbnQgaWR4OworCXNw ZWVkX3QgYmF1ZF9saXN0W10gPSB7YmF1ZHJhdGUsIG9sZF9iYXVkcmF0ZSwgRjgxMjMyX0RFRl9C QVVEUkFURX07CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShiYXVkX2xpc3QpOyArK2kp IHsKKwkJaWR4ID0gZjgxMjMyX2ZpbmRfY2xrKGJhdWRfbGlzdFtpXSk7CisJCWlmIChpZHggPj0g MCkgeworCQkJYmF1ZHJhdGUgPSBiYXVkX2xpc3RbaV07CisJCQl0dHlfZW5jb2RlX2JhdWRfcmF0 ZSh0dHksIGJhdWRyYXRlLCBiYXVkcmF0ZSk7CisJCQlicmVhazsKKwkJfQorCX0KIAotCWRpdmlz b3IgPSBjYWxjX2JhdWRfZGl2aXNvcihiYXVkcmF0ZSk7CisJaWYgKGlkeCA8IDApCisJCXJldHVy bjsKKworCXByaXYtPmJhdWRfYmFzZSA9IGJhdWRyYXRlX3RhYmxlW2lkeF07CisJZGl2aXNvciA9 IGNhbGNfYmF1ZF9kaXZpc29yKGJhdWRyYXRlLCBwcml2LT5iYXVkX2Jhc2UpOworCisJc3RhdHVz ID0gZjgxMjMyX3NldF9tYXNrX3JlZ2lzdGVyKHBvcnQsIEY4MTIzMl9DTEtfUkVHSVNURVIsCisJ CQlGODEyMzJfQ0xLX01BU0ssIGNsb2NrX3RhYmxlW2lkeF0pOworCWlmIChzdGF0dXMpIHsKKwkJ ZGV2X2VycigmcG9ydC0+ZGV2LCAiJXMgZmFpbGVkIHRvIHNldCBDTEtfUkVHOiAlZFxuIiwKKwkJ CV9fZnVuY19fLCBzdGF0dXMpOworCQlyZXR1cm47CisJfQogCiAJc3RhdHVzID0gZjgxMjMyX2dl dF9yZWdpc3Rlcihwb3J0LCBMSU5FX0NPTlRST0xfUkVHSVNURVIsCiAJCQkgJmxjcik7IC8qIGdl dCBMQ1IgKi8KQEAgLTQ0Myw2ICs1MjMsNyBAQCBzdGF0aWMgdm9pZCBmODEyMzJfc2V0X3Rlcm1p b3Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKIAl1OCBuZXdfbGNyID0gMDsKIAlpbnQgc3RhdHVz ID0gMDsKIAlzcGVlZF90IGJhdWRyYXRlOworCXNwZWVkX3Qgb2xkX2JhdWQ7CiAKIAkvKiBEb24n dCBjaGFuZ2UgYW55dGhpbmcgaWYgbm90aGluZyBoYXMgY2hhbmdlZCAqLwogCWlmIChvbGRfdGVy bWlvcyAmJiAhdHR5X3Rlcm1pb3NfaHdfY2hhbmdlKCZ0dHktPnRlcm1pb3MsIG9sZF90ZXJtaW9z KSkKQEAgLTQ1NSwxMSArNTM2LDEyIEBAIHN0YXRpYyB2b2lkIGY4MTIzMl9zZXRfdGVybWlvcyhz dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LAogCiAJYmF1ZHJhdGUgPSB0dHlfZ2V0X2JhdWRfcmF0ZSh0 dHkpOwogCWlmIChiYXVkcmF0ZSA+IDApIHsKLQkJaWYgKGJhdWRyYXRlID4gRjgxMjMyX01BWF9C QVVEUkFURSkgewotCQkJYmF1ZHJhdGUgPSBGODEyMzJfTUFYX0JBVURSQVRFOwotCQkJdHR5X2Vu Y29kZV9iYXVkX3JhdGUodHR5LCBiYXVkcmF0ZSwgYmF1ZHJhdGUpOwotCQl9Ci0JCWY4MTIzMl9z ZXRfYmF1ZHJhdGUocG9ydCwgYmF1ZHJhdGUpOworCQlpZiAob2xkX3Rlcm1pb3MpCisJCQlvbGRf YmF1ZCA9IHR0eV90ZXJtaW9zX2JhdWRfcmF0ZShvbGRfdGVybWlvcyk7CisJCWVsc2UKKwkJCW9s ZF9iYXVkID0gRjgxMjMyX0RFRl9CQVVEUkFURTsKKworCQlmODEyMzJfc2V0X2JhdWRyYXRlKHR0 eSwgcG9ydCwgYmF1ZHJhdGUsIG9sZF9iYXVkKTsKIAl9CiAKIAlpZiAoQ19QQVJFTkIodHR5KSkg ewpAQCAtNTk1LDExICs2NzcsMTIgQEAgc3RhdGljIGludCBmODEyMzJfZ2V0X3NlcmlhbF9pbmZv KHN0cnVjdCB0dHlfc3RydWN0ICp0dHksCiAJCXN0cnVjdCBzZXJpYWxfc3RydWN0ICpzcykKIHsK IAlzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0ID0gdHR5LT5kcml2ZXJfZGF0YTsKKwlzdHJ1 Y3QgZjgxMjMyX3ByaXZhdGUgKnByaXYgPSB1c2JfZ2V0X3NlcmlhbF9wb3J0X2RhdGEocG9ydCk7 CiAKIAlzcy0+dHlwZSA9IFBPUlRfMTY1NTBBOwogCXNzLT5saW5lID0gcG9ydC0+bWlub3I7CiAJ c3MtPnBvcnQgPSBwb3J0LT5wb3J0X251bWJlcjsKLQlzcy0+YmF1ZF9iYXNlID0gRjgxMjMyX01B WF9CQVVEUkFURTsKKwlzcy0+YmF1ZF9iYXNlID0gcHJpdi0+YmF1ZF9iYXNlOwogCXJldHVybiAw OwogfQogCg==