From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965014AbWFHU5b (ORCPT ); Thu, 8 Jun 2006 16:57:31 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S965015AbWFHU5b (ORCPT ); Thu, 8 Jun 2006 16:57:31 -0400 Received: from moutng.kundenserver.de ([212.227.126.186]:49144 "EHLO moutng.kundenserver.de") by vger.kernel.org with ESMTP id S965014AbWFHU5a (ORCPT ); Thu, 8 Jun 2006 16:57:30 -0400 From: Oliver Bock To: linux-kernel@vger.kernel.org Subject: [PATCH 1/1] usb: new driver for Cypress CY7C63xxx mirco controllers Date: Thu, 8 Jun 2006 22:57:18 +0200 User-Agent: KMail/1.9.1 Cc: greg@kroah.com, alan@redhat.com MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart3785250.sgug780oYd"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200606082257.23286.o.bock@fh-wolfenbuettel.de> X-Provags-ID: kundenserver.de abuse@kundenserver.de login:dd33dd6c1d5f49fc970db4042b12446b Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org --nextPart3785250.sgug780oYd Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: base64 Content-Disposition: inline RnJvbTogT2xpdmVyIEJvY2sgPG8uYm9ja0BmaC13b2xmZW5idWV0dGVsLmRlPgoKVGhpcyBpcyBh IG5ldyBkcml2ZXIgZm9yIHRoZSBDeXByZXNzIENZN0M2M3h4eCBtaXJjbyBjb250cm9sbGVyIHNl cmllcy4gSXQgCmN1cnJlbnRseSBzdXBwb3J0cyB0aGUgcHJlLXByb2dyYW1tZWQgQ1lDNjMwMDFB LVBDIGJ5IEFLIE1vZHVsLUJ1cyBHbWJILgpJdCdzIGJhc2VkIG9uIGEga2VybmVsIDIuNCBkcml2 ZXIgKGN5cG9ydCkgYnkgTWFyY3VzIE1hdWwgd2hpY2ggSSBwb3J0ZWQgdG8ga2VybmVsIDIuNiAK dXNpbmcgc3lzZnMuIEkgaW50ZW5kIHRvIHN1cHBvcnQgbW9yZSBjb250cm9sbGVycyBvZiB0aGlz IGZhbWlseSAoYW5kIG1vcmUgZmVhdHVyZXMpIGFzCnNvb24gYXMgSSBnZXQgaG9sZCBvZiB0aGUg cmVxdWlyZWQgSURzIGV0Yy4gUGxlYXNlIHNlZSB0aGUgc291cmNlIGNvZGUncyBoZWFkZXIgZm9y Cm1vcmUgaW5mb3JtYXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBPbGl2ZXIgQm9jayA8by5ib2NrQGZo LXdvbGZlbmJ1ZXR0ZWwuZGU+CgotLS0KClBsZWFzZSBDQyBtZSBhcyBJJ20gbm90IHlldCBzdWJz Y3JpYmVkIHRvIExLTUwuIEFueSBjb21tZW50cyBhcmUgd2VsY29tZS4KU3BlY2lhbCB0aGFua3Mg dG8gR3JlZyBLLUggZm9yIGhpcyBoZWxwZnVsIHN1cHBvcnQhCgpkaWZmIGFnYWluc3QgMi42LjE2 LjE5CgotLS0gbGludXgtMi42LjE2LjE5L2RyaXZlcnMvdXNiL01ha2VmaWxlLm9yaWegoKAyMDA2 LTA1LTMxIDAyOjMxOjQ0LjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMi42LjE2LjE5L2RyaXZl cnMvdXNiL01ha2VmaWxloKCgoKCgoKAyMDA2LTA2LTA0IDIxOjAzOjI0LjAwMDAwMDAwMCArMDIw MApAQCAtNjIsNiArNjIsNyBAQCBvYmotJChDT05GSUdfVVNCX01JQ1JPVEVLKaCgoKArPSBpbWFn ZS8KoG9iai0kKENPTkZJR19VU0JfU0VSSUFMKaCgoKCgoKArPSBzZXJpYWwvCqAKoG9iai0kKENP TkZJR19VU0JfQVVFUlNXQUxEKaCgoKArPSBtaXNjLworb2JqLSQoQ09ORklHX1VTQl9DWTdDNjMp oKCgoKCgoCs9IG1pc2MvCqBvYmotJChDT05GSUdfVVNCX0NZVEhFUk0poKCgoKCgKz0gbWlzYy8K oG9iai0kKENPTkZJR19VU0JfRU1JMjYpoKCgoKCgoKCgoKCgoKCgoCs9IG1pc2MvCqBvYmotJChD T05GSUdfVVNCX0VNSTYyKaCgoKCgoKCgoKCgoKCgoKArPSBtaXNjLwotLS0gbGludXgtMi42LjE2 LjE5L2RyaXZlcnMvdXNiL21pc2MvS2NvbmZpZy5vcmlnoKCgoKCgoDIwMDYtMDUtMzEgMDI6MzE6 NDQuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTYuMTkvZHJpdmVycy91c2IvbWlzYy9L Y29uZmlnoKCgoDIwMDYtMDYtMDQgMjE6MDI6MjEuMDAwMDAwMDAwICswMjAwCkBAIC04OCw2ICs4 OCwyMCBAQCBjb25maWcgVVNCX0xFRAqgoKCgoKCgoCCgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBh cyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCqCgoKCgoKCgIKBtb2R1bGUgd2lsbCBiZSBj YWxsZWQgdXNibGVkLgqgCitjb25maWcgVVNCX0NZN0M2MworoKCgoKCgoHRyaXN0YXRlICJDeXBy ZXNzIENZN0M2M3h4eCBVU0IgZHJpdmVyIHN1cHBvcnQiCiugoKCgoKCgZGVwZW5kcyBvbiBVU0IK K6CgoKCgoKBoZWxwCiugoKCgoKCgIKBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGNvbm5lY3Qg YSBDeXByZXNzIENZN0M2M3h4eAoroKCgoKCgoCCgbWljcm8gY29udHJvbGxlciB0byB5b3VyIGNv bXB1dGVyJ3MgVVNCIHBvcnQuIFRoaXMgZHJpdmVyCiugoKCgoKCgIKBzdXBwb3J0cyB0aGUgcHJl LXByb2dyYW1tZWQgZGV2aWNlcyAoaW5jbC4gZmlybXdhcmUpIGJ5CiugoKCgoKCgIKBBSyBNb2R1 bC1CdXMgQ29tcHV0ZXIgR21iSC4KKworoKCgoKCgoCCgUGxlYXNlIHNlZTogaHR0cDovL3d3dy5h ay1tb2R1bC1idXMuZGUvc3RhdC9taWtyb2NvbnRyb2xsZXIuaHRtbAorCiugoKCgoKCgIKBUbyBj b21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKK6CgoKCg oKAgoG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBjeTdjNjMuCisKoGNvbmZpZyBVU0JfQ1lUSEVSTQqg oKCgoKCgoHRyaXN0YXRlICJDeXByZXNzIFVTQiB0aGVybW9tZXRlciBkcml2ZXIgc3VwcG9ydCIK oKCgoKCgoKBkZXBlbmRzIG9uIFVTQgotLS0gbGludXgtMi42LjE2LjE5L2RyaXZlcnMvdXNiL21p c2MvTWFrZWZpbGUub3JpZ6CgoKCgoDIwMDYtMDUtMzEgMDI6MzE6NDQuMDAwMDAwMDAwICswMjAw CisrKyBsaW51eC0yLjYuMTYuMTkvZHJpdmVycy91c2IvbWlzYy9NYWtlZmlsZaCgoDIwMDYtMDYt MDQgMjE6MDI6NTIuMDAwMDAwMDAwICswMjAwCkBAIC00LDYgKzQsNyBAQAqgIwqgCqBvYmotJChD T05GSUdfVVNCX0FVRVJTV0FMRCmgoKCgKz0gYXVlcnN3YWxkLm8KK29iai0kKENPTkZJR19VU0Jf Q1k3QzYzKaCgoKCgoKArPSBjeTdjNjMubwqgb2JqLSQoQ09ORklHX1VTQl9DWVRIRVJNKaCgoKCg oCs9IGN5dGhlcm0ubwqgb2JqLSQoQ09ORklHX1VTQl9FTUkyNimgoKCgoKCgoKCgoKCgoKCgKz0g ZW1pMjYubwqgb2JqLSQoQ09ORklHX1VTQl9FTUk2MimgoKCgoKCgoKCgoKCgoKCgKz0gZW1pNjIu bwotLS0gbGludXgtMi42LjE2LjE5L2RyaXZlcnMvdXNiL21pc2MvY3k3YzYzLmMub3JpZ6CgoKCg oDE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuMTYuMTkv ZHJpdmVycy91c2IvbWlzYy9jeTdjNjMuY6CgoDIwMDYtMDYtMDQgMjM6NDU6NTQuMDAwMDAwMDAw ICswMjAwCkBAIC0wLDAgKzEsMjQ0IEBACisvKgorKiBjeTdjNjMuYworKgorKiBDb3B5cmlnaHQg KGMpIDIwMDYgT2xpdmVyIEJvY2sgKGJvY2tAZmgtd29sZmVuYnVldHRlbC5kZSkKKyoKKyqgoKCg oKBUaGlzIGRyaXZlciBpcyBiYXNlZCBvbiB0aGUgQ3lwcmVzcyBUaGVybW9tZXRlciBVU0IgRHJp dmVyIGJ5CisqoKCgoKCgTWFyY3VzIE1hdWwgYW5kIHRoZSAyLjAgdmVyc2lvbiBvZiBHcmVnIEty b2FoLUhhcnRtYW4ncworKqCgoKCgoFVTQiBTa2VsZXRvbiBkcml2ZXIuCisqCisqoKCgoKCgSXMg aXMgYSBnZW5lcmljIGRyaXZlciBmb3IgdGhlIEN5cHJlc3MgQ1k3QzYzMDAwIGZhbWlseS4KKyqg oKCgoKBGb3IgdGhlIHRpbWUgYmVpbmcgaXQgZW5hYmxlcyB5b3UgdG8gdG9nZ2xlIHRoZSBzaW5n bGUgSS9PIHBvcnRzCisqoKCgoKCgb2YgdGhlIGRldmljZS4KKyoKKyqgoKCgoKBTdXBwb3J0ZWQg dmVuZG9yczqgoKCgoKBBSyBNb2R1bC1CdXMgQ29tcHV0ZXIgR21iSAorKqCgoKCgoFN1cHBvcnRl ZCBkZXZpY2VzOqCgoKCgoENZN0M2MzAwMUEtUEMgKHRvIGJlIGNvbnRpbnVlZC4uLikKKyqgoKCg oKBTdXBwb3J0ZWQgZnVuY3Rpb25zOqCgoKBSZWFkL1dyaXRlIFBvcnRzICh0byBiZSBjb250aW51 ZWQuLi4pCisqCisqoKCgoKCgQ2hpcHNldHMgZmFtaWxpZXM6oKCgoKCgQ1k3QzYzMDAwLCBDWTdD NjMwMDEsIENZN0M2MzEwMCwgQ1k3QzYzMTAxCisqCisqCisqoKCgoKCgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKqCgoKCgoG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzCisqoKCgoKCgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHZl cnNpb24gMi4KKyovCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgv bW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvdXNi Lmg+CisKKyNkZWZpbmUgRFJJVkVSX0FVVEhPUqCgoKCgoKCgoKAiT2xpdmVyIEJvY2sgKGJvY2tA Zmgtd29sZmVuYnVldHRlbC5kZSkiCisjZGVmaW5lIERSSVZFUl9ERVNDoKCgoKCgoKCgoKCgIkN5 cHJlc3MgQ1k3QzYzeHh4IFVTQiBkcml2ZXIiCisKKyNkZWZpbmUgQ1k3QzYzX1ZFTkRPUl9JRKCg oKCgoKAweGEyYworI2RlZmluZSBDWTdDNjNfUFJPRFVDVF9JRKCgoKCgoDB4OAorCisjZGVmaW5l IENZN0M2M19SRUFEX1BPUlSgoKCgoKCgMHg0CisjZGVmaW5lIENZN0M2M19XUklURV9QT1JUoKCg oKCgMHg1CisjZGVmaW5lIENZN0M2M19SRUFEX1JBTaCgoKCgoKCgoKCgoKCgoKAweDIKKyNkZWZp bmUgQ1k3QzYzX1dSSVRFX1JBTaCgoKCgoKAweDMKKyNkZWZpbmUgQ1k3QzYzX1JFQURfUk9NoKCg oKCgoKCgoKCgoKCgoDB4MQorCisjZGVmaW5lIENZN0M2M19SRUFEX1BPUlRfSUQwoKCgMAorI2Rl ZmluZSBDWTdDNjNfV1JJVEVfUE9SVF9JRDCgoDAKKyNkZWZpbmUgQ1k3QzYzX1JFQURfUE9SVF9J RDGgoKAweDIKKyNkZWZpbmUgQ1k3QzYzX1dSSVRFX1BPUlRfSUQxoKAxCisKKyNkZWZpbmUgQ1k3 QzYzX01BWF9SRVFTSVpFoKCgoKA4CisKKworLyogdGFibGUgb2YgZGV2aWNlcyB0aGF0IHdvcmsg d2l0aCB0aGlzIGRyaXZlciAqLworc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIGN5N2M2M190 YWJsZSBbXSA9IHsKK6CgoKCgoKB7IFVTQl9ERVZJQ0UoQ1k3QzYzX1ZFTkRPUl9JRCwgQ1k3QzYz X1BST0RVQ1RfSUQpIH0sCiugoKCgoKCgeyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRSh1c2Is IGN5N2M2M190YWJsZSk7CisKKy8qIHN0cnVjdHVyZSB0byBob2xkIGFsbCBvZiBvdXIgZGV2aWNl IHNwZWNpZmljIHN0dWZmICovCitzdHJ1Y3QgY3k3YzYzIHsKK6CgoKCgoKBzdHJ1Y3QgdXNiX2Rl dmljZSAqoKCgoKB1ZGV2OworoKCgoKCgoGNoYXIgoKCgoKCgoKCgoKCgoKCgoKCgoHBvcnQwOwor oKCgoKCgoGNoYXKgoKCgoKCgoKCgoKCgoKCgoKCgoHBvcnQxOworfTsKKworLyogdXNlZCB0byBz ZW5kIHVzYiBjb250cm9sIG1lc3NhZ2VzIHRvIGRldmljZSAqLworaW50IHZlbmRvcl9jb21tYW5k KHN0cnVjdCBjeTdjNjMgKmRldiwgdW5zaWduZWQgY2hhciByZXF1ZXN0LAoroKCgoKCgoKCgoKCg oKCgoKCgoKCgoKAgdW5zaWduZWQgY2hhciBhZGRyZXNzLCB1bnNpZ25lZCBjaGFyIGRhdGEpIHsK KworoKCgoKCgoGludCByZXR2YWwgPSAwOworoKCgoKCgoHVuc2lnbmVkIGludCBwaXBlOworoKCg oKCgoHVuc2lnbmVkIGNoYXIgKmlvYnVmOworCiugoKCgoKCgLyogYWxsb2NhdGUgc29tZSBtZW1v cnkgZm9yIHRoZSBpL28gYnVmZmVyKi8KK6CgoKCgoKBpb2J1ZiA9IGt6YWxsb2MoQ1k3QzYzX01B WF9SRVFTSVpFLCBHRlBfS0VSTkVMKTsKK6CgoKCgoKBpZiAoIWlvYnVmKSB7CiugoKCgoKCgoKCg oKCgoKBkZXZfZXJyKCZkZXYtPnVkZXYtPmRldiwgIk91dCBvZiBtZW1vcnkhXG4iKTsKK6CgoKCg oKCgoKCgoKCgoHJldHZhbCA9IC1FTk9NRU07CiugoKCgoKCgoKCgoKCgoKBnb3RvIGVycm9yOwor oKCgoKCgoH0KKworoKCgoKCgoGRldl9kYmcoJmRldi0+dWRldi0+ZGV2LCAiU2VuZGluZyB1c2Jf Y29udHJvbF9tc2cgKGRhdGE6ICVkKVxuIiwgZGF0YSk7CisKK6CgoKCgoKAvKiBwcmVwYXJlIHVz YiBjb250cm9sIG1lc3NhZ2UgYW5kIHNlbmQgaXQgdXBzdHJlYW0gKi8KK6CgoKCgoKBwaXBlID0g dXNiX3JjdmN0cmxwaXBlKGRldi0+dWRldiwgMCk7CiugoKCgoKCgcmV0dmFsID0gdXNiX2NvbnRy b2xfbXNnKGRldi0+dWRldiwgcGlwZSwgcmVxdWVzdCwKK6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKBVU0JfRElSX0lOIHwgVVNCX1RZUEVfVkVORE9SIHwgVVNCX1JFQ0lQX09USEVSLAor oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoGFkZHJlc3MsIGRhdGEsIGlvYnVmLCBDWTdD NjNfTUFYX1JFUVNJWkUsCiugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgVVNCX0NUUkxf R0VUX1RJTUVPVVQpOworCiugoKCgoKCgLyogc3RvcmUgcmV0dXJuZWQgZGF0YSAobW9yZSBSRUFE cyB0byBiZSBhZGRlZCEpICovCiugoKCgoKCgc3dpdGNoIChyZXF1ZXN0KSB7CiugoKCgoKCgoKCg oKCgoKBjYXNlIENZN0M2M19SRUFEX1BPUlQ6CiugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoGlmIChh ZGRyZXNzID09IENZN0M2M19SRUFEX1BPUlRfSUQwKSB7CiugoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgZGV2LT5wb3J0MCA9IGlvYnVmWzFdOworoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoGRldl9kYmcoJmRldi0+dWRldi0+ZGV2LAoroKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgIlJFQURfUE9SVDAgcmV0dXJuZWQ6ICVkXG4iLGRldi0+cG9ydDApOwor oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKB9CiugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoGVsc2UgaWYg KGFkZHJlc3MgPT0gQ1k3QzYzX1JFQURfUE9SVF9JRDEpIHsKK6CgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKBkZXYtPnBvcnQxID0gaW9idWZbMV07CiugoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgZGV2X2RiZygmZGV2LT51ZGV2LT5kZXYsCiugoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKAiUkVBRF9QT1JUMSByZXR1cm5lZDogJWRcbiIsZGV2LT5wb3J0MSk7 CiugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoH0KK6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgYnJlYWs7 CiugoKCgoKCgfQorCiugoKCgoKCga2ZyZWUoaW9idWYpOworZXJyb3I6CiugoKCgoKCgcmV0dXJu IHJldHZhbDsKK30KKworI2RlZmluZSBnZXRfc2V0X3BvcnQobnVtLHJlYWRfaWQsd3JpdGVfaWQp IFwKK3N0YXRpYyBzc2l6ZV90IHNldF9wb3J0IyNudW0oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciygoKCgoKCgoFwKK6CgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KSB7oKCgoKCg oKBcCiugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgXAoroKCgoKCgoGludCB2YWx1ZTugoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoFwKK6Cg oKCgoKBpbnQgcmVzdWx0ID0gMDugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKBcCiugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgXAoroKCgoKCgoHN0 cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpO6CgoKCgoKCg oKCgoKCgoKCgoKCgoFwKK6CgoKCgoKBzdHJ1Y3QgY3k3YzYzICpjeXAgPSB1c2JfZ2V0X2ludGZk YXRhKGludGYpO6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKBcCiugoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgXAoroKCgoKCgoGRldl9kYmcoJmN5cC0+dWRldi0+ZGV2LCAiV1JJVEVfUE9SVCVkIGNh bGxlZFxuIiwgbnVtKTugoKCgoKCgoKCgoKCgoKCgoFwKK6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKBc CiugoKCgoKCgLyogdmFsaWRhdGUgaW5wdXQgZGF0YSAqL6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgXAoroKCgoKCgoGlmIChzc2NhbmYoYnVmLCAiJWQiLCAm dmFsdWUpIDwgMSkge6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoFwKK6CgoKCg oKCgoKCgoKCgoHJlc3VsdCA9IC1FSU5WQUw7oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKBcCiugoKCgoKCgoKCgoKCgoKBnb3RvIGVycm9yO6CgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgXAoroKCgoKCgoH2goKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoFwKK6CgoKCgoKBpZiAodmFsdWU+MjU1IHx8IHZhbHVlPDApIHugoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKBcCiugoKCgoKCgoKCgoKCgoKByZXN1 bHQgPSAtRUlOVkFMO6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgXAoroKCgoKCgoKCgoKCgoKCgZ290byBlcnJvcjugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoFwKK6CgoKCgoKB9oKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKBcCiug oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgXAoroKCgoKCgoHJlc3VsdCA9IHZlbmRvcl9jb21tYW5kKGN5 cCwgQ1k3QzYzX1dSSVRFX1BPUlQsIHdyaXRlX2lkLKCgoKCgoKCgoKCgoKCgoFwKK6CgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCAodW5zaWduZWQgY2hhcil2YWx1ZSk7oKCg oKCgoKCgoKCgoKCgoKBcCiugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgXAoroKCgoKCgoGRldl9kYmco JmN5cC0+dWRldi0+ZGV2LCAiUmVzdWx0IG9mIHZlbmRvcl9jb21tYW5kOiAlZFxuXG4iLHJlc3Vs dCk7oKCgoFwKK2Vycm9yOqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKBcCiugoKCgoKCgcmV0dXJuIHJlc3VsdCA8 IDAgPyByZXN1bHQgOiBjb3VudDugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg XAorfaCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoFwKK6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKBcCitzdGF0 aWMgc3NpemVfdCBnZXRfcG9ydCMjbnVtKHN0cnVjdCBkZXZpY2UgKmRldiygoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgXAoroKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKSB7oKCgoFwKK6CgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKBcCiugoKCgoKCgaW50IHJlc3VsdCA9IDA7oKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgXAoroKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoFwKK6CgoKCgoKBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiA9IHRvX3VzYl9pbnRlcmZh Y2UoZGV2KTugoKCgoKCgoKCgoKCgoKCgoKCgoKBcCiugoKCgoKCgc3RydWN0IGN5N2M2MyAqY3lw ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgXAor oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoFwKK6CgoKCgoKBkZXZfZGJnKCZjeXAtPnVkZXYtPmRldiwg IlJFQURfUE9SVCVkIGNhbGxlZFxuIiwgbnVtKTugoKCgoKCgoKCgoKCgoKCgoKBcCiugoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgXAoroKCgoKCgoHJlc3VsdCA9IHZlbmRvcl9jb21tYW5kKGN5cCwgQ1k3 QzYzX1JFQURfUE9SVCwgcmVhZF9pZCwgMCk7oKCgoKCgoKCgoKCgoFwKK6CgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKBcCiugoKCgoKCgZGV2X2RiZygmY3lwLT51ZGV2LT5kZXYsICJSZXN1bHQgb2YgdmVu ZG9yX2NvbW1hbmQ6ICVkXG5cbiIsIHJlc3VsdCk7oKCgXAoroKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oFwKK6CgoKCgoKByZXR1cm4gc3ByaW50ZihidWYsICIlZCIsIGN5cC0+cG9ydCMjbnVtKTugoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKBcCit9oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgXAorc3Rh dGljIERFVklDRV9BVFRSKHBvcnQjI251bSwgU19JV1VHTyB8IFNfSVJVR08sIGdldF9wb3J0IyNu dW0sIHNldF9wb3J0IyNudW0pOworCitnZXRfc2V0X3BvcnQoMCwgQ1k3QzYzX1JFQURfUE9SVF9J RDAsIENZN0M2M19XUklURV9QT1JUX0lEMCk7CitnZXRfc2V0X3BvcnQoMSwgQ1k3QzYzX1JFQURf UE9SVF9JRDEsIENZN0M2M19XUklURV9QT1JUX0lEMSk7CisKK3N0YXRpYyBpbnQgY3k3YzYzX3By b2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsCiugoKCgoKCgoKCgoKCgoKCgoKCg oKCgoGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCkgeworCiugoKCgoKCgc3RydWN0IGN5 N2M2MyAqZGV2ID0gTlVMTDsKK6CgoKCgoKBpbnQgcmV0dmFsID0gLUVOT01FTTsKKworoKCgoKCg oC8qIGFsbG9jYXRlIG1lbW9yeSBmb3Igb3VyIGRldmljZSBzdGF0ZSBhbmQgaW5pdGlhbGl6ZSBp dCAqLworoKCgoKCgoGRldiA9IGt6YWxsb2Moc2l6ZW9mKCpkZXYpLCBHRlBfS0VSTkVMKTsKK6Cg oKCgoKBpZiAoZGV2ID09IE5VTEwpIHsKK6CgoKCgoKCgoKCgoKCgoGRldl9lcnIoJmRldi0+dWRl di0+ZGV2LCAiT3V0IG9mIG1lbW9yeSFcbiIpOworoKCgoKCgoKCgoKCgoKCgZ290byBlcnJvcjsK K6CgoKCgoKB9CisKK6CgoKCgoKBkZXYtPnVkZXYgPSB1c2JfZ2V0X2RldihpbnRlcmZhY2VfdG9f dXNiZGV2KGludGVyZmFjZSkpOworCiugoKCgoKCgLyogc2F2ZSBvdXIgZGF0YSBwb2ludGVyIGlu IHRoaXMgaW50ZXJmYWNlIGRldmljZSAqLworoKCgoKCgoHVzYl9zZXRfaW50ZmRhdGEoaW50ZXJm YWNlLCBkZXYpOworCiugoKCgoKCgLyogY3JlYXRlIGRldmljZSBhdHRyaWJ1dGUgZmlsZXMgKi8K K6CgoKCgoKBkZXZpY2VfY3JlYXRlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfcG9y dDApOworoKCgoKCgoGRldmljZV9jcmVhdGVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZkZXZfYXR0 cl9wb3J0MSk7CisKK6CgoKCgoKAvKiBsZXQgdGhlIHVzZXIga25vdyB3aGF0IG5vZGUgdGhpcyBk ZXZpY2UgaXMgbm93IGF0dGFjaGVkIHRvICovCiugoKCgoKCgZGV2X2luZm8oJmludGVyZmFjZS0+ ZGV2LAoroKCgoKCgoKCgoKCgoKCgIkN5cHJlc3MgQ1k3QzYzeHh4IGRldmljZSBub3cgYXR0YWNo ZWRcbiIpOworCiugoKCgoKCgcmV0dmFsID0gMDsKK2Vycm9yOgoroKCgoKCgoHJldHVybiByZXR2 YWw7Cit9CisKK3N0YXRpYyB2b2lkIGN5N2M2M19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJm YWNlICppbnRlcmZhY2UpIHsKKworoKCgoKCgoHN0cnVjdCBjeTdjNjMgKmRldjsKKworoKCgoKCg oGRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50ZXJmYWNlKTsKK6CgoKCgoKB1c2Jfc2V0X2ludGZk YXRhKGludGVyZmFjZSwgTlVMTCk7CisKK6CgoKCgoKAvKiByZW1vdmUgZGV2aWNlIGF0dHJpYnV0 ZSBmaWxlcyAqLworoKCgoKCgoGRldmljZV9yZW1vdmVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZk ZXZfYXR0cl9wb3J0MCk7CiugoKCgoKCgZGV2aWNlX3JlbW92ZV9maWxlKCZpbnRlcmZhY2UtPmRl diwgJmRldl9hdHRyX3BvcnQxKTsKKworoKCgoKCgoHVzYl9wdXRfZGV2KGRldi0+dWRldik7CisK K6CgoKCgoKBkZXZfaW5mbygmaW50ZXJmYWNlLT5kZXYsCiugoKCgoKCgoKCgoKCgoKAiQ3lwcmVz cyBDWTdDNjN4eHggZGV2aWNlIG5vdyBkaXNjb25uZWN0ZWRcbiIpOworCiugoKCgoKCga2ZyZWUo ZGV2KTsKK30KKworc3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGN5N2M2M19kcml2ZXIgPSB7Ciug oKCgoKCgLm5hbWUgPSAiY3k3YzYzIiwKK6CgoKCgoKAucHJvYmUgPSBjeTdjNjNfcHJvYmUsCiug oKCgoKCgLmRpc2Nvbm5lY3QgPSBjeTdjNjNfZGlzY29ubmVjdCwKK6CgoKCgoKAuaWRfdGFibGUg PSBjeTdjNjNfdGFibGUsCit9OworCitzdGF0aWMgaW50IF9faW5pdCBjeTdjNjNfaW5pdCh2b2lk KSB7CisKK6CgoKCgoKBpbnQgcmVzdWx0OworCiugoKCgoKCgLyogcmVnaXN0ZXIgdGhpcyBkcml2 ZXIgd2l0aCB0aGUgVVNCIHN1YnN5c3RlbSAqLworoKCgoKCgoHJlc3VsdCA9IHVzYl9yZWdpc3Rl cigmY3k3YzYzX2RyaXZlcik7CiugoKCgoKCgaWYgKHJlc3VsdCkgeworoKCgoKCgoKCgoKCgoKCg ZXJyKCJGdW5jdGlvbiB1c2JfcmVnaXN0ZXIgZmFpbGVkISBFcnJvciBudW1iZXI6ICVkXG4iLCBy ZXN1bHQpOworoKCgoKCgoH0KKworoKCgoKCgoHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2 b2lkIF9fZXhpdCBjeTdjNjNfZXhpdCh2b2lkKSB7CisKK6CgoKCgoKAvKiBkZXJlZ2lzdGVyIHRo aXMgZHJpdmVyIHdpdGggdGhlIFVTQiBzdWJzeXN0ZW0gKi8KK6CgoKCgoKB1c2JfZGVyZWdpc3Rl cigmY3k3YzYzX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KGN5N2M2M19pbml0KTsKK21vZHVs ZV9leGl0KGN5N2M2M19leGl0KTsKKworTU9EVUxFX0FVVEhPUihEUklWRVJfQVVUSE9SKTsKK01P RFVMRV9ERVNDUklQVElPTihEUklWRVJfREVTQyk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsK --nextPart3785250.sgug780oYd Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) iD8DBQBEiI8z3lE6AoIJmt4RAuzoAJ9ibRVFtySYkgbnkpd854Hld0Oq3ACgji++ /ZDEZcUcMpzxC2k9WShkINs= =PdCA -----END PGP SIGNATURE----- --nextPart3785250.sgug780oYd--