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: [4/4] USB: serial: ftdi_sio: clean up flow control management From: Johan Hovold Message-Id: <20180518132550.21749-5-johan@kernel.org> Date: Fri, 18 May 2018 15:25:50 +0200 To: Johan Hovold Cc: Greg Kroah-Hartman , linux-usb@vger.kernel.org List-ID: Q2xlYW4gdXAgdGhlIHNvbWV3aGF0IGNvbnZvbHV0ZWQgaGFyZHdhcmUtYXNzaXN0ZWQgZmxvdyBj b250cm9sCmhhbmRsaW5nLgoKU2lnbmVkLW9mZi1ieTogSm9oYW4gSG92b2xkIDxqb2hhbkBrZXJu ZWwub3JnPgotLS0KIGRyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jIHwgODEgKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMyBpbnNlcnRpb25z KCspLCA1OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRk aV9zaW8uYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCmluZGV4IDNkN2YxODFlN2Uy YS4uYjVjZWYzMjI4MjZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8u YworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYwpAQCAtMjE5MSwxMiArMjE5MSw4 IEBAIHN0YXRpYyB2b2lkIGZ0ZGlfc2V0X3Rlcm1pb3Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwK IAlzdHJ1Y3QgZnRkaV9wcml2YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBv cnQpOwogCXN0cnVjdCBrdGVybWlvcyAqdGVybWlvcyA9ICZ0dHktPnRlcm1pb3M7CiAJdW5zaWdu ZWQgaW50IGNmbGFnID0gdGVybWlvcy0+Y19jZmxhZzsKLQl1MTYgdmFsdWU7Ci0KLQkvKiBBZGRl ZCBmb3IgeG9uL3hvZmYgc3VwcG9ydCAqLwotCXVuc2lnbmVkIGludCBpZmxhZyA9IHRlcm1pb3Mt PmNfaWZsYWc7Ci0JdW5zaWduZWQgY2hhciB2c3RvcDsKLQl1bnNpZ25lZCBjaGFyIHZzdGFydDsK Kwl1MTYgdmFsdWUsIGluZGV4OworCWludCByZXQ7CiAKIAkvKiBGb3JjZSBiYXVkIHJhdGUgaWYg dGhpcyBkZXZpY2UgcmVxdWlyZXMgaXQsIHVubGVzcyBpdCBpcyBzZXQgdG8KIAkgICBCMC4gKi8K QEAgLTIzMjUsNjEgKzIzMjEsMzAgQEAgc3RhdGljIHZvaWQgZnRkaV9zZXRfdGVybWlvcyhzdHJ1 Y3QgdHR5X3N0cnVjdCAqdHR5LAogCQkJc2V0X21jdHJsKHBvcnQsIFRJT0NNX0RUUiB8IFRJT0NN X1JUUyk7CiAJfQogCi0JLyogU2V0IGZsb3cgY29udHJvbCAqLwotCS8qIE5vdGUgZGV2aWNlIGFs c28gc3VwcG9ydHMgRFRSL0NEICh1Z2gpIGFuZCBYb24vWG9mZiBpbiBoYXJkd2FyZSAqLwogbm9f Y19jZmxhZ19jaGFuZ2VzOgotCWlmIChjZmxhZyAmIENSVFNDVFMpIHsKLQkJZGV2X2RiZyhkZGV2 LCAiJXMgU2V0dGluZyB0byBDUlRTQ1RTIGZsb3cgY29udHJvbFxuIiwgX19mdW5jX18pOwotCQlp ZiAodXNiX2NvbnRyb2xfbXNnKGRldiwKLQkJCQkgICAgdXNiX3NuZGN0cmxwaXBlKGRldiwgMCks Ci0JCQkJICAgIEZURElfU0lPX1NFVF9GTE9XX0NUUkxfUkVRVUVTVCwKLQkJCQkgICAgRlRESV9T SU9fU0VUX0ZMT1dfQ1RSTF9SRVFVRVNUX1RZUEUsCi0JCQkJICAgIDAgLCAoRlRESV9TSU9fUlRT X0NUU19IUyB8IHByaXYtPmludGVyZmFjZSksCi0JCQkJICAgIE5VTEwsIDAsIFdEUl9USU1FT1VU KSA8IDApIHsKLQkJCWRldl9lcnIoZGRldiwgInVyYiBmYWlsZWQgdG8gc2V0IHRvIHJ0cy9jdHMg ZmxvdyBjb250cm9sXG4iKTsKLQkJfQorCS8qIFNldCBoYXJkd2FyZS1hc3Npc3RlZCBmbG93IGNv bnRyb2wgKi8KKwl2YWx1ZSA9IDA7CisKKwlpZiAoQ19DUlRTQ1RTKHR0eSkpIHsKKwkJZGV2X2Ri ZygmcG9ydC0+ZGV2LCAiZW5hYmxpbmcgcnRzL2N0cyBmbG93IGNvbnRyb2xcbiIpOworCQlpbmRl eCA9IEZURElfU0lPX1JUU19DVFNfSFM7CisJfSBlbHNlIGlmIChJX0lYT04odHR5KSkgeworCQlk ZXZfZGJnKCZwb3J0LT5kZXYsICJlbmFibGluZyB4b24veG9mZiBmbG93IGNvbnRyb2xcbiIpOwor CQlpbmRleCA9IEZURElfU0lPX1hPTl9YT0ZGX0hTOworCQl2YWx1ZSA9IFNUT1BfQ0hBUih0dHkp IDw8IDggfCBTVEFSVF9DSEFSKHR0eSk7CiAJfSBlbHNlIHsKLQkJLyoKLQkJICogWG9uL1hvZmYg Y29kZQotCQkgKi8KLQkJaWYgKGlmbGFnICYgSVhPTikgewotCQkJZGV2X2RiZyhkZGV2LCAiJXMg IHJlcXVlc3QgdG8gZW5hYmxlIHhvbnhvZmYgaWZsYWc9JTA0eFxuIiwKLQkJCQlfX2Z1bmNfXywg aWZsYWcpOwotCQkJLyogVHJ5IHRvIGVuYWJsZSB0aGUgWE9OL1hPRkYgb24gdGhlIGZ0ZGlfc2lv Ci0JCQkgKiBTZXQgdGhlIHZzdGFydCBhbmQgdnN0b3AgLS0gY291bGQgaGF2ZSBiZWVuIGRvbmUg dXAKLQkJCSAqIGFib3ZlIHdoZXJlIGEgbG90IG9mIG90aGVyIGRlcmVmZXJlbmNpbmcgaXMgZG9u ZSBidXQKLQkJCSAqIHRoYXQgd291bGQgYmUgdmVyeSBpbmVmZmljaWVudCBhcyB2c3RhcnQgYW5k IHZzdG9wCi0JCQkgKiBhcmUgbm90IGFsd2F5cyBuZWVkZWQuCi0JCQkgKi8KLQkJCXZzdGFydCA9 IHRlcm1pb3MtPmNfY2NbVlNUQVJUXTsKLQkJCXZzdG9wID0gdGVybWlvcy0+Y19jY1tWU1RPUF07 Ci0JCQl2YWx1ZSA9ICh2c3RvcCA8PCA4KSB8ICh2c3RhcnQpOwotCi0JCQlpZiAodXNiX2NvbnRy b2xfbXNnKGRldiwKLQkJCQkJICAgIHVzYl9zbmRjdHJscGlwZShkZXYsIDApLAotCQkJCQkgICAg RlRESV9TSU9fU0VUX0ZMT1dfQ1RSTF9SRVFVRVNULAotCQkJCQkgICAgRlRESV9TSU9fU0VUX0ZM T1dfQ1RSTF9SRVFVRVNUX1RZUEUsCi0JCQkJCSAgICB2YWx1ZSAsIChGVERJX1NJT19YT05fWE9G Rl9IUwotCQkJCQkJCSB8IHByaXYtPmludGVyZmFjZSksCi0JCQkJCSAgICBOVUxMLCAwLCBXRFJf VElNRU9VVCkgPCAwKSB7Ci0JCQkJZGV2X2VycigmcG9ydC0+ZGV2LCAidXJiIGZhaWxlZCB0byBz ZXQgdG8gIgotCQkJCQkieG9uL3hvZmYgZmxvdyBjb250cm9sXG4iKTsKLQkJCX0KLQkJfSBlbHNl IHsKLQkJCS8qIGVsc2UgY2xhdXNlIHRvIG9ubHkgcnVuIGlmIGNmbGFnICEgQ1JUU0NUUyBhbmQg aWZsYWcKLQkJCSAqICEgWE9OLiBDSEVDS01FIEFzc3VtaW5nIFhPTi9YT0ZGIGhhbmRsZWQgYnkg dHR5Ci0JCQkgKiBzdGFjayAtIG5vdCBieSBkZXZpY2UgKi8KLQkJCWRldl9kYmcoZGRldiwgIiVz IFR1cm5pbmcgb2ZmIGhhcmR3YXJlIGZsb3cgY29udHJvbFxuIiwgX19mdW5jX18pOwotCQkJaWYg KHVzYl9jb250cm9sX21zZyhkZXYsCi0JCQkJCSAgICB1c2Jfc25kY3RybHBpcGUoZGV2LCAwKSwK LQkJCQkJICAgIEZURElfU0lPX1NFVF9GTE9XX0NUUkxfUkVRVUVTVCwKLQkJCQkJICAgIEZURElf U0lPX1NFVF9GTE9XX0NUUkxfUkVRVUVTVF9UWVBFLAotCQkJCQkgICAgMCwgcHJpdi0+aW50ZXJm YWNlLAotCQkJCQkgICAgTlVMTCwgMCwgV0RSX1RJTUVPVVQpIDwgMCkgewotCQkJCWRldl9lcnIo ZGRldiwgInVyYiBmYWlsZWQgdG8gY2xlYXIgZmxvdyBjb250cm9sXG4iKTsKLQkJCX0KLQkJfQor CQlkZXZfZGJnKCZwb3J0LT5kZXYsICJkaXNhYmxpbmcgZmxvdyBjb250cm9sXG4iKTsKKwkJaW5k ZXggPSBGVERJX1NJT19ESVNBQkxFX0ZMT1dfQ1RSTDsKIAl9CisKKwlpbmRleCB8PSBwcml2LT5p bnRlcmZhY2U7CisKKwlyZXQgPSB1c2JfY29udHJvbF9tc2coZGV2LCB1c2Jfc25kY3RybHBpcGUo ZGV2LCAwKSwKKwkJCUZURElfU0lPX1NFVF9GTE9XX0NUUkxfUkVRVUVTVCwKKwkJCUZURElfU0lP X1NFVF9GTE9XX0NUUkxfUkVRVUVTVF9UWVBFLAorCQkJdmFsdWUsIGluZGV4LCBOVUxMLCAwLCBX RFJfVElNRU9VVCk7CisJaWYgKHJldCA8IDApCisJCWRldl9lcnIoJnBvcnQtPmRldiwgImZhaWxl ZCB0byBzZXQgZmxvdyBjb250cm9sOiAlZFxuIiwgcmV0KTsKIH0KIAogLyoK