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: [RESEND,V3,2/3] USB: serial: f81232: add high baud rate support From: "Ji-Ze Hong \(Peter Hong\)" Message-Id: <1554098453-31278-2-git-send-email-hpeter+linux_kernel@gmail.com> Date: Mon, 1 Apr 2019 14:00:52 +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+Ci0tLQp2MzoKCTE6IGNoYW5nZSB0aGUgYmF1 ZF9iYXNlIGluIGY4MTIzMl9nZXRfc2VyaWFsX2luZm8oKQoKIGRyaXZlcnMvdXNiL3NlcmlhbC9m ODEyMzIuYyB8IDEwNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LQogMSBmaWxlIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mODEyMzIuYyBiL2RyaXZlcnMvdXNiL3Nlcmlh bC9mODEyMzIuYwppbmRleCA3MjJhMTg0ZGI5ZmEuLmU3ODYyOTk3YjZlNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy91c2Ivc2VyaWFsL2Y4MTIzMi5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mODEy MzIuYwpAQCAtMjgsNyArMjgsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQg aWRfdGFibGVbXSA9IHsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBpZF90YWJsZSk7CiAKIC8q IE1heGltdW0gYmF1ZHJhdGUgZm9yIEY4MTIzMiAqLwotI2RlZmluZSBGODEyMzJfTUFYX0JBVURS QVRFCQkxMTUyMDAKKyNkZWZpbmUgRjgxMjMyX01BWF9CQVVEUkFURQkJMTUwMDAwMAorI2RlZmlu ZSBGODEyMzJfREVGX0JBVURSQVRFCQk5NjAwCiAKIC8qIFVTQiBDb250cm9sIEVQIHBhcmFtZXRl ciAqLwogI2RlZmluZSBGODEyMzJfUkVHSVNURVJfUkVRVUVTVAkJMHhhMApAQCAtNDQsMTggKzQ1 LDQyIEBAIE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBpZF90YWJsZSk7CiAjZGVmaW5lIExJTkVf U1RBVFVTX1JFR0lTVEVSCQkoMHgwNSArIFNFUklBTF9CQVNFX0FERFJFU1MpCiAjZGVmaW5lIE1P REVNX1NUQVRVU19SRUdJU1RFUgkJKDB4MDYgKyBTRVJJQUxfQkFTRV9BRERSRVNTKQogCisvKgor ICogRjgxMjMyIENsb2NrIHJlZ2lzdGVycyAoMTA2aCkKKyAqCisgKiBCaXQxLTA6CUNsb2NrIHNv dXJjZSBzZWxlY3RvcgorICoJCQkwMDogMS44NDZNSHouCisgKgkJCTAxOiAxOC40Nk1Iei4KKyAq CQkJMTA6IDI0TUh6LgorICoJCQkxMTogMTQuNzdNSHouCisgKi8KKyNkZWZpbmUgRjgxMjMyX0NM S19SRUdJU1RFUgkJMHgxMDYKKyNkZWZpbmUgRjgxMjMyX0NMS18xXzg0Nl9NSFoJCTAKKyNkZWZp bmUgRjgxMjMyX0NMS18xOF80Nl9NSFoJCUJJVCgwKQorI2RlZmluZSBGODEyMzJfQ0xLXzI0X01I WgkJQklUKDEpCisjZGVmaW5lIEY4MTIzMl9DTEtfMTRfNzdfTUhaCQkoQklUKDEpIHwgQklUKDAp KQorI2RlZmluZSBGODEyMzJfQ0xLX01BU0sJCQlHRU5NQVNLKDEsIDApCisKIHN0cnVjdCBmODEy MzJfcHJpdmF0ZSB7CiAJc3RydWN0IG11dGV4IGxvY2s7CiAJdTggbW9kZW1fY29udHJvbDsKIAl1 OCBtb2RlbV9zdGF0dXM7CisJc3BlZWRfdCBiYXVkX2Jhc2U7CiAJc3RydWN0IHdvcmtfc3RydWN0 IGxzcl93b3JrOwogCXN0cnVjdCB3b3JrX3N0cnVjdCBpbnRlcnJ1cHRfd29yazsKIAlzdHJ1Y3Qg dXNiX3NlcmlhbF9wb3J0ICpwb3J0OwogfTsKIAotc3RhdGljIGludCBjYWxjX2JhdWRfZGl2aXNv cihzcGVlZF90IGJhdWRyYXRlKQorc3RhdGljIHUzMiBjb25zdCBiYXVkcmF0ZV90YWJsZVtdID0g eyAxMTUyMDAsIDkyMTYwMCwgMTE1MjAwMCwgMTUwMDAwMCB9Oworc3RhdGljIHU4IGNvbnN0IGNs b2NrX3RhYmxlW10gPSB7IEY4MTIzMl9DTEtfMV84NDZfTUhaLCBGODEyMzJfQ0xLXzE0Xzc3X01I WiwKKwkJCQlGODEyMzJfQ0xLXzE4XzQ2X01IWiwgRjgxMjMyX0NMS18yNF9NSFogfTsKKworc3Rh dGljIGludCBjYWxjX2JhdWRfZGl2aXNvcihzcGVlZF90IGJhdWRyYXRlLCBzcGVlZF90IGNsb2Nr cmF0ZSkKIHsKLQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoRjgxMjMyX01BWF9CQVVEUkFURSwg YmF1ZHJhdGUpOworCWlmICghYmF1ZHJhdGUpCisJCXJldHVybiAwOworCisJcmV0dXJuIERJVl9S T1VORF9DTE9TRVNUKGNsb2NrcmF0ZSwgYmF1ZHJhdGUpOwogfQogCiBzdGF0aWMgaW50IGY4MTIz Ml9nZXRfcmVnaXN0ZXIoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwgdTE2IHJlZywgdTgg KnZhbCkKQEAgLTEyOSw2ICsxNTQsMjEgQEAgc3RhdGljIGludCBmODEyMzJfc2V0X3JlZ2lzdGVy KHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsIHUxNiByZWcsIHU4IHZhbCkKIAlyZXR1cm4g c3RhdHVzOwogfQogCitzdGF0aWMgaW50IGY4MTIzMl9zZXRfbWFza19yZWdpc3RlcihzdHJ1Y3Qg dXNiX3NlcmlhbF9wb3J0ICpwb3J0LCB1MTYgcmVnLAorCQkJCQl1OCBtYXNrLCB1OCB2YWwpCit7 CisJaW50IHN0YXR1czsKKwl1OCB0bXA7CisKKwlzdGF0dXMgPSBmODEyMzJfZ2V0X3JlZ2lzdGVy KHBvcnQsIHJlZywgJnRtcCk7CisJaWYgKHN0YXR1cykKKwkJcmV0dXJuIHN0YXR1czsKKworCXRt cCA9ICh0bXAgJiB+bWFzaykgfCAodmFsICYgbWFzayk7CisKKwlyZXR1cm4gZjgxMjMyX3NldF9y ZWdpc3Rlcihwb3J0LCByZWcsIHRtcCk7Cit9CisKIHN0YXRpYyB2b2lkIGY4MTIzMl9yZWFkX21z cihzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQogewogCWludCBzdGF0dXM7CkBAIC0zNDYs MTMgKzM4Niw1MyBAQCBzdGF0aWMgdm9pZCBmODEyMzJfYnJlYWtfY3RsKHN0cnVjdCB0dHlfc3Ry dWN0ICp0dHksIGludCBicmVha19zdGF0ZSkKIAkgKi8KIH0KIAotc3RhdGljIHZvaWQgZjgxMjMy X3NldF9iYXVkcmF0ZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LCBzcGVlZF90IGJhdWRy YXRlKQorc3RhdGljIGludCBmODEyMzJfZmluZF9jbGsoc3BlZWRfdCBiYXVkcmF0ZSkKK3sKKwlp bnQgaWR4OworCisJZm9yIChpZHggPSAwOyBpZHggPCBBUlJBWV9TSVpFKGJhdWRyYXRlX3RhYmxl KTsgKytpZHgpIHsKKwkJaWYgKGJhdWRyYXRlIDw9IGJhdWRyYXRlX3RhYmxlW2lkeF0gJiYKKwkJ CQliYXVkcmF0ZV90YWJsZVtpZHhdICUgYmF1ZHJhdGUgPT0gMCkKKwkJCXJldHVybiBpZHg7CisJ fQorCisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyB2b2lkIGY4MTIzMl9zZXRfYmF1ZHJh dGUoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKKwkJCQlzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpw b3J0LCBzcGVlZF90IGJhdWRyYXRlLAorCQkJCXNwZWVkX3Qgb2xkX2JhdWRyYXRlKQogeworCXN0 cnVjdCBmODEyMzJfcHJpdmF0ZSAqcHJpdiA9IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0 KTsKIAl1OCBsY3I7CiAJaW50IGRpdmlzb3I7CiAJaW50IHN0YXR1cyA9IDA7CisJaW50IGk7CisJ aW50IGlkeDsKKwlzcGVlZF90IGJhdWRfbGlzdFtdID0ge2JhdWRyYXRlLCBvbGRfYmF1ZHJhdGUs IEY4MTIzMl9ERUZfQkFVRFJBVEV9OworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYmF1 ZF9saXN0KTsgKytpKSB7CisJCWlkeCA9IGY4MTIzMl9maW5kX2NsayhiYXVkX2xpc3RbaV0pOwor CQlpZiAoaWR4ID49IDApIHsKKwkJCWJhdWRyYXRlID0gYmF1ZF9saXN0W2ldOworCQkJdHR5X2Vu Y29kZV9iYXVkX3JhdGUodHR5LCBiYXVkcmF0ZSwgYmF1ZHJhdGUpOworCQkJYnJlYWs7CisJCX0K Kwl9CiAKLQlkaXZpc29yID0gY2FsY19iYXVkX2Rpdmlzb3IoYmF1ZHJhdGUpOworCWlmIChpZHgg PCAwKQorCQlyZXR1cm47CisKKwlwcml2LT5iYXVkX2Jhc2UgPSBiYXVkcmF0ZV90YWJsZVtpZHhd OworCWRpdmlzb3IgPSBjYWxjX2JhdWRfZGl2aXNvcihiYXVkcmF0ZSwgcHJpdi0+YmF1ZF9iYXNl KTsKKworCXN0YXR1cyA9IGY4MTIzMl9zZXRfbWFza19yZWdpc3Rlcihwb3J0LCBGODEyMzJfQ0xL X1JFR0lTVEVSLAorCQkJRjgxMjMyX0NMS19NQVNLLCBjbG9ja190YWJsZVtpZHhdKTsKKwlpZiAo c3RhdHVzKSB7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIGZhaWxlZCB0byBzZXQgQ0xLX1JF RzogJWRcbiIsCisJCQlfX2Z1bmNfXywgc3RhdHVzKTsKKwkJcmV0dXJuOworCX0KIAogCXN0YXR1 cyA9IGY4MTIzMl9nZXRfcmVnaXN0ZXIocG9ydCwgTElORV9DT05UUk9MX1JFR0lTVEVSLAogCQkJ ICZsY3IpOyAvKiBnZXQgTENSICovCkBAIC00NDIsNiArNTIyLDcgQEAgc3RhdGljIHZvaWQgZjgx MjMyX3NldF90ZXJtaW9zKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksCiAJdTggbmV3X2xjciA9IDA7 CiAJaW50IHN0YXR1cyA9IDA7CiAJc3BlZWRfdCBiYXVkcmF0ZTsKKwlzcGVlZF90IG9sZF9iYXVk OwogCiAJLyogRG9uJ3QgY2hhbmdlIGFueXRoaW5nIGlmIG5vdGhpbmcgaGFzIGNoYW5nZWQgKi8K IAlpZiAob2xkX3Rlcm1pb3MgJiYgIXR0eV90ZXJtaW9zX2h3X2NoYW5nZSgmdHR5LT50ZXJtaW9z LCBvbGRfdGVybWlvcykpCkBAIC00NTQsMTEgKzUzNSwxMiBAQCBzdGF0aWMgdm9pZCBmODEyMzJf c2V0X3Rlcm1pb3Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKIAogCWJhdWRyYXRlID0gdHR5X2dl dF9iYXVkX3JhdGUodHR5KTsKIAlpZiAoYmF1ZHJhdGUgPiAwKSB7Ci0JCWlmIChiYXVkcmF0ZSA+ IEY4MTIzMl9NQVhfQkFVRFJBVEUpIHsKLQkJCWJhdWRyYXRlID0gRjgxMjMyX01BWF9CQVVEUkFU RTsKLQkJCXR0eV9lbmNvZGVfYmF1ZF9yYXRlKHR0eSwgYmF1ZHJhdGUsIGJhdWRyYXRlKTsKLQkJ fQotCQlmODEyMzJfc2V0X2JhdWRyYXRlKHBvcnQsIGJhdWRyYXRlKTsKKwkJaWYgKG9sZF90ZXJt aW9zKQorCQkJb2xkX2JhdWQgPSB0dHlfdGVybWlvc19iYXVkX3JhdGUob2xkX3Rlcm1pb3MpOwor CQllbHNlCisJCQlvbGRfYmF1ZCA9IEY4MTIzMl9ERUZfQkFVRFJBVEU7CisKKwkJZjgxMjMyX3Nl dF9iYXVkcmF0ZSh0dHksIHBvcnQsIGJhdWRyYXRlLCBvbGRfYmF1ZCk7CiAJfQogCiAJaWYgKENf UEFSRU5CKHR0eSkpIHsKQEAgLTU5NCwxMSArNjc2LDEyIEBAIHN0YXRpYyBpbnQgZjgxMjMyX2dl dF9zZXJpYWxfaW5mbyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LAogCQlzdHJ1Y3Qgc2VyaWFsX3N0 cnVjdCAqc3MpCiB7CiAJc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCA9IHR0eS0+ZHJpdmVy X2RhdGE7CisJc3RydWN0IGY4MTIzMl9wcml2YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9y dF9kYXRhKHBvcnQpOwogCiAJc3MtPnR5cGUgPSBQT1JUXzE2NTUwQTsKIAlzcy0+bGluZSA9IHBv cnQtPm1pbm9yOwogCXNzLT5wb3J0ID0gcG9ydC0+cG9ydF9udW1iZXI7Ci0Jc3MtPmJhdWRfYmFz ZSA9IEY4MTIzMl9NQVhfQkFVRFJBVEU7CisJc3MtPmJhdWRfYmFzZSA9IHByaXYtPmJhdWRfYmFz ZTsKIAlyZXR1cm4gMDsKIH0KIAo=