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: usb: musb: Support gadget mode when the port is set to dual role From: Paul Kocialkowski Message-Id: <8a5e34c5f24d63a7735ae86ccd340f6b5f66959d.camel@bootlin.com> Date: Fri, 22 Mar 2019 14:10:01 +0100 To: Bin Liu , Greg Kroah-Hartman Cc: Maxime Ripard , linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Chen-Yu Tsai List-ID: SGksCgpMZSB2ZW5kcmVkaSAyMiBtYXJzIDIwMTkgw6AgMDc6NDYgLTA1MDAsIEJpbiBMaXUgYSDD qWNyaXQgOgo+IE9uIFRodSwgTWFyIDIxLCAyMDE5IGF0IDA1OjQxOjM4UE0gKzAxMDAsIEdyZWcg S3JvYWgtSGFydG1hbiB3cm90ZToKPiA+IE9uIFRodSwgTWFyIDIxLCAyMDE5IGF0IDAyOjAxOjMz UE0gKzAxMDAsIE1heGltZSBSaXBhcmQgd3JvdGU6Cj4gPiA+IEhpLAo+ID4gPiAKPiA+ID4gSSdt IHJldml2aW5nIHRoaXMgdGhyZWFkIGEgYml0LCBiZWNhdXNlIEkgZW5jb3VudGVyZWQgdGhpcyBi dWcgdG9kYXkuCj4gPiA+IAo+ID4gPiBPbiBUaHUsIE1hciAyMSwgMjAxOSBhdCAxMTowMjoxMEFN ICswMTAwLCBCaW4gTGl1IHdyb3RlOgo+ID4gPiA+IE9uIFNhdCwgQXByIDIxLCAyMDE4IGF0IDEy OjU5OjIzUE0gKzAyMDAsIFBhdWwgS29jaWFsa293c2tpIHdyb3RlOgo+ID4gPiA+ID4gSGksCj4g PiA+ID4gPiAKPiA+ID4gPiA+IExlIHZlbmRyZWRpIDIwIGF2cmlsIDIwMTggw6AgMDk6MjUgLTA1 MDAsIEJpbiBMaXUgYSDDqWNyaXQgOgo+ID4gPiA+ID4gPiBPbiBUaHUsIE1hciAyOSwgMjAxOCBh dCAwMTo1NzoyNFBNICswMjAwLCBQYXVsIEtvY2lhbGtvd3NraSB3cm90ZToKPiA+ID4gPiA+ID4g PiBIaSwKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBPbiBUaHUsIDIwMTgtMDMtMjkgYXQg MTE6MjMgKzAyMDAsIE1heGltZSBSaXBhcmQgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiBPbiBXZWQs IE1hciAyOCwgMjAxOCBhdCAxMTo1MjoxM1BNICswMjAwLCBQYXVsIEtvY2lhbGtvd3NraSB3cm90 ZToKPiA+ID4gPiA+ID4gPiA+ID4gVGhpcyBhbGxvd3MgZHVhbC1yb2xlIHBvcnRzIHRvIGJlIHJl cG9ydGVkIGFzIGhhdmluZyBnYWRnZXQgbW9kZQo+ID4gPiA+ID4gPiA+ID4gPiBieQo+ID4gPiA+ ID4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+ID4gPiA+ID4gbXVzYl9oYXNfZ2FkZ2V0IGhlbHBlci4g VGhpcyBpcyByZXF1aXJlZCB0byBlbmFibGUgTVVTQiBhdCBhbGwKPiA+ID4gPiA+ID4gPiA+ID4g d2l0aAo+ID4gPiA+ID4gPiA+ID4gPiBNVVNCCj4gPiA+ID4gPiA+ID4gPiA+IGdsdWUgbGF5ZXJz IHRoYXQgc2V0IHRoZSBwb3J0IG1vZGUgdG8gTVVTQl9QT1JUX01PREVfRFVBTF9ST0xFCj4gPiA+ ID4gPiA+ID4gPiA+IGF0Cj4gPiA+ID4gPiA+ID4gPiA+IGluaXQuCj4gPiA+ID4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiA+ID4gPiBNb3N0IG5vdGFibHksIHRoaXMgYWxsb3dzIGNhbGxpbmcgbXVz Yl9zdGFydCB3aGVuIG5lZWRlZCBpbiB0aGUKPiA+ID4gPiA+ID4gPiA+ID4gdmlydHVhbAo+ID4g PiA+ID4gPiA+ID4gPiBNVVNCIHJvb3QgSFVCLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGN1 cnJlbnQgbW9kZSBzaG91bGQgYmUKPiA+ID4gPiA+ID4gPiA+ID4gZ2FkZ2V0Cj4gPiA+ID4gPiA+ ID4gPiA+IG9yIGhvc3QuCj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBUaGlz IGZpeGVzIFVTQiBPVEcgb24gQWxsd2lubmVyIGRldmljZXMgdGhhdCBJIGNvdWxkIHRlc3QgaXQK PiA+ID4gPiA+ID4gPiA+ID4gd2l0aCwKPiA+ID4gPiA+ID4gPiA+ID4gbWFpbmx5IEEyMCBkZXZp Y2VzLgo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTog UGF1bCBLb2NpYWxrb3dza2kgPGNvbnRhY3RAcGF1bGsuZnI+Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiA+IFN1cmVseSB0aGVyZSdzIG1vcmUgdG8gaXQgdGhhbiB0aGF0LiBUaGUgZ2Fk Z2V0IG1vZGUgb2YgQTIwIGJvYXJkcwo+ID4gPiA+ID4gPiA+ID4gaGF2ZSBiZWVuIHdvcmtpbmcg aW4gdGhlIHBhc3QsIGluY2x1ZGluZyB3aGVuIGNvbXBpbGluZyB3aXRoIG1VU0IKPiA+ID4gPiA+ ID4gPiA+IHNldHVwIGFzIGR1YWwgcm9sZS4KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ ID4gSXMgdGhpcyBhIHJlZ3Jlc3Npb24gc2luY2UgYSBwYXJ0aWN1bGFyIGNvbW1pdD8gT3IgaXMg dGhlcmUKPiA+ID4gPiA+ID4gPiA+IGFub3RoZXIsCj4gPiA+ID4gPiA+ID4gPiBkZWVwZXIgaXNz dWUgb3Zlcmxvb2tlZCBpbiB0aGUgY29tbWl0IGxvZz8KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gPiBUaGUgcm9vdCBvZiB0aGUgaXNzdWUgaGVyZSBpcyB0aGF0IG11c2Jfc3RhcnQgaXMgbm90 IGNhbGxlZCBhdCBhbnkKPiA+ID4gPiA+ID4gPiBwb2ludAo+ID4gPiA+ID4gPiA+IHdpdGhvdXQg dGhpcyBwYXRjaC4gTXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZmxvdyBpcyB0aGUgZm9sbG93aW5n Ogo+ID4gPiA+ID4gPiA+IHdoZW4KPiA+ID4gPiA+ID4gPiB0aGUgUEhZIGRldGVjdHMgdGhhdCB0 aGVyZSB3YXMgYSBWQlVTL0lEIGNoYW5nZSwgaXQgd2lsbCBub3RpZnkgaXRzCj4gPiA+ID4gPiA+ ID4gbGlzdGVuZXJzIChtYWlubHkgdGhlIG11c2Igc3VueGkgZ2x1ZSBsYXllcikuIFRoaXMgd2ls bCB0aGVuCj4gPiA+ID4gPiA+ID4gc2NoZWR1bGUKPiA+ID4gPiA+ID4gPiB0aGUgZHJpdmVyJ3Mg d29yayAoc3VueGlfbXVzYl93b3JrKSwgd2hpY2ggZG9lcyBub3RoaW5nIHNpbmNlIHRoZQo+ID4g PiA+ID4gPiA+IFNVTlhJX01VU0JfRkxfRU5BQkxFRCBiaXQgd2FzIG5ldmVyIHNldC4gVGhpcyBi aXQgaXMgb25seSBzZXQgYWZ0ZXIKPiA+ID4gPiA+ID4gPiBjYWxsaW5nIHN1bnhpX211c2JfZW5h YmxlLCB3aGljaCBpcyBjYWxsZWQgZnJvbQo+ID4gPiA+ID4gPiA+IG11c2JfcGxhdGZvcm1fZW5h YmxlLAo+ID4gPiA+ID4gPiA+IHRoYXQgb3JpZ2luYXRlcyBmcm9tIG11c2Jfc3RhcnQuCj4gPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gQ3VycmVudGx5IEkgc2VlIHR3byBwbGFjZXMgd2hlcmUg bXVzYl9zdGFydCBpcyBjYWxsZWQ6Cj4gPiA+ID4gPiA+ID4gKiBtdXNiX3ZpcnRodWIKPiA+ID4g PiA+ID4gPiAqIG11c2JfZ2FkZ2V0Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gSW4gdGhl IGxhdHRlciBjYXNlLCBpdCBpcyBpbiB0dXJuIGNhbGxlZCBmcm9tIHVkY19zdGFydCwgd2hpY2gK PiA+ID4gPiA+ID4gPiBzaG91bGQKPiA+ID4gPiA+ID4gPiBwcm9iYWJseSAoY29ycmVjdCBtZSBp ZiBJJ20gd3JvbmcpIGhhcHBlbiBsYXRlciBpbiB0aGUgY2FsbCBjaGFpbgo+ID4gPiA+ID4gPiA+ IHRoYW4KPiA+ID4gPiA+ID4gPiBJRC9WQlVTIGNoYW5nZSBub3RpZmljYXRpb24gdGltZS4KPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+IEkgZG9uJ3QgdGhpbmsgaXQgaXMgY29ycmVjdCB0aGF0IHVk Y19zdGFydCgpIGlzIHRyaWdnZXJlZCBieSBJRC9WQlVTCj4gPiA+ID4gPiA+IGV2ZW50cywgYnV0 IEkgZG9uJ3QgaGF2ZSBhbiBBbGx3aW5uZXIgcGxhdGZvcm0gdG8gdmVyaWZ5IHRoZSBjYWxsZmxv dy4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gWWVzIHlvdSdyZSByaWdodCwgSSBkaWRuJ3QgbWFrZSBt eXNlbGYgdmVyeSBjbGVhciBoZXJlLiBJIGRpZG4ndAo+ID4gPiA+ID4gaW52ZXN0aWdhdGUgdGhl IHVkY19zdGFydCBjYWxsIHBhdGggbXVjaCBzaW5jZSBpdCB3YXMgYXBwYXJlbnRseSBub3QgdGhl Cj4gPiA+ID4gPiBjdWxwcml0Lgo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IEhhdmUgeW91IHRyaWVk IHRvIGxvYWQgd2l0aCBhIGdhZGdldCBkcml2ZXI/IFdoZW4gYSBnYWRnZXQgZnVuY3Rpb24gaXMK PiA+ID4gPiA+ID4gYm91bmQgdG8gVURDLCB1ZGNfc3RhcnQoKSBpcyB0cmlnZ2VyZWQsIHdoaWNo IGluIHR1cm4gY2FsbHMKPiA+ID4gPiA+ID4gbXVzYl9zdGFydCgpLgo+ID4gPiA+ID4gCj4gPiA+ ID4gPiBJdCBkb2VzIHdvcmsgdW5kZXIgdGhhdCBzY2VuYXJpbywgYWx0aG91Z2ggbXkgdXNlZCBj YXNlIGhlcmUgaXMgdXNpbmcKPiA+ID4gPiA+IG11c2Igd2l0aCBEVUFMX1JPTEUgYnV0IG5vIGdh ZGdldCBkcml2ZXIgbG9hZGVkLiBUaGF0IGl0LCBJIHdhbnQgdGhlCj4gPiA+ID4gPiBtdXNiX3N0 YXJ0IGNhbGwgdG8gb3JpZ2luYXRlIGZyb20gdGhlIHZpcnR1YWwgaHViLCBub3QgZnJvbSB0aGUg Z2FkZ2V0Cj4gPiA+ID4gPiBzaWRlLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gSW4gdGhlIGZv cm1lciBjYXNlLCBtdXNiX3N0YXJ0IGlzIGNhbGxlZCBpbiB0aGUgcm9vdCBjb250cm9sbGVyIGh1 Ygo+ID4gPiA+ID4gPiA+IGNvbnRyb2wsIHdoZW4gc2V0dGluZyB0aGUgVVNCX1BPUlRfRkVBVF9Q T1dFUiBmZWF0dXJlLiBUaGlzIGxvb2tzCj4gPiA+ID4gPiA+ID4gcGVyZmVjdGx5IGxlZ2l0IGFu ZCBJTU8gdGhpcyBpcyB3aGVyZSBpdCBzaG91bGQgYmUgaW5pdGlhbGx5IGNhbGxpbmcKPiA+ID4g PiA+ID4gPiBtdXNiX3N0YXJ0IGluIHRoZSBkdWFsIHJvbGUgY2FzZS4gVGhlIGtlcm5lbCBpcyBp bmRlZWQgc2V0dGluZyB0aGUKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IE5vIGFjdHVhbGx5LiBB IGR1YWwtcm9sZSBwb3J0IHNob3VsZCBiZSBpbiBiX2lkbGUgc3RhdGUgYnkgZGVmYXVsdCwgc28K PiA+ID4gPiA+ID4gbG9naWNhbGx5IGFsbCBhY3Rpb25zIHNob3VsZCBnbyB0byB0aGUgZ2FkZ2V0 IHBhdGggdW50aWwgdGhlIHBvcnQKPiA+ID4gPiA+ID4gc3dpdGNoZXMgdG8gaG9zdCBtb2RlLgo+ ID4gPiA+ID4gCj4gPiA+ID4gPiBJdCBtYWtlcyBzZW5zZSB0aGF0IHRoZSBwb3J0IHNob3VsZCBi ZSBpbiBiX2lkbGUgc3RhdGUgYnkgZGVmYXVsdCwgYnV0Cj4gPiA+ID4gPiBoZXJlIGl0IGZhaWxz IHRvIHN3aXRjaCB0byBob3N0IG1vZGUgd2hlbiB0aGUgSUQgcGluIGRldGVjdHMgdGhhdCBpdAo+ ID4gPiA+ID4gc2hvdWxkLiBPciBkb2VzIGJfaWRsZSBzdGF0ZSBlbnRhaWwgdGhhdCBhIGdhZGdl dCBtdXN0IGJlIGxvYWRlZCAocGVyCj4gPiA+ID4gPiB0aGUgVVNCIHNwZWMpLCBhbmQgdGh1cyBu b3RoaW5nIHNob3VsZCAoZXZlcikgaGFwcGVuIHVudGlsIHRoYXQgaGFwcGVucz8KPiA+ID4gPiA+ IAo+ID4gPiA+ID4gSSBmaW5kIGl0IHJlYWxseSBvZGQgdG8gbmVlZCBhIGdhZGdldCBkZXZpY2Ug dG8gdHJpZ2dlciBob3N0IG1vZGUuCj4gPiA+ID4gPiBUaGlzIHBhdGNoIGRvZXMgZml4IHRoZSBp c3N1ZSwgYnV0IEkgYW0gcHV6emxlZCBhcyB0byB3aHkgaXQgaXMgbmVlZGVkCj4gPiA+ID4gPiBp biB0aGUgZmlyc3QgcGxhY2UuIFRoZSBjb21tZW50IGFib3ZlIGl0IG1lbnRpb25zIHRoYXQgIklu IE9URyBtb2RlIHdlCj4gPiA+ID4gPiBoYXZlIHRvIHdhaXQgdW50aWwgd2UgbG9hZGVkIGEgZ2Fk Z2V0LiBXZSBkb24ndCByZWFsbHkgbmVlZCBhIGdhZGdldCBpZgo+ID4gPiA+ID4gd2Ugb3BlcmF0 ZSBhcyBhIGhvc3QgYnV0IHdlIHNob3VsZCBub3Qgc3RhcnQgYSBzZXNzaW9uIGFzIGEgZGV2aWNl Cj4gPiA+ID4gPiB3aXRob3V0IGEgZ2FkZ2V0IG9yIGVsc2Ugd2UgZXhwbG9kZS4iLCB3aGljaCBp cyBhcHBhcmVudGx5IGNvbXBhdGlibGUKPiA+ID4gPiA+IHdpdGggbXkgdXNlIGNhc2U6IGEgZ2Fk Z2V0IGlzIG5vdCByZWFsbHkgbmVlZGVkIGFuZCBJJ20gbm90IHRyeWluZyB0bwo+ID4gPiA+ID4g c3RhcnQgYSBzZXNzaW9uIGFzIGEgZGV2aWNlIHdpdGhvdXQgYSBnYWRnZXQgbG9hZGVkLgo+ID4g PiA+ID4gCj4gPiA+ID4gPiBXaGF0IGRvIHlvdSB0aGluaz8KPiA+ID4gPiAKPiA+ID4gPiBPa2F5 LCB0aGlzIGNhbWUgZG93biB0byBhbiBhcmd1bWVudCB0aGF0IHdoZXRoZXIgd2Ugc2hvdWxkIHJl cXVpcmUKPiA+ID4gPiBsb2FkaW5nIGEgZ2FkZ2V0IGRyaXZlciBvbiBhIGR1YWwtcm9sZSBwb3J0 IHRvIHdvcmsgaW4gaG9zdCBtb2RlLAo+ID4gPiA+IHdoaWNoIGlzIGN1cnJlbnRseSByZXF1aXJl ZCBvbiBtdXNiIHNpbmNlIGEgbG9uZyBsb25nIHRpbWUgYWdvLgo+ID4gPiA+IAo+ID4gPiA+IEkg dW5kZXJzdGFuZCB0aGUgcmVxdWlyZW1lbnQgaXMga2luZGEgdW5uZWNlc3NhcnksIGJ1dCBzaW5j ZSBpdCBhbHJlYWR5Cj4gPiA+ID4gZXhpc3RzIG9uIG11c2Igc3RhY2sgZm9yIGEgbG9uZyB0aW1l LCBJIGRvbid0IHBsYW4gdG8gY2hhbmdlIGl0LiBCZWNhdXNlIEkKPiA+ID4gPiBjYW5ub3QgdGhp bmsgb2YgYSB1c2UgY2FzZSBpbiByZWFsIHByb2R1Y3RzIHRoYXQgZG9lc24ndCBhdXRvbWF0aWNh bGx5Cj4gPiA+ID4gbG9hZCBhIGdhZGdldCBmdW5jdGlvbiBvbiB0aGUgZHVhbC1yb2xlIHBvcnQu Cj4gPiA+ID4gCj4gPiA+ID4gSWYgeW91IGNhbiBleHBsYWluIGEgdXNlIGNhc2UgaW4gcmVhbCB3 b3JsZCAobm90IGEgZW5naW5lZXJpbmcgbGFiKSB0aGF0Cj4gPiA+ID4gdGhlIGdhZGdldCBkcml2 ZXIgd2lsbCBub3QgYmUgbG9hZGVkIGF0IGxpbnV4IGJvb3RpbmcgdXAsIGJ1dCBsYXRlcgo+ID4g PiA+IGJhc2VkIG9uIHVzZXIncyBpbnB1dCwgSSB3aWxsIHJlY29uc2lkZXIgbXkgZGVjaXNpb24u IFRvIHJlbW92ZSB0aGlzCj4gPiA+ID4gcmVxdWlyZW1lbnQgZnJvbSBtdXNiIHN0YWNrLCB0aGUg d29yayBpcyBtb3JlIHRoYW4gdGhpcyBwYXRjaC4KPiA+ID4gCj4gPiA+IEkgaGF2ZSBvbmUgZm9y IHlvdTogd2UncmUgd29ya2luZyBvbiBhIGRldmljZSB0aGF0IGJvb3RzIHByZXR0eSBmYXN0LAo+ ID4gPiBhbmQgdGhlcmVmb3JlIGFyZSBwdXNoaW5nIGFzIG11Y2ggdGhpbmdzIGFzIHdlIGNhbiB0 byBtb2R1bGVzLiBJdAo+ID4gPiBpbmNsdWRlcyBnYWRnZXRzLCB0aGUgbXVzYiBkcml2ZXIgYW5k IGdsdWUsIGV0Yy4gVGhhdCBkb2Vzbid0IHNvdW5kCj4gPiA+IHdheSB2ZXJ5IGRpZmZlcmVudCBm cm9tIHdoYXQgYSBnZW5lcmljIGRpc3RybyB3b3VsZCBkbyBhcyB3ZWxsLgo+ID4gPiAKPiA+ID4g QXQgYm9vdCwgdGhlIHZhcmlvdXMgbW9kdWxlcyBmb3IgdGhlIGhhcmR3YXJlIGFyZSBsb2FkZWQK PiA+ID4gYXV0b21hdGljYWxseTogdGhlIG11c2IgZ2x1ZSwgdGhlIG11c2IgY29yZSwgb3VyIFVT QiBQSFksIGV0Yy4gV2UgZW5kCj4gPiA+IHVwIGluIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBtdXNi IGRyaXZlciBpcyBsb2FkZWQgYW5kIHJlcG9ydGVkIHRvIHdvcmsKPiA+ID4gcHJvcGVybHkuIFRo ZSBVU0IgY2FibGUgdG8gdGhlIE9URyBwb3J0IChpbiBwZXJpcGhlcmFsKSBtaWdodCBvciBtaWdo dAo+ID4gPiBub3QgYmUgY29ubmVjdGVkLCBpdCdzIGtpbmQgb2YgaXJyZWxldmFudC4KPiA+ID4g Cj4gPiA+IFRoZSBnYWRnZXRzLCBob3dldmVyLCBhcmUgbm90IGxvYWRlZCBhdXRvbWF0aWNhbGx5 Lgo+ID4gPiAKPiA+ID4gTm93IGNvbWVzIGEgdXNlciB0aGF0IHdhbnRzIHRvIHVzZSBtdXNiIGFz IGEgaG9zdCwgYW5kIGNvbm5lY3QgYQo+ID4gPiBwcm9wZXIgVVNCIGFkYXB0ZXIsIHRoYXQgd2ly ZXMgdGhlIElEIHBpbiBwcm9wZXJseS4gSW4gb3VyIGNhc2UsIHRoZQo+ID4gPiBwaHkgZGV0ZWN0 cyBpdCwgcmVwb3J0cyB0aGUgbW9kZSBjaGFuZ2UsIGFuZCAuLi4uIG5vdGhpbmcuCj4gPiA+IAo+ ID4gPiBUaGF0IGRvZXNuJ3QgcmVhbGx5IGxvb2sgbGlrZSBhbiBlbmdpbmVlcmluZyBsYWIgc2V0 dXAgdG8gbWUuCj4gPiAKPiA+IEkgYWdyZWUsIHRoYXQgc291bmRzIGxpa2UgYSB2YWxpZCBzZXR1 cC4KPiA+IAo+ID4gQWxzbyByZWFsaXplIHRoYXQgQW5kcm9pZCBpcyBwdXNoaW5nIHRvIGhhdmUg YWxsIGRyaXZlcnMgYXMgbW9kdWxlcywgc28KPiA+IHlvdSB3aWxsIHN0YXJ0IHRvIHNlZSBhIHdo b2xlIGxvdCBtb3JlIGRldmljZXMgb3V0IHRoZXJlIGJlIG1vZHVsYXIKPiA+IGluc3RlYWQgb2Yg c3RhdGljYWxseSBidWlsdCBrZXJuZWxzLiAgU28gaXNzdWVzIGxpa2UgdGhpcyBhcmUgZ29vZCB0 bwo+ID4gcmVzb2x2ZSA6KQo+IAo+IFRoaXMgaXNzdWUgaGVyZSBpcyBub3QgcmVsYXRlZCB0byBi dWlsZGluZyBhbGwgZHJpdmVycyBhcyBtb2R1bGVzLiBUb2RheQo+IHdlIGFscmVhZHkgaGF2ZSBh bGwgbXVzYiByZWxhdGVkIGRyaXZlcnMgaW5jbHVkaW5nIGdhZGdldCBkcml2ZXJzIGluCj4gbW9k dWxlcy4KPiAKPiBUaGUgaXNzdWUgZGlzY3Vzc2VkIGhlcmUgaXMgdGhhdCB3aGVuIG11c2IgaXMg Y29uZmlndXJlZCBpbiBkdWFsLXJvbGUKPiBtb2RlIChkcl9tb2RlID0gJ290ZycgaW4gZHRzKSwg YSBnYWRnZXQgZHJpdmVyIGhhcyB0byBiZSBib3VuZCB0byB0aGUKPiB1ZGMgdG8gbWFrZSBtdXNi IHdvcmtpbmcgaW4gaG9zdCBtb2RlLgo+IAo+IEkgbmV2ZXIgZGlzYWdyZWUgaXQgaXMgbm90IGlk ZWFsLCBidXQgSSBjb25zaWRlciBpdCBpcyBtaW5vciAtIHNpbmNlIHRoZQo+IHBvcnQgaXMgY29u ZmlndXJlZCB0byBkdWFsLXJvbGUgbW9kZSwgaXQgaXMgaW50ZW5kZWQgdG8gd29yayBpbgo+IHBl cmlwaGVyYWwgbW9kZSwgdGhlbiB3aHkgbm90IGF1dG9tYXRpY2FsbHkgbG9hZCB0aGUgZ2FkZ2V0 IGRyaXZlciB3aGVuCj4gbGludXggYm9vdHMgdXAuCgpJIHN0aWxsIGhhdmUgYSBmdW5kYW1lbnRh bCBkaXNhZ3JlZW1lbnQgaGVyZSwgYW5kIEkgdGhpbmsgaXQgd291bGQgYmUKaW50ZXJlc3Rpbmcg dG8gZGlzY3VzcyBpdCB3aXRoIEdyZWcgaW4gdGhlIGxvb3AuIEkgdGhpbmsgdGhhdCB3aGV0aGVy Cm9yIG5vdCB3ZSBsb2FkIGEgZ2FkZ2V0IGRyaXZlciB3aGVuIHRoZSBwb3J0IGlzIGRlY2xhcmVk IGFzIE9URyBpcwpwb2xpY3ksIHdoaWNoIGlzIHNob3VsZCBiZSBsZWZ0IHRvIGNvbmZpZyBvciB1 c2Vyc3BhY2UgYW5kIHNob3VsZCBub3QKYmUgYSBwcmVyZXF1aXNpdGUgZm9yIHRoZSBkcml2ZXIg dG8gd29yay4KClRvIG1lLCBPVEcgaW1wbGllcyB0aGF0IGhvc3QgYW5kIHBlcmlwaGVyYWwgYXJl IHN1cHBvcnRlZCBlcXVhbGx5LCBhbmQKb25lIHNob3VsZCBub3QgcHJldmFpbCBvdmVyIHRoZSBv dGhlci4KCkknbSB3b25kZXJpbmcgaWYgdGhlcmUgYXJlIGdlbmVyYWwga2VybmVsIHJ1bGVzIHRo YXQgc2hvdWxkIGFwcGx5IGhlcmUsCmluZGVwZW5kZW50bHkgZnJvbSB0aGUgdGVjaG5pY2FsIGFy Z3VtZW50IHJlbGF0ZWQgdG8gdXNpbmcgZ2FkZ2V0Cm1vZHVsZXM/Cgo+IFRvIHN1bW1hcmllcyBt eSBjb21tZW50cyBvbiB0aGlzIGFnYWluLCBzaW5jZSBpdCBpcyBtaW5vciBpbiBteSBvcGluaW9u LAo+IEkgd29uJ3Qgc3BlbmQgdGltZSB0byBzb2x2ZSBpdCBteXNlbGYgKGluIGEgbmVhciBmdXR1 cmUpLCBidXQgSSBhbSBtb3JlCj4gdGhhbiBoYXBweSB0byByZXZpZXcgYW5kIHRha2UgYW55IHBh dGNoIHdoaWNoIHNvbHZlIGl0LiAKCkl0IGlzIGRlZmluaXRlbHkgdmVyeSBtdWNoIGFwcHJlY2lh dGVkIHRoYXQgeW91IGFyZSBvcGVuIHRvIGFjY2VwdGluZyBhCmZpeCBmb3IgdGhpcyBpc3N1ZSBl dmVuIHRob3VnaCB5b3UgY29uc2lkZXIgaXQgYSBub24taXNzdWUgOikKCkNoZWVycywKClBhdWwK