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: [RESEND,v6,2/2] usb/gadget/uvc-configfs Fix host unable to negotiate framesizes other than first From: Laurent Pinchart Message-Id: <1819956.5cdldLK3cV@avalon> Date: Fri, 08 Jun 2018 22:11:07 +0300 To: Joel Pepper Cc: Felipe Balbi , linux-usb@vger.kernel.org, Paul Elder List-ID: SGkgSm9lbCwKClRoYW5rIHlvdSBmb3IgdGhlIHBhdGNoLCBhbmQgc29ycnkgZm9yIHRoZSBsYXRl IHJlcGx5LgoKT24gVHVlc2RheSwgMjkgTWF5IDIwMTggMjI6MDI6MTMgRUVTVCBKb2VsIFBlcHBl ciB3cm90ZToKPiAtIEFkZCBiRnJhbWVJbmRleCBhcyBhIFVWQ0dfRlJBTUVfQVRUUl9STyBmb3Ig ZWFjaCBmcmFtZSBzaXplLgo+IC0gQXV0b21hdGljYWxseSBhc3NpZ24gYXNjZW5kaW5nIGJGcmFt ZUluZGV4IHRvIGVhY2ggZnJhbWUgaW4gYSBmb3JtYXQuCj4gCj4gQmVmb3JlIGFsbCAiYkZyYW1l aW5kZXgiIGF0dHJpYnV0ZXMgd2VyZSBzZXQgdG8gIjEiIHdpdGggbm8gd2F5IHRvCj4gY29uZmln dXJlIHRoZSBnYWRnZXQgb3RoZXJ3aXNlLiBUaGlzIHJlc3VsdGVkIGluIHRoZSBob3N0IGFsd2F5 cwo+IG5lZ290aWF0aW5nIGZvciBiRnJhbWVJbmRleCAxIChpLmUuIHRoZSBmaXJzdCBmcmFtZXNp emUgb2YgdGhlIGdhZGdldCkuCj4gQWZ0ZXIgdGhlIG5lZ290aWF0aW9uIHRoZSBob3N0IGRyaXZl ciB3aWxsIHNldCB0aGUgdXNlciBvciBhcHBsaWNhdGlvbgo+IHNlbGVjdGVkIGZyYW1lc2l6ZSwg d2hpbGUgdGhlIGdhZGdldCBpcyBhY3R1YWxseSBzZXQgdG8gdGhlIGZpcnN0Cj4gZnJhbWVzaXpl Lgo+IAo+IE5vdywgd2hlbiB0aGUgY29udGFpbmluZyBmb3JtYXQgaXMgbGlua2VkIGludG8gdGhl IHN0cmVhbWluZyBoZWFkZXIsCj4gaXRlcmF0ZSBvdmVyIGFsbCBjaGlsZCBmcmFtZSBkZXNjcmlw dG9ycyBhbmQgYXNzaWduIGFzY2VuZGluZyBpbmRpY2VzLgo+IFRoZSBhdXRvbWF0aWNhbGx5IGFz c2lnbmVkIGluZGljZXMgY2FuIGJlIHJlYWQgZnJvbSB0aGUgbmV3IHJlYWQgb25seQo+IGJGcmFt ZUluZGV4IGNvbmZpZ3NmcyBhdHRyaWJ1dGUgaW4gZWFjaCBmcmFtZSBkZXNjcmlwdG9yIGl0ZW0u Cj4gCj4gU2lnbmVkLW9mZi1ieTogSm9lbCBQZXBwZXIgPGpvZWwucGVwcGVyQHJ3dGgtYWFjaGVu LmRlPgo+IC0tLQo+IAo+IHYyOiBBZGQgdGhlIG5ldyBhdHRyaWJ1dGUgdG8gYm90aCBNSlBFRyBh bmQgdW5jb21wcmVzc2VkIGZyYW1lIGRlc2NyaXB0b3JzCj4gaW4gRG9jdW1lbnRhdGlvbi9BQkks IHdpdGggbm90ZSB0aGF0IGl0IHdhcyBhZGRlZCBvbmx5IGluIGEgbGF0ZXIKPiBrZXJuZWwgdmVy c2lvbgo+IAo+IHYzOiBDaGFuZ2VkIGZyb20gc2ltcGx5IGFsbG93aW5nIHVzZXIgdG8gc2V0IHRo ZSB2YWx1ZSBmb3IgYkZyYW1lSW5kZXggdG8KPiBhdXRvbWF0aWNhbGx5IGFzc2lnbmluZyBjb3Jy ZWN0IGRpc3RpbmN0IGZyYW1lIGluZGV4ZXMuIENoYW5nZWQKPiBiRnJhbWVJbmRleCBmcm9tIFJX IHRvIFJPCj4gCj4gdjQ6IEFjdHVhbGx5IGluY2x1ZGUgdXBkYXRlZCBwYXRjaAo+IAo+IHY1OiBi RnJhbWVJbmRleCBub3cgcmV0dXJucyAtRUJVU1kgaWYgdGhlIHBhcmVudCBmbXQgaXMgbm90IGxp bmtlZCB5ZXQKPiAKPiAgRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2Fk Z2V0LXV2YyB8IDE4ICsrKysrKysKPiAgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y19j b25maWdmcy5jICAgICAgICB8IDY0ICsrKysrKysrKysrKysrKysrKysrCj4gIDIgZmlsZXMgY2hh bmdlZCwgODIgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FC SS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtdXZjCj4gYi9Eb2N1bWVudGF0aW9uL0FCSS90 ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtdXZjIGluZGV4IDFiYTBkMGYuLjg2YzliMmUKPiAx MDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRn ZXQtdXZjCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2Fk Z2V0LXV2Ywo+IEBAIC0xOTQsNiArMTk0LDE0IEBAIERlc2NyaXB0aW9uOglTcGVjaWZpYyBNSlBF RyBmcmFtZSBkZXNjcmlwdG9ycwo+ICAJCWJtQ2FwYWJpbGl0aWVzCQktIHN0aWxsIGltYWdlIHN1 cHBvcnQsIGZpeGVkIGZyYW1lLXJhdGUKPiAgCQkJCQlzdXBwb3J0Cj4gCj4gK0RhdGU6CQlNYXkg MjAxOAo+ICtLZXJuZWxWZXJzaW9uOgk0LjE3Cj4gKwo+ICsJCWJGcmFtZUluZGV4CQktIHVuaXF1 ZSBpZCBmb3IgdGhpcyBmcmFtZWRlc2NyaXB0b3I7CgpUaGlzIHNob3VsZCBiZSBzcGVsbGVkICJm cmFtZSBkZXNjcmlwdG9yIiwgbm90ICJmcmFtZWRlc2NyaXB0b3IiLgoKPiArCQkJCQlvbmx5IGRl ZmluZWQgYWZ0ZXIgcGFyZW50IGZvcm1hdCBpcwo+ICsJCQkJCWxpbmtlZCBpbnRvIHRoZSBzdHJl YW1pbmcgaGVhZGVyOwo+ICsJCQkJCXJlYWQtb25seQo+ICsKPiAgV2hhdDoJCS9jb25maWcvdXNi LWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL3V2Yy5uYW1lL3N0cmVhbWluZy8KdW5jb21wcmVzc2Vk Cj4gIERhdGU6CQlEZWMgMjAxNAo+ICBLZXJuZWxWZXJzaW9uOgk0LjAKPiBAQCAtMjQxLDYgKzI0 OSwxNiBAQCBEZXNjcmlwdGlvbjoJU3BlY2lmaWMgdW5jb21wcmVzc2VkIGZyYW1lIGRlc2NyaXB0 b3JzCj4gIAkJYm1DYXBhYmlsaXRpZXMJCS0gc3RpbGwgaW1hZ2Ugc3VwcG9ydCwgZml4ZWQgZnJh bWUtcmF0ZQo+ICAJCQkJCXN1cHBvcnQKPiAKPiArRGF0ZTogICAgICAgICAgIE1heSAyMDE4Cj4g K0tlcm5lbFZlcnNpb246ICA0LjE3Cj4gKwo+ICsgICAgICAgICAgICAgICAgYkZyYW1lSW5kZXgg ICAgICAgICAgICAgLSB1bmlxdWUgaWQgZm9yIHRoaXMKPiBmcmFtZWRlc2NyaXB0b3I7CgpTYW1l IGhlcmUuCgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seSBk ZWZpbmVkIGFmdGVyIHBhcmVudCBmb3JtYXQgaXMKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpbmtlZCBpbnRvIHRoZSBzdHJlYW1pbmcgaGVhZGVyOwo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZC1vbmx5CgpGb3Igc29tZSBy ZWFzb24gdGFicyBnb3QgY29udmVydGVkIHRvIHNwYWNlLgoKPiArCj4gKwo+ICsKCk9uZSBibGFu ayBsaW5lIGlzIGVub3VnaC4KCj4gIFdoYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1 bmN0aW9ucy91dmMubmFtZS9zdHJlYW1pbmcvaGVhZGVyCj4gIERhdGU6CQlEZWMgMjAxNAo+ICBL ZXJuZWxWZXJzaW9uOgk0LjAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0 aW9uL3V2Y19jb25maWdmcy5jCj4gYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX2Nv bmZpZ2ZzLmMgaW5kZXggN2E5OGY5Zi4uMzdiNGExNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3Vz Yi9nYWRnZXQvZnVuY3Rpb24vdXZjX2NvbmZpZ2ZzLmMKPiArKysgYi9kcml2ZXJzL3VzYi9nYWRn ZXQvZnVuY3Rpb24vdXZjX2NvbmZpZ2ZzLmMKPiBAQCAtMzIsNiArMzIsNyBAQCBzdGF0aWMgc3Ry dWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSBwcmVmaXgjI2F0dHJfIyNjbmFtZSA9IHsKPiBcIH0KPiAK PiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZl91dmNfb3B0cyAqdG9fZl91dmNfb3B0cyhzdHJ1Y3Qg Y29uZmlnX2l0ZW0gKml0ZW0pOwo+ICtzdGF0aWMgdm9pZCBfX3V2Y2dfZm10X3NldF9pbmRpY2Vz KHN0cnVjdCBjb25maWdfZ3JvdXAgKmZtdCk7CgpQbGVhc2UgbW92ZSB0aGUgZnVuY3Rpb24gYmVm b3JlIGl0IGdldHMgY2FsbGVkIHRvIGF2b2lkIGZvcndhcmQgZGVjbGFyYXRpb25zLgoKPiAgLyog Y29udHJvbC9oZWFkZXIvPE5BTUU+ICovCj4gIERFQ0xBUkVfVVZDX0hFQURFUl9ERVNDUklQVE9S KDEpOwo+IEBAIC03NTEsNiArNzUyLDggQEAgc3RhdGljIGludCB1dmNnX3N0cmVhbWluZ19oZWFk ZXJfYWxsb3dfbGluayhzdHJ1Y3QKPiBjb25maWdfaXRlbSAqc3JjLCBpZiAoIXRhcmdldF9mbXQp Cj4gIAkJZ290byBvdXQ7Cj4gCj4gKwlfX3V2Y2dfZm10X3NldF9pbmRpY2VzKHRvX2NvbmZpZ19n cm91cCh0YXJnZXQpKTsKPiArCgpJcyB0aGVyZSBhIG5lZWQgdG8gcHJlZml4IHRoZSBmdW5jdGlv biBuYW1lIHdpdGggX18gPwoKPiAgCWZvcm1hdF9wdHIgPSBremFsbG9jKHNpemVvZigqZm9ybWF0 X3B0ciksIEdGUF9LRVJORUwpOwo+ICAJaWYgKCFmb3JtYXRfcHRyKSB7Cj4gIAkJcmV0ID0gLUVO T01FTTsKPiBAQCAtOTkxLDggKzk5NCw0NiBAQCBlbmQ6CQkJCQkJCQkJXAo+ICAJCQkJCQkJCQlc Cj4gIFVWQ19BVFRSKHV2Y2dfZnJhbWVfLCBjbmFtZSwgYW5hbWUpOwo+IAo+ICsKCk5vIG5lZWQg Zm9yIGEgbmV3IGJsYW5rIGxpbmUuCgo+ICtzdGF0aWMgc3NpemVfdCB1dmNnX2ZyYW1lX2JfZnJh bWVfaW5kZXhfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCj4gKwkJY2hhciAqcGFnZSkK PiArewo+ICsJc3RydWN0IHV2Y2dfZnJhbWUgKmYgPSB0b191dmNnX2ZyYW1lKGl0ZW0pOwo+ICsJ c3RydWN0IHV2Y2dfZm9ybWF0ICpmbXQ7Cj4gKwlzdHJ1Y3QgZl91dmNfb3B0cyAqb3B0czsKPiAr CXN0cnVjdCBjb25maWdfaXRlbSAqb3B0c19pdGVtOwo+ICsJc3RydWN0IGNvbmZpZ19pdGVtICpm bXRfaXRlbTsKPiArCXN0cnVjdCBtdXRleCAqc3VfbXV0ZXggPSAmZi0+aXRlbS5jaV9ncm91cC0+ Y2dfc3Vic3lzLT5zdV9tdXRleDsKPiArCWludCByZXN1bHQ7Cj4gKwo+ICsJbXV0ZXhfbG9jayhz dV9tdXRleCk7IC8qIGZvciBuYXZpZ2F0aW5nIGNvbmZpZ2ZzIGhpZXJhcmNoeSAqLwo+ICsKPiAr CWZtdF9pdGVtID0gZi0+aXRlbS5jaV9wYXJlbnQ7Cj4gKwlmbXQgPSB0b191dmNnX2Zvcm1hdChm bXRfaXRlbSk7Cj4gKwo+ICsJaWYgKCFmbXQtPmxpbmtlZCkgewo+ICsJCXJlc3VsdCA9IC1FQlVT WTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwlvcHRzX2l0ZW0gPSBmbXRfaXRlbS0+Y2lf cGFyZW50LT5jaV9wYXJlbnQtPmNpX3BhcmVudDsKPiArCW9wdHMgPSB0b19mX3V2Y19vcHRzKG9w dHNfaXRlbSk7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmb3B0cy0+bG9jayk7Cj4gKwlyZXN1bHQgPSBz cHJpbnRmKHBhZ2UsICIlZFxuIiwgZi0+ZnJhbWUuYl9mcmFtZV9pbmRleCk7Cj4gKwltdXRleF91 bmxvY2soJm9wdHMtPmxvY2spOwo+ICsKPiArb3V0Ogo+ICsJbXV0ZXhfdW5sb2NrKHN1X211dGV4 KTsKPiArCXJldHVybiByZXN1bHQ7Cj4gK30KPiArCj4gK1VWQ19BVFRSX1JPKHV2Y2dfZnJhbWVf LCBiX2ZyYW1lX2luZGV4LCBiRnJhbWVJbmRleCk7Cj4gKwoKQXMgd2UgYWxyZWFkeSBoYXZlIFVW Q0dfRlJBTUVfQVRUUiwgc2hvdWxkIHdlIHR1cm4gdGhpcyBpbnRvIGEgClVWQ0dfRlJBTUVfQVRU Ul9STyBtYWNybyA/Cgo+ICAjZGVmaW5lIG5vb3BfY29udmVyc2lvbih4KSAoeCkKPiAKPiArCj4g Kwo+ICBVVkNHX0ZSQU1FX0FUVFIoYm1fY2FwYWJpbGl0aWVzLCBibUNhcGFiaWxpdGllcywgbm9v cF9jb252ZXJzaW9uLAo+ICAJCW5vb3BfY29udmVyc2lvbiwgOCk7Cj4gIFVWQ0dfRlJBTUVfQVRU Uih3X3dpZHRoLCB3V2lkdGgsIGxlMTZfdG9fY3B1LCBjcHVfdG9fbGUxNiwgMTYpOwo+IEBAIC0x MTQwLDYgKzExODEsNyBAQCBVVkNfQVRUUih1dmNnX2ZyYW1lXywgZHdfZnJhbWVfaW50ZXJ2YWws Cj4gZHdGcmFtZUludGVydmFsKTsKPiAKPiAgc3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1 dGUgKnV2Y2dfZnJhbWVfYXR0cnNbXSA9IHsKPiAgCSZ1dmNnX2ZyYW1lX2F0dHJfYm1fY2FwYWJp bGl0aWVzLAo+ICsJJnV2Y2dfZnJhbWVfYXR0cl9iX2ZyYW1lX2luZGV4LAo+ICAJJnV2Y2dfZnJh bWVfYXR0cl93X3dpZHRoLAo+ICAJJnV2Y2dfZnJhbWVfYXR0cl93X2hlaWdodCwKPiAgCSZ1dmNn X2ZyYW1lX2F0dHJfZHdfbWluX2JpdF9yYXRlLAo+IEBAIC0xMjE3LDYgKzEyNTksMjggQEAgc3Rh dGljIHZvaWQgdXZjZ19mcmFtZV9kcm9wKHN0cnVjdCBjb25maWdfZ3JvdXAKPiAqZ3JvdXAsIHN0 cnVjdCBjb25maWdfaXRlbSAqaXRlbSBtdXRleF91bmxvY2soJm9wdHMtPmxvY2spOwo+ICB9Cj4g Cj4gK3N0YXRpYyB2b2lkIF9fdXZjZ19mbXRfc2V0X2luZGljZXMoc3RydWN0IGNvbmZpZ19ncm91 cCAqZm10KQo+ICt7Cj4gKwl1OCBpID0gMTsKCkkgdGhpbmsgeW91IGNhbiBzaW1wbHkgdXNlIGFu IHVuc2lnbmVkIGludC4KCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeTsKPiArCXN0cnVjdCBj b25maWdfaXRlbSAqY2k7Cj4gKwlzdHJ1Y3QgdXZjZ19mcmFtZSAqZnJtOwoKWW91IGNvdWxkIGRl Y2xhcmUgdGhlIGxhc3QgdHdvIHZhcmlhYmxlcyBpbnNpZGUgdGhlIGxvb3AuIEknbGwgbGV0IHlv dSBkZWNpZGUgCm9uIHRoaXMgY2hhbmdlLCBhcyB0aGUgZnVuY3Rpb24gaXMgc21hbGwgYW5kIHRo ZSB2YXJpYWJsZXMgYXJlIHRodXMgYWxyZWFkeSAKY2xvc2UgdG8gdGhlIGNvZGUgdGhhdCB1c2Vz IHRoZW0uCgo+ICsKPiArCWxpc3RfZm9yX2VhY2goZW50cnksICYoZm10LT5jZ19jaGlsZHJlbikp IHsKPiArCgpObyBuZWVkIGZvciBhIGJsYW5rIGxpbmUgaGVyZS4KCj4gKwkJY2kgPSBjb250YWlu ZXJfb2YoZW50cnksIHN0cnVjdCBjb25maWdfaXRlbSwgY2lfZW50cnkpOwo+ICsKPiArCQlpZiAo Y2ktPmNpX3R5cGUgIT0gJnV2Y2dfZnJhbWVfdHlwZSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJ CWZybSA9IHRvX3V2Y2dfZnJhbWUoY2kpOwo+ICsJCWZybS0+ZnJhbWUuYl9mcmFtZV9pbmRleCA9 IGk7Cj4gKwkJaSsrOwoKWW91IGNvdWxkIHdyaXRlIHRoaXMKCgkJZnJtLT5mcmFtZS5iX2ZyYW1l X2luZGV4ID0gaSsrOwoKPiArCgpBbmQgbm8gbmVlZCBmb3IgYSBibGFuayBsaW5lIGhlcmUgZWl0 aGVyLgoKPiArCX0KPiArCgpTYW1lIGhlcmUuCgo+ICt9Cj4gKwo+ICAvKiBzdHJlYW1pbmcvdW5j b21wcmVzc2VkLzxOQU1FPiAqLwo+ICBzdHJ1Y3QgdXZjZ191bmNvbXByZXNzZWQgewo+ICAJc3Ry dWN0IHV2Y2dfZm9ybWF0CQlmbXQ7CgpDYW4ndCB5b3Ugc2V0IGJfZnJhbWVfaW5kZXggZnJvbSBf X3V2Y2dfZmlsbF9zdHJtKCksIGluIGEgc2ltaWxhciB3YXkgYXMgdGhlIApiX2Zvcm1hdF9pbmRl eCBpcyBzZXQgPyBJJ3ZlIHJlY2VpdmVkIGEgY29tcGV0aW5nIGltcGxlbWVudGF0aW9uIGZyb20g UGF1bCBpbiAKcGFyYWxsZWwgdG8geW91ciBwYXRjaCB0aGF0IGRvZXMgc28sIEknbGwgcG9zdCBp dCBhcyBhIHJlcGx5IHRvIHRoaXMgZS1tYWlsIHRvIApkaXNjdXNzIHdoaWNoIGFwcHJvYWNoIGlz IGJlc3QuCg==