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: [V2,2/4] USB: serial: f81232: add high baud rate support From: "Ji-Ze Hong \(Peter Hong\)" Message-Id: <1535593634-22004-3-git-send-email-hpeter+linux_kernel@gmail.com> Date: Thu, 30 Aug 2018 09:47:11 +0800 To: johan@kernel.org Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, peter_hong@fintek.com.tw, hpeter+linux_kernel@gmail.com List-ID: VGhlIEY4MTIzMiBoYWQgNCBjbG9ja3NvdXJjZSAxLjg0Ni8xOC40Ni8xNC43Ny8yNE1IeiBhbmQg YmF1ZCByYXRlcwpjYW4gYmUgdXAgdG8gMS41TWJpdHMgd2l0aCAyNE1Iei4KCkY4MTIzMiBDbG9j ayByZWdpc3RlcnMgKDEwNmgpCgpCaXQxLTA6ICAgICBDbG9jayBzb3VyY2Ugc2VsZWN0b3IKICAg ICAgICAgICAgICAgICAgICAwMDogMS44NDZNSHouCiAgICAgICAgICAgICAgICAgICAgMDE6IDE4 LjQ2TUh6LgogICAgICAgICAgICAgICAgICAgIDEwOiAyNE1Iei4KICAgICAgICAgICAgICAgICAg ICAxMTogMTQuNzdNSHouCgpTaWduZWQtb2ZmLWJ5OiBKaS1aZSBIb25nIChQZXRlciBIb25nKSA8 aHBldGVyK2xpbnV4X2tlcm5lbEBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy91c2Ivc2VyaWFsL2Y4 MTIzMi5jIHwgMTA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgOTQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2Y4MTIzMi5jIGIvZHJpdmVycy91c2Ivc2VyaWFs L2Y4MTIzMi5jCmluZGV4IDJmNTk1MzA3ZGQxNC4uNTZhZGFlOGE5ZWUwIDEwMDY0NAotLS0gYS9k cml2ZXJzL3VzYi9zZXJpYWwvZjgxMjMyLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2Y4MTIz Mi5jCkBAIC0yOCw3ICsyOCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBp ZF90YWJsZVtdID0gewogTU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIGlkX3RhYmxlKTsKIAogLyog TWF4aW11bSBiYXVkcmF0ZSBmb3IgRjgxMjMyICovCi0jZGVmaW5lIEY4MTIzMl9NQVhfQkFVRFJB VEUJCTExNTIwMAorI2RlZmluZSBGODEyMzJfTUFYX0JBVURSQVRFCQkxNTAwMDAwCisjZGVmaW5l IEY4MTIzMl9ERUZfQkFVRFJBVEUJCTk2MDAKIAogLyogVVNCIENvbnRyb2wgRVAgcGFyYW1ldGVy ICovCiAjZGVmaW5lIEY4MTIzMl9SRUdJU1RFUl9SRVFVRVNUCQkweGEwCkBAIC00NCwxOCArNDUs NDIgQEAgTU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIGlkX3RhYmxlKTsKICNkZWZpbmUgTElORV9T VEFUVVNfUkVHSVNURVIJCSgweDA1ICsgU0VSSUFMX0JBU0VfQUREUkVTUykKICNkZWZpbmUgTU9E RU1fU1RBVFVTX1JFR0lTVEVSCQkoMHgwNiArIFNFUklBTF9CQVNFX0FERFJFU1MpCiAKKy8qCisg KiBGODEyMzIgQ2xvY2sgcmVnaXN0ZXJzICgxMDZoKQorICoKKyAqIEJpdDEtMDoJQ2xvY2sgc291 cmNlIHNlbGVjdG9yCisgKgkJCTAwOiAxLjg0Nk1Iei4KKyAqCQkJMDE6IDE4LjQ2TUh6LgorICoJ CQkxMDogMjRNSHouCisgKgkJCTExOiAxNC43N01Iei4KKyAqLworI2RlZmluZSBGODEyMzJfQ0xL X1JFR0lTVEVSCQkweDEwNgorI2RlZmluZSBGODEyMzJfQ0xLXzFfODQ2X01IWgkJMAorI2RlZmlu ZSBGODEyMzJfQ0xLXzE4XzQ2X01IWgkJQklUKDApCisjZGVmaW5lIEY4MTIzMl9DTEtfMjRfTUha CQlCSVQoMSkKKyNkZWZpbmUgRjgxMjMyX0NMS18xNF83N19NSFoJCShCSVQoMSkgfCBCSVQoMCkp CisjZGVmaW5lIEY4MTIzMl9DTEtfTUFTSwkJCUdFTk1BU0soMSwgMCkKKwogc3RydWN0IGY4MTIz Ml9wcml2YXRlIHsKIAlzdHJ1Y3QgbXV0ZXggbG9jazsKIAl1OCBtb2RlbV9jb250cm9sOwogCXU4 IG1vZGVtX3N0YXR1czsKKwlzcGVlZF90IGJhdWRfYmFzZTsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qg bHNyX3dvcms7CiAJc3RydWN0IHdvcmtfc3RydWN0IGludGVycnVwdF93b3JrOwogCXN0cnVjdCB1 c2Jfc2VyaWFsX3BvcnQgKnBvcnQ7CiB9OwogCi1zdGF0aWMgaW50IGNhbGNfYmF1ZF9kaXZpc29y KHNwZWVkX3QgYmF1ZHJhdGUpCitzdGF0aWMgdTMyIGNvbnN0IGJhdWRyYXRlX3RhYmxlW10gPSB7 IDExNTIwMCwgOTIxNjAwLCAxMTUyMDAwLCAxNTAwMDAwIH07CitzdGF0aWMgdTggY29uc3QgY2xv Y2tfdGFibGVbXSA9IHsgRjgxMjMyX0NMS18xXzg0Nl9NSFosIEY4MTIzMl9DTEtfMTRfNzdfTUha LAorCQkJCUY4MTIzMl9DTEtfMThfNDZfTUhaLCBGODEyMzJfQ0xLXzI0X01IWiB9OworCitzdGF0 aWMgaW50IGNhbGNfYmF1ZF9kaXZpc29yKHNwZWVkX3QgYmF1ZHJhdGUsIHNwZWVkX3QgY2xvY2ty YXRlKQogewotCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVChGODEyMzJfTUFYX0JBVURSQVRFLCBi YXVkcmF0ZSk7CisJaWYgKCFiYXVkcmF0ZSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gRElWX1JP VU5EX0NMT1NFU1QoY2xvY2tyYXRlLCBiYXVkcmF0ZSk7CiB9CiAKIHN0YXRpYyBpbnQgZjgxMjMy X2dldF9yZWdpc3RlcihzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LCB1MTYgcmVnLCB1OCAq dmFsKQpAQCAtMTI5LDYgKzE1NCwyMSBAQCBzdGF0aWMgaW50IGY4MTIzMl9zZXRfcmVnaXN0ZXIo c3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwgdTE2IHJlZywgdTggdmFsKQogCXJldHVybiBz dGF0dXM7CiB9CiAKK3N0YXRpYyBpbnQgZjgxMjMyX3NldF9tYXNrX3JlZ2lzdGVyKHN0cnVjdCB1 c2Jfc2VyaWFsX3BvcnQgKnBvcnQsIHUxNiByZWcsCisJCQkJCXU4IG1hc2ssIHU4IHZhbCkKK3sK KwlpbnQgc3RhdHVzOworCXU4IHRtcDsKKworCXN0YXR1cyA9IGY4MTIzMl9nZXRfcmVnaXN0ZXIo cG9ydCwgcmVnLCAmdG1wKTsKKwlpZiAoc3RhdHVzKQorCQlyZXR1cm4gc3RhdHVzOworCisJdG1w ID0gKHRtcCAmIH5tYXNrKSB8ICh2YWwgJiBtYXNrKTsKKworCXJldHVybiBmODEyMzJfc2V0X3Jl Z2lzdGVyKHBvcnQsIHJlZywgdG1wKTsKK30KKwogc3RhdGljIHZvaWQgZjgxMjMyX3JlYWRfbXNy KHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpCiB7CiAJaW50IHN0YXR1czsKQEAgLTM0Niwx MyArMzg2LDUzIEBAIHN0YXRpYyB2b2lkIGY4MTIzMl9icmVha19jdGwoc3RydWN0IHR0eV9zdHJ1 Y3QgKnR0eSwgaW50IGJyZWFrX3N0YXRlKQogCSAqLwogfQogCi1zdGF0aWMgdm9pZCBmODEyMzJf c2V0X2JhdWRyYXRlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsIHNwZWVkX3QgYmF1ZHJh dGUpCitzdGF0aWMgaW50IGY4MTIzMl9maW5kX2NsayhzcGVlZF90IGJhdWRyYXRlKQoreworCWlu dCBpZHg7CisKKwlmb3IgKGlkeCA9IDA7IGlkeCA8IEFSUkFZX1NJWkUoYmF1ZHJhdGVfdGFibGUp OyArK2lkeCkgeworCQlpZiAoYmF1ZHJhdGUgPD0gYmF1ZHJhdGVfdGFibGVbaWR4XSAmJgorCQkJ CWJhdWRyYXRlX3RhYmxlW2lkeF0gJSBiYXVkcmF0ZSA9PSAwKQorCQkJcmV0dXJuIGlkeDsKKwl9 CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworc3RhdGljIHZvaWQgZjgxMjMyX3NldF9iYXVkcmF0 ZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LAorCQkJCXN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBv cnQsIHNwZWVkX3QgYmF1ZHJhdGUsCisJCQkJc3BlZWRfdCBvbGRfYmF1ZHJhdGUpCiB7CisJc3Ry dWN0IGY4MTIzMl9wcml2YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQp OwogCXU4IGxjcjsKIAlpbnQgZGl2aXNvcjsKIAlpbnQgc3RhdHVzID0gMDsKKwlpbnQgaTsKKwlp bnQgaWR4OworCXNwZWVkX3QgYmF1ZF9saXN0W10gPSB7YmF1ZHJhdGUsIG9sZF9iYXVkcmF0ZSwg RjgxMjMyX0RFRl9CQVVEUkFURX07CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShiYXVk X2xpc3QpOyArK2kpIHsKKwkJaWR4ID0gZjgxMjMyX2ZpbmRfY2xrKGJhdWRfbGlzdFtpXSk7CisJ CWlmIChpZHggPj0gMCkgeworCQkJYmF1ZHJhdGUgPSBiYXVkX2xpc3RbaV07CisJCQl0dHlfZW5j b2RlX2JhdWRfcmF0ZSh0dHksIGJhdWRyYXRlLCBiYXVkcmF0ZSk7CisJCQlicmVhazsKKwkJfQor CX0KIAotCWRpdmlzb3IgPSBjYWxjX2JhdWRfZGl2aXNvcihiYXVkcmF0ZSk7CisJaWYgKGlkeCA8 IDApCisJCXJldHVybjsKKworCXByaXYtPmJhdWRfYmFzZSA9IGJhdWRyYXRlX3RhYmxlW2lkeF07 CisJZGl2aXNvciA9IGNhbGNfYmF1ZF9kaXZpc29yKGJhdWRyYXRlLCBwcml2LT5iYXVkX2Jhc2Up OworCisJc3RhdHVzID0gZjgxMjMyX3NldF9tYXNrX3JlZ2lzdGVyKHBvcnQsIEY4MTIzMl9DTEtf UkVHSVNURVIsCisJCQlGODEyMzJfQ0xLX01BU0ssIGNsb2NrX3RhYmxlW2lkeF0pOworCWlmIChz dGF0dXMpIHsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LCAiJXMgZmFpbGVkIHRvIHNldCBDTEtfUkVH OiAlZFxuIiwKKwkJCV9fZnVuY19fLCBzdGF0dXMpOworCQlyZXR1cm47CisJfQogCiAJc3RhdHVz ID0gZjgxMjMyX2dldF9yZWdpc3Rlcihwb3J0LCBMSU5FX0NPTlRST0xfUkVHSVNURVIsCiAJCQkg Jmxjcik7IC8qIGdldCBMQ1IgKi8KQEAgLTQ0Miw2ICs1MjIsNyBAQCBzdGF0aWMgdm9pZCBmODEy MzJfc2V0X3Rlcm1pb3Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKIAl1OCBuZXdfbGNyID0gMDsK IAlpbnQgc3RhdHVzID0gMDsKIAlzcGVlZF90IGJhdWRyYXRlOworCXNwZWVkX3Qgb2xkX2JhdWQ7 CiAKIAkvKiBEb24ndCBjaGFuZ2UgYW55dGhpbmcgaWYgbm90aGluZyBoYXMgY2hhbmdlZCAqLwog CWlmIChvbGRfdGVybWlvcyAmJiAhdHR5X3Rlcm1pb3NfaHdfY2hhbmdlKCZ0dHktPnRlcm1pb3Ms IG9sZF90ZXJtaW9zKSkKQEAgLTQ1NCwxMSArNTM1LDEyIEBAIHN0YXRpYyB2b2lkIGY4MTIzMl9z ZXRfdGVybWlvcyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LAogCiAJYmF1ZHJhdGUgPSB0dHlfZ2V0 X2JhdWRfcmF0ZSh0dHkpOwogCWlmIChiYXVkcmF0ZSA+IDApIHsKLQkJaWYgKGJhdWRyYXRlID4g RjgxMjMyX01BWF9CQVVEUkFURSkgewotCQkJYmF1ZHJhdGUgPSBGODEyMzJfTUFYX0JBVURSQVRF OwotCQkJdHR5X2VuY29kZV9iYXVkX3JhdGUodHR5LCBiYXVkcmF0ZSwgYmF1ZHJhdGUpOwotCQl9 Ci0JCWY4MTIzMl9zZXRfYmF1ZHJhdGUocG9ydCwgYmF1ZHJhdGUpOworCQlpZiAob2xkX3Rlcm1p b3MpCisJCQlvbGRfYmF1ZCA9IHR0eV90ZXJtaW9zX2JhdWRfcmF0ZShvbGRfdGVybWlvcyk7CisJ CWVsc2UKKwkJCW9sZF9iYXVkID0gRjgxMjMyX0RFRl9CQVVEUkFURTsKKworCQlmODEyMzJfc2V0 X2JhdWRyYXRlKHR0eSwgcG9ydCwgYmF1ZHJhdGUsIG9sZF9iYXVkKTsKIAl9CiAKIAlpZiAoQ19Q QVJFTkIodHR5KSkgewpAQCAtNTkzLDYgKzY3NSw3IEBAIHN0YXRpYyBpbnQgZjgxMjMyX2NhcnJp ZXJfcmFpc2VkKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpCiBzdGF0aWMgaW50IGY4MTIz Ml9nZXRfc2VyaWFsX2luZm8oc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwKIAkJdW5zaWdu ZWQgbG9uZyBhcmcpCiB7CisJc3RydWN0IGY4MTIzMl9wcml2YXRlICpwcml2ID0gdXNiX2dldF9z ZXJpYWxfcG9ydF9kYXRhKHBvcnQpOwogCXN0cnVjdCBzZXJpYWxfc3RydWN0IHNlcjsKIAogCW1l bXNldCgmc2VyLCAwLCBzaXplb2Yoc2VyKSk7CkBAIC02MDAsNyArNjgzLDcgQEAgc3RhdGljIGlu dCBmODEyMzJfZ2V0X3NlcmlhbF9pbmZvKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsCiAJ c2VyLnR5cGUgPSBQT1JUXzE2NTUwQTsKIAlzZXIubGluZSA9IHBvcnQtPm1pbm9yOwogCXNlci5w b3J0ID0gcG9ydC0+cG9ydF9udW1iZXI7Ci0Jc2VyLmJhdWRfYmFzZSA9IEY4MTIzMl9NQVhfQkFV RFJBVEU7CisJc2VyLmJhdWRfYmFzZSA9IHByaXYtPmJhdWRfYmFzZTsKIAogCWlmIChjb3B5X3Rv X3VzZXIoKHZvaWQgX191c2VyICopYXJnLCAmc2VyLCBzaXplb2Yoc2VyKSkpCiAJCXJldHVybiAt RUZBVUxUOwo=