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: [V6,2/3] USB: serial: f81232: add high baud rate support From: "Ji-Ze Hong \(Peter Hong\)" Message-Id: <1554280832-29286-2-git-send-email-hpeter+linux_kernel@gmail.com> Date: Wed, 3 Apr 2019 16:40:31 +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+Ci0tLQp2NjoKCTE6IG5vIGNoYW5nZQoKdjU6 CgkxOiBubyBjaGFuZ2UKCnY0OgoJMTogbm8gY2hhbmdlCgp2MzoKCTE6IGNoYW5nZSB0aGUgYmF1 ZF9iYXNlIGluIGY4MTIzMl9nZXRfc2VyaWFsX2luZm8oKQoKIGRyaXZlcnMvdXNiL3NlcmlhbC9m ODEyMzIuYyB8IDEwNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LQogMSBmaWxlIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mODEyMzIuYyBiL2RyaXZlcnMvdXNiL3Nlcmlh bC9mODEyMzIuYwppbmRleCA2MDBlMWY0ZDk0ZTAuLjJjMGM5MDRkYmMzMyAxMDA2NDQKLS0tIGEv ZHJpdmVycy91c2Ivc2VyaWFsL2Y4MTIzMi5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mODEy MzIuYwpAQCAtMjgsNyArMjgsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQg aWRfdGFibGVbXSA9IHsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBpZF90YWJsZSk7CiAKIC8q IE1heGltdW0gYmF1ZHJhdGUgZm9yIEY4MTIzMiAqLwotI2RlZmluZSBGODEyMzJfTUFYX0JBVURS QVRFCQkxMTUyMDAKKyNkZWZpbmUgRjgxMjMyX01BWF9CQVVEUkFURQkJMTUwMDAwMAorI2RlZmlu ZSBGODEyMzJfREVGX0JBVURSQVRFCQk5NjAwCiAKIC8qIFVTQiBDb250cm9sIEVQIHBhcmFtZXRl ciAqLwogI2RlZmluZSBGODEyMzJfUkVHSVNURVJfUkVRVUVTVAkJMHhhMApAQCAtNDQsMTkgKzQ1 LDQzIEBAIE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBpZF90YWJsZSk7CiAjZGVmaW5lIExJTkVf U1RBVFVTX1JFR0lTVEVSCQkoMHgwNSArIFNFUklBTF9CQVNFX0FERFJFU1MpCiAjZGVmaW5lIE1P REVNX1NUQVRVU19SRUdJU1RFUgkJKDB4MDYgKyBTRVJJQUxfQkFTRV9BRERSRVNTKQogCisvKgor ICogRjgxMjMyIENsb2NrIHJlZ2lzdGVycyAoMTA2aCkKKyAqCisgKiBCaXQxLTA6CUNsb2NrIHNv dXJjZSBzZWxlY3RvcgorICoJCQkwMDogMS44NDZNSHouCisgKgkJCTAxOiAxOC40Nk1Iei4KKyAq CQkJMTA6IDI0TUh6LgorICoJCQkxMTogMTQuNzdNSHouCisgKi8KKyNkZWZpbmUgRjgxMjMyX0NM S19SRUdJU1RFUgkJMHgxMDYKKyNkZWZpbmUgRjgxMjMyX0NMS18xXzg0Nl9NSFoJCTAKKyNkZWZp bmUgRjgxMjMyX0NMS18xOF80Nl9NSFoJCUJJVCgwKQorI2RlZmluZSBGODEyMzJfQ0xLXzI0X01I WgkJQklUKDEpCisjZGVmaW5lIEY4MTIzMl9DTEtfMTRfNzdfTUhaCQkoQklUKDEpIHwgQklUKDAp KQorI2RlZmluZSBGODEyMzJfQ0xLX01BU0sJCQlHRU5NQVNLKDEsIDApCisKIHN0cnVjdCBmODEy MzJfcHJpdmF0ZSB7CiAJc3RydWN0IG11dGV4IGxvY2s7CiAJdTggbW9kZW1fY29udHJvbDsKIAl1 OCBtb2RlbV9zdGF0dXM7CiAJYm9vbCBkZWZlcnJlZF9sc3Jfd29ya19uZWVkZWQ7CisJc3BlZWRf dCBiYXVkX2Jhc2U7CiAJc3RydWN0IHdvcmtfc3RydWN0IGxzcl93b3JrOwogCXN0cnVjdCB3b3Jr X3N0cnVjdCBpbnRlcnJ1cHRfd29yazsKIAlzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0Owog fTsKIAotc3RhdGljIGludCBjYWxjX2JhdWRfZGl2aXNvcihzcGVlZF90IGJhdWRyYXRlKQorc3Rh dGljIHUzMiBjb25zdCBiYXVkcmF0ZV90YWJsZVtdID0geyAxMTUyMDAsIDkyMTYwMCwgMTE1MjAw MCwgMTUwMDAwMCB9Oworc3RhdGljIHU4IGNvbnN0IGNsb2NrX3RhYmxlW10gPSB7IEY4MTIzMl9D TEtfMV84NDZfTUhaLCBGODEyMzJfQ0xLXzE0Xzc3X01IWiwKKwkJCQlGODEyMzJfQ0xLXzE4XzQ2 X01IWiwgRjgxMjMyX0NMS18yNF9NSFogfTsKKworc3RhdGljIGludCBjYWxjX2JhdWRfZGl2aXNv cihzcGVlZF90IGJhdWRyYXRlLCBzcGVlZF90IGNsb2NrcmF0ZSkKIHsKLQlyZXR1cm4gRElWX1JP VU5EX0NMT1NFU1QoRjgxMjMyX01BWF9CQVVEUkFURSwgYmF1ZHJhdGUpOworCWlmICghYmF1ZHJh dGUpCisJCXJldHVybiAwOworCisJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKGNsb2NrcmF0ZSwg YmF1ZHJhdGUpOwogfQogCiBzdGF0aWMgaW50IGY4MTIzMl9nZXRfcmVnaXN0ZXIoc3RydWN0IHVz Yl9zZXJpYWxfcG9ydCAqcG9ydCwgdTE2IHJlZywgdTggKnZhbCkKQEAgLTEzMCw2ICsxNTUsMjEg QEAgc3RhdGljIGludCBmODEyMzJfc2V0X3JlZ2lzdGVyKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQg KnBvcnQsIHUxNiByZWcsIHU4IHZhbCkKIAlyZXR1cm4gc3RhdHVzOwogfQogCitzdGF0aWMgaW50 IGY4MTIzMl9zZXRfbWFza19yZWdpc3RlcihzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LCB1 MTYgcmVnLAorCQkJCQl1OCBtYXNrLCB1OCB2YWwpCit7CisJaW50IHN0YXR1czsKKwl1OCB0bXA7 CisKKwlzdGF0dXMgPSBmODEyMzJfZ2V0X3JlZ2lzdGVyKHBvcnQsIHJlZywgJnRtcCk7CisJaWYg KHN0YXR1cykKKwkJcmV0dXJuIHN0YXR1czsKKworCXRtcCA9ICh0bXAgJiB+bWFzaykgfCAodmFs ICYgbWFzayk7CisKKwlyZXR1cm4gZjgxMjMyX3NldF9yZWdpc3Rlcihwb3J0LCByZWcsIHRtcCk7 Cit9CisKIHN0YXRpYyB2b2lkIGY4MTIzMl9yZWFkX21zcihzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0 ICpwb3J0KQogewogCWludCBzdGF0dXM7CkBAIC0zNTMsMTMgKzM5Myw1MyBAQCBzdGF0aWMgdm9p ZCBmODEyMzJfYnJlYWtfY3RsKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBicmVha19zdGF0 ZSkKIAkgKi8KIH0KIAotc3RhdGljIHZvaWQgZjgxMjMyX3NldF9iYXVkcmF0ZShzdHJ1Y3QgdXNi X3NlcmlhbF9wb3J0ICpwb3J0LCBzcGVlZF90IGJhdWRyYXRlKQorc3RhdGljIGludCBmODEyMzJf ZmluZF9jbGsoc3BlZWRfdCBiYXVkcmF0ZSkKK3sKKwlpbnQgaWR4OworCisJZm9yIChpZHggPSAw OyBpZHggPCBBUlJBWV9TSVpFKGJhdWRyYXRlX3RhYmxlKTsgKytpZHgpIHsKKwkJaWYgKGJhdWRy YXRlIDw9IGJhdWRyYXRlX3RhYmxlW2lkeF0gJiYKKwkJCQliYXVkcmF0ZV90YWJsZVtpZHhdICUg YmF1ZHJhdGUgPT0gMCkKKwkJCXJldHVybiBpZHg7CisJfQorCisJcmV0dXJuIC1FSU5WQUw7Cit9 CisKK3N0YXRpYyB2b2lkIGY4MTIzMl9zZXRfYmF1ZHJhdGUoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0 eSwKKwkJCQlzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LCBzcGVlZF90IGJhdWRyYXRlLAor CQkJCXNwZWVkX3Qgb2xkX2JhdWRyYXRlKQogeworCXN0cnVjdCBmODEyMzJfcHJpdmF0ZSAqcHJp diA9IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0KTsKIAl1OCBsY3I7CiAJaW50IGRpdmlz b3I7CiAJaW50IHN0YXR1cyA9IDA7CisJaW50IGk7CisJaW50IGlkeDsKKwlzcGVlZF90IGJhdWRf bGlzdFtdID0ge2JhdWRyYXRlLCBvbGRfYmF1ZHJhdGUsIEY4MTIzMl9ERUZfQkFVRFJBVEV9Owor CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYmF1ZF9saXN0KTsgKytpKSB7CisJCWlkeCA9 IGY4MTIzMl9maW5kX2NsayhiYXVkX2xpc3RbaV0pOworCQlpZiAoaWR4ID49IDApIHsKKwkJCWJh dWRyYXRlID0gYmF1ZF9saXN0W2ldOworCQkJdHR5X2VuY29kZV9iYXVkX3JhdGUodHR5LCBiYXVk cmF0ZSwgYmF1ZHJhdGUpOworCQkJYnJlYWs7CisJCX0KKwl9CiAKLQlkaXZpc29yID0gY2FsY19i YXVkX2Rpdmlzb3IoYmF1ZHJhdGUpOworCWlmIChpZHggPCAwKQorCQlyZXR1cm47CisKKwlwcml2 LT5iYXVkX2Jhc2UgPSBiYXVkcmF0ZV90YWJsZVtpZHhdOworCWRpdmlzb3IgPSBjYWxjX2JhdWRf ZGl2aXNvcihiYXVkcmF0ZSwgcHJpdi0+YmF1ZF9iYXNlKTsKKworCXN0YXR1cyA9IGY4MTIzMl9z ZXRfbWFza19yZWdpc3Rlcihwb3J0LCBGODEyMzJfQ0xLX1JFR0lTVEVSLAorCQkJRjgxMjMyX0NM S19NQVNLLCBjbG9ja190YWJsZVtpZHhdKTsKKwlpZiAoc3RhdHVzKSB7CisJCWRldl9lcnIoJnBv cnQtPmRldiwgIiVzIGZhaWxlZCB0byBzZXQgQ0xLX1JFRzogJWRcbiIsCisJCQlfX2Z1bmNfXywg c3RhdHVzKTsKKwkJcmV0dXJuOworCX0KIAogCXN0YXR1cyA9IGY4MTIzMl9nZXRfcmVnaXN0ZXIo cG9ydCwgTElORV9DT05UUk9MX1JFR0lTVEVSLAogCQkJICZsY3IpOyAvKiBnZXQgTENSICovCkBA IC00NDksNiArNTI5LDcgQEAgc3RhdGljIHZvaWQgZjgxMjMyX3NldF90ZXJtaW9zKHN0cnVjdCB0 dHlfc3RydWN0ICp0dHksCiAJdTggbmV3X2xjciA9IDA7CiAJaW50IHN0YXR1cyA9IDA7CiAJc3Bl ZWRfdCBiYXVkcmF0ZTsKKwlzcGVlZF90IG9sZF9iYXVkOwogCiAJLyogRG9uJ3QgY2hhbmdlIGFu eXRoaW5nIGlmIG5vdGhpbmcgaGFzIGNoYW5nZWQgKi8KIAlpZiAob2xkX3Rlcm1pb3MgJiYgIXR0 eV90ZXJtaW9zX2h3X2NoYW5nZSgmdHR5LT50ZXJtaW9zLCBvbGRfdGVybWlvcykpCkBAIC00NjEs MTEgKzU0MiwxMiBAQCBzdGF0aWMgdm9pZCBmODEyMzJfc2V0X3Rlcm1pb3Moc3RydWN0IHR0eV9z dHJ1Y3QgKnR0eSwKIAogCWJhdWRyYXRlID0gdHR5X2dldF9iYXVkX3JhdGUodHR5KTsKIAlpZiAo YmF1ZHJhdGUgPiAwKSB7Ci0JCWlmIChiYXVkcmF0ZSA+IEY4MTIzMl9NQVhfQkFVRFJBVEUpIHsK LQkJCWJhdWRyYXRlID0gRjgxMjMyX01BWF9CQVVEUkFURTsKLQkJCXR0eV9lbmNvZGVfYmF1ZF9y YXRlKHR0eSwgYmF1ZHJhdGUsIGJhdWRyYXRlKTsKLQkJfQotCQlmODEyMzJfc2V0X2JhdWRyYXRl KHBvcnQsIGJhdWRyYXRlKTsKKwkJaWYgKG9sZF90ZXJtaW9zKQorCQkJb2xkX2JhdWQgPSB0dHlf dGVybWlvc19iYXVkX3JhdGUob2xkX3Rlcm1pb3MpOworCQllbHNlCisJCQlvbGRfYmF1ZCA9IEY4 MTIzMl9ERUZfQkFVRFJBVEU7CisKKwkJZjgxMjMyX3NldF9iYXVkcmF0ZSh0dHksIHBvcnQsIGJh dWRyYXRlLCBvbGRfYmF1ZCk7CiAJfQogCiAJaWYgKENfUEFSRU5CKHR0eSkpIHsKQEAgLTYwMSwx MSArNjgzLDEyIEBAIHN0YXRpYyBpbnQgZjgxMjMyX2dldF9zZXJpYWxfaW5mbyhzdHJ1Y3QgdHR5 X3N0cnVjdCAqdHR5LAogCQlzdHJ1Y3Qgc2VyaWFsX3N0cnVjdCAqc3MpCiB7CiAJc3RydWN0IHVz Yl9zZXJpYWxfcG9ydCAqcG9ydCA9IHR0eS0+ZHJpdmVyX2RhdGE7CisJc3RydWN0IGY4MTIzMl9w cml2YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpOwogCiAJc3MtPnR5 cGUgPSBQT1JUXzE2NTUwQTsKIAlzcy0+bGluZSA9IHBvcnQtPm1pbm9yOwogCXNzLT5wb3J0ID0g cG9ydC0+cG9ydF9udW1iZXI7Ci0Jc3MtPmJhdWRfYmFzZSA9IEY4MTIzMl9NQVhfQkFVRFJBVEU7 CisJc3MtPmJhdWRfYmFzZSA9IHByaXYtPmJhdWRfYmFzZTsKIAlyZXR1cm4gMDsKIH0KIAo=