From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Miao Subject: Re: [PATCH 1/6] pxa: support pxa168 LCD controller SPI operation Date: Tue, 3 Nov 2009 16:32:30 +0800 Message-ID: References: <7c34ac520911022245x2845e5dex1311bd74a08606db@mail.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from sfi-mx-1.v28.ch3.sourceforge.com ([172.29.28.121] helo=mx.sourceforge.net) by 3yr0jf1.ch3.sourceforge.com with esmtp (Exim 4.69) (envelope-from ) id 1N5Ep5-0000O5-UK for linux-fbdev-devel@lists.sourceforge.net; Tue, 03 Nov 2009 08:33:03 +0000 Received: from mail-pw0-f43.google.com ([209.85.160.43]) by 29vjzd1.ch3.sourceforge.com with esmtp (Exim 4.69) id 1N5Eoy-0008MZ-1w for linux-fbdev-devel@lists.sourceforge.net; Tue, 03 Nov 2009 08:33:03 +0000 Received: by pwj6 with SMTP id 6so2480773pwj.2 for ; Tue, 03 Nov 2009 00:32:50 -0800 (PST) In-Reply-To: <7c34ac520911022245x2845e5dex1311bd74a08606db@mail.gmail.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-fbdev-devel-bounces@lists.sourceforge.net To: Jun Nie Cc: linux-fbdev-devel@lists.sourceforge.net, linux-arm-kernel@lists.infradead.org T24gVHVlLCBOb3YgMywgMjAwOSBhdCAyOjQ1IFBNLCBKdW4gTmllIDxuaWVqMDAwMUBnbWFpbC5j b20+IHdyb3RlOgo+IHB4YTogc3VwcG9ydCBweGExNjggTENEIGNvbnRyb2xsZXIgU1BJIG9wZXJh dGlvbgo+Cj4gU2lnbmVkLW9mZi1ieTogSnVuIE5pZSA8bmp1bkBtYXJ2ZWxsLmNvbT4KPiAtLS0K PiDCoGFyY2gvYXJtL21hY2gtbW1wL2luY2x1ZGUvbWFjaC9weGExNjhmYi5oIHwgwqAgMjkgKysr KysrKysrCj4gwqBkcml2ZXJzL3ZpZGVvL3B4YTE2OGZiLmMgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqB8IMKgIDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gwqBkcml2ZXJzL3Zp ZGVvL3B4YTE2OGZiLmggwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8IMKgIDI0ICstLS0tLS0t Cj4gwqBpbmNsdWRlL3ZpZGVvL3B4YTE2OGZiLmggwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8 IMKgIDE4ICsrKysrKwo+IMKgNCBmaWxlcyBjaGFuZ2VkLCAxNDAgaW5zZXJ0aW9ucygrKSwgMjMg ZGVsZXRpb25zKC0pCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1tbXAvaW5j bHVkZS9tYWNoL3B4YTE2OGZiLmgKPgo+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW1tcC9p bmNsdWRlL21hY2gvcHhhMTY4ZmIuaAo+IGIvYXJjaC9hcm0vbWFjaC1tbXAvaW5jbHVkZS9tYWNo L3B4YTE2OGZiLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjg5N2Nj M2UKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9hcm0vbWFjaC1tbXAvaW5jbHVkZS9tYWNo L3B4YTE2OGZiLmgKPiBAQCAtMCwwICsxLDI5IEBACj4gKyNpZm5kZWYgX19QWEExNjhGQlNQSV9I X18KPiArI2RlZmluZSBfX1BYQTE2OEZCU1BJX0hfXwo+ICsKPiArLyogU1BJIENvbnRyb2wgUmVn aXN0ZXIuICovCj4gKyNkZWZpbmUgTENEX1NQVV9TUElfQ1RSTCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCAweDAxODAKPiArI2RlZmluZSDCoCDCoCBDRkdfU0NMS0NOVChkaXYpIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICgoZGl2KSA8PCAyNCkgwqAvKiAweEZGfjB4MiAqLwo+ ICsjZGVmaW5lIMKgIMKgIENGR19TQ0xLQ05UX01BU0sgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgMHhGRjAwMDAwMAo+ICsjZGVmaW5lIMKgIMKgIENGR19SWEJJVFMocngpIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgICgocnggLSAxKSA8PCAxNikgwqAgLyogMHgxRn4weDEsIDB4MToK PiAyYml0cyAuLi4gMHgxRjogMzJiaXRzICovCj4gKyNkZWZpbmUgwqAgwqAgQ0ZHX1JYQklUU19N QVNLIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMHgwMEZGMDAwMAo+ICsjZGVmaW5lIMKg IMKgIENGR19UWEJJVFModHgpIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKCh0eCAt IDEpIDw8IDgpIMKgIMKgLyoKPiAweDFGfjB4MSwgMHgxOiAyYml0cyAuLi4gMHgxRjogMzJiaXRz ICovCj4gKyNkZWZpbmUgwqAgwqAgQ0ZHX1RYQklUU19NQVNLIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgMHgwMDAwRkYwMAo+ICsjZGVmaW5lIMKgIMKgIENGR19DTEtJTlYoY2xrKSDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCgoY2xrKSA8PCA3KQo+ICsjZGVmaW5lIMKgIMKgIENG R19DTEtJTlZfTUFTSyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDB4MDAwMDAwODAKPiAr I2RlZmluZSDCoCDCoCBDRkdfS0VFUFhGRVIodHJhbnNmZXIpIMKgIMKgIMKgIMKgIMKgIMKgICgo dHJhbnNmZXIpIDw8IDYpCj4gKyNkZWZpbmUgwqAgwqAgQ0ZHX0tFRVBYRkVSX01BU0sgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAweDAwMDAwMDQwCj4gKyNkZWZpbmUgwqAgwqAgQ0ZHX1JYQklU U1RPMChyeCkgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoKHJ4KSA8PCA1KQo+ICsjZGVmaW5l IMKgIMKgIENGR19SWEJJVFNUTzBfTUFTSyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAweDAwMDAw MDIwCj4gKyNkZWZpbmUgwqAgwqAgQ0ZHX1RYQklUU1RPMCh0eCkgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAoKHR4KSA8PCA0KQo+ICsjZGVmaW5lIMKgIMKgIENGR19UWEJJVFNUTzBfTUFTSyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAweDAwMDAwMDEwCj4gKyNkZWZpbmUgwqAgwqAgQ0ZHX1NQ SV9FTkEoc3BpKSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAoKHNwaSkgPDwgMykKPiArI2Rl ZmluZSDCoCDCoCBDRkdfU1BJX0VOQV9NQVNLIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDB4 MDAwMDAwMDgKPiArI2RlZmluZSDCoCDCoCBDRkdfU1BJX1NFTChzcGkpIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgICgoc3BpKSA8PCAyKSDCoCDCoC8qIDE6IHBvcnQxOyAwOiBwb3J0MCAqLwo+ ICsjZGVmaW5lIMKgIMKgIENGR19TUElfU0VMX01BU0sgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgMHgwMDAwMDAwNAo+ICsjZGVmaW5lIMKgIMKgIENGR19TUElfM1c0V0Iod2lyZSkgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgKCh3aXJlKTw8MSkgwqAvKiAxOgo+IDMtd2lyZTsgMDogNC13aXJl ICovCj4gKyNkZWZpbmUgwqAgwqAgQ0ZHX1NQSV8zVzRXQl9NQVNLIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIDB4MDAwMDAwMDIKPiArI2RlZmluZSDCoCDCoCBDRkdfU1BJX1NUQVJUKHN0YXJ0KSDC oCDCoCDCoCDCoCDCoCDCoCDCoCAoc3RhcnQpCj4gKyNkZWZpbmUgwqAgwqAgQ0ZHX1NQSV9TVEFS VF9NQVNLIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDB4MDAwMDAwMDEKPiArCj4gKyNlbmRpZiAv KiBfX1BYQTE2OEZCU1BJX0hfXyAqLwoKU2hvdWxkbid0IHRoZXNlIGJlIGRlZmluZWQgaW4gZHJp dmVycy92aWRlby9weGExNjhmYi5oPyBPciBpZgpzb21lIG9mIHRoZSBkZWZpbml0aW9ucyBhcmUg dG8gYmUgdXNlZCBieSBwbGF0Zm9ybSBjb2RlLCBtb3ZlCnRoZW0gdG8gaW5jbHVkZS92aWRlby9w eGExNjhmYi5oLgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9weGExNjhmYi5jIGIvZHJp dmVycy92aWRlby9weGExNjhmYi5jCj4gaW5kZXggODRkODMyNy4uMjdiZGYyYiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL3ZpZGVvL3B4YTE2OGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL3B4YTE2 OGZiLmMKPiBAQCAtMjksMTAgKzI5LDkxIEBACj4gwqAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5o Pgo+IMKgI2luY2x1ZGUgPHZpZGVvL3B4YTE2OGZiLmg+Cj4KPiArI2luY2x1ZGUgPG1hY2gvcHhh MTY4ZmIuaD4KPiArI2luY2x1ZGUgPG1hY2gvZ3Bpby5oPgo+IMKgI2luY2x1ZGUgInB4YTE2OGZi LmgiCj4KPiDCoCNkZWZpbmUgREVGQVVMVF9SRUZSRVNIIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg NjAgwqAgwqAgwqAvKiBIeiAqLwo+Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBzcGlfZ3Bpb19hc3Nl cnRfc2V0KGludCBzcGlfZ3Bpb19jcywgaW50IHZhbCkKPiArewo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqBpZiAoZ3Bpb19pc192YWxpZChzcGlfZ3Bpb19jcykpCj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncGlvX3NldF92YWx1ZShzcGlf Z3Bpb19jcywgdmFsKTsKPiArfQoKTW1tLi4uLiB0d28gcG9pbnRzOgoKMS4gc3BpX2dwaW9fYXNz ZXJ0KCkgc291bmRzIGVub3VnaCB0byBtZSwgbm8gIl9zZXQiIHN1ZmZpeCBuZWNlc3NhcnkKMi4g aXMgaXQgcG9zc2libGUgdGhhdCBpbiBzb21lIGNhc2VzIHRoYXQgdGhpcyBHUElPIENTIHNpZ25h bCBpcyBpbnZlcnRlZD8KCj4gK2ludCBweGExNjhmYl9zcGlfc2VuZChzdHJ1Y3QgcHhhMTY4ZmJf aW5mbyAqZmJpLCB2b2lkICp2YWx1ZSwgaW50IGNvdW50LAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgdW5zaWduZWQgaW50IHNwaV9ncGlvX2NzLCB1bnNpZ25lZCBpbnQgaW50ZXJ2YWxfdXMpCj4g K3sKPiArIMKgIMKgIMKgIHUzMiB4LCBzcGlfYnl0ZV9sZW47Cj4gKyDCoCDCoCDCoCB1OCAqY21k ID0gKHU4ICopdmFsdWU7Cj4gKyDCoCDCoCDCoCBpbnQgaSwgZXJyLCBpc3IsIGlvcGFkLCByZXQg PSAwOwo+ICsKPiArIMKgIMKgIMKgIGlmIChncGlvX2lzX3ZhbGlkKHNwaV9ncGlvX2NzKSkgewo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXJyID0gZ3Bpb19yZXF1ZXN0KHNwaV9ncGlvX2NzLCAi TENEX1NQSV9DUyIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGVycikgewo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGV2X2VycihmYmktPmRldiwgImZhaWxlZCB0 byByZXF1ZXN0IEdQSU8gZm9yIExDRCBDU1xuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCByZXR1cm4gLTE7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCBncGlvX2RpcmVjdGlvbl9vdXRwdXQoc3BpX2dwaW9fY3MsIDEpOwo+ ICsgwqAgwqAgwqAgfQoKSXMgdGhpcyBwb3NzaWJsZSB0aGlzIGJlZW4gZG9uZSBhdCBzb21lIGlu aXRpYWxpemF0aW9uIHN0YWdlIGFuZCBkbyBvbmx5IG9uY2U/Cgo+ICsgwqAgwqAgwqAgc3BpX2J5 dGVfbGVuID0gcmVhZGwoZmJpLT5yZWdfYmFzZSArIExDRF9TUFVfU1BJX0NUUkwpOwo+ICsgwqAg wqAgwqAgc3BpX2J5dGVfbGVuID0gKHNwaV9ieXRlX2xlbiA+PiA4KSAmIDB4ZmY7Cj4gKyDCoCDC oCDCoCAvKiBBbGlnbm1lbnQgc2hvdWxkIGJlIChzcGlfYnl0ZV9sZW4gKyA3KSA+PiAzLCBidXQK PiArIMKgIMKgIMKgIMKgKiBzcGkgY29udHJvbGxlciByZXF1ZXN0IHNldCBvbmUgbGVzcyB0aGFu IGJpdCBsZW5ndGggKi8KPiArIMKgIMKgIMKgIHNwaV9ieXRlX2xlbiA9IChzcGlfYnl0ZV9sZW4g KyA4KSA+PiAzOwo+ICsgwqAgwqAgwqAgLyogc3BpIGNvbW1hbmQgcHJvdmlkZWQgYnkgcGxhdGZv cm0gc2hvdWxkIGJlIDEsIDIsIG9yIDQgYnl0ZSBhbGlnbmVkICovCj4gKyDCoCDCoCDCoCBpZigz ID09IHNwaV9ieXRlX2xlbikKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNwaV9ieXRlX2xlbiA9 IDQ7Cj4gKwo+ICsgwqAgwqAgwqAgaW9wYWQgPSByZWFkbChmYmktPnJlZ19iYXNlICsgU1BVX0lP UEFEX0NPTlRST0wpOwo+ICsgwqAgwqAgwqAgaWYgKChpb3BhZCAmIENGR19JT1BBRE1PREVfTUFT SykgIT0gUElOX01PREVfRFVNQl8xOF9TUEkpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB3cml0 ZWwoUElOX01PREVfRFVNQl8xOF9TUEksIGZiaS0+cmVnX2Jhc2UgKyBTUFVfSU9QQURfQ09OVFJP TCk7Cj4gKyDCoCDCoCDCoCBpc3IgPSByZWFkbChmYmktPnJlZ19iYXNlICsgU1BVX0lSUV9JU1Ip Owo+ICsgwqAgwqAgwqAgd3JpdGVsKChpc3IgJiB+U1BJX0lSUV9FTkFfTUFTSyksIGZiaS0+cmVn X2Jhc2UgKyBTUFVfSVJRX0lTUik7Cj4gKyDCoCDCoCDCoCBmb3IgKGkgPSAwOyBpIDwgY291bnQ7 IGkrKykgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3BpX2dwaW9fYXNzZXJ0X3NldChzcGlf Z3Bpb19jcywgMCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1ZGVsYXkoaW50ZXJ2YWxfdXMp Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3dpdGNoIChzcGlfYnl0ZV9sZW4pewo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgY2FzZSAxOgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgd3JpdGVsKCpjbWQsIGZiaS0+cmVnX2Jhc2UgKyBMQ0RfU1BVX1NQSV9UWERBVEEpOwo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCBjYXNlIDI6Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB3 cml0ZWwoKih1MTYqKWNtZCwgZmJpLT5yZWdfYmFzZSArIExDRF9TUFVfU1BJX1RYREFUQSk7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIGNhc2UgNDoKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHdy aXRlbCgqKHUzMiopY21kLCBmYmktPnJlZ19iYXNlICsgTENEX1NQVV9TUElfVFhEQVRBKTsKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZGVmYXVsdDoKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRl dl9lcnIoZmJpLT5kZXYsICJXcm9uZyBzcGkgYml0IGxlbmd0aFxuIik7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzcGlfZ3Bpb19hc3NlcnRfc2V0KHNwaV9ncGlvX2NzLCAx KTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldCA9IC0xOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBzcGlfZXhpdDsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNtZCArPSBzcGlfYnl0ZV9s ZW47Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB4ID0gcmVhZGwoZmJpLT5yZWdfYmFzZSArIExD RF9TUFVfU1BJX0NUUkwpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgeCB8PSAweDE7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCB3cml0ZWwoeCwgZmJpLT5yZWdfYmFzZSArIExDRF9TUFVfU1BJ X0NUUkwpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaXNyID0gcmVhZGwoZmJpLT5yZWdfYmFz ZSArIFNQVV9JUlFfSVNSKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHdoaWxlKCEoaXNyICYg U1BJX0lSUV9FTkFfTUFTSykpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IHVkZWxheSgxKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlzciA9IHJl YWRsKGZiaS0+cmVnX2Jhc2UgKyBTUFVfSVJRX0lTUik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCB9Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB4ID0gcmVhZGwoZmJpLT5yZWdfYmFzZSArIExD RF9TUFVfU1BJX0NUUkwpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgeCAmPSB+MHgxOwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgd3JpdGVsKHgsIGZiaS0+cmVnX2Jhc2UgKyBMQ0RfU1BVX1NQ SV9DVFJMKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNwaV9ncGlvX2Fzc2VydF9zZXQoc3Bp X2dwaW9fY3MsIDEpOwo+ICsgwqAgwqAgwqAgfQoKU28gYWZ0ZXIgdGhpcyBsb29wLCB0aGUgJ3Nw aV9ncGlvX2NzJyBpcyBsZWZ0IGFzc2VydGVkLCB3aGljaCBpc24ndCBnb29kLgoKPiArCj4gK3Nw aV9leGl0Ogo+ICsgwqAgwqAgwqAgaWYgKGdwaW9faXNfdmFsaWQoc3BpX2dwaW9fY3MpKQo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3Bpb19mcmVlKHNwaV9ncGlvX2NzKTsKPiArIMKgIMKgIMKg IGlmICgoaW9wYWQgJiBDRkdfSU9QQURNT0RFX01BU0spICE9IFBJTl9NT0RFX0RVTUJfMThfU1BJ KQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgd3JpdGVsKGlvcGFkLCBmYmktPnJlZ19iYXNlICsg U1BVX0lPUEFEX0NPTlRST0wpOwo+ICsKPiArIMKgIMKgIMKgIHJldHVybiByZXQ7Cj4gK30KPiAr RVhQT1JUX1NZTUJPTChweGExNjhmYl9zcGlfc2VuZCk7Cj4gKwo+IMKgc3RhdGljIGludCBkZXRl cm1pbmVfYmVzdF9waXhfZm10KHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyKQo+IMKgewo+ IMKgIMKgIMKgIMKgLyoKPiBAQCAtNjg3LDYgKzc2OCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHB4 YTE2OGZiX3Byb2JlKHN0cnVjdAo+IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiDCoCDCoCDCoCDC oH0KPgo+IMKgIMKgIMKgIMKgaW5mby0+Zml4LnNtZW1fc3RhcnQgPSAodW5zaWduZWQgbG9uZylm YmktPmZiX3N0YXJ0X2RtYTsKPiArIMKgIMKgIMKgIHNldF9ncmFwaGljc19zdGFydChpbmZvLCAw LCAwKTsKClRoaXMgbmVlZCBhIHNlcGFyYXRlIHBhdGNoLgoKPgo+IMKgIMKgIMKgIMKgLyoKPiDC oCDCoCDCoCDCoCAqIFNldCB2aWRlbyBtb2RlIGFjY29yZGluZyB0byBwbGF0Zm9ybSBkYXRhLgo+ IEBAIC03MjgsNiArODEwLDkgQEAgc3RhdGljIGludCBfX2luaXQgcHhhMTY4ZmJfcHJvYmUoc3Ry dWN0Cj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+IMKgIMKgIMKgIMKgd3JpdGVsKDAsIGZiaS0+ cmVnX2Jhc2UgKyBMQ0RfU1BVX1NSQU1fUEFSQTApOwo+IMKgIMKgIMKgIMKgd3JpdGVsKENGR19D U0JfMjU2eDMyKDB4MSl8Q0ZHX0NTQl8yNTZ4MjQoMHgxKXxDRkdfQ1NCXzI1Nng4KDB4MSksCj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmYmktPnJlZ19iYXNlICsgTENEX1NQVV9TUkFNX1BBUkEx KTsKPiArIMKgIMKgIMKgIGlmICgobWktPnNwaV9jdHJsICE9IC0xKSAmJiAobWktPnNwaV9jdHJs ICYgQ0ZHX1NQSV9FTkFfTUFTSykpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB3cml0ZWwobWkt PnNwaV9jdHJsLCBmYmktPnJlZ19iYXNlICsgTENEX1NQVV9TUElfQ1RSTCk7Cj4gKwo+Cj4gwqAg wqAgwqAgwqAvKgo+IMKgIMKgIMKgIMKgICogQWxsb2NhdGUgY29sb3IgbWFwLgo+IEBAIC03NjQs NiArODQ5LDEzIEBAIHN0YXRpYyBpbnQgX19pbml0IHB4YTE2OGZiX3Byb2JlKHN0cnVjdAo+IHBs YXRmb3JtX2RldmljZSAqcGRldikKPiDCoCDCoCDCoCDCoH0KPgo+IMKgIMKgIMKgIMKgcGxhdGZv cm1fc2V0X2RydmRhdGEocGRldiwgZmJpKTsKPiArIMKgIMKgIMKgIGlmIChtaS0+cHhhMTY4ZmJf bGNkX3Bvd2VyKXsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmKG1pLT5weGExNjhmYl9sY2Rf cG93ZXIoZmJpLCBtaS0+c3BpX2dwaW9fY3MsIG1pLT5zcGlfZ3Bpb19yZXNldCwgMSkpewo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGV2X2VycigmcGRldi0+ZGV2LCAiRmFp bGVkIHRvIHBvd2VyIHVwIHB4YTE2OC1mYlxuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBnb3RvIGZhaWxlZF9mcmVlX2lycTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IH0KPiArIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIGRldl9pbmZvKGZiaS0+ZGV2LCAiZnJhbWUg YnVmZmVyIGRldGVjdGVkXG4iKTsKCk5lZWQgYW5vdGhlciBwYXRjaCBmb3IgdGhpcyBhcyB3ZWxs PwoKPiDCoCDCoCDCoCDCoHJldHVybiAwOwo+Cj4gwqBmYWlsZWRfZnJlZV9pcnE6Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdmlkZW8vcHhhMTY4ZmIuaCBiL2RyaXZlcnMvdmlkZW8vcHhhMTY4ZmIu aAo+IGluZGV4IGVlZTA5MjcuLjFlNDg1OWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9w eGExNjhmYi5oCj4gKysrIGIvZHJpdmVycy92aWRlby9weGExNjhmYi5oCj4gQEAgLTE3MCwyOSAr MTcwLDcgQEAKPiDCoCNkZWZpbmUgwqAgwqAgRE1BX0ZSQU1FX0NOVF9NQVNLIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIDB4MDAwMDAwMDMgwqAvKiBWaWRlbyAqLwo+Cj4gwqAvKiBTUEkgQ29udHJv bCBSZWdpc3Rlci4gKi8KPiAtI2RlZmluZSBMQ0RfU1BVX1NQSV9DVFJMIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIDB4MDE4MAo+IC0jZGVmaW5lIMKgIMKgIENGR19TQ0xLQ05UKGRp dikgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKChkaXYpIDw8IDI0KSDCoC8qIDB4RkZ+MHgy ICovCj4gLSNkZWZpbmUgwqAgwqAgQ0ZHX1NDTEtDTlRfTUFTSyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCAweEZGMDAwMDAwCj4gLSNkZWZpbmUgwqAgwqAgQ0ZHX1JYQklUUyhyeCkgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKChyeCkgPDwgMTYpIMKgIC8qIDB4MUZ+MHgxICovCj4g LSNkZWZpbmUgwqAgwqAgQ0ZHX1JYQklUU19NQVNLIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgMHgwMEZGMDAwMAo+IC0jZGVmaW5lIMKgIMKgIENGR19UWEJJVFModHgpIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgICgodHgpIDw8IDgpIMKgIMKgLyogMHgxRn4weDEgKi8KPiAtI2Rl ZmluZSDCoCDCoCBDRkdfVFhCSVRTX01BU0sgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAw eDAwMDBGRjAwCj4gLSNkZWZpbmUgwqAgwqAgQ0ZHX0NMS0lOVihjbGspIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgKChjbGspIDw8IDcpCj4gLSNkZWZpbmUgwqAgwqAgQ0ZHX0NMS0lOVl9N QVNLIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMHgwMDAwMDA4MAo+IC0jZGVmaW5lIMKg IMKgIENGR19LRUVQWEZFUih0cmFuc2ZlcikgwqAgwqAgwqAgwqAgwqAgwqAgKCh0cmFuc2Zlcikg PDwgNikKPiAtI2RlZmluZSDCoCDCoCBDRkdfS0VFUFhGRVJfTUFTSyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoDB4MDAwMDAwNDAKPiAtI2RlZmluZSDCoCDCoCBDRkdfUlhCSVRTVE8wKHJ4KSDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCgocngpIDw8IDUpCj4gLSNkZWZpbmUgwqAgwqAgQ0ZH X1JYQklUU1RPMF9NQVNLIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDB4MDAwMDAwMjAKPiAtI2Rl ZmluZSDCoCDCoCBDRkdfVFhCSVRTVE8wKHR4KSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCgo dHgpIDw8IDQpCj4gLSNkZWZpbmUgwqAgwqAgQ0ZHX1RYQklUU1RPMF9NQVNLIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIDB4MDAwMDAwMTAKPiAtI2RlZmluZSDCoCDCoCBDRkdfU1BJX0VOQShzcGkp IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICgoc3BpKSA8PCAzKQo+IC0jZGVmaW5lIMKgIMKg IENGR19TUElfRU5BX01BU0sgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMHgwMDAwMDAwOAo+ IC0jZGVmaW5lIMKgIMKgIENGR19TUElfU0VMKHNwaSkgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgKChzcGkpIDw8IDIpCj4gLSNkZWZpbmUgwqAgwqAgQ0ZHX1NQSV9TRUxfTUFTSyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCAweDAwMDAwMDA0Cj4gLSNkZWZpbmUgwqAgwqAgQ0ZHX1NQSV8z VzRXQih3aXJlKSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCgod2lyZSkgPDwg MSkKPiAtI2RlZmluZSDCoCDCoCBDRkdfU1BJXzNXNFdCX01BU0sgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgMHgwMDAwMDAwMgo+IC0jZGVmaW5lIMKgIMKgIENGR19TUElfU1RBUlQoc3RhcnQpIMKg IMKgIMKgIMKgIMKgIMKgIMKgIChzdGFydCkKPiAtI2RlZmluZSDCoCDCoCBDRkdfU1BJX1NUQVJU X01BU0sgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMHgwMDAwMDAwMQo+ICsvKiBGb3IgU1BJIHJl Z2lzdGVyLCBwbGVhc2UgcmVmZXIgdG8KPiBhcmNoL2FybS9tYWNoLW1tcC9pbmNsdWRlL21hY2gv cHhhMTY4ZmIuaCAqLwo+Cj4gwqAvKiBTUEkgVHggRGF0YSBSZWdpc3RlciAqLwo+IMKgI2RlZmlu ZSBMQ0RfU1BVX1NQSV9UWERBVEEgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMHgwMTg0 Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdmlkZW8vcHhhMTY4ZmIuaCBiL2luY2x1ZGUvdmlkZW8v cHhhMTY4ZmIuaAo+IGluZGV4IGI1Y2M3MmYuLmYwNDk3YWUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVk ZS92aWRlby9weGExNjhmYi5oCj4gKysrIGIvaW5jbHVkZS92aWRlby9weGExNjhmYi5oCj4gQEAg LTEyMiw2ICsxMjIsMjQgQEAgc3RydWN0IHB4YTE2OGZiX21hY2hfaW5mbyB7Cj4gwqAgwqAgwqAg wqB1bnNpZ25lZCDCoCDCoCDCoCDCoHBhbmVsX3Jic3dhcDoxOwo+IMKgIMKgIMKgIMKgdW5zaWdu ZWQgwqAgwqAgwqAgwqBhY3RpdmU6MTsKPiDCoCDCoCDCoCDCoHVuc2lnbmVkIMKgIMKgIMKgIMKg ZW5hYmxlX2xjZDoxOwo+ICsgwqAgwqAgwqAgLyoKPiArIMKgIMKgIMKgIMKgKiBTUEkgY29udHJv bAo+ICsgwqAgwqAgwqAgwqAqLwo+ICsgwqAgwqAgwqAgdW5zaWduZWQgaW50IMKgIMKgc3BpX2N0 cmw7Cj4gKyDCoCDCoCDCoCB1bnNpZ25lZCBpbnQgwqAgwqBzcGlfZ3Bpb19jczsKPiArIMKgIMKg IMKgIHVuc2lnbmVkIGludCDCoCDCoHNwaV9ncGlvX3Jlc2V0Owo+ICsgwqAgwqAgwqAgLyoKPiAr IMKgIMKgIMKgIMKgKiBwb3dlciBvbi9vZmYgZnVuY3Rpb24uCj4gKyDCoCDCoCDCoCDCoCovCj4g KyDCoCDCoCDCoCBpbnQgKCpweGExNjhmYl9sY2RfcG93ZXIpKHN0cnVjdCBweGExNjhmYl9pbmZv ICosIHVuc2lnbmVkIGludCwKPiB1bnNpZ25lZCBpbnQsIGludCk7Cj4gwqB9Owo+Cj4gKy8qIFNQ SSB1dGlsaXR5IGZvciBjb25maWd1cmUgcGFuZWwgU1BJIGNvbW1hbmQuCj4gKyAqIHZhbHVlOiBj b21tYW5kIGFycmF5LCBlbGVtZW50IHNob3VsZCBiZSAxLCAyIG9yIDQgYnl0ZSBhbGlnbmVkLgo+ ICsgKiBjb3VudDogY29tbWFuZCBhcnJheSBsZW5ndGgKPiArICogc3BpX2dwaW9fY3M6IGdwaW8g bnVtYmVyIGZvciBzcGkgY2hpcCBzZWxlY3QKPiArICogaW50ZXJ2YWxfdXM6IHRpbWUgaW50ZXJ2 YWwgYmV0d2VlbiB0d28gY29tbWFuZHMsIHVzIGFzIHVuaXQgKi8KPiAraW50IHB4YTE2OGZiX3Nw aV9zZW5kKHN0cnVjdCBweGExNjhmYl9pbmZvICpmYmksIHZvaWQgKnZhbHVlLCBpbnQgY291bnQs Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1bnNpZ25lZCBpbnQgc3BpX2dwaW9fY3MsIHVuc2ln bmVkIGludCBpbnRlcnZhbF91cyk7Cj4gKwo+IMKgI2VuZGlmIC8qIF9fQVNNX01BQ0hfUFhBMTY4 RkJfSCAqLwo+IC0tCj4gMS41LjQuMwo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiBsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAo+IGxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwo+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo+Ci0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpDb21lIGJ1aWxkIHdpdGggdXMhIFRoZSBCbGFja0JlcnJ5KFIpIERldmVsb3BlciBDb25m ZXJlbmNlIGluIFNGLCBDQQppcyB0aGUgb25seSBkZXZlbG9wZXIgZXZlbnQgeW91IG5lZWQgdG8g YXR0ZW5kIHRoaXMgeWVhci4gSnVtcHN0YXJ0IHlvdXIKZGV2ZWxvcGluZyBza2lsbHMsIHRha2Ug QmxhY2tCZXJyeSBtb2JpbGUgYXBwbGljYXRpb25zIHRvIG1hcmtldCBhbmQgc3RheSAKYWhlYWQg b2YgdGhlIGN1cnZlLiBKb2luIHVzIGZyb20gTm92ZW1iZXIgOSAtIDEyLCAyMDA5LiBSZWdpc3Rl ciBub3chCmh0dHA6Ly9wLnNmLm5ldC9zZnUvZGV2Y29uZmVyZW5jZQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1mYmRldi1kZXZlbCBtYWlsaW5n IGxpc3QKTGludXgtZmJkZXYtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlz dHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWZiZGV2LWRldmVsCg==