From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Trilok Soni" Subject: [PATCH 05/17] OMAP: Add TI OMAP1 external LCD controller support - SoSSI Date: Tue, 19 Jun 2007 17:22:55 +0530 Message-ID: <5d5443650706190452o7aa5b73dh8fa015053437671a@mail.gmail.com> Reply-To: linux-fbdev-devel@lists.sourceforge.net Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_98383_31302436.1182253975180" Return-path: Received: from sc8-sf-mx1-b.sourceforge.net ([10.3.1.91] helo=mail.sourceforge.net) by sc8-sf-list1-new.sourceforge.net with esmtp (Exim 4.43) id 1I0cGX-0008R3-Cy for linux-fbdev-devel@lists.sourceforge.net; Tue, 19 Jun 2007 04:52:57 -0700 Received: from wa-out-1112.google.com ([209.85.146.183]) by mail.sourceforge.net with esmtp (Exim 4.44) id 1I0cGW-0007PY-Aa for linux-fbdev-devel@lists.sourceforge.net; Tue, 19 Jun 2007 04:52:57 -0700 Received: by wa-out-1112.google.com with SMTP id k22so2529825waf for ; Tue, 19 Jun 2007 04:52:56 -0700 (PDT) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-fbdev-devel-bounces@lists.sourceforge.net Errors-To: linux-fbdev-devel-bounces@lists.sourceforge.net To: linux-fbdev-devel@lists.sourceforge.net, adaplas@gmail.com Cc: juha.yrjola@solidboot.com, imre.deak@solidboot.com, Dirk Behme ------=_Part_98383_31302436.1182253975180 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline -- --Trilok Soni ------=_Part_98383_31302436.1182253975180 Content-Type: text/x-patch; name=0005-OMAP-Add-TI-OMAP1-external-LCD-controller-support-SoSSI.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f34bh4no Content-Disposition: attachment; filename="0005-OMAP-Add-TI-OMAP1-external-LCD-controller-support-SoSSI.patch" RnJvbSAzMzE0ODc4NmE2M2U4ODBiOTlmYThmZTk3NjU1OWRlNDcwNzI1YjNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbXJlIERlYWsgPGltcmUuZGVha0Bzb2xpZGJvb3QuY29tPgpE YXRlOiBTYXQsIDI2IE1heSAyMDA3IDE5OjE5OjE5ICswNTMwClN1YmplY3Q6IFtQQVRDSCAwNS8x N10gT01BUDogQWRkIFRJIE9NQVAxIGV4dGVybmFsIExDRCBjb250cm9sbGVyIHN1cHBvcnQgLSBT b1NTSQoKLSBBZGRzIHN1cHBvcnQgZm9yICBUZXhhcyBJbnN0cnVtZW50cyBPTUFQMSBwcm9jZXNz b3JzIGJvYXJkcwogIGNvbm5lY3RlZCB3aXRoIGV4dGVybmFsIExDRCBjb250cm9sbGVyIHRocm91 Z2ggIlNwZWNpYWwKICBPcHRpbWlTZWQgU2NyZWVuIEludGVyZmFjZSIKClNpZ25lZC1vZmYtYnk6 IFRyaWxvayBTb25pIDxzb25pLnRyaWxva0BnbWFpbC5jb20+Ci0tLQogZHJpdmVycy92aWRlby9v bWFwL0tjb25maWcgIHwgICAgNyArCiBkcml2ZXJzL3ZpZGVvL29tYXAvTWFrZWZpbGUgfCAgICAy ICsKIGRyaXZlcnMvdmlkZW8vb21hcC9zb3NzaS5jICB8ICA2ODcgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA2OTYgaW5zZXJ0aW9u cygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVvL29t YXAvc29zc2kuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vb21hcC9LY29uZmlnIGIvZHJp dmVycy92aWRlby9vbWFwL0tjb25maWcKaW5kZXggZDI3ZGI4NC4uMTc2MDdlOSAxMDA2NDQKLS0t IGEvZHJpdmVycy92aWRlby9vbWFwL0tjb25maWcKKysrIGIvZHJpdmVycy92aWRlby9vbWFwL0tj b25maWcKQEAgLTM2LDMgKzM2LDEwIEBAIGNvbmZpZyBGQl9PTUFQX0RNQV9UVU5FCiAgICAgICAg ICAgYW5zd2VyIHllcy4gQW5zd2VyIG5vIGlmIHlvdSBoYXZlIGEgZGVkaWNhdGVkIHZpZGVvCiAg ICAgICAgICAgbWVtb3J5LCBvciBkb24ndCB1c2UgYW55IG9mIHRoZSBhY2NlbGVyYXRlZCBmZWF0 dXJlcy4KIAorY29uZmlnIEZCX09NQVBfTENEQ19FWFRFUk5BTAorCWJvb2wgIkV4dGVybmFsIExD RCBjb250cm9sbGVyIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBGQl9PTUFQCisJaGVscAorCSAgU2F5 IFkgaGVyZSwgaWYgeW91IHdhbnQgdG8gaGF2ZSBzdXBwb3J0IGZvciBib2FyZHMgd2l0aCBhbgor CSAgZXh0ZXJuYWwgTENEIGNvbnRyb2xsZXIgY29ubmVjdGVkIHRvIHRoZSBTb1NTSS9SRkJJIGlu dGVyZmFjZS4KKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9vbWFwL01ha2VmaWxlIGIvZHJp dmVycy92aWRlby9vbWFwL01ha2VmaWxlCmluZGV4IDEwYjU2NDcuLjUyODliZjkgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvdmlkZW8vb21hcC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3ZpZGVvL29tYXAv TWFrZWZpbGUKQEAgLTksNSArOSw3IEBAIG9ianMteXkgOj0gb21hcGZiX21haW4ubwogb2Jqcy15 JChDT05GSUdfQVJDSF9PTUFQMSkgKz0gbGNkYy5vCiBvYmpzLXkkKENPTkZJR19BUkNIX09NQVAy KSArPSBkaXNwYy5vCiAKK29ianMtJChDT05GSUdfQVJDSF9PTUFQMSkkKENPTkZJR19GQl9PTUFQ X0xDRENfRVhURVJOQUwpICs9IHNvc3NpLm8KKwogb21hcGZiLW9ianMgOj0gJChvYmpzLXl5KQog CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL29tYXAvc29zc2kuYyBiL2RyaXZlcnMvdmlkZW8v b21hcC9zb3NzaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNWM0ZjIK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3ZpZGVvL29tYXAvc29zc2kuYwpAQCAtMCwwICsx LDY4NyBAQAorLyoKKyAqIE9NQVAxIFNwZWNpYWwgT3B0aW1pU2VkIFNjcmVlbiBJbnRlcmZhY2Ug c3VwcG9ydAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA1IE5va2lhIENvcnBvcmF0aW9u CisgKiBBdXRob3I6IEp1aGEgWXJq9mzkIDxqdWhhLnlyam9sYUBub2tpYS5jb20+CisgKgorICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisgKiBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNTkgVGVtcGxlIFBsYWNlIC0g U3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EuCisgKi8KKyNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGxpbnV4L2Ns ay5oPgorI2luY2x1ZGUgPGxpbnV4L2lycS5oPgorCisjaW5jbHVkZSA8YXNtL2lvLmg+CisKKyNp bmNsdWRlIDxhc20vYXJjaC9kbWEuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9vbWFwZmIuaD4KKwor I2luY2x1ZGUgImxjZGMuaCIKKworI2RlZmluZSBNT0RVTEVfTkFNRQkJIm9tYXBmYi1zb3NzaSIK KworI2RlZmluZSBPTUFQX1NPU1NJX0JBU0UgICAgICAgICAweGZmZmJhYzAwCisjZGVmaW5lIFNP U1NJX0lEX1JFRwkJMHgwMAorI2RlZmluZSBTT1NTSV9JTklUMV9SRUcJCTB4MDQKKyNkZWZpbmUg U09TU0lfSU5JVDJfUkVHCQkweDA4CisjZGVmaW5lIFNPU1NJX0lOSVQzX1JFRwkJMHgwYworI2Rl ZmluZSBTT1NTSV9GSUZPX1JFRwkJMHgxMAorI2RlZmluZSBTT1NTSV9SRU9UQUJMRV9SRUcJMHgx NAorI2RlZmluZSBTT1NTSV9URUFSSU5HX1JFRwkweDE4CisjZGVmaW5lIFNPU1NJX0lOSVQxQl9S RUcJMHgxYworI2RlZmluZSBTT1NTSV9GSUZPQl9SRUcJCTB4MjAKKworI2RlZmluZSBETUFfR1ND UiAgICAgICAgICAweGZmZmVkYzA0CisjZGVmaW5lIERNQV9MQ0RfQ0NSICAgICAgIDB4ZmZmZWUz YzIKKyNkZWZpbmUgRE1BX0xDRF9DVFJMICAgICAgMHhmZmZlZTNjNAorI2RlZmluZSBETUFfTENE X0xDSF9DVFJMICAweGZmZmVlM2VhCisKKyNkZWZpbmUgQ09ORl9TT1NTSV9SRVNFVF9SICAgICAg KDEgPDwgMjMpCisKKyNkZWZpbmUgUkRfQUNDRVNTCQkwCisjZGVmaW5lIFdSX0FDQ0VTUwkJMQor CisjZGVmaW5lIFNPU1NJX01BWF9YTUlUX0JZVEVTCSg1MTIgKiAxMDI0KQorCitzdGF0aWMgc3Ry dWN0IHsKKwl2b2lkIF9faW9tZW0JKmJhc2U7CisJc3RydWN0IGNsawkqZmNrOworCXVuc2lnbmVk IGxvbmcJZmNrX2h6OworCXNwaW5sb2NrX3QJbG9jazsKKwlpbnQJCWJ1c19waWNrX2NvdW50Owor CWludAkJYnVzX3BpY2tfd2lkdGg7CisJaW50CQl0ZWFyc3luY19tb2RlOworCWludAkJdGVhcnN5 bmNfbGluZTsKKwl2b2lkCQkoKmxjZGNfY2FsbGJhY2spKHZvaWQgKmRhdGEpOworCXZvaWQJCSps Y2RjX2NhbGxiYWNrX2RhdGE7CisJaW50CQl2c3luY19kbWFfcGVuZGluZzsKKwkvKiB0aW1pbmcg Zm9yIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyAqLworCWludAkJY2xrX2RpdjsKKwl1OAkJY2xrX3R3 MFsyXTsKKwl1OAkJY2xrX3R3MVsyXTsKKwkvKgorCSAqIGlmIGxhc3RfYWNjZXNzIGlzIHRoZSBz YW1lIGFzIGN1cnJlbnQgd2UgZG9uJ3QgaGF2ZSB0byBjaGFuZ2UKKwkgKiB0aGUgdGltaW5ncwor CSAqLworCWludAkJbGFzdF9hY2Nlc3M7CisKKwlzdHJ1Y3Qgb21hcGZiX2RldmljZQkqZmJkZXY7 Cit9IHNvc3NpOworCitzdGF0aWMgaW5saW5lIHUzMiBzb3NzaV9yZWFkX3JlZyhpbnQgcmVnKQor eworICAgICAgICByZXR1cm4gcmVhZGwoc29zc2kuYmFzZSArIHJlZyk7Cit9CisKK3N0YXRpYyBp bmxpbmUgdTE2IHNvc3NpX3JlYWRfcmVnMTYoaW50IHJlZykKK3sKKyAgICAgICAgcmV0dXJuIHJl YWR3KHNvc3NpLmJhc2UgKyByZWcpOworfQorCitzdGF0aWMgaW5saW5lIHU4IHNvc3NpX3JlYWRf cmVnOChpbnQgcmVnKQoreworICAgICAgICByZXR1cm4gcmVhZGIoc29zc2kuYmFzZSArIHJlZyk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzb3NzaV93cml0ZV9yZWcoaW50IHJlZywgdTMyIHZh bHVlKQoreworICAgICAgICB3cml0ZWwodmFsdWUsIHNvc3NpLmJhc2UgKyByZWcpOworfQorCitz dGF0aWMgaW5saW5lIHZvaWQgc29zc2lfd3JpdGVfcmVnMTYoaW50IHJlZywgdTE2IHZhbHVlKQor eworICAgICAgICB3cml0ZXcodmFsdWUsIHNvc3NpLmJhc2UgKyByZWcpOworfQorCitzdGF0aWMg aW5saW5lIHZvaWQgc29zc2lfd3JpdGVfcmVnOChpbnQgcmVnLCB1OCB2YWx1ZSkKK3sKKyAgICAg ICAgd3JpdGViKHZhbHVlLCBzb3NzaS5iYXNlICsgcmVnKTsKK30KKworc3RhdGljIHZvaWQgc29z c2lfc2V0X2JpdHMoaW50IHJlZywgdTMyIGJpdHMpCit7CisgICAgICAgIHNvc3NpX3dyaXRlX3Jl ZyhyZWcsIHNvc3NpX3JlYWRfcmVnKHJlZykgfCBiaXRzKTsKK30KKworc3RhdGljIHZvaWQgc29z c2lfY2xlYXJfYml0cyhpbnQgcmVnLCB1MzIgYml0cykKK3sKKyAgICAgICAgc29zc2lfd3JpdGVf cmVnKHJlZywgc29zc2lfcmVhZF9yZWcocmVnKSAmIH5iaXRzKTsKK30KKworI2RlZmluZSBIWl9U T19QUyh4KQkoMTAwMDAwMDAwMCAvICh4IC8gMTAwMCkpCisKK3N0YXRpYyB1MzIgcHNfdG9fc29z c2lfdGlja3ModTMyIHBzLCBpbnQgZGl2KQoreworCXUzMiBjbGtfcGVyaW9kID0gSFpfVE9fUFMo c29zc2kuZmNrX2h6KSAqIGRpdjsKKwlyZXR1cm4gKGNsa19wZXJpb2QgKyBwcyAtIDEpIC8gY2xr X3BlcmlvZDsKK30KKworc3RhdGljIGludCBjYWxjX3JkX3RpbWluZ3Moc3RydWN0IGV4dGlmX3Rp bWluZ3MgKnQpCit7CisJdTMyIHR3MCwgdHcxOworCWludCByZW9uLCByZW9mZiwgcmVjeWMsIGFj dGltOworCWludCBkaXYgPSB0LT5jbGtfZGl2OworCisJLyoKKwkgKiBNYWtlIHN1cmUgdGhhdCBh ZnRlciBjb252ZXJzaW9uIGl0IHN0aWxsIGhvbGRzIHRoYXQ6CisJICogcmVvZmYgPiByZW9uLCBy ZWN5YyA+PSByZW9mZiwgYWN0aW0gPiByZW9uCisJICovCisJcmVvbiA9IHBzX3RvX3Nvc3NpX3Rp Y2tzKHQtPnJlX29uX3RpbWUsIGRpdik7CisJLyogcmVvbiB3aWxsIGJlIGV4YWN0bHkgb25lIHNv c3NpIHRpY2sgKi8KKwlpZiAocmVvbiA+IDEpCisJCXJldHVybiAtMTsKKworCXJlb2ZmID0gcHNf dG9fc29zc2lfdGlja3ModC0+cmVfb2ZmX3RpbWUsIGRpdik7CisKKwlpZiAocmVvZmYgPD0gcmVv bikKKwkJcmVvZmYgPSByZW9uICsgMTsKKworCXR3MCA9IHJlb2ZmIC0gcmVvbjsKKwlpZiAodHcw ID4gMHgxMCkKKwkJcmV0dXJuIC0xOworCisJcmVjeWMgPSBwc190b19zb3NzaV90aWNrcyh0LT5y ZV9jeWNsZV90aW1lLCBkaXYpOworCWlmIChyZWN5YyA8PSByZW9mZikKKwkJcmVjeWMgPSByZW9m ZiArIDE7CisKKwl0dzEgPSByZWN5YyAtIHR3MDsKKwkvKiB2YWx1ZXMgbGVzcyB0aGVuIDMgcmVz dWx0IGluIHRoZSBTT1NTSSBibG9jayByZXNldHRpbmcgaXRzZWxmICovCisJaWYgKHR3MSA8IDMp CisJCXR3MSA9IDM7CisJaWYgKHR3MSA+IDB4NDApCisJCXJldHVybiAtMTsKKworCWFjdGltID0g cHNfdG9fc29zc2lfdGlja3ModC0+YWNjZXNzX3RpbWUsIGRpdik7CisJaWYgKGFjdGltIDwgcmVv ZmYpCisJCWFjdGltKys7CisJLyoKKwkgKiBhY2Nlc3MgdGltZSAoZGF0YSBob2xkIHRpbWUpIHdp bGwgYmUgZXhhY3RseSBvbmUgc29zc2kKKwkgKiB0aWNrCisJICovCisJaWYgKGFjdGltIC0gcmVv ZmYgPiAxKQorCQlyZXR1cm4gLTE7CisKKwl0LT50aW1bMF0gPSB0dzAgLSAxOworCXQtPnRpbVsx XSA9IHR3MSAtIDE7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjYWxjX3dyX3RpbWlu Z3Moc3RydWN0IGV4dGlmX3RpbWluZ3MgKnQpCit7CisJdTMyIHR3MCwgdHcxOworCWludCB3ZW9u LCB3ZW9mZiwgd2VjeWM7CisJaW50IGRpdiA9IHQtPmNsa19kaXY7CisKKwkvKgorCSAqIE1ha2Ug c3VyZSB0aGF0IGFmdGVyIGNvbnZlcnNpb24gaXQgc3RpbGwgaG9sZHMgdGhhdDoKKwkgKiB3ZW9m ZiA+IHdlb24sIHdlY3ljID49IHdlb2ZmCisJICovCisJd2VvbiA9IHBzX3RvX3Nvc3NpX3RpY2tz KHQtPndlX29uX3RpbWUsIGRpdik7CisJLyogd2VvbiB3aWxsIGJlIGV4YWN0bHkgb25lIHNvc3Np IHRpY2sgKi8KKwlpZiAod2VvbiA+IDEpCisJCXJldHVybiAtMTsKKworCXdlb2ZmID0gcHNfdG9f c29zc2lfdGlja3ModC0+d2Vfb2ZmX3RpbWUsIGRpdik7CisJaWYgKHdlb2ZmIDw9IHdlb24pCisJ CXdlb2ZmID0gd2VvbiArIDE7CisJdHcwID0gd2VvZmYgLSB3ZW9uOworCWlmICh0dzAgPiAweDEw KQorCQlyZXR1cm4gLTE7CisKKwl3ZWN5YyA9IHBzX3RvX3Nvc3NpX3RpY2tzKHQtPndlX2N5Y2xl X3RpbWUsIGRpdik7CisJaWYgKHdlY3ljIDw9IHdlb2ZmKQorCQl3ZWN5YyA9IHdlb2ZmICsgMTsK KworCXR3MSA9IHdlY3ljIC0gdHcwOworCS8qIHZhbHVlcyBsZXNzIHRoZW4gMyByZXN1bHQgaW4g dGhlIFNPU1NJIGJsb2NrIHJlc2V0dGluZyBpdHNlbGYgKi8KKwlpZiAodHcxIDwgMykKKwkJdHcx ID0gMzsKKwlpZiAodHcxID4gMHg0MCkKKwkJcmV0dXJuIC0xOworCisJdC0+dGltWzJdID0gdHcw IC0gMTsKKwl0LT50aW1bM10gPSB0dzEgLSAxOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2 b2lkIF9zZXRfdGltaW5nKGludCBkaXYsIGludCB0dzAsIGludCB0dzEpCit7CisJdTMyIGw7CisK KyNpZmRlZiBWRVJCT1NFCisJZGV2X2RiZyhzb3NzaS5mYmRldi0+ZGV2LCAiVXNpbmcgVFcwID0g JWQsIFRXMSA9ICVkLCBkaXYgPSAlZFxuIiwKKwkJIHR3MCArIDEsIHR3MSArIDEsIGRpdik7Cisj ZW5kaWYKKworCWNsa19zZXRfcmF0ZShzb3NzaS5mY2ssIHNvc3NpLmZja19oeiAvIGRpdik7CisJ Y2xrX2VuYWJsZShzb3NzaS5mY2spOworCWwgPSBzb3NzaV9yZWFkX3JlZyhTT1NTSV9JTklUMV9S RUcpOworCWwgJj0gfigoMHgwZiA8PCAyMCkgfCAoMHgzZiA8PCAyNCkpOworCWwgfD0gKHR3MCA8 PCAyMCkgfCAodHcxIDw8IDI0KTsKKwlzb3NzaV93cml0ZV9yZWcoU09TU0lfSU5JVDFfUkVHLCBs KTsKKwljbGtfZGlzYWJsZShzb3NzaS5mY2spOworfQorCitzdGF0aWMgdm9pZCBfc2V0X2JpdHNf cGVyX2N5Y2xlKGludCBidXNfcGlja19jb3VudCwgaW50IGJ1c19waWNrX3dpZHRoKQoreworCXUz MiBsOworCisJbCA9IHNvc3NpX3JlYWRfcmVnKFNPU1NJX0lOSVQzX1JFRyk7CisJbCAmPSB+MHgz ZmY7CisJbCB8PSAoKGJ1c19waWNrX2NvdW50IC0gMSkgPDwgNSkgfCAoKGJ1c19waWNrX3dpZHRo IC0gMSkgJiAweDFmKTsKKwlzb3NzaV93cml0ZV9yZWcoU09TU0lfSU5JVDNfUkVHLCBsKTsKK30K Kworc3RhdGljIHZvaWQgX3NldF90ZWFyc3luY19tb2RlKGludCBtb2RlLCB1bnNpZ25lZCBsaW5l KQoreworCXUzMiBsOworCisJbCA9IHNvc3NpX3JlYWRfcmVnKFNPU1NJX1RFQVJJTkdfUkVHKTsK KwlsICY9IH4oKCgxIDw8IDExKSAtIDEpIDw8IDE1KTsKKwlsIHw9IGxpbmUgPDwgMTU7CisJbCAm PSB+KDB4MyA8PCAyNik7CisJbCB8PSBtb2RlIDw8IDI2OworCXNvc3NpX3dyaXRlX3JlZyhTT1NT SV9URUFSSU5HX1JFRywgbCk7CisJaWYgKG1vZGUpCisJCXNvc3NpX3NldF9iaXRzKFNPU1NJX0lO SVQyX1JFRywgMSA8PCA2KTsJLyogVEUgbG9naWMgKi8KKwllbHNlCisJCXNvc3NpX2NsZWFyX2Jp dHMoU09TU0lfSU5JVDJfUkVHLCAxIDw8IDYpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0 X3RpbWluZyhpbnQgYWNjZXNzKQoreworCWlmIChhY2Nlc3MgIT0gc29zc2kubGFzdF9hY2Nlc3Mp IHsKKwkJc29zc2kubGFzdF9hY2Nlc3MgPSBhY2Nlc3M7CisJCV9zZXRfdGltaW5nKHNvc3NpLmNs a19kaXYsCisJCQkgICAgc29zc2kuY2xrX3R3MFthY2Nlc3NdLCBzb3NzaS5jbGtfdHcxW2FjY2Vz c10pOworCX0KK30KKworc3RhdGljIHZvaWQgc29zc2lfc3RhcnRfdHJhbnNmZXIodm9pZCkKK3sK KwkvKiBXRSAqLworCXNvc3NpX2NsZWFyX2JpdHMoU09TU0lfSU5JVDJfUkVHLCAxIDw8IDQpOwor CS8qIENTIGFjdGl2ZSBsb3cgKi8KKwlzb3NzaV9jbGVhcl9iaXRzKFNPU1NJX0lOSVQxX1JFRywg MSA8PCAzMCk7Cit9CisKK3N0YXRpYyB2b2lkIHNvc3NpX3N0b3BfdHJhbnNmZXIodm9pZCkKK3sK KwkvKiBXRSAqLworCXNvc3NpX3NldF9iaXRzKFNPU1NJX0lOSVQyX1JFRywgMSA8PCA0KTsKKwkv KiBDUyBhY3RpdmUgbG93ICovCisJc29zc2lfc2V0X2JpdHMoU09TU0lfSU5JVDFfUkVHLCAxIDw8 IDMwKTsKK30KKworc3RhdGljIHZvaWQgd2FpdF9lbmRfb2Zfd3JpdGUodm9pZCkKK3sKKwkvKiBC ZWZvcmUgcmVhZGluZyB3ZSBtdXN0IGNoZWNrIGlmIHNvbWUgd3JpdGluZ3MgYXJlIGdvaW5nIG9u ICovCisJd2hpbGUgKCEoc29zc2lfcmVhZF9yZWcoU09TU0lfSU5JVDJfUkVHKSAmICgxIDw8IDMp KSk7Cit9CisKK3N0YXRpYyB2b2lkIHNlbmRfZGF0YShjb25zdCB2b2lkICpkYXRhLCB1bnNpZ25l ZCBpbnQgbGVuKQoreworCXdoaWxlIChsZW4gPj0gNCkgeworCQlzb3NzaV93cml0ZV9yZWcoU09T U0lfRklGT19SRUcsICooY29uc3QgdTMyICopIGRhdGEpOworCQlsZW4gLT0gNDsKKwkJZGF0YSAr PSA0OworCX0KKwl3aGlsZSAobGVuID49IDIpIHsKKwkJc29zc2lfd3JpdGVfcmVnMTYoU09TU0lf RklGT19SRUcsICooY29uc3QgdTE2ICopIGRhdGEpOworCQlsZW4gLT0gMjsKKwkJZGF0YSArPSAy OworCX0KKwl3aGlsZSAobGVuKSB7CisJCXNvc3NpX3dyaXRlX3JlZzgoU09TU0lfRklGT19SRUcs ICooY29uc3QgdTggKikgZGF0YSk7CisJCWxlbi0tOworCQlkYXRhKys7CisJfQorfQorCitzdGF0 aWMgdm9pZCBzZXRfY3ljbGVzKHVuc2lnbmVkIGludCBsZW4pCit7CisJdW5zaWduZWQgbG9uZyBu cl9jeWNsZXMgPSBsZW4gLyAoc29zc2kuYnVzX3BpY2tfd2lkdGggLyA4KTsKKworCUJVR19PTigo bnJfY3ljbGVzIC0gMSkgJiB+MHgzZmZmZik7CisKKwlzb3NzaV9jbGVhcl9iaXRzKFNPU1NJX0lO SVQxX1JFRywgMHgzZmZmZik7CisJc29zc2lfc2V0X2JpdHMoU09TU0lfSU5JVDFfUkVHLCAobnJf Y3ljbGVzIC0gMSkgJiAweDNmZmZmKTsKK30KKworc3RhdGljIGludCBzb3NzaV9jb252ZXJ0X3Rp bWluZ3Moc3RydWN0IGV4dGlmX3RpbWluZ3MgKnQpCit7CisJaW50IHIgPSAwOworCWludCBkaXYg PSB0LT5jbGtfZGl2OworCisJdC0+Y29udmVydGVkID0gMDsKKworCWlmIChkaXYgPD0gMCB8fCBk aXYgPiA4KQorCQlyZXR1cm4gLTE7CisKKwkvKiBubyBDUyBvbiBTT1NTSSwgc28gaWdub3JlIGNz b24sIGNzb2ZmLCBjc19wdWxzZXdpZHRoICovCisJaWYgKChyID0gY2FsY19yZF90aW1pbmdzKHQp KSA8IDApCisJCXJldHVybiByOworCisJaWYgKChyID0gY2FsY193cl90aW1pbmdzKHQpKSA8IDAp CisJCXJldHVybiByOworCisJdC0+dGltWzRdID0gZGl2OworCisJdC0+Y29udmVydGVkID0gMTsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBzb3NzaV9zZXRfdGltaW5ncyhjb25zdCBz dHJ1Y3QgZXh0aWZfdGltaW5ncyAqdCkKK3sKKwlCVUdfT04oIXQtPmNvbnZlcnRlZCk7CisKKwlz b3NzaS5jbGtfdHcwW1JEX0FDQ0VTU10gPSB0LT50aW1bMF07CisJc29zc2kuY2xrX3R3MVtSRF9B Q0NFU1NdID0gdC0+dGltWzFdOworCisJc29zc2kuY2xrX3R3MFtXUl9BQ0NFU1NdID0gdC0+dGlt WzJdOworCXNvc3NpLmNsa190dzFbV1JfQUNDRVNTXSA9IHQtPnRpbVszXTsKKworCXNvc3NpLmNs a19kaXYgPSB0LT50aW1bNF07Cit9CisKK3N0YXRpYyB2b2lkIHNvc3NpX2dldF9jbGtfaW5mbyh1 MzIgKmNsa19wZXJpb2QsIHUzMiAqbWF4X2Nsa19kaXYpCit7CisJKmNsa19wZXJpb2QgPSBIWl9U T19QUyhzb3NzaS5mY2tfaHopOworCSptYXhfY2xrX2RpdiA9IDg7Cit9CisKK3N0YXRpYyB2b2lk IHNvc3NpX3NldF9iaXRzX3Blcl9jeWNsZShpbnQgYnBjKQoreworCWludCBidXNfcGlja19jb3Vu dCwgYnVzX3BpY2tfd2lkdGg7CisKKwkvKgorCSAqIFdlIHNldCBleHBsaWNpdGx5IHRoZSB0aGUg YnVzX3BpY2tfY291bnQgYXMgd2VsbCwgYWx0aG91Z2gKKwkgKiB3aXRoIHJlbWFwcGluZy9yZW9y ZGVyaW5nIGRpc2FibGVkIGl0IHdpbGwgYmUgY2FsY3VsYXRlZCBieSBIVworCSAqIGFzICgzMiAv IGJ1c19waWNrX3dpZHRoKS4KKwkgKi8KKwlzd2l0Y2ggKGJwYykgeworCWNhc2UgODoKKwkJYnVz X3BpY2tfY291bnQgPSA0OworCQlidXNfcGlja193aWR0aCA9IDg7CisJCWJyZWFrOworCWNhc2Ug MTY6CisJCWJ1c19waWNrX2NvdW50ID0gMjsKKwkJYnVzX3BpY2tfd2lkdGggPSAxNjsKKwkJYnJl YWs7CisJZGVmYXVsdDoKKwkJQlVHKCk7CisJCXJldHVybjsKKwl9CisJc29zc2kuYnVzX3BpY2tf d2lkdGggPSBidXNfcGlja193aWR0aDsKKwlzb3NzaS5idXNfcGlja19jb3VudCA9IGJ1c19waWNr X2NvdW50OworfQorCitzdGF0aWMgaW50IHNvc3NpX3NldHVwX3RlYXJzeW5jKHVuc2lnbmVkIHBp bl9jbnQsCisJCQkJdW5zaWduZWQgaHNfcHVsc2VfdGltZSwgdW5zaWduZWQgdnNfcHVsc2VfdGlt ZSwKKwkJCQlpbnQgaHNfcG9sX2ludiwgaW50IHZzX3BvbF9pbnYsIGludCBkaXYpCit7CisJaW50 IGhzLCB2czsKKwl1MzIgbDsKKworCWlmIChwaW5fY250ICE9IDEgfHwgZGl2IDwgMSB8fCBkaXYg PiA4KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWhzID0gcHNfdG9fc29zc2lfdGlja3MoaHNfcHVs c2VfdGltZSwgZGl2KTsKKwl2cyA9IHBzX3RvX3Nvc3NpX3RpY2tzKHZzX3B1bHNlX3RpbWUsIGRp dik7CisJaWYgKHZzIDwgOCB8fCB2cyA8PSBocyB8fCB2cyA+PSAoMSA8PCAxMikpCisJCXJldHVy biAtRURPTTsKKwl2cyAvPSA4OworCXZzLS07CisJaWYgKGhzID4gOCkKKwkJaHMgPSA4OworCWlm IChocykKKwkJaHMtLTsKKworCWRldl9kYmcoc29zc2kuZmJkZXYtPmRldiwKKwkJInNldHVwX3Rl YXJzeW5jOiBocyAlZCB2cyAlZCBoc19pbnYgJWQgdnNfaW52ICVkXG4iLAorCQlocywgdnMsIGhz X3BvbF9pbnYsIHZzX3BvbF9pbnYpOworCisJY2xrX2VuYWJsZShzb3NzaS5mY2spOworCWwgPSBz b3NzaV9yZWFkX3JlZyhTT1NTSV9URUFSSU5HX1JFRyk7CisJbCAmPSB+KCgxIDw8IDE1KSAtIDEp OworCWwgfD0gdnMgPDwgMzsKKwlsIHw9IGhzOworCWlmIChoc19wb2xfaW52KQorCQlsIHw9IDEg PDwgMjk7CisJZWxzZQorCQlsICY9IH4oMSA8PCAyOSk7CisJaWYgKHZzX3BvbF9pbnYpCisJCWwg fD0gMSA8PCAyODsKKwllbHNlCisJCWwgJj0gfigxIDw8IDI4KTsKKwlzb3NzaV93cml0ZV9yZWco U09TU0lfVEVBUklOR19SRUcsIGwpOworCWNsa19kaXNhYmxlKHNvc3NpLmZjayk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBzb3NzaV9lbmFibGVfdGVhcnN5bmMoaW50IGVuYWJsZSwg dW5zaWduZWQgbGluZSkKK3sKKwlpbnQgbW9kZTsKKworCWRldl9kYmcoc29zc2kuZmJkZXYtPmRl diwgInRlYXJzeW5jICVkIGxpbmUgJWRcbiIsIGVuYWJsZSwgbGluZSk7CisJaWYgKGxpbmUgPj0g MSA8PCAxMSkKKwkJcmV0dXJuIC1FSU5WQUw7CisJaWYgKGVuYWJsZSkgeworCQlpZiAobGluZSkK KwkJCW1vZGUgPSAyOwkJLyogSFMgb3IgVlMgKi8KKwkJZWxzZQorCQkJbW9kZSA9IDM7CQkvKiBW UyBvbmx5ICovCisJfSBlbHNlCisJCW1vZGUgPSAwOworCXNvc3NpLnRlYXJzeW5jX2xpbmUgPSBs aW5lOworCXNvc3NpLnRlYXJzeW5jX21vZGUgPSBtb2RlOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyB2b2lkIHNvc3NpX3dyaXRlX2NvbW1hbmQoY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQg aW50IGxlbikKK3sKKwljbGtfZW5hYmxlKHNvc3NpLmZjayk7CisJc2V0X3RpbWluZyhXUl9BQ0NF U1MpOworCV9zZXRfYml0c19wZXJfY3ljbGUoc29zc2kuYnVzX3BpY2tfY291bnQsIHNvc3NpLmJ1 c19waWNrX3dpZHRoKTsKKwkvKiBDTUQjL0RBVEEgKi8KKwlzb3NzaV9jbGVhcl9iaXRzKFNPU1NJ X0lOSVQxX1JFRywgMSA8PCAxOCk7CisJc2V0X2N5Y2xlcyhsZW4pOworCXNvc3NpX3N0YXJ0X3Ry YW5zZmVyKCk7CisJc2VuZF9kYXRhKGRhdGEsIGxlbik7CisJc29zc2lfc3RvcF90cmFuc2Zlcigp OworCXdhaXRfZW5kX29mX3dyaXRlKCk7CisJY2xrX2Rpc2FibGUoc29zc2kuZmNrKTsKK30KKwor c3RhdGljIHZvaWQgc29zc2lfd3JpdGVfZGF0YShjb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBp bnQgbGVuKQoreworCWNsa19lbmFibGUoc29zc2kuZmNrKTsKKwlzZXRfdGltaW5nKFdSX0FDQ0VT Uyk7CisJX3NldF9iaXRzX3Blcl9jeWNsZShzb3NzaS5idXNfcGlja19jb3VudCwgc29zc2kuYnVz X3BpY2tfd2lkdGgpOworCS8qIENNRCMvREFUQSAqLworCXNvc3NpX3NldF9iaXRzKFNPU1NJX0lO SVQxX1JFRywgMSA8PCAxOCk7CisJc2V0X2N5Y2xlcyhsZW4pOworCXNvc3NpX3N0YXJ0X3RyYW5z ZmVyKCk7CisJc2VuZF9kYXRhKGRhdGEsIGxlbik7CisJc29zc2lfc3RvcF90cmFuc2ZlcigpOwor CXdhaXRfZW5kX29mX3dyaXRlKCk7CisJY2xrX2Rpc2FibGUoc29zc2kuZmNrKTsKK30KKworc3Rh dGljIHZvaWQgc29zc2lfdHJhbnNmZXJfYXJlYShpbnQgd2lkdGgsIGludCBoZWlnaHQsCisJCQkJ dm9pZCAoY2FsbGJhY2spKHZvaWQgKmRhdGEpLCB2b2lkICpkYXRhKQoreworCUJVR19PTihjYWxs YmFjayA9PSBOVUxMKTsKKworCXNvc3NpLmxjZGNfY2FsbGJhY2sgPSBjYWxsYmFjazsKKwlzb3Nz aS5sY2RjX2NhbGxiYWNrX2RhdGEgPSBkYXRhOworCisJY2xrX2VuYWJsZShzb3NzaS5mY2spOwor CXNldF90aW1pbmcoV1JfQUNDRVNTKTsKKwlfc2V0X2JpdHNfcGVyX2N5Y2xlKHNvc3NpLmJ1c19w aWNrX2NvdW50LCBzb3NzaS5idXNfcGlja193aWR0aCk7CisJX3NldF90ZWFyc3luY19tb2RlKHNv c3NpLnRlYXJzeW5jX21vZGUsIHNvc3NpLnRlYXJzeW5jX2xpbmUpOworCS8qIENNRCMvREFUQSAq LworCXNvc3NpX3NldF9iaXRzKFNPU1NJX0lOSVQxX1JFRywgMSA8PCAxOCk7CisJc2V0X2N5Y2xl cyh3aWR0aCAqIGhlaWdodCAqIHNvc3NpLmJ1c19waWNrX3dpZHRoIC8gOCk7CisKKwlzb3NzaV9z dGFydF90cmFuc2ZlcigpOworCWlmIChzb3NzaS50ZWFyc3luY19tb2RlKSB7CisJCS8qCisJCSAq IFdhaXQgZm9yIHRoZSBzeW5jIHNpZ25hbCBhbmQgc3RhcnQgdGhlIHRyYW5zZmVyIG9ubHkKKwkJ ICogdGhlbi4gV2UgY2FuJ3Qgc2VlbSB0byBiZSBhYmxlIHRvIHVzZSBIVyBzeW5jIERNQSBmb3IK KwkJICogdGhpcyBzaW5jZSBMQ0QgRE1BIHNob3dzIGh1Z2UgbGF0ZW5jaWVzLCBhcyBpZiBpdAor CQkgKiB3b3VsZCBpZ25vcmUgc29tZSBvZiB0aGUgRE1BIHJlcXVlc3RzIGZyb20gU29TU0kuCisJ CSAqLworCQl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJCXNwaW5fbG9ja19pcnFzYXZlKCZzb3Nz aS5sb2NrLCBmbGFncyk7CisJCXNvc3NpLnZzeW5jX2RtYV9wZW5kaW5nKys7CisJCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnNvc3NpLmxvY2ssIGZsYWdzKTsKKwl9IGVsc2UKKwkJLyogSnVzdCBz dGFydCB0aGUgdHJhbnNmZXIgcmlnaHQgYXdheS4gKi8KKwkJb21hcF9lbmFibGVfbGNkX2RtYSgp OworfQorCitzdGF0aWMgdm9pZCBzb3NzaV9kbWFfY2FsbGJhY2sodm9pZCAqZGF0YSkKK3sKKwlv bWFwX3N0b3BfbGNkX2RtYSgpOworCXNvc3NpX3N0b3BfdHJhbnNmZXIoKTsKKwljbGtfZGlzYWJs ZShzb3NzaS5mY2spOworCXNvc3NpLmxjZGNfY2FsbGJhY2soc29zc2kubGNkY19jYWxsYmFja19k YXRhKTsKK30KKworc3RhdGljIHZvaWQgc29zc2lfcmVhZF9kYXRhKHZvaWQgKmRhdGEsIHVuc2ln bmVkIGludCBsZW4pCit7CisJY2xrX2VuYWJsZShzb3NzaS5mY2spOworCXNldF90aW1pbmcoUkRf QUNDRVNTKTsKKwlfc2V0X2JpdHNfcGVyX2N5Y2xlKHNvc3NpLmJ1c19waWNrX2NvdW50LCBzb3Nz aS5idXNfcGlja193aWR0aCk7CisJLyogQ01EIy9EQVRBICovCisJc29zc2lfc2V0X2JpdHMoU09T U0lfSU5JVDFfUkVHLCAxIDw8IDE4KTsKKwlzZXRfY3ljbGVzKGxlbik7CisJc29zc2lfc3RhcnRf dHJhbnNmZXIoKTsKKwl3aGlsZSAobGVuID49IDQpIHsKKwkJKih1MzIgKikgZGF0YSA9IHNvc3Np X3JlYWRfcmVnKFNPU1NJX0ZJRk9fUkVHKTsKKwkJbGVuIC09IDQ7CisJCWRhdGEgKz0gNDsKKwl9 CisJd2hpbGUgKGxlbiA+PSAyKSB7CisJCSoodTE2ICopIGRhdGEgPSBzb3NzaV9yZWFkX3JlZzE2 KFNPU1NJX0ZJRk9fUkVHKTsKKwkJbGVuIC09IDI7CisJCWRhdGEgKz0gMjsKKwl9CisJd2hpbGUg KGxlbikgeworCQkqKHU4ICopIGRhdGEgPSBzb3NzaV9yZWFkX3JlZzgoU09TU0lfRklGT19SRUcp OworCQlsZW4tLTsKKwkJZGF0YSsrOworCX0KKwlzb3NzaV9zdG9wX3RyYW5zZmVyKCk7CisJY2xr X2Rpc2FibGUoc29zc2kuZmNrKTsKK30KKworc3RhdGljIGlycXJldHVybl90IHNvc3NpX21hdGNo X2lycShpbnQgaXJxLCB2b2lkICpkYXRhKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlz cGluX2xvY2tfaXJxc2F2ZSgmc29zc2kubG9jaywgZmxhZ3MpOworCWlmIChzb3NzaS52c3luY19k bWFfcGVuZGluZykgeworCQlzb3NzaS52c3luY19kbWFfcGVuZGluZy0tOworCQlvbWFwX2VuYWJs ZV9sY2RfZG1hKCk7CisJfQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNvc3NpLmxvY2ssIGZs YWdzKTsKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0YXRpYyBpbnQgc29zc2lfaW5pdChz dHJ1Y3Qgb21hcGZiX2RldmljZSAqZmJkZXYpCit7CisJdTMyIGwsIGs7CisJc3RydWN0IGNsayAq ZmNrOworCXN0cnVjdCBjbGsgKmRwbGwxb3V0X2NrOworCWludCByOworCisJc29zc2kuYmFzZSA9 ICh2b2lkIF9faW9tZW0gKilJT19BRERSRVNTKE9NQVBfU09TU0lfQkFTRSk7CisJc29zc2kuZmJk ZXYgPSBmYmRldjsKKwlzcGluX2xvY2tfaW5pdCgmc29zc2kubG9jayk7CisKKwlkcGxsMW91dF9j ayA9IGNsa19nZXQoZmJkZXYtPmRldiwgImNrX2RwbGwxb3V0Iik7CisJaWYgKElTX0VSUihkcGxs MW91dF9jaykpIHsKKwkJZGV2X2VycihmYmRldi0+ZGV2LCAiY2FuJ3QgZ2V0IERQTEwxT1VUIGNs b2NrXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoZHBsbDFvdXRfY2spOworCX0KKwkvKgorCSAqIFdl IG5lZWQgdGhlIHBhcmVudCBjbG9jayByYXRlLCB3aGljaCB3ZSBtaWdodCBkaXZpZGUgZnVydGhl cgorCSAqIGRlcGVuZGluZyBvbiB0aGUgdGltaW5nIHJlcXVpcmVtZW50cyBvZiB0aGUgY29udHJv bGxlci4gU2VlCisJICogX3NldF90aW1pbmdzLgorCSAqLworCXNvc3NpLmZja19oeiA9IGNsa19n ZXRfcmF0ZShkcGxsMW91dF9jayk7CisJY2xrX3B1dChkcGxsMW91dF9jayk7CisKKwlmY2sgPSBj bGtfZ2V0KGZiZGV2LT5kZXYsICJja19zb3NzaSIpOworCWlmIChJU19FUlIoZmNrKSkgeworCQlk ZXZfZXJyKGZiZGV2LT5kZXYsICJjYW4ndCBnZXQgU29TU0kgZnVuY3Rpb25hbCBjbG9ja1xuIik7 CisJCXJldHVybiBQVFJfRVJSKGZjayk7CisJfQorCXNvc3NpLmZjayA9IGZjazsKKworCS8qIFJl c2V0IGFuZCBlbmFibGUgdGhlIFNvU1NJIG1vZHVsZSAqLworCWwgPSBvbWFwX3JlYWRsKE1PRF9D T05GX0NUUkxfMSk7CisJbCB8PSBDT05GX1NPU1NJX1JFU0VUX1I7CisJb21hcF93cml0ZWwobCwg TU9EX0NPTkZfQ1RSTF8xKTsKKwlsICY9IH5DT05GX1NPU1NJX1JFU0VUX1I7CisJb21hcF93cml0 ZWwobCwgTU9EX0NPTkZfQ1RSTF8xKTsKKworCWNsa19lbmFibGUoc29zc2kuZmNrKTsKKwlsID0g b21hcF9yZWFkbChBUk1fSURMRUNUMik7CisJbCAmPSB+KDEgPDwgOCk7CQkJLyogRE1BQ0tfUkVR ICovCisJb21hcF93cml0ZWwobCwgQVJNX0lETEVDVDIpOworCisJbCA9IHNvc3NpX3JlYWRfcmVn KFNPU1NJX0lOSVQyX1JFRyk7CisJLyogRW5hYmxlIGFuZCByZXNldCB0aGUgU29TU0kgYmxvY2sg Ki8KKwlsIHw9ICgxIDw8IDApIHwgKDEgPDwgMSk7CisJc29zc2lfd3JpdGVfcmVnKFNPU1NJX0lO SVQyX1JFRywgbCk7CisJLyogVGFrZSBTb1NTSSBvdXQgb2YgcmVzZXQgKi8KKwlsICY9IH4oMSA8 PCAxKTsKKwlzb3NzaV93cml0ZV9yZWcoU09TU0lfSU5JVDJfUkVHLCBsKTsKKworCXNvc3NpX3dy aXRlX3JlZyhTT1NTSV9JRF9SRUcsIDApOworCWwgPSBzb3NzaV9yZWFkX3JlZyhTT1NTSV9JRF9S RUcpOworCWsgPSBzb3NzaV9yZWFkX3JlZyhTT1NTSV9JRF9SRUcpOworCisJaWYgKGwgIT0gMHg1 NTU1NTU1NSB8fCBrICE9IDB4YWFhYWFhYWEpIHsKKwkJZGV2X2VycihmYmRldi0+ZGV2LAorCQkJ ImludmFsaWQgU29TU0kgc3luYyBwYXR0ZXJuOiAlMDh4LCAlMDh4XG4iLCBsLCBrKTsKKwkJciA9 IC1FTk9ERVY7CisJCWdvdG8gZXJyOworCX0KKworCWlmICgociA9IG9tYXBfbGNkY19zZXRfZG1h X2NhbGxiYWNrKHNvc3NpX2RtYV9jYWxsYmFjaywgTlVMTCkpIDwgMCkgeworCQlkZXZfZXJyKGZi ZGV2LT5kZXYsICJjYW4ndCBnZXQgTENEQyBJUlFcbiIpOworCQlyID0gLUVOT0RFVjsKKwkJZ290 byBlcnI7CisJfQorCisJbCA9IHNvc3NpX3JlYWRfcmVnKFNPU1NJX0lEX1JFRyk7IC8qIENvbXBv bmVudCBjb2RlICovCisJbCA9IHNvc3NpX3JlYWRfcmVnKFNPU1NJX0lEX1JFRyk7CisJZGV2X2lu Zm8oZmJkZXYtPmRldiwgIlNvU1NJIHZlcnNpb24gJWQuJWQgaW5pdGlhbGl6ZWRcbiIsCisJCWwg Pj4gMTYsIGwgJiAweGZmZmYpOworCisJbCA9IHNvc3NpX3JlYWRfcmVnKFNPU1NJX0lOSVQxX1JF Ryk7CisJbCB8PSAoMSA8PCAxOSk7IC8qIERNQV9NT0RFICovCisJbCAmPSB+KDEgPDwgMzEpOyAv KiBSRU9SREVSSU5HICovCisJc29zc2lfd3JpdGVfcmVnKFNPU1NJX0lOSVQxX1JFRywgbCk7CisK KwlpZiAoKHIgPSByZXF1ZXN0X2lycShJTlRfMTYxMF9Tb1NTSV9NQVRDSCwgc29zc2lfbWF0Y2hf aXJxLAorCQkJICAgICBJUlFUX0ZBTExJTkcsCisJICAgICAic29zc2lfbWF0Y2giLCBzb3NzaS5m YmRldi0+ZGV2KSkgPCAwKSB7CisJCWRldl9lcnIoc29zc2kuZmJkZXYtPmRldiwgImNhbid0IGdl dCBTb1NTSSBtYXRjaCBJUlFcbiIpOworCQlnb3RvIGVycjsKKwl9CisKKwljbGtfZGlzYWJsZShz b3NzaS5mY2spOworCXJldHVybiAwOworCitlcnI6CisJY2xrX2Rpc2FibGUoc29zc2kuZmNrKTsK KwljbGtfcHV0KHNvc3NpLmZjayk7CisJcmV0dXJuIHI7Cit9CisKK3N0YXRpYyB2b2lkIHNvc3Np X2NsZWFudXAodm9pZCkKK3sKKwlvbWFwX2xjZGNfZnJlZV9kbWFfY2FsbGJhY2soKTsKKwljbGtf cHV0KHNvc3NpLmZjayk7Cit9CisKK3N0cnVjdCBsY2RfY3RybF9leHRpZiBvbWFwMV9leHRfaWYg PSB7CisJLmluaXQJCQk9IHNvc3NpX2luaXQsCisJLmNsZWFudXAJCT0gc29zc2lfY2xlYW51cCwK KwkuZ2V0X2Nsa19pbmZvCQk9IHNvc3NpX2dldF9jbGtfaW5mbywKKwkuY29udmVydF90aW1pbmdz CT0gc29zc2lfY29udmVydF90aW1pbmdzLAorCS5zZXRfdGltaW5ncwkJPSBzb3NzaV9zZXRfdGlt aW5ncywKKwkuc2V0X2JpdHNfcGVyX2N5Y2xlCT0gc29zc2lfc2V0X2JpdHNfcGVyX2N5Y2xlLAor CS5zZXR1cF90ZWFyc3luYwkJPSBzb3NzaV9zZXR1cF90ZWFyc3luYywKKwkuZW5hYmxlX3RlYXJz eW5jCT0gc29zc2lfZW5hYmxlX3RlYXJzeW5jLAorCS53cml0ZV9jb21tYW5kCQk9IHNvc3NpX3dy aXRlX2NvbW1hbmQsCisJLnJlYWRfZGF0YQkJPSBzb3NzaV9yZWFkX2RhdGEsCisJLndyaXRlX2Rh dGEJCT0gc29zc2lfd3JpdGVfZGF0YSwKKwkudHJhbnNmZXJfYXJlYQkJPSBzb3NzaV90cmFuc2Zl cl9hcmVhLAorCisJLm1heF90cmFuc21pdF9zaXplCT0gU09TU0lfTUFYX1hNSVRfQllURVMsCit9 OworCi0tIAoxLjUuMAoK ------=_Part_98383_31302436.1182253975180 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ------=_Part_98383_31302436.1182253975180 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Linux-fbdev-devel mailing list Linux-fbdev-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel ------=_Part_98383_31302436.1182253975180--