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: [V3,4/6] usb: serial: f81534: refactoring calc_num_ports() From: "Ji-Ze Hong \(Peter Hong\)" Message-Id: <1515653240-5420-4-git-send-email-hpeter+linux_kernel@gmail.com> Date: Thu, 11 Jan 2018 14:47:18 +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: SW4gdGhlIG9yaWdpbmFsIGNvZGUsIFdlJ2xsIHJlYWQgY29uZmlndXJhdGlvbiBpbiBjYWxjX251 bV9wb3J0cygpCmFuZCByZWFkIGFnYWluIGluIGF0dGFjaCgpLiBJbiBmYWN0LCB3ZSBjYW4gbW92 ZSBhbGwgY29udGVudCBmcm9tCmF0dGFjaCgpIHRvIGNhbGNfbnVtX3BvcnRzKCkgdG8gc2ltcGxp ZnkgdGhlIGNvZGUuCgpTaWduZWQtb2ZmLWJ5OiBKaS1aZSBIb25nIChQZXRlciBIb25nKSA8aHBl dGVyK2xpbnV4X2tlcm5lbEBnbWFpbC5jb20+Ci0tLQpWMzoKCTE6IEZpcnN0IGludHJvZHVjZWQg aW4gdGhpcyBzZXJpZXMgcGF0Y2hlcy4KCiBkcml2ZXJzL3VzYi9zZXJpYWwvZjgxNTM0LmMgfCAx MTYgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCA4NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9zZXJpYWwvZjgxNTM0LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZjgxNTM0LmMK aW5kZXggZTdkZDAxMzEwZjIwLi5iYzBhNGJkNWRjZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNi L3NlcmlhbC9mODE1MzQuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZjgxNTM0LmMKQEAgLTc1 MywxNCArNzUzLDE0IEBAIHN0YXRpYyBpbnQgZjgxNTM0X2ZpbmRfY29uZmlnX2lkeChzdHJ1Y3Qg dXNiX3NlcmlhbCAqc2VyaWFsLCB1OCAqaW5kZXgpCiBzdGF0aWMgaW50IGY4MTUzNF9jYWxjX251 bV9wb3J0cyhzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLAogCQkJCQlzdHJ1Y3QgdXNiX3Nlcmlh bF9lbmRwb2ludHMgKmVwZHMpCiB7CisJc3RydWN0IGY4MTUzNF9zZXJpYWxfcHJpdmF0ZSAqc2Vy aWFsX3ByaXY7CiAJc3RydWN0IGRldmljZSAqZGV2ID0gJnNlcmlhbC0+aW50ZXJmYWNlLT5kZXY7 CiAJaW50IHNpemVfYnVsa19pbiA9IHVzYl9lbmRwb2ludF9tYXhwKGVwZHMtPmJ1bGtfaW5bMF0p OwogCWludCBzaXplX2J1bGtfb3V0ID0gdXNiX2VuZHBvaW50X21heHAoZXBkcy0+YnVsa19vdXRb MF0pOwotCXU4IHNldHRpbmdbRjgxNTM0X0NVU1RPTV9EQVRBX1NJWkVdOwotCXU4IHNldHRpbmdf aWR4OwogCXU4IG51bV9wb3J0ID0gMDsKKwlpbnQgaW5kZXggPSAwOwogCWludCBzdGF0dXM7Ci0J c2l6ZV90IGk7CisJaW50IGk7CiAKIAlpZiAoc2l6ZV9idWxrX291dCAhPSBGODE1MzRfV1JJVEVf QlVGRkVSX1NJWkUgfHwKIAkJCXNpemVfYnVsa19pbiAhPSBGODE1MzRfTUFYX1JFQ0VJVkVfQkxP Q0tfU0laRSkgewpAQCAtNzY4LDggKzc2OCwxNiBAQCBzdGF0aWMgaW50IGY4MTUzNF9jYWxjX251 bV9wb3J0cyhzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLAogCQlyZXR1cm4gLUVOT0RFVjsKIAl9 CiAKKwlzZXJpYWxfcHJpdiA9IGRldm1fa3phbGxvYygmc2VyaWFsLT5pbnRlcmZhY2UtPmRldiwK KwkJCQkJc2l6ZW9mKCpzZXJpYWxfcHJpdiksIEdGUF9LRVJORUwpOworCWlmICghc2VyaWFsX3By aXYpCisJCXJldHVybiAtRU5PTUVNOworCisJdXNiX3NldF9zZXJpYWxfZGF0YShzZXJpYWwsIHNl cmlhbF9wcml2KTsKKwltdXRleF9pbml0KCZzZXJpYWxfcHJpdi0+dXJiX211dGV4KTsKKwogCS8q IENoZWNrIGhhZCBjdXN0b20gc2V0dGluZyAqLwotCXN0YXR1cyA9IGY4MTUzNF9maW5kX2NvbmZp Z19pZHgoc2VyaWFsLCAmc2V0dGluZ19pZHgpOworCXN0YXR1cyA9IGY4MTUzNF9maW5kX2NvbmZp Z19pZHgoc2VyaWFsLCAmc2VyaWFsX3ByaXYtPnNldHRpbmdfaWR4KTsKIAlpZiAoc3RhdHVzKSB7 CiAJCWRldl9lcnIoJnNlcmlhbC0+aW50ZXJmYWNlLT5kZXYsICIlczogZmluZCBpZHggZmFpbGVk OiAlZFxuIiwKIAkJCQlfX2Z1bmNfXywgc3RhdHVzKTsKQEAgLTc4MCwxMSArNzg4LDEyIEBAIHN0 YXRpYyBpbnQgZjgxNTM0X2NhbGNfbnVtX3BvcnRzKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWws CiAJICogV2UnbGwgcmVhZCBjdXN0b20gZGF0YSBvbmx5IHdoZW4gZGF0YSBhdmFpbGFibGUsIG90 aGVyd2lzZSB3ZSdsbAogCSAqIHJlYWQgZGVmYXVsdCB2YWx1ZSBpbnN0ZWFkLgogCSAqLwotCWlm IChzZXR0aW5nX2lkeCAhPSBGODE1MzRfQ1VTVE9NX05PX0NVU1RPTV9EQVRBKSB7CisJaWYgKHNl cmlhbF9wcml2LT5zZXR0aW5nX2lkeCAhPSBGODE1MzRfQ1VTVE9NX05PX0NVU1RPTV9EQVRBKSB7 CiAJCXN0YXR1cyA9IGY4MTUzNF9yZWFkX2ZsYXNoKHNlcmlhbCwKIAkJCQkJCUY4MTUzNF9DVVNU T01fQUREUkVTU19TVEFSVCArCiAJCQkJCQlGODE1MzRfQ09ORl9PRkZTRVQsCi0JCQkJCQlzaXpl b2Yoc2V0dGluZyksIHNldHRpbmcpOworCQkJCQkJc2l6ZW9mKHNlcmlhbF9wcml2LT5jb25mX2Rh dGEpLAorCQkJCQkJc2VyaWFsX3ByaXYtPmNvbmZfZGF0YSk7CiAJCWlmIChzdGF0dXMpIHsKIAkJ CWRldl9lcnIoJnNlcmlhbC0+aW50ZXJmYWNlLT5kZXYsCiAJCQkJCSIlczogZ2V0IGN1c3RvbSBk YXRhIGZhaWxlZDogJWRcbiIsCkBAIC03OTQsMTMgKzgwMywxMyBAQCBzdGF0aWMgaW50IGY4MTUz NF9jYWxjX251bV9wb3J0cyhzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLAogCiAJCWRldl9kYmco JnNlcmlhbC0+aW50ZXJmYWNlLT5kZXYsCiAJCQkJIiVzOiByZWFkIGNvbmZpZyBmcm9tIGJsb2Nr OiAlZFxuIiwgX19mdW5jX18sCi0JCQkJc2V0dGluZ19pZHgpOworCQkJCXNlcmlhbF9wcml2LT5z ZXR0aW5nX2lkeCk7CiAJfSBlbHNlIHsKIAkJLyogUmVhZCBkZWZhdWx0IGJvYXJkIHNldHRpbmcg Ki8KIAkJc3RhdHVzID0gZjgxNTM0X3JlYWRfZmxhc2goc2VyaWFsLAotCQkJCUY4MTUzNF9ERUZf Q09ORl9BRERSRVNTX1NUQVJULCBGODE1MzRfTlVNX1BPUlQsCi0JCQkJc2V0dGluZyk7Ci0KKwkJ CQlGODE1MzRfREVGX0NPTkZfQUREUkVTU19TVEFSVCwKKwkJCQlzaXplb2Yoc2VyaWFsX3ByaXYt PmNvbmZfZGF0YSksCisJCQkJc2VyaWFsX3ByaXYtPmNvbmZfZGF0YSk7CiAJCWlmIChzdGF0dXMp IHsKIAkJCWRldl9lcnIoJnNlcmlhbC0+aW50ZXJmYWNlLT5kZXYsCiAJCQkJCSIlczogcmVhZCBm YWlsZWQ6ICVkXG4iLCBfX2Z1bmNfXywKQEAgLTgxNCw3ICs4MjMsNyBAQCBzdGF0aWMgaW50IGY4 MTUzNF9jYWxjX251bV9wb3J0cyhzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLAogCiAJLyogTmV3 IHN0eWxlLCBmaW5kIGFsbCBwb3NzaWJsZSBwb3J0cyAqLwogCWZvciAoaSA9IDA7IGkgPCBGODE1 MzRfTlVNX1BPUlQ7ICsraSkgewotCQlpZiAoc2V0dGluZ1tpXSAmIEY4MTUzNF9QT1JUX1VOQVZB SUxBQkxFKQorCQlpZiAoc2VyaWFsX3ByaXYtPmNvbmZfZGF0YVtpXSAmIEY4MTUzNF9QT1JUX1VO QVZBSUxBQkxFKQogCQkJY29udGludWU7CiAKIAkJKytudW1fcG9ydDsKQEAgLTgyNiw2ICs4MzUs MTcgQEAgc3RhdGljIGludCBmODE1MzRfY2FsY19udW1fcG9ydHMoc3RydWN0IHVzYl9zZXJpYWwg KnNlcmlhbCwKIAkJbnVtX3BvcnQgPSA0OwkJLyogTm90aGluZyBmb3VuZCwgb2xkZXN0IHZlcnNp b24gSUMgKi8KIAl9CiAKKwkvKiBBc3NpZ24gcGh5LXRvLWxvZ2ljIG1hcHBpbmcgKi8KKwlmb3Ig KGkgPSAwOyBpIDwgRjgxNTM0X05VTV9QT1JUOyArK2kpIHsKKwkJaWYgKHNlcmlhbF9wcml2LT5j b25mX2RhdGFbaV0gJiBGODE1MzRfUE9SVF9VTkFWQUlMQUJMRSkKKwkJCWNvbnRpbnVlOworCisJ CXNlcmlhbF9wcml2LT50dHlfaWR4W2ldID0gaW5kZXgrKzsKKwkJZGV2X2RiZygmc2VyaWFsLT5p bnRlcmZhY2UtPmRldiwKKwkJCQkiJXM6IHBoeV9udW06ICVkLCB0dHlfaWR4OiAlZFxuIiwgX19m dW5jX18sIGksCisJCQkJc2VyaWFsX3ByaXYtPnR0eV9pZHhbaV0pOworCX0KKwogCS8qCiAJICog U2V0dXAgYnVsay1vdXQgZW5kcG9pbnQgbXVsdGlwbGV4aW5nLiBBbGwgcG9ydHMgc2hhcmUgdGhl IHNhbWUKIAkgKiBidWxrLW91dCBlbmRwb2ludC4KQEAgLTEyMjcsNzkgKzEyNDcsNiBAQCBzdGF0 aWMgdm9pZCBmODE1MzRfd3JpdGVfdXNiX2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYikKIAl9CiB9 CiAKLXN0YXRpYyBpbnQgZjgxNTM0X2F0dGFjaChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQot ewotCXN0cnVjdCBmODE1MzRfc2VyaWFsX3ByaXZhdGUgKnNlcmlhbF9wcml2OwotCWludCBpbmRl eCA9IDA7Ci0JaW50IHN0YXR1czsKLQlpbnQgaTsKLQotCXNlcmlhbF9wcml2ID0gZGV2bV9remFs bG9jKCZzZXJpYWwtPmludGVyZmFjZS0+ZGV2LAotCQkJCQlzaXplb2YoKnNlcmlhbF9wcml2KSwg R0ZQX0tFUk5FTCk7Ci0JaWYgKCFzZXJpYWxfcHJpdikKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQl1 c2Jfc2V0X3NlcmlhbF9kYXRhKHNlcmlhbCwgc2VyaWFsX3ByaXYpOwotCi0JbXV0ZXhfaW5pdCgm c2VyaWFsX3ByaXYtPnVyYl9tdXRleCk7Ci0KLQkvKiBDaGVjayBoYWQgY3VzdG9tIHNldHRpbmcg Ki8KLQlzdGF0dXMgPSBmODE1MzRfZmluZF9jb25maWdfaWR4KHNlcmlhbCwgJnNlcmlhbF9wcml2 LT5zZXR0aW5nX2lkeCk7Ci0JaWYgKHN0YXR1cykgewotCQlkZXZfZXJyKCZzZXJpYWwtPmludGVy ZmFjZS0+ZGV2LCAiJXM6IGZpbmQgaWR4IGZhaWxlZDogJWRcbiIsCi0JCQkJX19mdW5jX18sIHN0 YXR1cyk7Ci0JCXJldHVybiBzdGF0dXM7Ci0JfQotCi0JLyoKLQkgKiBXZSdsbCByZWFkIGN1c3Rv bSBkYXRhIG9ubHkgd2hlbiBkYXRhIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHdlJ2xsCi0JICogcmVh ZCBkZWZhdWx0IHZhbHVlIGluc3RlYWQuCi0JICovCi0JaWYgKHNlcmlhbF9wcml2LT5zZXR0aW5n X2lkeCA9PSBGODE1MzRfQ1VTVE9NX05PX0NVU1RPTV9EQVRBKSB7Ci0JCS8qCi0JCSAqIFRoZSBk ZWZhdWx0IGNvbmZpZ3VyYXRpb24gbGF5b3V0OgotCQkgKglieXRlIDAvMS8yLzM6IHVhcnQgc2V0 dGluZwotCQkgKi8KLQkJc3RhdHVzID0gZjgxNTM0X3JlYWRfZmxhc2goc2VyaWFsLAotCQkJCQlG ODE1MzRfREVGX0NPTkZfQUREUkVTU19TVEFSVCwKLQkJCQkJRjgxNTM0X0RFRl9DT05GX1NJWkUs Ci0JCQkJCXNlcmlhbF9wcml2LT5jb25mX2RhdGEpOwotCQlpZiAoc3RhdHVzKSB7Ci0JCQlkZXZf ZXJyKCZzZXJpYWwtPmludGVyZmFjZS0+ZGV2LAotCQkJCQkiJXM6IHJlYWQgcmVzZXJ2ZSBkYXRh IGZhaWxlZDogJWRcbiIsCi0JCQkJCV9fZnVuY19fLCBzdGF0dXMpOwotCQkJcmV0dXJuIHN0YXR1 czsKLQkJfQotCX0gZWxzZSB7Ci0JCS8qIE9ubHkgcmVhZCA4IGJ5dGVzIGZvciBtb2RlICYgR1BJ TyAqLwotCQlzdGF0dXMgPSBmODE1MzRfcmVhZF9mbGFzaChzZXJpYWwsCi0JCQkJCQlGODE1MzRf Q1VTVE9NX0FERFJFU1NfU1RBUlQgKwotCQkJCQkJRjgxNTM0X0NPTkZfT0ZGU0VULAotCQkJCQkJ c2l6ZW9mKHNlcmlhbF9wcml2LT5jb25mX2RhdGEpLAotCQkJCQkJc2VyaWFsX3ByaXYtPmNvbmZf ZGF0YSk7Ci0JCWlmIChzdGF0dXMpIHsKLQkJCWRldl9lcnIoJnNlcmlhbC0+aW50ZXJmYWNlLT5k ZXYsCi0JCQkJCSIlczogaWR4OiAlZCBnZXQgZGF0YSBmYWlsZWQ6ICVkXG4iLAotCQkJCQlfX2Z1 bmNfXywgc2VyaWFsX3ByaXYtPnNldHRpbmdfaWR4LAotCQkJCQlzdGF0dXMpOwotCQkJcmV0dXJu IHN0YXR1czsKLQkJfQotCX0KLQotCS8qIEFzc2lnbiBwaHktdG8tbG9naWMgbWFwcGluZyAqLwot CWZvciAoaSA9IDA7IGkgPCBGODE1MzRfTlVNX1BPUlQ7ICsraSkgewotCQlpZiAoc2VyaWFsX3By aXYtPmNvbmZfZGF0YVtpXSAmIEY4MTUzNF9QT1JUX1VOQVZBSUxBQkxFKQotCQkJY29udGludWU7 Ci0KLQkJc2VyaWFsX3ByaXYtPnR0eV9pZHhbaV0gPSBpbmRleCsrOwotCQlkZXZfZGJnKCZzZXJp YWwtPmludGVyZmFjZS0+ZGV2LAotCQkJCSIlczogcGh5X251bTogJWQsIHR0eV9pZHg6ICVkXG4i LCBfX2Z1bmNfXywgaSwKLQkJCQlzZXJpYWxfcHJpdi0+dHR5X2lkeFtpXSk7Ci0JfQotCi0JcmV0 dXJuIDA7Ci19Ci0KIHN0YXRpYyB2b2lkIGY4MTUzNF9sc3Jfd29ya2VyKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgZjgxNTM0X3BvcnRfcHJpdmF0ZSAqcG9ydF9wcml2OwpA QCAtMTU0Myw3ICsxNDkwLDYgQEAgc3RhdGljIHN0cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciBmODE1 MzRfZGV2aWNlID0gewogCS53cml0ZSA9CQlmODE1MzRfd3JpdGUsCiAJLnR4X2VtcHR5ID0JCWY4 MTUzNF90eF9lbXB0eSwKIAkuY2FsY19udW1fcG9ydHMgPQlmODE1MzRfY2FsY19udW1fcG9ydHMs Ci0JLmF0dGFjaCA9CQlmODE1MzRfYXR0YWNoLAogCS5wb3J0X3Byb2JlID0JCWY4MTUzNF9wb3J0 X3Byb2JlLAogCS5wb3J0X3JlbW92ZSA9CQlmODE1MzRfcG9ydF9yZW1vdmUsCiAJLmJyZWFrX2N0 bCA9CQlmODE1MzRfYnJlYWtfY3RsLAo=