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: [0/3] usb: gadget: Add support for disabling U1 and U2 entries From: claus.stovgaard@gmail.com Message-Id: <1556832986.22007.15.camel@gmail.com> Date: Thu, 02 May 2019 23:36:26 +0200 To: Anurag Kumar Vulisha , Greg Kroah-Hartman , Rob Herring , Mark Rutland , Felipe Balbi Cc: linux-usb@vger.kernel.org, v.anuragkumar@gmail.com, Rob Weber List-ID: SGkKCk9uIHRvciwgMjAxOS0wNS0wMiBhdCAxNTo1MCArMDUzMCwgQW51cmFnIEt1bWFyIFZ1bGlz aGEgd3JvdGU6Cj4gR2FkZ2V0IGFwcGxpY2F0aW9ucyBtYXkgaGF2ZSBhIHJlcXVpcmVtZW50IHRv IGRpc2FibGUgdGhlIFUxIGFuZCBVMgo+IGVudHJ5IGJhc2VkIG9uIHRoZSB1c2VjYXNlLiBGb3Ig ZXhhbXBsZSwgd2hlbiBwZXJmb3JtaW5nIHBlcmZvcm1hbmNlCj4gYmVuY2htYXJraW5nIG9uIG1h c3Mgc3RvcmFnZSBnYWRnZXQgdGhlIFUxIGFuZCBVMiBlbnRyaWVzIGNhbiBiZQo+IGRpc2FibGVk Lgo+IEFub3RoZXIgZXhhbXBsZSBpcyB3aGVuIHBlcmlvZGljIHRyYW5zZmVycyBsaWtlIElTT0Mg dHJhbnNmZXJzIGFyZQo+IHVzZWQKPiB3aXRoIGJJbnRlcnZhbCBvZiAxIHdoaWNoIGRvZXNuJ3Qg cmVxdWlyZSB0aGUgbGluayB0byBlbnRlciBpbnRvIFUxCj4gb3IgVTIKPiBzdGF0ZSAoc2luY2Ug cGluZyBpcyBpc3N1ZWQgZnJvbSBob3N0IGZvciBldmVyeSB1ZnJhbWUgaW50ZXJ2YWwpLiBJbgo+ IHRoaXMKPiBjYXNlIHRoZSBVMSBhbmQgVTIgZW50cnkgY2FuIGJlIGRpc2FibGVkLiBUaGlzIGNh biBiZSBkb25lIGJ5IHNldHRpbmcKPiBVMURldkV4aXRMYXQgYW5kIFUyRGV2RXhpdExhdCB2YWx1 ZXMgdG8gMCBpbiB0aGUgQk9TIGRlc2NyaXB0b3IuIEhvc3QKPiBvbgo+IHNlZWluZyAwIHZhbHVl IGZvciBVMURldkV4aXRMYXQgYW5kIFUyRGV2RXhpdExhdCwgaXQgZG9lc24ndCBzZW5kCj4gU0VU X1NFTAo+IGNvbW1hbmRzIHRvIHRoZSBnYWRnZXQuIFRodXMgZW50cnkgb2YgVTEgYW5kIFUyIHN0 YXRlcyBjYW4gYmUKPiBhdmlvZGVkLgo+IFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgc2FtZS4KPiAK CldpbGwganVzdCB2b3RlIGZvciB0aGlzIGZlYXR1cmUsIGFzIEkgd2lsbCBhbHNvIGJlIGFibGUg dG8gdXNlIGl0IGZvcgpzb2x2aW5nIFJvYiBXZWJlcnMgYW5kIG15IGlzc3VlIFsxXQoKSnVzdCB0 b2RheSBJIHdhcyBtYWtpbmcgYW5vdGhlciBzb2x1dGlvbiBmb3IgdGhpcyBmZWF0dXJlLCB1c2lu ZyB0aGUKY29uZmlnZnMgaW5zdGVhZCBvZiB0aGUgZGV2aWNldHJlZS4gVGhvdWdoIHRoaW5rcyB5 b3VyIHNvbHV0aW9uIGlzCmJldHRlciwgYXMgaXQgdXNlcyB0aGUgVTFEZXZFeGl0TGF0IGFuZCBV MkRldkV4aXRMYXQgaW5zdGVhZC4gSSBqdXN0CmFkZGVkIG15IHNvbHV0aW9uIHRvIHRoZSBib3R0 ZW0gb2YgdGhlIG1haWwgZm9yIHJlZmVyZW5jZS4KClsxXSBodHRwczovL3d3dy5zcGluaWNzLm5l dC9saXN0cy9saW51eC11c2IvbXNnMTc5MzkzLmh0bWwKLS0tCgpGcm9tIDc5OGVhMmY1ZjM2NWVj ZGYyZGJjZjQzNmEyYTAzMDJlMjA4YzZjNzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 ICJDbGF1cyBILiBTdG92Z2FhcmQiIDxjc3RAcGhhc2VvbmUuY29tPgpEYXRlOiBUaHUsIDIgTWF5 IDIwMTkgMTc6NTQ6NDUgKzAyMDAKU3ViamVjdDogW1BBVENIXSB1c2I6IGdhZGdldDogY29uZmln ZnM6IEFkZCBscG1fVXhfZGlzYWJsZQoKV2hlbiBjb21iaW5pbmcgZHdjMyB3aXRoIGFuIHJlZHJp dmVyIGZvciBhIFVTQiBUeXBlLUMgZGV2aWNlIHNvbHV0aW9uLAppdApzb21ldGltZXMgaGF2ZSBw cm9ibGVtcyB3aXRoIGxlYXZpbmcgVTEvVTIgZm9yIGNlcnRhaW4gaG9zdHMsIHJlc3VsdGluZwpp bgpsaW5rIHRyYWluaW5nIGVycm9ycyBhbmQgcmVjb25uZWN0cy4gVGhpcyBwYXRjaCBjcmVhdGUg YW4gaW50ZXJmYWNlIHZpYQpjb25maWdmcyBmb3IgZGlzYWJsaW5nIFUxL1UyLCBlbmFibGluZyBh IHdvcmthcm91bmQgZm9yIGRldmljZXMgYmFzZWQKb24KZHdjMy4KClNpZ25lZC1vZmYtYnk6IENs YXVzIEguIFN0b3ZnYWFyZCA8Y3N0QHBoYXNlb25lLmNvbT4KLS0tCiBkcml2ZXJzL3VzYi9kd2Mz L2VwMC5jICAgICAgICB8ICA5ICsrKysrKy0KIGRyaXZlcnMvdXNiL2dhZGdldC9jb25maWdmcy5j IHwgNTYKKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVk ZS9saW51eC91c2IvZ2FkZ2V0LmggICAgfCAgNiArKysrLQogMyBmaWxlcyBjaGFuZ2VkLCA2OSBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKICAqCiAgKiBEZXZpY2VzIGFyZSBkaXNhYmxl ZCB0aWxsIGEgZ2FkZ2V0IGRyaXZlciBzdWNjZXNzZnVsbHkgYmluZCgpcywKd2hpY2gKICAqIG1l YW5zIHRoZSBkcml2ZXIgd2lsbCBoYW5kbGUgc2V0dXAoKSByZXF1ZXN0cyBuZWVkZWQgdG8gZW51 bWVyYXRlCihhbmQKQEAgLTY4NCw2ICs2ODYsOCBAQCBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIg ewogCWNoYXIJCQkqdWRjX25hbWU7CiAJc3RydWN0IGxpc3RfaGVhZAlwZW5kaW5nOwogCXVuc2ln bmVkICAgICAgICAgICAgICAgIG1hdGNoX2V4aXN0aW5nX29ubHk6MTsKKwl1bnNpZ25lZAkJbHBt X1UxX2Rpc2FibGU6MTsKKwl1bnNpZ25lZAkJbHBtX1UyX2Rpc2FibGU6MTsKIH07CgpkaWZmIC0t Z2l0IGEvZHJpdmVycy91c2IvZHdjMy9lcDAuYyBiL2RyaXZlcnMvdXNiL2R3YzMvZXAwLmMKaW5k ZXggOGVmZGUxNy4uNWIyZDI2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZHdjMy9lcDAuYwor KysgYi9kcml2ZXJzL3VzYi9kd2MzL2VwMC5jCkBAIC0zNzksNiArMzc5LDggQEAgc3RhdGljIGlu dCBkd2MzX2VwMF9oYW5kbGVfdTEoc3RydWN0IGR3YzMgKmR3YywKZW51bSB1c2JfZGV2aWNlX3N0 YXRlIHN0YXRlLAogCWlmICgoZHdjLT5zcGVlZCAhPSBEV0MzX0RTVFNfU1VQRVJTUEVFRCkgJiYK IAkJCShkd2MtPnNwZWVkICE9IERXQzNfRFNUU19TVVBFUlNQRUVEX1BMVVMpKQogCQlyZXR1cm4g LUVJTlZBTDsKKwlpZiAoZHdjLT5nYWRnZXRfZHJpdmVyLT5scG1fVTFfZGlzYWJsZSkKKwkJcmV0 dXJuIC1FSU5WQUw7CiAKIAlyZWcgPSBkd2MzX3JlYWRsKGR3Yy0+cmVncywgRFdDM19EQ1RMKTsK IAlpZiAoc2V0KQpAQCAtNDAxLDYgKzQwMyw4IEBAIHN0YXRpYyBpbnQgZHdjM19lcDBfaGFuZGxl X3UyKHN0cnVjdCBkd2MzICpkd2MsCmVudW0gdXNiX2RldmljZV9zdGF0ZSBzdGF0ZSwKIAlpZiAo KGR3Yy0+c3BlZWQgIT0gRFdDM19EU1RTX1NVUEVSU1BFRUQpICYmCiAJCQkoZHdjLT5zcGVlZCAh PSBEV0MzX0RTVFNfU1VQRVJTUEVFRF9QTFVTKSkKIAkJcmV0dXJuIC1FSU5WQUw7CisJaWYgKGR3 Yy0+Z2FkZ2V0X2RyaXZlci0+bHBtX1UyX2Rpc2FibGUpCisJCXJldHVybiAtRUlOVkFMOwogCiAJ cmVnID0gZHdjM19yZWFkbChkd2MtPnJlZ3MsIERXQzNfRENUTCk7CiAJaWYgKHNldCkKQEAgLTYy Niw3ICs2MzAsMTAgQEAgc3RhdGljIGludCBkd2MzX2VwMF9zZXRfY29uZmlnKHN0cnVjdCBkd2Mz ICpkd2MsCnN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwpCiAJCQkgKiBub3RoaW5nIGlzIHBl bmRpbmcgZnJvbSBhcHBsaWNhdGlvbi4KIAkJCSAqLwogCQkJcmVnID0gZHdjM19yZWFkbChkd2Mt PnJlZ3MsIERXQzNfRENUTCk7Ci0JCQlyZWcgfD0gKERXQzNfRENUTF9BQ0NFUFRVMUVOQSB8CkRX QzNfRENUTF9BQ0NFUFRVMkVOQSk7CisJCQlpZiAoIWR3Yy0+Z2FkZ2V0X2RyaXZlci0+bHBtX1Ux X2Rpc2FibGUpCisJCQkJcmVnIHw9IERXQzNfRENUTF9BQ0NFUFRVMUVOQTsKKwkJCWlmICghZHdj LT5nYWRnZXRfZHJpdmVyLT5scG1fVTJfZGlzYWJsZSkKKwkJCQlyZWcgfD0gRFdDM19EQ1RMX0FD Q0VQVFUyRU5BOwogCQkJZHdjM193cml0ZWwoZHdjLT5yZWdzLCBEV0MzX0RDVEwsIHJlZyk7CiAJ CX0KIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvY29uZmlnZnMuYwpi L2RyaXZlcnMvdXNiL2dhZGdldC9jb25maWdmcy5jCmluZGV4IDAyNTEyOTkuLjJlZTlkMTAgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9jb25maWdmcy5jCisrKyBiL2RyaXZlcnMvdXNi L2dhZGdldC9jb25maWdmcy5jCkBAIC0yMjksNiArMjI5LDU2IEBAIHN0YXRpYyBzc2l6ZV90IGdh ZGdldF9kZXZfZGVzY19iY2RVU0Jfc3RvcmUoc3RydWN0CmNvbmZpZ19pdGVtICppdGVtLAogCXJl dHVybiBsZW47CiB9CiAKK3N0YXRpYyBzc2l6ZV90IGdhZGdldF9kZXZfZGVzY19scG1fVTFfZGlz YWJsZV9zaG93KHN0cnVjdCBjb25maWdfaXRlbQoqaXRlbSwKKwkJY2hhciAqcGFnZSkKK3sKKwlz dHJ1Y3QgZ2FkZ2V0X2luZm8gKmdpID0gdG9fZ2FkZ2V0X2luZm8oaXRlbSk7CisKKwlyZXR1cm4g c3ByaW50ZihwYWdlLCAiJWRcbiIsCisJCSAgICAgICBnaS0+Y29tcG9zaXRlLmdhZGdldF9kcml2 ZXIubHBtX1UxX2Rpc2FibGUpOworfQorCitzdGF0aWMgc3NpemVfdCBnYWRnZXRfZGV2X2Rlc2Nf bHBtX1UxX2Rpc2FibGVfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtCippdGVtLAorCQljb25zdCBj aGFyICpwYWdlLCBzaXplX3QgbGVuKQoreworCXN0cnVjdCBnYWRnZXRfaW5mbyAqZ2kgPSB0b19n YWRnZXRfaW5mbyhpdGVtKTsKKwlib29sIGRpc2FibGU7CisJaW50IHJldDsKKworCXJldCA9IHN0 cnRvYm9vbChwYWdlLCAmZGlzYWJsZSk7CisJaWYgKCFyZXQpIHsKKwkJZ2ktPmNvbXBvc2l0ZS5n YWRnZXRfZHJpdmVyLmxwbV9VMV9kaXNhYmxlID0gZGlzYWJsZTsKKwkJcmV0ID0gbGVuOworCX0K KworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90IGdhZGdldF9kZXZfZGVzY19scG1f VTJfZGlzYWJsZV9zaG93KHN0cnVjdCBjb25maWdfaXRlbQoqaXRlbSwKKwkJY2hhciAqcGFnZSkK K3sKKwlzdHJ1Y3QgZ2FkZ2V0X2luZm8gKmdpID0gdG9fZ2FkZ2V0X2luZm8oaXRlbSk7CisKKwly ZXR1cm4gc3ByaW50ZihwYWdlLCAiJWRcbiIsCisJCSAgICAgICBnaS0+Y29tcG9zaXRlLmdhZGdl dF9kcml2ZXIubHBtX1UyX2Rpc2FibGUpOworfQorCitzdGF0aWMgc3NpemVfdCBnYWRnZXRfZGV2 X2Rlc2NfbHBtX1UyX2Rpc2FibGVfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtCippdGVtLAorCQlj b25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKQoreworCXN0cnVjdCBnYWRnZXRfaW5mbyAqZ2kg PSB0b19nYWRnZXRfaW5mbyhpdGVtKTsKKwlib29sIGRpc2FibGU7CisJaW50IHJldDsKKworCXJl dCA9IHN0cnRvYm9vbChwYWdlLCAmZGlzYWJsZSk7CisJaWYgKCFyZXQpIHsKKwkJZ2ktPmNvbXBv c2l0ZS5nYWRnZXRfZHJpdmVyLmxwbV9VMl9kaXNhYmxlID0gZGlzYWJsZTsKKwkJcmV0ID0gbGVu OworCX0KKworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBzc2l6ZV90IGdhZGdldF9kZXZfZGVz Y19VRENfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIKKnBhZ2UpCiB7CiAJY2hh ciAqdWRjX25hbWUgPSB0b19nYWRnZXRfaW5mbyhpdGVtKS0KPmNvbXBvc2l0ZS5nYWRnZXRfZHJp dmVyLnVkY19uYW1lOwpAQCAtMjk5LDYgKzM0OSw4IEBAIENPTkZJR0ZTX0FUVFIoZ2FkZ2V0X2Rl dl9kZXNjXywgaWRWZW5kb3IpOwogQ09ORklHRlNfQVRUUihnYWRnZXRfZGV2X2Rlc2NfLCBpZFBy b2R1Y3QpOwogQ09ORklHRlNfQVRUUihnYWRnZXRfZGV2X2Rlc2NfLCBiY2REZXZpY2UpOwogQ09O RklHRlNfQVRUUihnYWRnZXRfZGV2X2Rlc2NfLCBiY2RVU0IpOworQ09ORklHRlNfQVRUUihnYWRn ZXRfZGV2X2Rlc2NfLCBscG1fVTFfZGlzYWJsZSk7CitDT05GSUdGU19BVFRSKGdhZGdldF9kZXZf ZGVzY18sIGxwbV9VMl9kaXNhYmxlKTsKIENPTkZJR0ZTX0FUVFIoZ2FkZ2V0X2Rldl9kZXNjXywg VURDKTsKIAogc3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgKmdhZGdldF9yb290X2F0 dHJzW10gPSB7CkBAIC0zMTAsNiArMzYyLDggQEAgc3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRy aWJ1dGUKKmdhZGdldF9yb290X2F0dHJzW10gPSB7CiAJJmdhZGdldF9kZXZfZGVzY19hdHRyX2lk UHJvZHVjdCwKIAkmZ2FkZ2V0X2Rldl9kZXNjX2F0dHJfYmNkRGV2aWNlLAogCSZnYWRnZXRfZGV2 X2Rlc2NfYXR0cl9iY2RVU0IsCisJJmdhZGdldF9kZXZfZGVzY19hdHRyX2xwbV9VMV9kaXNhYmxl LAorCSZnYWRnZXRfZGV2X2Rlc2NfYXR0cl9scG1fVTJfZGlzYWJsZSwKIAkmZ2FkZ2V0X2Rldl9k ZXNjX2F0dHJfVURDLAogCU5VTEwsCiB9OwpAQCAtMTQwOCw2ICsxNDYyLDggQEAgc3RhdGljIGNv bnN0IHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlcgpjb25maWdmc19kcml2ZXJfdGVtcGxhdGUgPSB7 CiAJCS5uYW1lCQk9ICJjb25maWdmcy1nYWRnZXQiLAogCX0sCiAJLm1hdGNoX2V4aXN0aW5nX29u bHkgPSAxLAorCS5scG1fVTFfZGlzYWJsZSA9IDAsCisJLmxwbV9VMl9kaXNhYmxlID0gMCwKIH07 CiAKIHN0YXRpYyBzdHJ1Y3QgY29uZmlnX2dyb3VwICpnYWRnZXRzX21ha2UoCmRpZmYgLS1naXQg YS9pbmNsdWRlL2xpbnV4L3VzYi9nYWRnZXQuaCBiL2luY2x1ZGUvbGludXgvdXNiL2dhZGdldC5o CmluZGV4IDc1OTUwNTYuLjI1ZmU3MmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiL2dh ZGdldC5oCisrKyBiL2luY2x1ZGUvbGludXgvdXNiL2dhZGdldC5oCkBAIC02MTksNyArNjE5LDkg QEAgc3RhdGljIGlubGluZSBpbnQgdXNiX2dhZGdldF9hY3RpdmF0ZShzdHJ1Y3QKdXNiX2dhZGdl dCAqZ2FkZ2V0KQogICoJdGhpcyBkcml2ZXIgd2lsbCBiZSBib3VuZCB0byBhbnkgYXZhaWxhYmxl IFVEQy4KICAqIEBwZW5kaW5nOiBVREMgY29yZSBwcml2YXRlIGRhdGEgdXNlZCBmb3IgZGVmZXJy ZWQgcHJvYmUgb2YgdGhpcwpkcml2ZXIuCiAgKiBAbWF0Y2hfZXhpc3Rpbmdfb25seTogSWYgdWRj IGlzIG5vdCBmb3VuZCwgcmV0dXJuIGFuIGVycm9yIGFuZApkb24ndCBhZGQgdGhpcwotICogICAg ICBnYWRnZXQgZHJpdmVyIHRvIGxpc3Qgb2YgcGVuZGluZyBkcml2ZXIKKyAqICAgICAgZ2FkZ2V0 IGRyaXZlciB0byBsaXN0IG9mIHBlbmRpbmcgZHJpdmVyLgorICogQGxwbV9VMV9kaXNhYmxlOiBJ bnN0cnVjdCB0aGUgVURDIHRvIGRpc2FibGUgVTEgaWYgcG9zc2libGUuCisgKiBAbHBtX1UyX2Rp c2FibGU6IEluc3RydWN0IHRoZSBVREMgdG8gZGlzYWJsZSBVMiBpZiBwb3NzaWJsZS4K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D18E1C43219 for ; Thu, 2 May 2019 21:36:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8D7A32081C for ; Thu, 2 May 2019 21:36:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Z64IQ0kh" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726120AbfEBVgb (ORCPT ); Thu, 2 May 2019 17:36:31 -0400 Received: from mail-ed1-f66.google.com ([209.85.208.66]:44815 "EHLO mail-ed1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725962AbfEBVgb (ORCPT ); Thu, 2 May 2019 17:36:31 -0400 Received: by mail-ed1-f66.google.com with SMTP id b8so3537161edm.11 for ; Thu, 02 May 2019 14:36:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:subject:from:to:cc:date:in-reply-to:references :mime-version:content-transfer-encoding; bh=XMyMp2LSouBV7Ofq2zMtxUo3SjP91QAnOCTWvlY6Kro=; b=Z64IQ0khHZAEYiKkUQrA0wW7PWVzgQtT3E9ZqJufFIk5M0h2iTx4rIg1IucHPoBUJ9 QsNr4s54JT/nV1QhQiG4EPEQlU4apgfMq1dHEbJa3wl6koCz/P4QQCqeDauXLkR7eQVp mst1G6FxddFEbgDuU9hPrT2Ym8fp9tekc3SX4HjdvDGc0xCd+xhyd95DzHdOosdYb6ie Vj+tkf8L7AqPhzHj1FuMrAbSm8obNIEfWN9wMe5YRmLYv+ZA2OevwwXHxQ2k6Qn3VRg7 dcKb0V/zpt7/8dEnzGtumSrC6pKg2t9jL5juGmOGZphFPt6FAuV5kQC01R45H8AAmAUJ ofAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:mime-version:content-transfer-encoding; bh=XMyMp2LSouBV7Ofq2zMtxUo3SjP91QAnOCTWvlY6Kro=; b=MouPsmXr6uwU7DbDsq+p6lAPKSO/+p//L79r5qZAPRyW45CUw0gXbGw44sd6IeQGwb fD13H6tAeOOf1v4BNK4+hSE7GYiZ9XtkIs0Dg91PbpMEBU8k77fX60BJt+x5OOvmr8MN 9NyQcBsPbxWlkNqT+IfmMu32PRC+9ebY1kFCqn1e9Z0oMZyVzPKPaA/F3LYOQxtFP8/y TUSidXpBS46Bn6uj3dkVfdEzyrYs8QfOJd+UY5HhJlDjTen4ZD0IUyi41mDufy3PYeuD KHAaaBggovCOhRdbgt3OMKKExgQLrR4xOjh/ctC45Iw2Q19uGR9DLk6dLqd6ReGe4fXb waFA== X-Gm-Message-State: APjAAAVMNzUBDAMZYSvfgGMEMAVSzTprThMtsw1jNTX1IhPdIrJcIBLy 6Hn2Dh48jsfUu+e22cCZj14= X-Google-Smtp-Source: APXvYqzFMj5M+jOvT0Ykeyma0msDUYKVDXItJlfPfCmrIJls0hSEUvPdrIqQh69s9JH7bxOCXKb9KA== X-Received: by 2002:a50:f5d0:: with SMTP id x16mr4088394edm.287.1556832988648; Thu, 02 May 2019 14:36:28 -0700 (PDT) Received: from [192.168.1.60] (0126800801.0.fullrate.ninja. [2.110.44.75]) by smtp.gmail.com with ESMTPSA id j5sm63216edd.43.2019.05.02.14.36.26 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 02 May 2019 14:36:27 -0700 (PDT) Message-ID: <1556832986.22007.15.camel@gmail.com> Subject: Re: [PATCH 0/3] usb: gadget: Add support for disabling U1 and U2 entries From: claus.stovgaard@gmail.com To: Anurag Kumar Vulisha , Greg Kroah-Hartman , Rob Herring , Mark Rutland , Felipe Balbi Cc: linux-usb@vger.kernel.org, v.anuragkumar@gmail.com, Rob Weber Date: Thu, 02 May 2019 23:36:26 +0200 In-Reply-To: <1556792423-4833-1-git-send-email-anurag.kumar.vulisha@xilinx.com> References: <1556792423-4833-1-git-send-email-anurag.kumar.vulisha@xilinx.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.24.6 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org Message-ID: <20190502213626.e-PUxLSgvHBkFKpiThzOSTvPMW0ee2mE_rTswSmWzM0@z> Hi On tor, 2019-05-02 at 15:50 +0530, Anurag Kumar Vulisha wrote: > Gadget applications may have a requirement to disable the U1 and U2 > entry based on the usecase. For example, when performing performance > benchmarking on mass storage gadget the U1 and U2 entries can be > disabled. > Another example is when periodic transfers like ISOC transfers are > used > with bInterval of 1 which doesn't require the link to enter into U1 > or U2 > state (since ping is issued from host for every uframe interval). In > this > case the U1 and U2 entry can be disabled. This can be done by setting > U1DevExitLat and U2DevExitLat values to 0 in the BOS descriptor. Host > on > seeing 0 value for U1DevExitLat and U2DevExitLat, it doesn't send > SET_SEL > commands to the gadget. Thus entry of U1 and U2 states can be > avioded. > This patch updates the same. > Will just vote for this feature, as I will also be able to use it for solving Rob Webers and my issue [1] Just today I was making another solution for this feature, using the configfs instead of the devicetree. Though thinks your solution is better, as it uses the U1DevExitLat and U2DevExitLat instead. I just added my solution to the bottem of the mail for reference. [1] https://www.spinics.net/lists/linux-usb/msg179393.html --- >From 798ea2f5f365ecdf2dbcf436a2a0302e208c6c73 Mon Sep 17 00:00:00 2001 From: "Claus H. Stovgaard" Date: Thu, 2 May 2019 17:54:45 +0200 Subject: [PATCH] usb: gadget: configfs: Add lpm_Ux_disable When combining dwc3 with an redriver for a USB Type-C device solution, it sometimes have problems with leaving U1/U2 for certain hosts, resulting in link training errors and reconnects. This patch create an interface via configfs for disabling U1/U2, enabling a workaround for devices based on dwc3. Signed-off-by: Claus H. Stovgaard --- drivers/usb/dwc3/ep0.c | 9 ++++++- drivers/usb/gadget/configfs.c | 56 +++++++++++++++++++++++++++++++++++++++++++ include/linux/usb/gadget.h | 6 ++++- 3 files changed, 69 insertions(+), 2 deletions(-) diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c index 8efde17..5b2d26b 100644 --- a/drivers/usb/dwc3/ep0.c +++ b/drivers/usb/dwc3/ep0.c @@ -379,6 +379,8 @@ static int dwc3_ep0_handle_u1(struct dwc3 *dwc, enum usb_device_state state, if ((dwc->speed != DWC3_DSTS_SUPERSPEED) && (dwc->speed != DWC3_DSTS_SUPERSPEED_PLUS)) return -EINVAL; + if (dwc->gadget_driver->lpm_U1_disable) + return -EINVAL; reg = dwc3_readl(dwc->regs, DWC3_DCTL); if (set) @@ -401,6 +403,8 @@ static int dwc3_ep0_handle_u2(struct dwc3 *dwc, enum usb_device_state state, if ((dwc->speed != DWC3_DSTS_SUPERSPEED) && (dwc->speed != DWC3_DSTS_SUPERSPEED_PLUS)) return -EINVAL; + if (dwc->gadget_driver->lpm_U2_disable) + return -EINVAL; reg = dwc3_readl(dwc->regs, DWC3_DCTL); if (set) @@ -626,7 +630,10 @@ static int dwc3_ep0_set_config(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) * nothing is pending from application. */ reg = dwc3_readl(dwc->regs, DWC3_DCTL); - reg |= (DWC3_DCTL_ACCEPTU1ENA | DWC3_DCTL_ACCEPTU2ENA); + if (!dwc->gadget_driver->lpm_U1_disable) + reg |= DWC3_DCTL_ACCEPTU1ENA; + if (!dwc->gadget_driver->lpm_U2_disable) + reg |= DWC3_DCTL_ACCEPTU2ENA; dwc3_writel(dwc->regs, DWC3_DCTL, reg); } break; diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c index 0251299..2ee9d10 100644 --- a/drivers/usb/gadget/configfs.c +++ b/drivers/usb/gadget/configfs.c @@ -229,6 +229,56 @@ static ssize_t gadget_dev_desc_bcdUSB_store(struct config_item *item, return len; } +static ssize_t gadget_dev_desc_lpm_U1_disable_show(struct config_item *item, + char *page) +{ + struct gadget_info *gi = to_gadget_info(item); + + return sprintf(page, "%d\n", + gi->composite.gadget_driver.lpm_U1_disable); +} + +static ssize_t gadget_dev_desc_lpm_U1_disable_store(struct config_item *item, + const char *page, size_t len) +{ + struct gadget_info *gi = to_gadget_info(item); + bool disable; + int ret; + + ret = strtobool(page, &disable); + if (!ret) { + gi->composite.gadget_driver.lpm_U1_disable = disable; + ret = len; + } + + return ret; +} + +static ssize_t gadget_dev_desc_lpm_U2_disable_show(struct config_item *item, + char *page) +{ + struct gadget_info *gi = to_gadget_info(item); + + return sprintf(page, "%d\n", + gi->composite.gadget_driver.lpm_U2_disable); +} + +static ssize_t gadget_dev_desc_lpm_U2_disable_store(struct config_item *item, + const char *page, size_t len) +{ + struct gadget_info *gi = to_gadget_info(item); + bool disable; + int ret; + + ret = strtobool(page, &disable); + if (!ret) { + gi->composite.gadget_driver.lpm_U2_disable = disable; + ret = len; + } + + return ret; +} + static ssize_t gadget_dev_desc_UDC_show(struct config_item *item, char *page) { char *udc_name = to_gadget_info(item)- >composite.gadget_driver.udc_name; @@ -299,6 +349,8 @@ CONFIGFS_ATTR(gadget_dev_desc_, idVendor); CONFIGFS_ATTR(gadget_dev_desc_, idProduct); CONFIGFS_ATTR(gadget_dev_desc_, bcdDevice); CONFIGFS_ATTR(gadget_dev_desc_, bcdUSB); +CONFIGFS_ATTR(gadget_dev_desc_, lpm_U1_disable); +CONFIGFS_ATTR(gadget_dev_desc_, lpm_U2_disable); CONFIGFS_ATTR(gadget_dev_desc_, UDC); static struct configfs_attribute *gadget_root_attrs[] = { @@ -310,6 +362,8 @@ static struct configfs_attribute *gadget_root_attrs[] = { &gadget_dev_desc_attr_idProduct, &gadget_dev_desc_attr_bcdDevice, &gadget_dev_desc_attr_bcdUSB, + &gadget_dev_desc_attr_lpm_U1_disable, + &gadget_dev_desc_attr_lpm_U2_disable, &gadget_dev_desc_attr_UDC, NULL, }; @@ -1408,6 +1462,8 @@ static const struct usb_gadget_driver configfs_driver_template = { .name = "configfs-gadget", }, .match_existing_only = 1, + .lpm_U1_disable = 0, + .lpm_U2_disable = 0, }; static struct config_group *gadgets_make( diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index 7595056..25fe72b 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h @@ -619,7 +619,9 @@ static inline int usb_gadget_activate(struct usb_gadget *gadget) * this driver will be bound to any available UDC. * @pending: UDC core private data used for deferred probe of this driver. * @match_existing_only: If udc is not found, return an error and don't add this - * gadget driver to list of pending driver + * gadget driver to list of pending driver. + * @lpm_U1_disable: Instruct the UDC to disable U1 if possible. + * @lpm_U2_disable: Instruct the UDC to disable U2 if possible. * * Devices are disabled till a gadget driver successfully bind()s, which * means the driver will handle setup() requests needed to enumerate (and @@ -684,6 +686,8 @@ struct usb_gadget_driver { char *udc_name; struct list_head pending; unsigned match_existing_only:1; + unsigned lpm_U1_disable:1; + unsigned lpm_U2_disable:1; }; -- 2.7.4