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,1/3] usb: gadget: ccid: add support for USB CCID Gadget Device From: Marcus Folkesson Message-Id: <20180530112459.GB2939@gmail.com> Date: Wed, 30 May 2018 13:24:59 +0200 To: Andy Shevchenko Cc: Greg Kroah-Hartman , Jonathan Corbet , Felipe Balbi , "David S. Miller" , Mauro Carvalho Chehab , Andrew Morton , Randy Dunlap , Ruslan Bilovol , Thomas Gleixner , Kate Stewart , USB , Linux Documentation List , Linux Kernel Mailing List List-ID: SGkgQW5keSwKClRoYW5rIHlvdSBmb3IgeW91ciBjb21tZW50cyEKTWFueSBnb29kIGNhdGNoZXMg aGVyZSEKCk9uIFdlZCwgTWF5IDMwLCAyMDE4IGF0IDAzOjU1OjM5QU0gKzAzMDAsIEFuZHkgU2hl dmNoZW5rbyB3cm90ZToKPiBPbiBUdWUsIE1heSAyOSwgMjAxOCBhdCA5OjUwIFBNLCBNYXJjdXMg Rm9sa2Vzc29uCj4gPG1hcmN1cy5mb2xrZXNzb25AZ21haWwuY29tPiB3cm90ZToKPiA+IENoaXAg Q2FyZCBJbnRlcmZhY2UgRGV2aWNlIChDQ0lEKSBwcm90b2NvbCBpcyBhIFVTQiBwcm90b2NvbCB0 aGF0Cj4gPiBhbGxvd3MgYSBzbWFydGNhcmQgZGV2aWNlIHRvIGJlIGNvbm5lY3RlZCB0byBhIGNv bXB1dGVyIHZpYSBhIGNhcmQKPiA+IHJlYWRlciB1c2luZyBhIHN0YW5kYXJkIFVTQiBpbnRlcmZh Y2UsIHdpdGhvdXQgdGhlIG5lZWQgZm9yIGVhY2ggbWFudWZhY3R1cmVyCj4gPiBvZiBzbWFydGNh cmRzIHRvIHByb3ZpZGUgaXRzIG93biByZWFkZXIgb3IgcHJvdG9jb2wuCj4gPgo+ID4gVGhpcyBn YWRnZXQgZHJpdmVyIG1ha2VzIExpbnV4IHNob3cgdXAgYXMgYSBDQ0lEIGRldmljZSB0byB0aGUg aG9zdCBhbmQgbGV0IGEKPiA+IHVzZXJzcGFjZSBkYWVtb24gYWN0IGFzIHRoZSBzbWFydGNhcmQu Cj4gPgo+ID4gVGhpcyBpcyB1c2VmdWwgd2hlbiB0aGUgTGludXggZ2FkZ2V0IGl0c2VsZiBzaG91 bGQgYWN0IGFzIGEgY3J5cHRvZ3JhcGhpYwo+ID4gZGV2aWNlIG9yIGZvcndhcmQgQVBEVXMgdG8g YW4gZW1iZWRkZWQgc21hcnRjYXJkIGRldmljZS4KPiAKPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MTggTWFyY3VzIEZvbGtlc3NvbiA8bWFyY3VzLmZvbGtlc3NvbkBnbWFpbC5jb20+Cj4gCj4gPiAr ICoKPiAKPiBSZWR1bmRhbnQgbGluZQo+IAoKWWVwCgo+ID4gK3N0YXRpYyBERUZJTkVfSURBKGNj aWRnX2lkYSk7Cj4gCj4gV2hlcmUgaXMgaXQgZGVzdHJveWVkPwoKSG0sIEknbSBub3Qgc3VyZSBp dCBuZWVkcyB0byBiZSBkZXN0cm95ZWQuIEZyb20gbGliL2lkci5jOgoKICogWW91IGNhbiBhbHNv IHVzZSBpZGFfZ2V0X25ld19hYm92ZSgpIGlmIHlvdSBuZWVkIGFuIElEIHRvIGJlIGFsbG9jYXRl ZAogKiBhYm92ZSBhIHBhcnRpY3VsYXIgbnVtYmVyLiAgaWRhX2Rlc3Ryb3koKSBjYW4gYmUgdXNl ZCB0byBkaXNwb3NlIG9mIGFuCiAqIElEQSB3aXRob3V0IG5lZWRpbmcgdG8gZnJlZSB0aGUgaW5k aXZpZHVhbCBJRHMgaW4gaXQuICBZb3UgY2FuIHVzZQogKiBpZGFfaXNfZW1wdHkoKSB0byBmaW5k IG91dCB3aGV0aGVyIHRoZSBJREEgaGFzIGFueSBJRHMgY3VycmVudGx5IGFsbG9jYXRlZC4KCgpB biBlbXB0eSBjY2lkZ19pZGEgaXMgdGhlIGluZGljYXRpb24gdGhhdCB3ZSBzaG91bGQgY2xlYW4g dXAgb3VyCm1lc3M6CgpzdGF0aWMgdm9pZCBjY2lkZ19mcmVlX2luc3Qoc3RydWN0IHVzYl9mdW5j dGlvbl9pbnN0YW5jZSAqZikKLi4uCglpZiAoaWRhX2lzX2VtcHR5KCZjY2lkZ19pZGEpKQoJCWNj aWRnX2NsZWFudXAoKTsKCklmIHRoZSBJREEgaXMgZW1wdHksIHNob3VsZCBJIGNhbGwgaWRhX2Rl c3Ryb3koKSBhbnl3YXk/Ck90aGVyIHNpbWlsaWFyIGRyaXZlcnMgZG9lcyBub3Qgc2VlbXMgdG8g ZG8gdGhhdC4KCkkgbXVzdCBzYXkgdGhhdCBJJ20gbm90IHZlcnkgZmFtaWxpYXIgd2l0aCB0aGUg SURBIEFQSS4KCj4gCj4gPiArICAgICAgICAgICAgICAgY2NpZGdfY2xhc3MgPSBOVUxMOwo+ID4g KyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGNjaWRnX2NsYXNzKTsKPiAKPiBBcmUgeW91 IHN1cmU/CgpIZWgsIDotKQoKPiAKPiA+ICsgICAgICAgaWYgKCFsaXN0X2VtcHR5KGhlYWQpKSB7 Cj4gPiArICAgICAgICAgICAgICAgcmVxID0gbGlzdF9maXJzdF9lbnRyeShoZWFkLCBzdHJ1Y3Qg dXNiX3JlcXVlc3QsIGxpc3QpOwo+IAo+IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgpCgpXaWxs IGRvLCB0aGFua3MuCgo+IAo+ID4gKyAgICAgICByZXEtPmxlbmd0aCA9IGxlbjsKPiAKPiBQZXJo YXBzIGFzc2lnbiB0aGlzIG9ibHkgaWYgbWFsbG9jIHN1Y2Nlc3NlZGVlZCA/CgpXaWxsIGRvLgoK PiAKPiA+ICsgICAgICAgcmVxLT5idWYgPSBrbWFsbG9jKGxlbiwgR0ZQX0FUT01JQyk7Cj4gCj4g PiArICAgICAgIGlmIChyZXEtPmJ1ZiA9PSBOVUxMKSB7Cj4gCj4gaWYgKCFyZXEtPmJ1ZikgPwoK V2lsbCBkbwoKPiAKPiA+ICsgICAgICAgICAgICAgICB1c2JfZXBfZnJlZV9yZXF1ZXN0KGVwLCBy ZXEpOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ID4gKyAg ICAgICB9Cj4gCj4gPiArc3RhdGljIHZvaWQgY2NpZGdfcmVxdWVzdF9mcmVlKHN0cnVjdCB1c2Jf cmVxdWVzdCAqcmVxLCBzdHJ1Y3QgdXNiX2VwICplcCkKPiA+ICt7Cj4gCj4gPiArICAgICAgIGlm IChyZXEpIHsKPiAKPiBJcyBpdCBldmVuIHBvc3NpYmxlPwo+IAo+IFdoYXQgYWJvdXQKPiAKPiBp ZiAoIXJlcSkKPiAgcmV0dXJuOwo+IAo+ID8KCkhtbSwgbWF5YmUgaXQgaXMgbm90LgpJIHRoaW5r IEkgcmVtb3ZlIHRoaXMgY2hlY2suCgo+IAo+ID4gKyAgICAgICAgICAgICAgIGtmcmVlKHJlcS0+ YnVmKTsKPiA+ICsgICAgICAgICAgICAgICB1c2JfZXBfZnJlZV9yZXF1ZXN0KGVwLCByZXEpOwo+ ID4gKyAgICAgICB9Cj4gPiArfQo+IAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgKihfX2xl MzIgKikgcmVxLT5idWYgPSBjY2lkX2NsYXNzX2Rlc2MuZHdEZWZhdWx0Q2xvY2s7Cj4gCj4gSG1t Li4uIHB1dF91bmFsaWduZWQoKT8gY3B1X3RvX2xlMzIoKT8gY3B1X3RvX2xlMzJwKCk/Cj4gCgpI bW0sIGR3RGVmYXVsdENsb2NrIGlzIGFscmVhZHkgcmVwcmVzZW50ZWQgaW4gbGl0dGxlIGVuZGlh biBmb3JtYXQuIElmIEkKdXNlIGFueSBvZiB0aG9zZSBmdW5jdGlvbnMsIHdvdWxkIG5vdCB0aGUg Ynl0ZSBvcmRlciBiZSBzd2FwZWQgb24gYSBiaWcKZW5kaWFuIHN5c3RlbT8KCmR3RGVmYXVsdENs b2NrIGlzIHNldCBhczoKCS5kd0RlZmF1bHRDbG9jayA9CWNwdV90b19sZTMyKDM1ODApLAoKSSdt IG5vdCBzdXJlIHdoYXQgdGhlIGJlc3QgcHJhY3RpY2UgaXMgaGVyZS4KCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAqKF9fbGUzMiAqKSByZXEtPmJ1ZiA9IGNjaWRfY2xhc3NfZGVzYy5kd0Rh dGFSYXRlOwo+IAo+IERpdHRvLgo+IAo+ID4gKyAgICAgICAgICAgICAgIH0KPiA+ICsgICAgICAg ICAgICAgICB9Cj4gCj4gSW5kZW50YXRpb24uCgpJIHJlbW92ZSB0aGUgZXh0cmEgYnJhY2tldHMg ZnJvbSB0aGUgY2FzZSBpbnN0ZWFkLgo+IAo+ID4gKyAgICAgICAvKiByZXNwb25kZWQgd2l0aCBk YXRhIHRyYW5zZmVyIG9yIHN0YXR1cyBwaGFzZT8gKi8KPiA+ICsgICAgICAgaWYgKHJldCA+PSAw KSB7Cj4gCj4gV2h5IG5vdAo+IAo+IGlmIChyZXQgPCAwKQo+ICByZXR1cm4gcmV0Owo+IAo+ID8K PiAKCldpbGwgZG8KCj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuIHJldDsK PiA+ICt9Cj4gCj4gPiArICAgICAgIGF0b21pY19zZXQoJmNjaWRnLT5vbmxpbmUsIDEpOwo+ID4g KyAgICAgICByZXR1cm4gcmV0Owo+IAo+IHJldHVybiAwOyA/CgpXaWxsIGRvCgo+IAo+ID4gKyAg ICAgICBzdHJ1Y3QgZl9jY2lkZyAqY2NpZGc7Cj4gCj4gPiArICAgICAgIGNjaWRnID0gY29udGFp bmVyX29mKGlub2RlLT5pX2NkZXYsIHN0cnVjdCBmX2NjaWRnLCBjZGV2KTsKPiAKPiBPbmUgbGlu ZSA/CgpUaGUgbGluZSBleGNlZWRzIDgwIGNoYXJhY3RlcnMgdGhlbiwgYnV0IEkgd2lsbCBwdXQg aXQgbGlrZSB0aGlzOgoKCXN0cnVjdCBmX2NjaWRnICpjY2lkZyA9IGNvbnRhaW5lcl9vZihpbm9k ZS0+aV9jZGV2LAoJCQkJCQkJCXN0cnVjdCBmX2NjaWRnLCBjZGV2KTsKCj4gCj4gPiArICAgICAg IHhmZXIgPSAocmVxLT5hY3R1YWwgPCBjb3VudCkgPyByZXEtPmFjdHVhbCA6IGNvdW50Owo+IAo+ IG1pbl90KCkKPiAKClRoYW5rcywgd2lsbCBkbwoKPiA+ICsgICAgICAgcmV0ID0gd2FpdF9ldmVu dF9pbnRlcnJ1cHRpYmxlKGJ1bGtfZGV2LT53cml0ZV93cSwKPiA+ICsgICAgICAgICAgICAgICAo KHJlcSA9IGNjaWRnX3JlcV9nZXQoY2NpZGcsICZidWxrX2Rldi0+dHhfaWRsZSkpKSk7Cj4gPiAr Cj4gPiArICAgICAgIGlmIChyZXQgPCAwKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRVJF U1RBUlRTWVM7Cj4gCj4gUmVkdW5kYW50IGJsYW5rIGxpbmUgYWJvdmUuCj4gCgpJIHJlbW92ZSB0 aGUgZXh0cmEgYmxhbmsgbGluZQoKCj4gPiArc3RhdGljIHZvaWQgY2NpZGdfZnVuY3Rpb25fZnJl ZShzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKQo+ID4gK3sKPiAKPiA+ICsgICAgICAgc3RydWN0IGZf Y2NpZGdfb3B0cyAqb3B0czsKPiAKPiA+ICsgICAgICAgb3B0cyA9IGNvbnRhaW5lcl9vZihmLT5m aSwgc3RydWN0IGZfY2NpZGdfb3B0cywgZnVuY19pbnN0KTsKPiAKPiBPbmUgbGluZS4KClNlZSBh Ym92ZQoKPiAKPiAKPiA+ICsgICAgICAgbXV0ZXhfbG9jaygmb3B0cy0+bG9jayk7Cj4gPiArICAg ICAgIC0tb3B0cy0+cmVmY250Owo+IAo+IC0tIHdpbGwgd29yawoKV2lsbCBkbwoKPiAKPiA+ICsg ICAgICAgbXV0ZXhfdW5sb2NrKCZvcHRzLT5sb2NrKTsKPiA+ICt9Cj4gCj4gPiArICAgICAgIHN0 cnVjdCBmX2NjaWRnX29wdHMgKm9wdHM7Cj4gCj4gPiArICAgICAgIG9wdHMgPSBjb250YWluZXJf b2YoZmksIHN0cnVjdCBmX2NjaWRnX29wdHMsIGZ1bmNfaW5zdCk7Cj4gCj4gUGVyaGFwcyBvbmUg bGluZSA/CgpTZWUgYWJvdmUKCgo+ID4gKyAgICAgICArK29wdHMtPnJlZmNudDsKPiBYKysgd291 bGQgd29yayBhcyB3ZWxsLgoKV2lsbCBkbwoKPiA+ICsgICAgICAgc3RydWN0IGZfY2NpZGdfb3B0 cyAqb3B0czsKPiA+ICsKPiA+ICsgICAgICAgb3B0cyA9IGNvbnRhaW5lcl9vZihmLCBzdHJ1Y3Qg Zl9jY2lkZ19vcHRzLCBmdW5jX2luc3QpOwo+IAo+IFBlcmhhcHMgb25lIGxpbmU/Cj4gCgpTZWUg YWJvdmUKCgo+ID4gKyNkZWZpbmUgQ0NJRF9QSU5TVVBPT1JUX05PTkUgICAgICAgICAgIDB4MDAK PiAKPiAoMCA8PCAwKQo+IAo+ICA/Cj4gCj4gZm9yIHNha2Ugb2YgY29uc2lzdGVuY3kKClllcCwg d2lsbCBjaGFuZ2UKCj4gCj4gPiArI2RlZmluZSBDQ0lEX1BJTlNVUE9PUlRfVkVSSUZJQ0FUSU9O ICAgKDEgPDwgMSkKPiA+ICsjZGVmaW5lIENDSURfUElOU1VQT09SVF9NT0RJRklDQVRJT04gICAo MSA8PCAyKQo+IAo+IC0tIAo+IFdpdGggQmVzdCBSZWdhcmRzLAo+IEFuZHkgU2hldmNoZW5rbwoK QmVzdCByZWdhcmRzLApNYXJjdXMgRm9sa2Vzc29uCi0tLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRo aXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtdXNiIiBpbgp0aGUgYm9k eSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9t byBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwK