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,1/5] usb: serial: f81534: add high baud rate support From: "Ji-Ze Hong \(Peter Hong\)" Message-Id: <1515032961-29131-1-git-send-email-hpeter+linux_kernel@gmail.com> Date: Thu, 4 Jan 2018 10:29:17 +0800 To: johan@kernel.org Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, peter_hong@fintek.com.tw, "Ji-Ze Hong \(Peter Hong\)" List-ID: VGhlIEY4MTUzMi81MzQgaGFkIDQgY2xvY2tzb3VyY2UgMS44NDYvMTguNDYvMTQuNzcvMjRNSHog YW5kIGJhdWQgcmF0ZXMKY2FuIGJlIHVwIHRvIDEuNU1iaXRzIHdpdGggMjRNSHouCgpUaGlzIGRl dmljZSBtYXkgZ2VuZXJhdGUgZGF0YSBvdmVycnVuIHdoZW4gYmF1ZCByYXRlIHNldHRpbmcgdG8g OTIxNjAwYnBzCm9yIGhpZ2hlciB3aXRoIG9sZCBVQVJUIHRyaWdnZXIgbGV2ZWwgc2V0dGluZyAo OHgxND0xMTIpIHdpdGggZnVsbApsb2FkaW5nLiBXZSdsbCBjaGFuZ2UgdHJpZ2dlciBsZXZlbCBm cm9tIDh4MTQ9MTEyIHRvIDh4OD02NCB0byBhdm9pZCBkYXRhCm92ZXJydW4uCgpBbHNvIHRoZSBy ZWFkL3dyaXRlIG9mIEVQMCB3aWxsIGJlIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guIFRoZSB3b3Jz dCBjYXNlCm9mIHJlc3BvbmRpbmcgdGltZSBpcyAyMHMgd2hlbiBhbGwgc2VyaWFsIHBvcnQgYXJl IGZ1bGwgbG9hZGluZyBhbmQgdHJ5aW5nCnRvIGFjY2VzcyBFUDAsIHNvIHdlIGNoYW5nZSBFUDAg dGltZW91dCBmcm9tIDEwIHRvIDIwcy4KCkY4MTUzMi81MzQgQ2xvY2sgcmVnaXN0ZXIgKG9mZnNl dCArMDhoKQoKQml0MDoJVUFSVCBFbmFibGUgKGFsd2F5cyBvbikKQml0Mi0xOglDbG9jayBzb3Vy Y2Ugc2VsZWN0b3IKCQkJMDA6IDEuODQ2TUh6LgoJCQkwMTogMTguNDZNSHouCgkJCTEwOiAyNE1I ei4KCQkJMTE6IDE0Ljc3TUh6LgoKU2lnbmVkLW9mZi1ieTogSmktWmUgSG9uZyAoUGV0ZXIgSG9u ZykgPGhwZXRlcitsaW51eF9rZXJuZWxAZ21haWwuY29tPgotLS0KdjI6CgkxOiBBZGQgY29tbWl0 IG1lc3NhZ2UgZm9yIEY4MTUzNF9VU0JfVElNRU9VVCBmcm9tIDEwMDAgdG8gMjAwMCBhbmQKCSAg IHRyaWdnZXIgbGV2ZWwgZnJvbSBVQVJUX0ZDUl9SX1RSSUdfMTEgdG8gVUFSVF9GQ1JfVFJJR0dF Ul84LgoJMjogU2VwYXJhdGUgVUFSVCBFbmFibGUgYml0IGZyb20gY2xvY2sgc291cmNlcy4KCTM6 IEFkZCBoZWxwIGZ1bmN0aW9uICJmODE1MzRfZmluZF9jbGsoKSIgdG8gY2FsY3VsYXRlIGJhdWQg cmF0ZSBhbmQKCSAgIGNsb2NrIHNvdXJjZQoJNDogQWRkIHNoYWRvdyBjbG9jayByZWdpc3RlciBm b3IgZnV0dXJlIHVzZS4gCgogZHJpdmVycy91c2Ivc2VyaWFsL2Y4MTUzNC5jIHwgODcgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg NzEgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91 c2Ivc2VyaWFsL2Y4MTUzNC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2Y4MTUzNC5jCmluZGV4IGU0 NTczYjRjODkzNS4uNzU4ZWYwNDI0MTY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwv ZjgxNTM0LmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2Y4MTUzNC5jCkBAIC00MSw2ICs0MSw3 IEBACiAjZGVmaW5lIEY4MTUzNF9NT0RFTV9DT05UUk9MX1JFRwkoMHgwNCArIEY4MTUzNF9VQVJU X0JBU0VfQUREUkVTUykKICNkZWZpbmUgRjgxNTM0X0xJTkVfU1RBVFVTX1JFRwkJKDB4MDUgKyBG ODE1MzRfVUFSVF9CQVNFX0FERFJFU1MpCiAjZGVmaW5lIEY4MTUzNF9NT0RFTV9TVEFUVVNfUkVH CQkoMHgwNiArIEY4MTUzNF9VQVJUX0JBU0VfQUREUkVTUykKKyNkZWZpbmUgRjgxNTM0X0NMT0NL X1JFRwkJKDB4MDggKyBGODE1MzRfVUFSVF9CQVNFX0FERFJFU1MpCiAjZGVmaW5lIEY4MTUzNF9D T05GSUcxX1JFRwkJKDB4MDkgKyBGODE1MzRfVUFSVF9CQVNFX0FERFJFU1MpCiAKICNkZWZpbmUg RjgxNTM0X0RFRl9DT05GX0FERFJFU1NfU1RBUlQJMHgzMDAwCkBAIC01Nyw3ICs1OCw3IEBACiAK IC8qIERlZmF1bHQgVVJCIHRpbWVvdXQgZm9yIFVTQiBvcGVyYXRpb25zICovCiAjZGVmaW5lIEY4 MTUzNF9VU0JfTUFYX1JFVFJZCQkxMAotI2RlZmluZSBGODE1MzRfVVNCX1RJTUVPVVQJCTEwMDAK KyNkZWZpbmUgRjgxNTM0X1VTQl9USU1FT1VUCQkyMDAwCiAjZGVmaW5lIEY4MTUzNF9TRVRfR0VU X1JFR0lTVEVSCQkweEEwCiAKICNkZWZpbmUgRjgxNTM0X05VTV9QT1JUCQkJNApAQCAtOTYsNyAr OTcsNiBAQAogI2RlZmluZSBGODE1MzRfQ01EX1JFQUQJCQkweDAzCiAKICNkZWZpbmUgRjgxNTM0 X0RFRkFVTFRfQkFVRF9SQVRFCTk2MDAKLSNkZWZpbmUgRjgxNTM0X01BWF9CQVVEUkFURQkJMTE1 MjAwCiAKICNkZWZpbmUgRjgxNTM0X1BPUlRfQ09ORl9ESVNBQkxFX1BPUlQJQklUKDMpCiAjZGVm aW5lIEY4MTUzNF9QT1JUX0NPTkZfTk9UX0VYSVNUX1BPUlQJQklUKDcpCkBAIC0xMDYsNiArMTA2 LDIzIEBACiAjZGVmaW5lIEY4MTUzNF8xWF9SWFRSSUdHRVIJCTB4YzMKICNkZWZpbmUgRjgxNTM0 XzhYX1JYVFJJR0dFUgkJMHhjZgogCisvKgorICogRjgxNTMyLzUzNCBDbG9jayByZWdpc3RlcnMg KG9mZnNldCArMDhoKQorICoKKyAqIEJpdDA6CVVBUlQgRW5hYmxlIChhbHdheXMgb24pCisgKiBC aXQyLTE6CUNsb2NrIHNvdXJjZSBzZWxlY3RvcgorICoJCQkwMDogMS44NDZNSHouCisgKgkJCTAx OiAxOC40Nk1Iei4KKyAqCQkJMTA6IDI0TUh6LgorICoJCQkxMTogMTQuNzdNSHouCisgKi8KKwor I2RlZmluZSBGODE1MzRfVUFSVF9FTgkJCUJJVCgwKQorI2RlZmluZSBGODE1MzRfQ0xLXzFfODQ2 X01IWgkJRjgxNTM0X1VBUlRfRU4KKyNkZWZpbmUgRjgxNTM0X0NMS18xOF80Nl9NSFoJCShGODE1 MzRfVUFSVF9FTiB8IEJJVCgxKSkKKyNkZWZpbmUgRjgxNTM0X0NMS18yNF9NSFoJCShGODE1MzRf VUFSVF9FTiB8IEJJVCgyKSkKKyNkZWZpbmUgRjgxNTM0X0NMS18xNF83N19NSFoJCShGODE1MzRf VUFSVF9FTiB8IEJJVCgxKSB8IEJJVCgyKSkKKwogc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2 aWNlX2lkIGY4MTUzNF9pZF90YWJsZVtdID0gewogCXsgVVNCX0RFVklDRShGSU5URUtfVkVORE9S X0lEXzEsIEZJTlRFS19ERVZJQ0VfSUQpIH0sCiAJeyBVU0JfREVWSUNFKEZJTlRFS19WRU5ET1Jf SURfMiwgRklOVEVLX0RFVklDRV9JRCkgfSwKQEAgLTEyOSwxMiArMTQ2LDE4IEBAIHN0cnVjdCBm ODE1MzRfcG9ydF9wcml2YXRlIHsKIAlzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0OwogCXVu c2lnbmVkIGxvbmcgdHhfZW1wdHk7CiAJc3BpbmxvY2tfdCBtc3JfbG9jazsKKwl1MzIgYmF1ZF9i YXNlOwogCXU4IHNoYWRvd19tY3I7CiAJdTggc2hhZG93X2xjcjsKIAl1OCBzaGFkb3dfbXNyOwor CXU4IHNoYWRvd19jbGs7CiAJdTggcGh5X251bTsKIH07CiAKK3N0YXRpYyB1MzIgY29uc3QgYmF1 ZHJhdGVfdGFibGVbXSA9IHsxMTUyMDAsIDkyMTYwMCwgMTE1MjAwMCwgMTUwMDAwMH07CitzdGF0 aWMgdTggY29uc3QgY2xvY2tfdGFibGVbXSA9IHtGODE1MzRfQ0xLXzFfODQ2X01IWiwgRjgxNTM0 X0NMS18xNF83N19NSFosCisJCQkJRjgxNTM0X0NMS18xOF80Nl9NSFosIEY4MTUzNF9DTEtfMjRf TUhafTsKKwogc3RhdGljIGludCBmODE1MzRfbG9naWNfdG9fcGh5X3BvcnQoc3RydWN0IHVzYl9z ZXJpYWwgKnNlcmlhbCwKIAkJCQkJc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKIHsKQEAg LTQ2MCwxMyArNDgzLDQ4IEBAIHN0YXRpYyB1MzIgZjgxNTM0X2NhbGNfYmF1ZF9kaXZpc29yKHUz MiBiYXVkcmF0ZSwgdTMyIGNsb2NrcmF0ZSkKIAlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoY2xv Y2tyYXRlLCBiYXVkcmF0ZSk7CiB9CiAKLXN0YXRpYyBpbnQgZjgxNTM0X3NldF9wb3J0X2NvbmZp ZyhzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LCB1MzIgYmF1ZHJhdGUsCi0JCQkJCXU4IGxj cikKK3N0YXRpYyBpbnQgZjgxNTM0X2ZpbmRfY2xrKHUzMiBiYXVkcmF0ZSkKK3sKKwlpbnQgaWR4 OworCisJZm9yIChpZHggPSAwOyBpZHggPCBBUlJBWV9TSVpFKGJhdWRyYXRlX3RhYmxlKTsgKytp ZHgpIHsKKwkJaWYgKGJhdWRyYXRlIDw9IGJhdWRyYXRlX3RhYmxlW2lkeF0gJiYKKwkJCQliYXVk cmF0ZV90YWJsZVtpZHhdICUgYmF1ZHJhdGUgPT0gMCkKKwkJCXJldHVybiBpZHg7CisJfQorCisJ cmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgZjgxNTM0X3NldF9wb3J0X2NvbmZpZyhz dHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LAorCQlzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCB1 MzIgYmF1ZHJhdGUsIHUzMiBvbGRfYmF1ZHJhdGUsIHU4IGxjcikKIHsKIAlzdHJ1Y3QgZjgxNTM0 X3BvcnRfcHJpdmF0ZSAqcG9ydF9wcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQp OwogCXUzMiBkaXZpc29yOwogCWludCBzdGF0dXM7CisJaW50IGk7CisJaW50IGlkeDsKIAl1OCB2 YWx1ZTsKKwl1MzIgYmF1ZF9saXN0W10gPSB7YmF1ZHJhdGUsIG9sZF9iYXVkcmF0ZSwgRjgxNTM0 X0RFRkFVTFRfQkFVRF9SQVRFfTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGJhdWRf bGlzdCk7ICsraSkgeworCQlpZHggPSBmODE1MzRfZmluZF9jbGsoYmF1ZF9saXN0W2ldKTsKKwkJ aWYgKGlkeCA+PSAwKSB7CisJCQliYXVkcmF0ZSA9IGJhdWRfbGlzdFtpXTsKKwkJCXR0eV9lbmNv ZGVfYmF1ZF9yYXRlKHR0eSwgYmF1ZHJhdGUsIGJhdWRyYXRlKTsKKwkJCWJyZWFrOworCQl9CisJ fQorCisJcG9ydF9wcml2LT5iYXVkX2Jhc2UgPSBiYXVkcmF0ZV90YWJsZVtpZHhdOworCXBvcnRf cHJpdi0+c2hhZG93X2NsayA9IGNsb2NrX3RhYmxlW2lkeF07CisKKwlzdGF0dXMgPSBmODE1MzRf c2V0X3BvcnRfcmVnaXN0ZXIocG9ydCwgRjgxNTM0X0NMT0NLX1JFRywKKwkJCXBvcnRfcHJpdi0+ c2hhZG93X2Nsayk7CisJaWYgKHN0YXR1cykgeworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJDTE9D S19SRUcgc2V0dGluZyBmYWlsZWRcbiIpOworCQlyZXR1cm4gc3RhdHVzOworCX0KIAogCWlmIChi YXVkcmF0ZSA8PSAxMjAwKQogCQl2YWx1ZSA9IEY4MTUzNF8xWF9SWFRSSUdHRVI7CS8qIDEyOCBG SUZPICYgVEw6IDF4ICovCkBAIC00ODIsNyArNTQwLDcgQEAgc3RhdGljIGludCBmODE1MzRfc2V0 X3BvcnRfY29uZmlnKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsIHUzMiBiYXVkcmF0ZSwK IAlpZiAoYmF1ZHJhdGUgPD0gMTIwMCkKIAkJdmFsdWUgPSBVQVJUX0ZDUl9UUklHR0VSXzEgfCBV QVJUX0ZDUl9FTkFCTEVfRklGTzsgLyogVEw6IDEgKi8KIAllbHNlCi0JCXZhbHVlID0gVUFSVF9G Q1JfUl9UUklHXzExIHwgVUFSVF9GQ1JfRU5BQkxFX0ZJRk87IC8qIFRMOiAxNCAqLworCQl2YWx1 ZSA9IFVBUlRfRkNSX1RSSUdHRVJfOCB8IFVBUlRfRkNSX0VOQUJMRV9GSUZPOyAvKiBUTDogOCAq LwogCiAJc3RhdHVzID0gZjgxNTM0X3NldF9wb3J0X3JlZ2lzdGVyKHBvcnQsIEY4MTUzNF9GSUZP X0NPTlRST0xfUkVHLAogCQkJCQkJdmFsdWUpOwpAQCAtNDkxLDcgKzU0OSw3IEBAIHN0YXRpYyBp bnQgZjgxNTM0X3NldF9wb3J0X2NvbmZpZyhzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LCB1 MzIgYmF1ZHJhdGUsCiAJCXJldHVybiBzdGF0dXM7CiAJfQogCi0JZGl2aXNvciA9IGY4MTUzNF9j YWxjX2JhdWRfZGl2aXNvcihiYXVkcmF0ZSwgRjgxNTM0X01BWF9CQVVEUkFURSk7CisJZGl2aXNv ciA9IGY4MTUzNF9jYWxjX2JhdWRfZGl2aXNvcihiYXVkcmF0ZSwgYmF1ZHJhdGVfdGFibGVbaWR4 XSk7CiAKIAltdXRleF9sb2NrKCZwb3J0X3ByaXYtPmxjcl9tdXRleCk7CiAKQEAgLTc0MSw2ICs3 OTksNyBAQCBzdGF0aWMgdm9pZCBmODE1MzRfc2V0X3Rlcm1pb3Moc3RydWN0IHR0eV9zdHJ1Y3Qg KnR0eSwKIAl1OCBuZXdfbGNyID0gMDsKIAlpbnQgc3RhdHVzOwogCXUzMiBiYXVkOworCXUzMiBv bGRfYmF1ZDsKIAogCWlmIChDX0JBVUQodHR5KSA9PSBCMCkKIAkJZjgxNTM0X3VwZGF0ZV9tY3Ry bChwb3J0LCAwLCBUSU9DTV9EVFIgfCBUSU9DTV9SVFMpOwpAQCAtNzgwLDE4ICs4MzksMTQgQEAg c3RhdGljIHZvaWQgZjgxNTM0X3NldF90ZXJtaW9zKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksCiAJ aWYgKCFiYXVkKQogCQlyZXR1cm47CiAKLQlpZiAoYmF1ZCA+IEY4MTUzNF9NQVhfQkFVRFJBVEUp IHsKLQkJaWYgKG9sZF90ZXJtaW9zKQotCQkJYmF1ZCA9IHR0eV90ZXJtaW9zX2JhdWRfcmF0ZShv bGRfdGVybWlvcyk7Ci0JCWVsc2UKLQkJCWJhdWQgPSBGODE1MzRfREVGQVVMVF9CQVVEX1JBVEU7 Ci0KLQkJdHR5X2VuY29kZV9iYXVkX3JhdGUodHR5LCBiYXVkLCBiYXVkKTsKLQl9CisJaWYgKG9s ZF90ZXJtaW9zKQorCQlvbGRfYmF1ZCA9IHR0eV90ZXJtaW9zX2JhdWRfcmF0ZShvbGRfdGVybWlv cyk7CisJZWxzZQorCQlvbGRfYmF1ZCA9IEY4MTUzNF9ERUZBVUxUX0JBVURfUkFURTsKIAogCWRl dl9kYmcoJnBvcnQtPmRldiwgIiVzOiBiYXVkOiAlZFxuIiwgX19mdW5jX18sIGJhdWQpOwogCi0J c3RhdHVzID0gZjgxNTM0X3NldF9wb3J0X2NvbmZpZyhwb3J0LCBiYXVkLCBuZXdfbGNyKTsKKwlz dGF0dXMgPSBmODE1MzRfc2V0X3BvcnRfY29uZmlnKHBvcnQsIHR0eSwgYmF1ZCwgb2xkX2JhdWQs IG5ld19sY3IpOwogCWlmIChzdGF0dXMgPCAwKSB7CiAJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVz OiBzZXQgcG9ydCBjb25maWcgZmFpbGVkOiAlZFxuIiwKIAkJCQlfX2Z1bmNfXywgc3RhdHVzKTsK QEAgLTk0Nyw3ICsxMDAyLDcgQEAgc3RhdGljIGludCBmODE1MzRfZ2V0X3NlcmlhbF9pbmZvKHN0 cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsCiAJdG1wLnR5cGUgPSBQT1JUXzE2NTUwQTsKIAl0 bXAucG9ydCA9IHBvcnQtPnBvcnRfbnVtYmVyOwogCXRtcC5saW5lID0gcG9ydC0+bWlub3I7Ci0J dG1wLmJhdWRfYmFzZSA9IEY4MTUzNF9NQVhfQkFVRFJBVEU7CisJdG1wLmJhdWRfYmFzZSA9IHBv cnRfcHJpdi0+YmF1ZF9iYXNlOwogCiAJaWYgKGNvcHlfdG9fdXNlcihyZXRpbmZvLCAmdG1wLCBz aXplb2YoKnJldGluZm8pKSkKIAkJcmV0dXJuIC1FRkFVTFQ7Cg==