From owner-freebsd-acpi@FreeBSD.ORG Fri Feb 12 18:05:10 2010 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D01961065676 for ; Fri, 12 Feb 2010 18:05:10 +0000 (UTC) (envelope-from d.walter@0x90.at) Received: from mail.0x90.at (s2.linuxsolutions.at [83.218.160.157]) by mx1.freebsd.org (Postfix) with ESMTP id BBB668FC0A for ; Fri, 12 Feb 2010 18:05:09 +0000 (UTC) Received: from localhost (unknown [127.0.0.1]) by mail.0x90.at (Postfix) with ESMTP id 7AF0B78C2A for ; Fri, 12 Feb 2010 19:10:52 +0100 (CET) X-Virus-Scanned: amavisd-new at 0x90.at Received: from mail.0x90.at ([127.0.0.1]) by localhost (mails.0x90.at [127.0.0.1]) (amavisd-new, port 10024) with LMTP id ivcoPwHXtJ5S for ; Fri, 12 Feb 2010 19:10:27 +0100 (CET) Received: from [192.168.1.2] (chello213047242248.tirol.surfer.at [213.47.242.248]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.0x90.at (Postfix) with ESMTPSA id E0D9278C11 for ; Fri, 12 Feb 2010 19:10:25 +0100 (CET) Date: Fri, 12 Feb 2010 18:48:32 +0100 (CET) From: Daniel Walter X-X-Sender: sahne@mini-beast To: freebsd-acpi@freebsd.org Message-ID: User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-496892480-560367094-1265996917=:1675" Subject: Call for testers acpi_dell X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Feb 2010 18:05:11 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---496892480-560367094-1265996917=:1675 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII Hi all, I've written a small kernel driver to support Dell Mini 1011 (aka Dell Mini 10v) Brightness Controll Buttons. Since I do not have any other Dell Notebooks, I'd like you to test this module on other Dell Notebooks as well. This driver is in an early stage, but future releases will also support the rfkill switch and CRT switch. Currently following features are implemented: * Increase / Decrease Brightness * Change brightness if AC is connected / disconnected TODO: * Add CRT Support * Add Sysctl to define brightness levels for eco and ac powerprofile * Add Support for RF-Kill Switch Any suggestions are welcome regards Daniel ---496892480-560367094-1265996917=:1675 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=Makefile Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=Makefile S01PRD0JYWNwaV9kZWxsDQpTUkNTPQlhY3BpX2RlbGwuYyBvcHRfYWNwaS5o IGFjcGlfaWYuaCBidXNfaWYuaCBkZXZpY2VfaWYuaA0KDQouaW5jbHVkZSA8 YnNkLmttb2QubWs+DQo= ---496892480-560367094-1265996917=:1675 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=acpi_dell.c Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=acpi_dell.c LyotDQogKiBDb3B5cmlnaHQgKGMpIDIwMTAgV0FMVEVSIERhbmllbCA8c2Fo bmVAMHg5MC5hdD4NCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogKg0KICog UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm b3Jtcywgd2l0aCBvciB3aXRob3V0DQogKiBtb2RpZmljYXRpb24sIGFyZSBw ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnMNCiAqIGFyZSBtZXQ6DQogKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291 cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyLg0KICogMi4gUmVkaXN0cmlidXRpb25zIGlu IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln aHQNCiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCiAqICAgIGRvY3Vt ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo IHRoZSBkaXN0cmlidXRpb24uDQogKg0KICogVEhJUyBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJ UycnIEFORA0KICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFDQogKiBJTVBM SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KICogQVJFIERJU0NMQUlNRUQu ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9S UyBCRSBMSUFCTEUNCiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM DQogKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUw0KICogT1IgU0VSVklD RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT UyBJTlRFUlJVUFRJT04pDQogKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU UklDVA0KICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQ0KICogT1VU IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE IE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KICogU1VDSCBEQU1BR0UuDQogKg0K ICovDQoNCiNpbmNsdWRlIDxzeXMvY2RlZnMuaD4NCg0KI2luY2x1ZGUgIm9w dF9hY3BpLmgiDQojaW5jbHVkZSA8c3lzL3BhcmFtLmg+DQojaW5jbHVkZSA8 c3lzL2tlcm5lbC5oPg0KI2luY2x1ZGUgPHN5cy9tb2R1bGUuaD4NCiNpbmNs dWRlIDxzeXMvYnVzLmg+DQojaW5jbHVkZSA8c3lzL3Bvd2VyLmg+DQoNCiNp bmNsdWRlIDxjb250cmliL2Rldi9hY3BpY2EvaW5jbHVkZS9hY3BpLmg+DQoN CiNpbmNsdWRlIDxkZXYvYWNwaWNhL2FjcGl2YXIuaD4NCg0KI2RlZmluZSBf Q09NUE9ORU5UCUFDUElfT0VNDQpBQ1BJX01PRFVMRV9OQU1FKCJEZWxsIikN Cg0KLyogQ29tbWFuZHMgKi8NCiNkZWZpbmUgQUNQSV9ERUxMX0JSSUdIVE5F U1NfR0VUCSJfQlFDIg0KI2RlZmluZSBBQ1BJX0RFTExfQlJJR0hUTkVTU19T RVQJIl9CQ00iDQojZGVmaW5lCUFDUElfREVMTF9CUklHSFRORVNTX1NVUFBP UlRFRAkiX0JDTCINCg0KLyogTm90aWZ5Y2F0aW9ucyAqLw0KI2RlZmluZQlB Q1BJX0RFTExfQlJJR0hUTkVTU19JTkNSRUFTRQkweDg2DQojZGVmaW5lCUFD UElfREVMTF9CUklHSFRORVNTX0RFQ1JFQVNFCTB4ODcNCiNkZWZpbmUgQUNQ SV9ERUxMX1NXSVRDSF9PVVRQVVQJCTAJDQoNCi8qIERFQlVHIE5PVElGSUNB VElPTlMgKi8NCiNkZWZpbmUJQUNQSV9ERUxMX0RFQlVHCQkJMQ0KDQpzdHJ1 Y3QgYWNwaV9kZWxsX3NvZnRjIHsNCglkZXZpY2VfdAkJZGV2Ow0KCUFDUElf SEFORExFCQloYW5kbGU7DQoJZXZlbnRoYW5kbGVyX3RhZwlwb3dlcl9wcm9m aWxlOw0KCWludAkJCWJyaWdodG5lc3M7DQoJaW50CQkJYnJpZ2h0bmVzc19p bmRleDsNCglpbnQJCQllY29fYnJpZ2h0bmVzczsNCglpbnQJCQlhY19icmln aHRuZXNzOwkNCglpbnQJCQludW1fbGV2ZWxzOw0KCWludAkJCSpicmlnaHRu ZXNzX2xldmVsczsNCn07DQoNCnN0YXRpYyBpbnQJYWNwaV9kZWxsX3Byb2Jl KGRldmljZV90IGRldik7DQpzdGF0aWMgaW50CWFjcGlfZGVsbF9hdHRhY2go ZGV2aWNlX3QgZGV2KTsNCnN0YXRpYyBpbnQJYWNwaV9kZWxsX2RldGFjaChk ZXZpY2VfdCBkZXYpOw0Kc3RhdGljIHZvaWQJYWNwaV9kZWxsX25vdGlmeShB Q1BJX0hBTkRMRSBoLCBVSU5UMzIgbm90aWZ5LCB2b2lkICpjb250ZXh0KTsN CnN0YXRpYyBpbnQJYWNwaV9kZWxsX2dldF9icmlnaHRuZXNzKHN0cnVjdCBh Y3BpX2RlbGxfc29mdGMgKnNjKTsNCnN0YXRpYyBpbnQJYWNwaV9kZWxsX3Nl dF9icmlnaHRuZXNzKHN0cnVjdCBhY3BpX2RlbGxfc29mdGMgKnNjLCBpbnQg aW5jKTsNCnN0YXRpYyB2b2lkCWFjcGlfZGVsbF9wb3dlcnByb2ZpbGUodm9p ZCAqY29udGV4dCk7DQpzdGF0aWMgaW50CWFjcGlfZGVsbF9nZXRfYnJpZ2h0 bmVzc19sZXZlbHMoc3RydWN0IGFjcGlfZGVsbF9zb2Z0YyAqc2MpOw0KDQov KiBEZWNsYXJlIGxvY2sgKi8NCkFDUElfU0VSSUFMX0RFQ0woZGVsbCwgIkFD UEkgREVMTCBleHRyYXMiKTsNCg0Kc3RhdGljIGRldmljZV9tZXRob2RfdCBh Y3BpX2RlbGxfbWV0aG9kc1tdID0gew0KCURFVk1FVEhPRChkZXZpY2VfcHJv YmUsCQlhY3BpX2RlbGxfcHJvYmUpLA0KCURFVk1FVEhPRChkZXZpY2VfYXR0 YWNoLAlhY3BpX2RlbGxfYXR0YWNoKSwNCglERVZNRVRIT0QoZGV2aWNlX2Rl dGFjaCwJYWNwaV9kZWxsX2RldGFjaCksDQoNCgl7MCwgMH0NCn07DQoNCnN0 YXRpYyBkcml2ZXJfdCBhY3BpX2RlbGxfZHJpdmVyID0gew0KCSJhY3BpX2Rl bGwiLA0KCWFjcGlfZGVsbF9tZXRob2RzLA0KCXNpemVvZihzdHJ1Y3QgYWNw aV9kZWxsX3NvZnRjKSwNCn07DQoNCi8qIHN1cHBvcnRlZCBiYWNrbGlnaHQg dmFsdWVzIGZvciBkZWxsIG1pbmkgMTAxMSAoYWthIGRlbGwgbWluaSAxMHYp ICovDQpzdGF0aWMgaW50IGFjcGlfZGVsbF92YWxpZF9icmlnaHRuZXNzIFtd ID0gew0KCTB4NjQsDQoJMHg0MSwNCgkweDE5LA0KCTB4MWUsDQoJMHgyMywN CgkweDI4LA0KCTB4MmQsDQoJMHgzMiwNCgkweDM3LA0KCTB4M2MsDQoJMHg0 MSwNCgkweDQ2LA0KCTB4NGIsDQoJMHg1MCwNCgkweDU1LA0KCTB4NWEsDQoJ MHg1ZiwNCgkweDY0DQp9Ow0KDQpzdGF0aWMgZGV2Y2xhc3NfdCBhY3BpX2Rl bGxfZGV2Y2xhc3M7DQpEUklWRVJfTU9EVUxFKGFjcGlfZGVsbCwgYWNwaSwg YWNwaV9kZWxsX2RyaXZlciwgYWNwaV9kZWxsX2RldmNsYXNzLCAwLCAwKTsN Ck1PRFVMRV9ERVBFTkQoYWNwaV9kZWxsLCBhY3BpLCAxLCAxLCAxKTsNCg0K c3RhdGljIGludA0KYWNwaV9kZWxsX3Byb2JlIChkZXZpY2VfdCBkZXYpDQp7 DQoJQUNQSV9IQU5ETEUJCWRldmgsaDsNCglBQ1BJX09CSkVDVF9UWVBFIAl0 X2RvczsNCgkNCglkZXZoID0gYWNwaV9nZXRfaGFuZGxlKGRldik7DQoJaWYg KGFjcGlfZGlzYWJsZWQoImRlbGwiKSB8fCANCgkgICAgQUNQSV9GQUlMVVJF KEFjcGlHZXRIYW5kbGUoZGV2aCwgIl9CQ0wiLCAmaCkpIHx8DQoJICAgIEFD UElfRkFJTFVSRShBY3BpR2V0VHlwZShoLCAmdF9kb3MpKSB8fA0KCSAgICB0 X2RvcyAhPSBBQ1BJX1RZUEVfTUVUSE9EKSANCgkJcmV0dXJuIChFTlhJTyk7 DQojaWZkZWYJQUNQSV9ERUxMX0RFQlVHDQoJZGV2aWNlX3ByaW50ZihkZXYs ICJmb3VuZCBkZXZpY2VcbiIpOw0KI2VuZGlmCQ0KCWRldmljZV9zZXRfZGVz YyhkZXYsICJEZWxsIEFDUEkgVmlkZW8iKTsNCglyZXR1cm4gKDApOw0KDQp9 DQoNCnN0YXRpYyBpbnQNCmFjcGlfZGVsbF9hdHRhY2ggKGRldmljZV90IGRl dikNCnsNCglzdHJ1Y3QgYWNwaV9kZWxsX3NvZnRjIAkqc2M7DQoJc3RydWN0 IGFjcGlfc29mdGMgCSphY3BpX3NjOw0KCWludAkJCWJyaWdodG5lc3M7DQoJ DQoJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7DQoJc2MtPmRldiA9IGRl djsNCglzYy0+aGFuZGxlID0gYWNwaV9nZXRfaGFuZGxlKGRldik7DQoJc2Mt Pm51bV9sZXZlbHMgPSBhY3BpX2RlbGxfZ2V0X2JyaWdodG5lc3NfbGV2ZWxz KHNjKTsNCgkvKiANCgkgKiBpZiBkeW5hbWljIHJlYWQgb2YgYnJpZ2h0bmVz cyBsZXZlbHMgZGlkIG5vdCB3b3JrIA0KCSAqIHVzZSBzdGF0aWMgdGFibGUg DQoJICovDQoJaWYgKHNjLT5udW1fbGV2ZWxzID09IC0xKSB7DQojaWZkZWYJ QUNQSV9ERUxMX0RFQlVHDQoJCWRldmljZV9wcmludGYoZGV2LCAiQ291bGQg bm90IGdldCBicmlnaHRuZXNzIGxldmVsc1xuIik7DQojZW5kaWYNCgkJc2Mt Pm51bV9sZXZlbHMgPSAxODsNCgkJc2MtPmJyaWdodG5lc3NfbGV2ZWxzID0g YWNwaV9kZWxsX3ZhbGlkX2JyaWdodG5lc3M7DQoJfQ0KCS8qIHNldCBicmln aG5lc3MgbGV2ZWxzIGZvciBhYyBhbmQgZWNvIHBvd2VyICovDQoJc2MtPmFj X2JyaWdodG5lc3MgPSBzYy0+YnJpZ2h0bmVzc19sZXZlbHNbMF07DQoJc2Mt PmVjb19icmlnaHRuZXNzID0gc2MtPmJyaWdodG5lc3NfbGV2ZWxzWzFdOw0K CS8qIGdldCBicmlnaHRuZXNzICovDQoJYnJpZ2h0bmVzcyA9IGFjcGlfZGVs bF9nZXRfYnJpZ2h0bmVzcyhzYyk7DQoJDQoJYWNwaV9zYyA9IGFjcGlfZGV2 aWNlX2dldF9wYXJlbnRfc29mdGMoZGV2KTsNCgkNCgkvKiBpbnN0YWxsIG5v dGlmY2F0aW9uIGFuZCBldmVudCBoYW5kbGVyICovDQoJQWNwaUluc3RhbGxO b3RpZnlIYW5kbGVyKHNjLT5oYW5kbGUsIEFDUElfREVWSUNFX05PVElGWSwN CgkJCWFjcGlfZGVsbF9ub3RpZnksIHNjKTsNCg0KCXNjLT5wb3dlcl9wcm9m aWxlID0gRVZFTlRIQU5ETEVSX1JFR0lTVEVSKHBvd2VyX3Byb2ZpbGVfY2hh bmdlLCANCgkJCQkJCSAgYWNwaV9kZWxsX3Bvd2VycHJvZmlsZSwgDQoJCQkJ CQkgIHNjLCAwKTsNCg0KCXJldHVybiAoMCk7DQp9DQoNCnN0YXRpYyBpbnQN CmFjcGlfZGVsbF9kZXRhY2goIGRldmljZV90IGRldikNCnsNCglzdHJ1Y3Qg YWNwaV9kZWxsX3NvZnRjCSpzYzsNCglzYyA9IGRldmljZV9nZXRfc29mdGMo ZGV2KTsNCgkNCglFVkVOVEhBTkRMRVJfREVSRUdJU1RFUihwb3dlcl9wcm9m aWxlX2NoYW5nZSwgc2MtPnBvd2VyX3Byb2ZpbGUpOw0KCUFjcGlSZW1vdmVO b3RpZnlIYW5kbGVyKHNjLT5oYW5kbGUsIEFDUElfREVWSUNFX05PVElGWSwg DQoJCQkJYWNwaV9kZWxsX25vdGlmeSk7DQoJDQoJaWYgKHNjLT5icmlnaHRu ZXNzX2xldmVscyAhPSBOVUxMKQ0KCQlBY3BpT3NGcmVlKHNjLT5icmlnaHRu ZXNzX2xldmVscyk7DQoJDQoJcmV0dXJuICgwKTsNCn0NCg0KDQoNCnN0YXRp YyB2b2lkDQphY3BpX2RlbGxfbm90aWZ5KEFDUElfSEFORExFIGgsIFVJTlQz MiBub3RpZnksIHZvaWQgKmNvbnRleHQpDQp7DQoJc3RydWN0CWFjcGlfZGVs bF9zb2Z0YyAqc2M7DQoJLypVSU5UMzIJa2V5OyovDQoJc2MgPSAoc3RydWN0 IGFjcGlfZGVsbF9zb2Z0YyAqKSBjb250ZXh0Ow0KCXN3aXRjaCAobm90aWZ5 KSB7DQoJCWNhc2UgQUNQSV9ERUxMX0JSSUdIVE5FU1NfSU5DUkVBU0U6DQoj aWZkZWYgQUNQSV9ERUxMX0RFQlVHDQoJCQlkZXZpY2VfcHJpbnRmKHNjLT5k ZXYsIA0KCQkJCSJpbmNyZWFzZSBicmlnaHRuZXNzIG5vdGlmeSAweCV4XG4i LCBub3RpZnkpOw0KI2VuZGlmDQoJCQlhY3BpX2RlbGxfc2V0X2JyaWdodG5l c3Moc2MsIDEpOw0KCQkJYnJlYWs7DQoJCWNhc2UgQUNQSV9ERUxMX0JSSUdI VE5FU1NfREVDUkVBU0U6DQojaWZkZWYgQUNQSV9ERUxMX0RFQlVHDQoJCQlk ZXZpY2VfcHJpbnRmKHNjLT5kZXYsIA0KCQkJCSJkZWNyZWFzZSBicmlnaHRu ZXNzIG5vdGlmeSAweCV4XG4iLCBub3RpZnkpOw0KI2VuZGlmDQoJCQlhY3Bp X2RlbGxfc2V0X2JyaWdodG5lc3Moc2MsIDApOw0KCQkJYnJlYWs7DQoJCWRl ZmF1bHQ6DQoJCQlkZXZpY2VfcHJpbnRmKHNjLT5kZXYsICJub3RpZnkgMHgl eFxuIiwgbm90aWZ5KTsNCgkJCWJyZWFrOw0KCX0NCn0NCg0Kc3RhdGljIGlu dA0KYWNwaV9kZWxsX2dldF9icmlnaHRuZXNzKHN0cnVjdCBhY3BpX2RlbGxf c29mdGMgKnNjKQ0Kew0KCWludCBpOw0KCWludCBicmlnaHRuZXNzOw0KCWFj cGlfR2V0SW50ZWdlcihzYy0+aGFuZGxlLCBBQ1BJX0RFTExfQlJJR0hUTkVT U19HRVQsICZicmlnaHRuZXNzKTsNCglzYy0+YnJpZ2h0bmVzcyA9IGJyaWdo dG5lc3M7DQoJZm9yIChpID0gMjsgaSA8IHNjLT5udW1fbGV2ZWxzOyBpKysp IA0KCQlpZiAoYnJpZ2h0bmVzcyA9PSBhY3BpX2RlbGxfdmFsaWRfYnJpZ2h0 bmVzc1tpXSkNCgkJCWJyZWFrOw0KCXNjLT5icmlnaHRuZXNzX2luZGV4ID0g aTsNCglyZXR1cm4gKGJyaWdodG5lc3MpOw0KfQ0KDQpzdGF0aWMgaW50DQph Y3BpX2RlbGxfc2V0X2JyaWdodG5lc3Moc3RydWN0IGFjcGlfZGVsbF9zb2Z0 YyAqc2MsIGludCBpbmMpDQp7DQoJaW50IGJyaWdodG5lc3M7DQoJaW50IG5l eHRfYnI7DQoJQUNQSV9TRVJJQUxfQkVHSU4oZGVsbCk7DQoJYnJpZ2h0bmVz cyA9IGFjcGlfZGVsbF9nZXRfYnJpZ2h0bmVzcyhzYyk7DQoJaWYgKGluYykg ew0KCQluZXh0X2JyID0gc2MtPmJyaWdodG5lc3NfaW5kZXggKyAxOw0KCQlp ZiAobmV4dF9iciA+PSBzYy0+bnVtX2xldmVscykgDQoJCQluZXh0X2JyID0g c2MtPm51bV9sZXZlbHM7DQoJfSBlbHNlIHsNCgkJbmV4dF9iciA9IHNjLT5i cmlnaHRuZXNzX2luZGV4IC0gMTsNCgkJaWYgKG5leHRfYnIgPD0gMikgDQoJ CQluZXh0X2JyID0gMjsNCgl9DQoJYWNwaV9TZXRJbnRlZ2VyKHNjLT5oYW5k bGUsIEFDUElfREVMTF9CUklHSFRORVNTX1NFVCwgDQoJCQlhY3BpX2RlbGxf dmFsaWRfYnJpZ2h0bmVzc1tuZXh0X2JyXSk7DQoJc2MtPmJyaWdodG5lc3Mg PSBhY3BpX2RlbGxfdmFsaWRfYnJpZ2h0bmVzc1tuZXh0X2JyXTsNCglzYy0+ YnJpZ2h0bmVzc19pbmRleCA9IG5leHRfYnI7DQoJQUNQSV9TRVJJQUxfRU5E KGRlbGwpOw0KCXJldHVybiAoMCk7DQp9DQoNCnN0YXRpYyBpbnQNCmFjcGlf ZGVsbF9nZXRfYnJpZ2h0bmVzc19sZXZlbHMoc3RydWN0IGFjcGlfZGVsbF9z b2Z0YyAqc2MpDQp7DQoJQUNQSV9TVEFUVVMJc3RhdHVzOw0KCUFDUElfQlVG RkVSCWJjbF9idWY7DQoJQUNQSV9PQkpFQ1QJKmJjbF9vYmo7DQoJaW50CQlp LCBuLCBudW07DQoJaW50CQkqbHZsOw0KDQoJbnVtID0gMDsNCgliY2xfYnVm Lkxlbmd0aCA9IEFDUElfQUxMT0NBVEVfQlVGRkVSOw0KCWJjbF9idWYuUG9p bnRlciA9IE5VTEw7DQoJDQoJc3RhdHVzID0gQWNwaUV2YWx1YXRlT2JqZWN0 KHNjLT5oYW5kbGUsIEFDUElfREVMTF9CUklHSFRORVNTX1NVUFBPUlRFRCwN CgkJCQkgICAgTlVMTCwgJmJjbF9idWYpOw0KCWlmIChBQ1BJX0ZBSUxVUkUo c3RhdHVzKSkgew0KCQlpZiAoc3RhdHVzICE9IEFFX05PVF9GT1VORCkNCgkJ CWRldmljZV9wcmludGYoc2MtPmRldiwgImNvdWxkIG5vdCBldmFsdWF0ZSBf QkNMXG4iKTsNCgkJbnVtID0gLTE7DQoJCWdvdG8gb3V0Ow0KCX0gDQoNCgli Y2xfb2JqID0gKEFDUElfT0JKRUNUICopYmNsX2J1Zi5Qb2ludGVyOw0KCWlm ICghQUNQSV9QS0dfVkFMSUQoYmNsX29iaiwyKSkgew0KCQlkZXZpY2VfcHJp bnRmKHNjLT5kZXYsICJldmFsdWF0aW9uIG9mIF9CQ0wgbWFrZXMgbm8gc2Vu c2VcbiIpOw0KCQludW0gPSAtMTsNCgkJZ290byBvdXQ7DQoJfQ0KDQoJbnVt ID0gYmNsX29iai0+UGFja2FnZS5Db3VudDsNCglsdmwgPSBBY3BpT3NBbGxv Y2F0ZShudW0gKiBzaXplb2YoKmx2bCkpOw0KCWlmIChsdmwgPT0gTlVMTCkg ew0KCQludW0gPSAtMTsNCgkJZ290byBvdXQ7DQoJfQ0KCQ0KCWZvciAoaSA9 IDAsIG4gPSAwOyBpIDwgbnVtOyBpKyspDQoJCWlmIChhY3BpX1BrZ0ludDMy KGJjbF9vYmosIGksICZsdmxbbl0pID09IDApDQoJCQluKys7DQoJaWYgKG4g PCAyKSB7DQoJCW51bSA9IC0xOw0KCQlBY3BpT3NGcmVlKGx2bCk7DQoJfSBl bHNlIHsNCgkJbnVtID0gbjsNCgkJc2MtPmJyaWdodG5lc3NfbGV2ZWxzID0g bHZsOw0KCX0NCm91dDoJDQoJaWYgKGJjbF9idWYuUG9pbnRlciAhPSBOVUxM KQ0KCQlBY3BpT3NGcmVlKGJjbF9idWYuUG9pbnRlcik7DQoJDQoJcmV0dXJu IChudW0pOw0KfQ0KDQpzdGF0aWMgdm9pZA0KYWNwaV9kZWxsX3Bvd2VycHJv ZmlsZSh2b2lkICpjb250ZXh0KQ0Kew0KCWludCAJCQlzdGF0ZTsNCglzdHJ1 Y3QgYWNwaV9kZWxsX3NvZnRjCSpzYzsNCg0KCXNjID0gY29udGV4dDsNCglz dGF0ZSA9IHBvd2VyX3Byb2ZpbGVfZ2V0X3N0YXRlKCk7DQoJaWYgKHN0YXRl ICE9IFBPV0VSX1BST0ZJTEVfUEVSRk9STUFOQ0UgJiYNCgkgICAgc3RhdGUg IT0gUE9XRVJfUFJPRklMRV9FQ09OT01ZKQ0KCQlyZXR1cm4gOw0KDQoJQUNQ SV9TRVJJQUxfQkVHSU4oZGVsbCk7DQoJYWNwaV9TZXRJbnRlZ2VyKHNjLT5o YW5kbGUsIEFDUElfREVMTF9CUklHSFRORVNTX1NFVCwgDQoJCQlzdGF0ZSA9 PSBQT1dFUl9QUk9GSUxFX0VDT05PTVkgPyANCgkJCXNjLT5lY29fYnJpZ2h0 bmVzcyA6IHNjLT5hY19icmlnaHRuZXNzKTsNCglBQ1BJX1NFUklBTF9FTkQo ZGVsbCk7DQp9DQo= ---496892480-560367094-1265996917=:1675--