Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759545AbYHVJci (ORCPT ); Fri, 22 Aug 2008 05:32:38 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753464AbYHVJc3 (ORCPT ); Fri, 22 Aug 2008 05:32:29 -0400 Received: from yx-out-2324.google.com ([74.125.44.30]:12566 "EHLO yx-out-2324.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753350AbYHVJcZ (ORCPT ); Fri, 22 Aug 2008 05:32:25 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=O05sXw6dAVaQMfFlyo5RPJ9VFDJaekCWu/6K3OVo809AbNqPAkc2hG9WrYnDvmUGBv CiFGbtnhLAFdnWf3klPErw6czvqZ7QfYGdhjI4CVBuYzvLujcFfOqY7qBlSajulAaTWM ek4/wcsYc8BzuwfCdluP2fX6HAEKrGkeSSvNc= Message-ID: Date: Fri, 22 Aug 2008 17:32:24 +0800 From: "Eric Miao" To: "Pavel Machek" Subject: Re: Fundamental Design Flaw of the Device Driver Model? Cc: LKML In-Reply-To: <20080822090318.GB6542@atrey.karlin.mff.cuni.cz> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_67524_17170796.1219397544217" References: <20080822090318.GB6542@atrey.karlin.mff.cuni.cz> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 66398 Lines: 908 ------=_Part_67524_17170796.1219397544217 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On Fri, Aug 22, 2008 at 5:03 PM, Pavel Machek wrote: >> Fundamental Design Flaw of the Device Driver Model? >> =================================================== >> >> Sorry for the misleading subject, its purpose is to draw your attention :-) >> The ideas below are preliminary and I hope I'm not making serious mistakes >> here. >> >> This question has actually been around in my mind for several months, when >> I started to work on some devices with multiple functions. Specifically, a >> Power Management IC (PMIC in short in the following text) usually includes >> LEDs support (charging, indication...) audio, touch screen, power monitoring, >> LDOs, DC-DC bucks, and possibly some others. >> >> The initial two ideas came into my mind were: >> >> 1. separate the functions into multiple devices, write a driver for each >> of these devices > > Go for 1. > >> 4. An intermediate device with no bus, no driver, no many other things >> is really not something deserving a "struct device", that's a waste >> of memory. > > Memory is not _that_ expensive, and struct device is not that > big. Adding infrastructure to driver model for supporting this would > also cost you memory, this time in .text segment. > Actually I don't mind wasting additional memory for a better structure, but option (1) isn't. And I just assume you have read to the end of thi mail, then you will see it's more like a concept change,no fundamental change to the code itself. Actually the reason to have two different kind of devices are obvious: 1. physical device - handles the bus related operations (read, write, locking, I/O) 2. virtual device - handles the functionality (interface with the upper framework) With this separation, the same IP on different semiconductor can be shared naturally. There are lot of such products esp in embedded market, with multiple shared IPs within a single die. Attached is a patch series to get you guys a feeling how the option (1) will look like, and think again about the device-driver relationship, the correctness of introducing an intermediate platform_device. ------=_Part_67524_17170796.1219397544217 Content-Type: text/x-diff; name=0001-i2c-add-base-support-for-DA9030-DA9034.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fk66q1410 Content-Disposition: attachment; filename=0001-i2c-add-base-support-for-DA9030-DA9034.patch RnJvbSA0OTY3ODJiNTdhMTZkZjEyZGQzMWNkOWFiZDAwNjQzOGFiN2RiNzVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIE1pYW8gPGVyaWMubWlhb0BtYXJ2ZWxsLmNvbT4KRGF0 ZTogVGh1LCAxNCBBdWcgMjAwOCAxNjoyNzowNyArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIGkyYzog YWRkIGJhc2Ugc3VwcG9ydCBmb3IgREE5MDMwL0RBOTAzNAoKU2lnbmVkLW9mZi1ieTogTWlrZSBS YXBvcG9ydCA8bWlrZUBjb21wdWxhYi5pbC5jbz4KU2lnbmVkLW9mZi1ieTogRXJpYyBNaWFvIDxl cmljLm1pYW9AbWFydmVsbC5jb20+Ci0tLQogZHJpdmVycy9pMmMvY2hpcHMvS2NvbmZpZyAgfCAg IDExICsKIGRyaXZlcnMvaTJjL2NoaXBzL01ha2VmaWxlIHwgICAgMSArCiBkcml2ZXJzL2kyYy9j aGlwcy9kYTkwM3guYyB8ICA1NjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIGluY2x1ZGUvbGludXgvaTJjL2RhOTAzeC5oIHwgIDE2NSArKysrKysrKysrKysr CiA0IGZpbGVzIGNoYW5nZWQsIDc0MCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvaTJjL2NoaXBzL2RhOTAzeC5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgaW5jbHVkZS9saW51eC9pMmMvZGE5MDN4LmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2ky Yy9jaGlwcy9LY29uZmlnIGIvZHJpdmVycy9pMmMvY2hpcHMvS2NvbmZpZwppbmRleCBhOTVjYjk0 Li41YjUxZTg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9jaGlwcy9LY29uZmlnCisrKyBiL2Ry aXZlcnMvaTJjL2NoaXBzL0tjb25maWcKQEAgLTE3Miw0ICsxNzIsMTUgQEAgY29uZmlnIE1FTkVM QVVTCiAJICBhbmQgb3RoZXIgZmVhdHVyZXMgdGhhdCBhcmUgb2Z0ZW4gdXNlZCBpbiBwb3J0YWJs ZSBkZXZpY2VzIGxpa2UKIAkgIGNlbGwgcGhvbmVzIGFuZCBQREFzLgogCitjb25maWcgUE1JQ19E QTkwM1gKKwlib29sICJEaWFsb2cgU2VtaWNvbmR1Y3RvciBEQTkwMzAvREE5MDM0IFBNSUMgU3Vw cG9ydCIKKwlkZXBlbmRzIG9uIEkyQz15ICYmIEFSQ0hfUFhBCisJaGVscAorCSAgU2F5IHllcyBo ZXJlIHRvIHN1cHBvcnQgZm9yIERpYWxvZyBTZW1pY29uZHVjdG9yIERBOTAzMCAoYS5rLmEKKwkg IEFSQVZBKSBhbmQgREE5MDM0IChhLmsuYSBNSUNDTyksIHRoZXNlIGFyZSBQb3dlciBNYW5hZ2Vt ZW50IElDCisJICB1c3VhbGx5IGZvdW5kIG9uIFBYQSBwcm9jZXNzb3JzLWJhc2VkIHBsYXRmb3Jt cy4gVGhpcyBpbmNsdWRlcworCSAgdGhlIEkyQyBkcml2ZXIgYW5kIHRoZSBjb3JlIEFQSXMgX29u bHlfLCB5b3UgaGF2ZSB0byBzZWxlY3QKKwkgIGluZGl2aWR1YWwgY29tcG9uZW50cyBsaWtlIExD RCBiYWNrbGlnaHQsIHZvbHRhZ2UgcmVndWxhdG9ycywKKwkgIExFRHMgYW5kIGJhdHRlcnktY2hh cmdlciB1bmRlciB0aGUgY29ycmVzcG9uZGluZyBtZW51cy4KKwogZW5kbWVudQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9pMmMvY2hpcHMvTWFrZWZpbGUgYi9kcml2ZXJzL2kyYy9jaGlwcy9NYWtlZmls ZQppbmRleCAzOWUzZTY5Li5jNTMyM2FhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9jaGlwcy9N YWtlZmlsZQorKysgYi9kcml2ZXJzL2kyYy9jaGlwcy9NYWtlZmlsZQpAQCAtMjEsNiArMjEsNyBA QCBvYmotJChDT05GSUdfSVNQMTMwMV9PTUFQKQkrPSBpc3AxMzAxX29tYXAubwogb2JqLSQoQ09O RklHX1RQUzY1MDEwKQkJKz0gdHBzNjUwMTAubwogb2JqLSQoQ09ORklHX01FTkVMQVVTKQkJKz0g bWVuZWxhdXMubwogb2JqLSQoQ09ORklHX1NFTlNPUlNfVFNMMjU1MCkJKz0gdHNsMjU1MC5vCitv YmotJChDT05GSUdfUE1JQ19EQTkwM1gpCSs9IGRhOTAzeC5vCiAKIGlmZXEgKCQoQ09ORklHX0ky Q19ERUJVR19DSElQKSx5KQogRVhUUkFfQ0ZMQUdTICs9IC1EREVCVUcKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvaTJjL2NoaXBzL2RhOTAzeC5jIGIvZHJpdmVycy9pMmMvY2hpcHMvZGE5MDN4LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmViNTU5ZAotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvaTJjL2NoaXBzL2RhOTAzeC5jCkBAIC0wLDAgKzEsNTYzIEBACisvKgorICog QmFzZSBkcml2ZXIgZm9yIERpYWxvZyBTZW1pY29uZHVjdG9yIERBOTAzMC9EQTkwMzQKKyAqCisg KiBDb3B5cmlnaHQgKEMpIDIwMDggQ29tcHVsYWIsIEx0ZC4KKyAqIAlNaWtlIFJhcG9wb3J0IDxt aWtlQGNvbXB1bGFiLmNvLmlsPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA4IE1hcnZl bGwgSW50ZXJuYXRpb25hbCBMdGQuCisgKiAJRXJpYyBNaWFvIDxlcmljLm1pYW9AbWFydmVsbC5j b20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVs Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0 Lmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgv aTJjLmg+CisjaW5jbHVkZSA8bGludXgvaTJjL2RhOTAzeC5oPgorCisjZGVmaW5lIERBOTAzMF9D SElQX0lECQkweDAwCisjZGVmaW5lIERBOTAzMF9FVkVOVF9BCQkweDAxCisjZGVmaW5lIERBOTAz MF9FVkVOVF9CCQkweDAyCisjZGVmaW5lIERBOTAzMF9FVkVOVF9DCQkweDAzCisjZGVmaW5lIERB OTAzMF9TVEFUVVMJCTB4MDQKKyNkZWZpbmUgREE5MDMwX0lSUV9NQVNLX0EJMHgwNQorI2RlZmlu ZSBEQTkwMzBfSVJRX01BU0tfQgkweDA2CisjZGVmaW5lIERBOTAzMF9JUlFfTUFTS19DCTB4MDcK KyNkZWZpbmUgREE5MDMwX1NZU19DVFJMX0EJMHgwOAorI2RlZmluZSBEQTkwMzBfU1lTX0NUUkxf QgkweDA5CisjZGVmaW5lIERBOTAzMF9GQVVMVF9MT0cJMHgwYQorCisjZGVmaW5lIERBOTAzNF9D SElQX0lECQkweDAwCisjZGVmaW5lIERBOTAzNF9FVkVOVF9BCQkweDAxCisjZGVmaW5lIERBOTAz NF9FVkVOVF9CCQkweDAyCisjZGVmaW5lIERBOTAzNF9FVkVOVF9DCQkweDAzCisjZGVmaW5lIERB OTAzNF9FVkVOVF9ECQkweDA0CisjZGVmaW5lIERBOTAzNF9TVEFUVVNfQQkJMHgwNQorI2RlZmlu ZSBEQTkwMzRfU1RBVFVTX0IJCTB4MDYKKyNkZWZpbmUgREE5MDM0X0lSUV9NQVNLX0EJMHgwNwor I2RlZmluZSBEQTkwMzRfSVJRX01BU0tfQgkweDA4CisjZGVmaW5lIERBOTAzNF9JUlFfTUFTS19D CTB4MDkKKyNkZWZpbmUgREE5MDM0X0lSUV9NQVNLX0QJMHgwYQorI2RlZmluZSBEQTkwMzRfU1lT X0NUUkxfQQkweDBiCisjZGVmaW5lIERBOTAzNF9TWVNfQ1RSTF9CCTB4MGMKKyNkZWZpbmUgREE5 MDM0X0ZBVUxUX0xPRwkweDBkCisKK3N0cnVjdCBkYTkwM3hfY2hpcDsKKworc3RydWN0IGRhOTAz eF9jaGlwX29wcyB7CisJaW50CSgqaW5pdF9jaGlwKShzdHJ1Y3QgZGE5MDN4X2NoaXAgKik7CisJ aW50CSgqdW5tYXNrX2V2ZW50cykoc3RydWN0IGRhOTAzeF9jaGlwICosIHVuc2lnbmVkIGludCBl dmVudHMpOworCWludAkoKm1hc2tfZXZlbnRzKShzdHJ1Y3QgZGE5MDN4X2NoaXAgKiwgdW5zaWdu ZWQgaW50IGV2ZW50cyk7CisJaW50CSgqcmVhZF9ldmVudHMpKHN0cnVjdCBkYTkwM3hfY2hpcCAq LCB1bnNpZ25lZCBpbnQgKmV2ZW50cyk7CisJaW50CSgqcmVhZF9zdGF0dXMpKHN0cnVjdCBkYTkw M3hfY2hpcCAqLCB1bnNpZ25lZCBpbnQgKnN0YXR1cyk7Cit9OworCitzdHJ1Y3QgZGE5MDN4X2No aXAgeworCXN0cnVjdCBpMmNfY2xpZW50CSpjbGllbnQ7CisJc3RydWN0IGRldmljZQkJKmRldjsK KwlzdHJ1Y3QgZGE5MDN4X2NoaXBfb3BzCSpvcHM7CisKKwlpbnQJCQl0eXBlOworCXVpbnQzMl90 CQlldmVudHNfbWFzazsKKworCXN0cnVjdCBtdXRleAkJbG9jazsKKwlzdHJ1Y3Qgd29ya19zdHJ1 Y3QJaXJxX3dvcms7CisKKwlzdHJ1Y3QgYmxvY2tpbmdfbm90aWZpZXJfaGVhZCBub3RpZmllcl9s aXN0OworfTsKKworc3RhdGljIGludCBfX2RhOTAzeF9yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQsIGludCByZWcsIHVpbnQ4X3QgKnZhbCkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gaTJj X3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgcmVnKTsKKwlpZiAocmV0IDwgMCkgeworCQlk ZXZfZXJyKCZjbGllbnQtPmRldiwgImZhaWxlZCByZWFkaW5nIGF0IDB4JTAyeFxuIiwgcmVnKTsK KwkJcmV0dXJuIHJldDsKKwl9CisKKwkqdmFsID0gKHVpbnQ4X3QpcmV0OworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IF9fZGE5MDN4X3JlYWRzKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQs IGludCByZWcsCisJCQkJaW50IGxlbiwgdWludDhfdCAqdmFsKQoreworCWludCByZXQ7CisKKwly ZXQgPSBpMmNfc21idXNfcmVhZF9pMmNfYmxvY2tfZGF0YShjbGllbnQsIHJlZywgbGVuLCB2YWwp OworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiZmFpbGVkIHJlYWRp bmcgZnJvbSAweCUwMnhcbiIsIHJlZyk7CisJCXJldHVybiByZXQ7CisJfQorCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IF9fZGE5MDN4X3dyaXRlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQs IGludCByZWcsIHVpbnQ4X3QgdmFsKQoreworCWludCByZXQ7CisKKwlyZXQgPSBpMmNfc21idXNf d3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgcmVnLCB2YWwpOworCWlmIChyZXQgPCAwKSB7CisJCWRl dl9lcnIoJmNsaWVudC0+ZGV2LCAiZmFpbGVkIHdyaXRpbmcgMHglMDJ4IHRvIDB4JTAyeFxuIiwK KwkJCQl2YWwsIHJlZyk7CisJCXJldHVybiByZXQ7CisJfQorCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IF9fZGE5MDN4X3dyaXRlcyhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBpbnQgcmVn LAorCQkJCWludCBsZW4sIHVpbnQ4X3QgKnZhbCkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gaTJj X3NtYnVzX3dyaXRlX2kyY19ibG9ja19kYXRhKGNsaWVudCwgcmVnLCBsZW4sIHZhbCk7CisJaWYg KHJldCA8IDApIHsKKwkJZGV2X2VycigmY2xpZW50LT5kZXYsICJmYWlsZWQgd3JpdGluZ3MgdG8g MHglMDJ4XG4iLCByZWcpOworCQlyZXR1cm4gcmV0OworCX0KKwlyZXR1cm4gMDsKK30KKworaW50 IGRhOTAzeF9yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBub3Rp Zmllcl9ibG9jayAqbmIsCisJCQkJdW5zaWduZWQgaW50IGV2ZW50cykKK3sKKwlzdHJ1Y3QgZGE5 MDN4X2NoaXAgKmNoaXAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKworCWNoaXAtPm9wcy0+dW5t YXNrX2V2ZW50cyhjaGlwLCBldmVudHMpOworCXJldHVybiBibG9ja2luZ19ub3RpZmllcl9jaGFp bl9yZWdpc3RlcigmY2hpcC0+bm90aWZpZXJfbGlzdCwgbmIpOworfQorRVhQT1JUX1NZTUJPTF9H UEwoZGE5MDN4X3JlZ2lzdGVyX25vdGlmaWVyKTsKKworaW50IGRhOTAzeF91bnJlZ2lzdGVyX25v dGlmaWVyKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKKwkJ CQl1bnNpZ25lZCBpbnQgZXZlbnRzKQoreworCXN0cnVjdCBkYTkwM3hfY2hpcCAqY2hpcCA9IGRl dl9nZXRfZHJ2ZGF0YShkZXYpOworCisJY2hpcC0+b3BzLT5tYXNrX2V2ZW50cyhjaGlwLCBldmVu dHMpOworCXJldHVybiBibG9ja2luZ19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKCZjaGlwLT5u b3RpZmllcl9saXN0LCBuYik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChkYTkwM3hfdW5yZWdpc3Rl cl9ub3RpZmllcik7CisKK2ludCBkYTkwM3hfd3JpdGUoc3RydWN0IGRldmljZSAqZGV2LCBpbnQg cmVnLCB1aW50OF90IHZhbCkKK3sKKwlyZXR1cm4gX19kYTkwM3hfd3JpdGUodG9faTJjX2NsaWVu dChkZXYpLCByZWcsIHZhbCk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChkYTkwM3hfd3JpdGUpOwor CitpbnQgZGE5MDN4X3JlYWQoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcmVnLCB1aW50OF90ICp2 YWwpCit7CisJcmV0dXJuIF9fZGE5MDN4X3JlYWQodG9faTJjX2NsaWVudChkZXYpLCByZWcsIHZh bCk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChkYTkwM3hfcmVhZCk7CisKK2ludCBkYTkwM3hfc2V0 X2JpdChzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCByZWcsIHVpbnQ4X3QgYml0X21hc2spCit7CisJ c3RydWN0IGRhOTAzeF9jaGlwICpjaGlwID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJdWludDhf dCByZWdfdmFsOworCWludCByZXQgPSAwOworCisJbXV0ZXhfbG9jaygmY2hpcC0+bG9jayk7CisK KwlyZXQgPSBfX2RhOTAzeF9yZWFkKGNoaXAtPmNsaWVudCwgcmVnLCAmcmVnX3ZhbCk7CisJaWYg KHJldCkKKwkJZ290byBvdXQ7CisKKwlpZiAoKHJlZ192YWwgJiBiaXRfbWFzaykgPT0gMCkgewor CQlyZWdfdmFsIHw9IGJpdF9tYXNrOworCQlyZXQgPSBfX2RhOTAzeF93cml0ZShjaGlwLT5jbGll bnQsIHJlZywgcmVnX3ZhbCk7CisJfQorb3V0OgorCW11dGV4X3VubG9jaygmY2hpcC0+bG9jayk7 CisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGRhOTAzeF9zZXRfYml0KTsKKwor aW50IGRhOTAzeF9jbHJfYml0KHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJlZywgdWludDhfdCBi aXRfbWFzaykKK3sKKwlzdHJ1Y3QgZGE5MDN4X2NoaXAgKmNoaXAgPSBkZXZfZ2V0X2RydmRhdGEo ZGV2KTsKKwl1aW50OF90IHJlZ192YWw7CisJaW50IHJldCA9IDA7CisKKwltdXRleF9sb2NrKCZj aGlwLT5sb2NrKTsKKworCXJldCA9IF9fZGE5MDN4X3JlYWQoY2hpcC0+Y2xpZW50LCByZWcsICZy ZWdfdmFsKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCWlmIChyZWdfdmFsICYgYml0X21h c2spIHsKKwkJcmVnX3ZhbCAmPSB+Yml0X21hc2s7CisJCXJldCA9IF9fZGE5MDN4X3dyaXRlKGNo aXAtPmNsaWVudCwgcmVnLCByZWdfdmFsKTsKKwl9CitvdXQ6CisJbXV0ZXhfdW5sb2NrKCZjaGlw LT5sb2NrKTsKKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTF9HUEwoZGE5MDN4X2Nscl9i aXQpOworCitpbnQgZGE5MDN4X3VwZGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCByZWcsIHVp bnQ4X3QgdmFsLCB1aW50OF90IG1hc2spCit7CisJc3RydWN0IGRhOTAzeF9jaGlwICpjaGlwID0g ZGV2X2dldF9kcnZkYXRhKGRldik7CisJdWludDhfdCByZWdfdmFsOworCWludCByZXQgPSAwOwor CisJbXV0ZXhfbG9jaygmY2hpcC0+bG9jayk7CisKKwlyZXQgPSBfX2RhOTAzeF9yZWFkKGNoaXAt PmNsaWVudCwgcmVnLCAmcmVnX3ZhbCk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlpZiAo KHJlZ192YWwgJiBtYXNrKSAhPSB2YWwpIHsKKwkJcmVnX3ZhbCA9IChyZWdfdmFsICYgfm1hc2sp IHwgdmFsOworCQlyZXQgPSBfX2RhOTAzeF93cml0ZShjaGlwLT5jbGllbnQsIHJlZywgcmVnX3Zh bCk7CisJfQorb3V0OgorCW11dGV4X3VubG9jaygmY2hpcC0+bG9jayk7CisJcmV0dXJuIHJldDsK K30KK0VYUE9SVF9TWU1CT0xfR1BMKGRhOTAzeF91cGRhdGUpOworCitpbnQgZGE5MDN4X3F1ZXJ5 X3N0YXR1cyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBzYml0cykKK3sKKwlzdHJ1 Y3QgZGE5MDN4X2NoaXAgKmNoaXAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwl1bnNpZ25lZCBp bnQgc3RhdHVzID0gMDsKKworCWNoaXAtPm9wcy0+cmVhZF9zdGF0dXMoY2hpcCwgJnN0YXR1cyk7 CisJcmV0dXJuICgoc3RhdHVzICYgc2JpdHMpID09IHNiaXRzKTsKK30KK0VYUE9SVF9TWU1CT0wo ZGE5MDN4X3F1ZXJ5X3N0YXR1cyk7CisKK3N0YXRpYyBpbnQgX19kZXZpbml0IGRhOTAzMF9pbml0 X2NoaXAoc3RydWN0IGRhOTAzeF9jaGlwICpjaGlwKQoreworCXVpbnQ4X3QgY2hpcF9pZDsKKwlp bnQgZXJyOworCisJZXJyID0gX19kYTkwM3hfcmVhZChjaGlwLT5jbGllbnQsIERBOTAzMF9DSElQ X0lELCAmY2hpcF9pZCk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWVyciA9IF9fZGE5 MDN4X3dyaXRlKGNoaXAtPmNsaWVudCwgREE5MDMwX1NZU19DVFJMX0EsIDB4RTgpOworCWlmIChl cnIpCisJCXJldHVybiBlcnI7CisKKwlkZXZfaW5mbyhjaGlwLT5kZXYsICJEQTkwMzAgKENISVAg SUQ6IDB4JTAyeCkgZGV0ZWN0ZWRcbiIsIGNoaXBfaWQpOworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IGRhOTAzMF91bm1hc2tfZXZlbnRzKHN0cnVjdCBkYTkwM3hfY2hpcCAqY2hpcCwgdW5z aWduZWQgaW50IGV2ZW50cykKK3sKKwl1aW50OF90IHZbM107CisKKwljaGlwLT5ldmVudHNfbWFz ayAmPSB+ZXZlbnRzOworCisJdlswXSA9IChjaGlwLT5ldmVudHNfbWFzayAmIDB4ZmYpOworCXZb MV0gPSAoY2hpcC0+ZXZlbnRzX21hc2sgPj4gOCkgJiAweGZmOworCXZbMl0gPSAoY2hpcC0+ZXZl bnRzX21hc2sgPj4gMTYpICYgMHhmZjsKKworCXJldHVybiBfX2RhOTAzeF93cml0ZXMoY2hpcC0+ Y2xpZW50LCBEQTkwMzBfSVJRX01BU0tfQSwgMywgdik7Cit9CisKK3N0YXRpYyBpbnQgZGE5MDMw X21hc2tfZXZlbnRzKHN0cnVjdCBkYTkwM3hfY2hpcCAqY2hpcCwgdW5zaWduZWQgaW50IGV2ZW50 cykKK3sKKwl1aW50OF90IHZbM107CisJCisJY2hpcC0+ZXZlbnRzX21hc2sgJj0gfmV2ZW50czsK KworCXZbMF0gPSAoY2hpcC0+ZXZlbnRzX21hc2sgJiAweGZmKTsKKwl2WzFdID0gKGNoaXAtPmV2 ZW50c19tYXNrID4+IDgpICYgMHhmZjsKKwl2WzJdID0gKGNoaXAtPmV2ZW50c19tYXNrID4+IDE2 KSAmIDB4ZmY7CisKKwlyZXR1cm4gX19kYTkwM3hfd3JpdGVzKGNoaXAtPmNsaWVudCwgREE5MDMw X0lSUV9NQVNLX0EsIDMsIHYpOworfQorCitzdGF0aWMgaW50IGRhOTAzMF9yZWFkX2V2ZW50cyhz dHJ1Y3QgZGE5MDN4X2NoaXAgKmNoaXAsIHVuc2lnbmVkIGludCAqZXZlbnRzKQoreworCXVpbnQ4 X3QgdlszXSA9IHswLCAwLCAwfTsKKwlpbnQgcmV0OworCisJcmV0ID0gX19kYTkwM3hfcmVhZHMo Y2hpcC0+Y2xpZW50LCBEQTkwMzBfRVZFTlRfQSwgMywgdik7CisJaWYgKHJldCA8IDApCisJCXJl dHVybiByZXQ7CisKKwkqZXZlbnRzID0gKHZbMl0gPDwgMTYpIHwgKHZbMV0gPDwgOCkgfCB2WzBd OworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRhOTAzMF9yZWFkX3N0YXR1cyhzdHJ1Y3Qg ZGE5MDN4X2NoaXAgKmNoaXAsIHVuc2lnbmVkIGludCAqc3RhdHVzKQoreworCXJldHVybiBfX2Rh OTAzeF9yZWFkKGNoaXAtPmNsaWVudCwgREE5MDMwX1NUQVRVUywgKHVpbnQ4X3QgKilzdGF0dXMp OworfQorCitzdGF0aWMgaW50IGRhOTAzNF9pbml0X2NoaXAoc3RydWN0IGRhOTAzeF9jaGlwICpj aGlwKQoreworCXVpbnQ4X3QgY2hpcF9pZDsKKwlpbnQgZXJyOworCisJZXJyID0gX19kYTkwM3hf cmVhZChjaGlwLT5jbGllbnQsIERBOTAzNF9DSElQX0lELCAmY2hpcF9pZCk7CisJaWYgKGVycikK KwkJcmV0dXJuIGVycjsKKworCWVyciA9IF9fZGE5MDN4X3dyaXRlKGNoaXAtPmNsaWVudCwgREE5 MDM0X1NZU19DVFJMX0EsIDB4RTgpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwkvKiBh dm9pZCBTUkFNIHBvd2VyIG9mZiBkdXJpbmcgc2xlZXAqLworCV9fZGE5MDN4X3dyaXRlKGNoaXAt PmNsaWVudCwgMHgxMCwgMHgwNyk7CisJX19kYTkwM3hfd3JpdGUoY2hpcC0+Y2xpZW50LCAweDEx LCAweGZmKTsKKwlfX2RhOTAzeF93cml0ZShjaGlwLT5jbGllbnQsIDB4MTIsIDB4ZmYpOworCisJ LyogRW5hYmxlIHRoZSBPTktFWSBwb3dlciBkb3duIGZ1bmN0aW9uYWxpdHkgKi8KKwlfX2RhOTAz eF93cml0ZShjaGlwLT5jbGllbnQsIERBOTAzNF9TWVNfQ1RSTF9CLCAweDIwKTsKKwlfX2RhOTAz eF93cml0ZShjaGlwLT5jbGllbnQsIERBOTAzNF9TWVNfQ1RSTF9BLCAweDYwKTsKKworCS8qIHdv cmthcm91bmQgdG8gbWFrZSBMRURzIHdvcmsgKi8KKwlfX2RhOTAzeF93cml0ZShjaGlwLT5jbGll bnQsIDB4OTAsIDB4MDEpOworCV9fZGE5MDN4X3dyaXRlKGNoaXAtPmNsaWVudCwgMHhCMCwgMHgw OCk7CisKKwlkZXZfaW5mbyhjaGlwLT5kZXYsICJEQTkwMzQgKENISVAgSUQ6IDB4JTAyeCkgZGV0 ZWN0ZWRcbiIsIGNoaXBfaWQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRhOTAzNF91 bm1hc2tfZXZlbnRzKHN0cnVjdCBkYTkwM3hfY2hpcCAqY2hpcCwgdW5zaWduZWQgaW50IGV2ZW50 cykKK3sKKwl1aW50OF90IHZbNF07CisKKwljaGlwLT5ldmVudHNfbWFzayAmPSB+ZXZlbnRzOwor CQorCXZbMF0gPSAoY2hpcC0+ZXZlbnRzX21hc2sgJiAweGZmKTsKKwl2WzFdID0gKGNoaXAtPmV2 ZW50c19tYXNrID4+IDgpICYgMHhmZjsKKwl2WzJdID0gKGNoaXAtPmV2ZW50c19tYXNrID4+IDE2 KSAmIDB4ZmY7CisJdlszXSA9IChjaGlwLT5ldmVudHNfbWFzayA+PiAyNCkgJiAweGZmOworCisJ cmV0dXJuIF9fZGE5MDN4X3dyaXRlcyhjaGlwLT5jbGllbnQsIERBOTAzNF9JUlFfTUFTS19BLCA0 LCB2KTsKK30KKworc3RhdGljIGludCBkYTkwMzRfbWFza19ldmVudHMoc3RydWN0IGRhOTAzeF9j aGlwICpjaGlwLCB1bnNpZ25lZCBpbnQgZXZlbnRzKQoreworCXVpbnQ4X3Qgdls0XTsKKworCWNo aXAtPmV2ZW50c19tYXNrIHw9IGV2ZW50czsKKworCXZbMF0gPSAoY2hpcC0+ZXZlbnRzX21hc2sg JiAweGZmKTsKKwl2WzFdID0gKGNoaXAtPmV2ZW50c19tYXNrID4+IDgpICYgMHhmZjsKKwl2WzJd ID0gKGNoaXAtPmV2ZW50c19tYXNrID4+IDE2KSAmIDB4ZmY7CisJdlszXSA9IChjaGlwLT5ldmVu dHNfbWFzayA+PiAyNCkgJiAweGZmOworCisJcmV0dXJuIF9fZGE5MDN4X3dyaXRlcyhjaGlwLT5j bGllbnQsIERBOTAzNF9JUlFfTUFTS19BLCA0LCB2KTsKK30KKworc3RhdGljIGludCBkYTkwMzRf cmVhZF9ldmVudHMoc3RydWN0IGRhOTAzeF9jaGlwICpjaGlwLCB1bnNpZ25lZCBpbnQgKmV2ZW50 cykKK3sKKwl1aW50OF90IHZbNF0gPSB7MCwgMCwgMCwgMH07CisJaW50IHJldDsKKworCXJldCA9 IF9fZGE5MDN4X3JlYWRzKGNoaXAtPmNsaWVudCwgREE5MDM0X0VWRU5UX0EsIDQsIHYpOworCWlm IChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJKmV2ZW50cyA9ICh2WzNdIDw8IDI0KSB8ICh2 WzJdIDw8IDE2KSB8ICh2WzFdIDw8IDgpIHwgdlswXTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBkYTkwMzRfcmVhZF9zdGF0dXMoc3RydWN0IGRhOTAzeF9jaGlwICpjaGlwLCB1bnNpZ25l ZCBpbnQgKnN0YXR1cykKK3sKKwl1aW50OF90IHZbMl0gPSB7MCwgMH07CisJaW50IHJldCA9IDA7 CisKKwlyZXQgPSBfX2RhOTAzeF9yZWFkcyhjaGlwLT5jbGllbnQsIERBOTAzNF9TVEFUVVNfQSwg Miwgdik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCSpzdGF0dXMgPSAodlsxXSA8PCA4 KSB8IHZbMF07CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGRhOTAzeF9pcnFfd29yayhz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGRhOTAzeF9jaGlwICpjaGlwID0K KwkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBkYTkwM3hfY2hpcCwgaXJxX3dvcmspOworCXVu c2lnbmVkIGludCBldmVudHMgPSAwOworCisJd2hpbGUgKDEpIHsKKwkJaWYgKGNoaXAtPm9wcy0+ cmVhZF9ldmVudHMoY2hpcCwgJmV2ZW50cykpCisJCQlicmVhazsKKworCQlldmVudHMgJj0gfmNo aXAtPmV2ZW50c19tYXNrOworCQlpZiAoZXZlbnRzID09IDApCisJCQlicmVhazsKKworCQlibG9j a2luZ19ub3RpZmllcl9jYWxsX2NoYWluKAorCQkJCSZjaGlwLT5ub3RpZmllcl9saXN0LCBldmVu dHMsIE5VTEwpOworCX0KKwllbmFibGVfaXJxKGNoaXAtPmNsaWVudC0+aXJxKTsKK30KKworc3Rh dGljIGludCBkYTkwM3hfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1 Y3QgZGE5MDN4X2NoaXAgKmNoaXAgPSBkYXRhOworCisJZGlzYWJsZV9pcnFfbm9zeW5jKGlycSk7 CisJKHZvaWQpc2NoZWR1bGVfd29yaygmY2hpcC0+aXJxX3dvcmspOworCisJcmV0dXJuIElSUV9I QU5ETEVEOworfQorCitzdGF0aWMgaW50IGRhOTAzeF9yZW1vdmVfc3ViZGV2KHN0cnVjdCBkZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0g ZGF0YTsKKworCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKHBkZXYpOworCXJldHVybiAwOwor fQorCitzdGF0aWMgdm9pZCBkYTkwM3hfcmVtb3ZlX3N1YmRldnMoc3RydWN0IGRhOTAzeF9jaGlw ICpjaGlwKQoreworCWRldmljZV9mb3JfZWFjaF9jaGlsZChjaGlwLT5kZXYsIE5VTEwsIGRhOTAz eF9yZW1vdmVfc3ViZGV2KTsKK30KKworc3RhdGljIGludCBkYTkwM3hfYWRkX3N1YmRldnMoc3Ry dWN0IGRhOTAzeF9jaGlwICpjaGlwLAorCQkJICAgICAgc3RydWN0IGRhOTAzeF9zdWJkZXZfaW5m byAqc3ViZGV2cywKKwkJCSAgICAgIGludCBudW0pCit7CisJc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldjsKKwlpbnQgaSwgcmV0OworCisJZm9yIChpID0gMDsgaSA8IG51bTsgaSsrKSB7CisJ CXBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfYWxsb2Moc3ViZGV2c1tpXS5uYW1lLCBzdWJkZXZzW2ld LmlkKTsKKwkJaWYgKHBkZXYgPT0gTlVMTCkgeworCQkJZGV2X2VycihjaGlwLT5kZXYsICJmYWls ZWQgdG8gYWxsb2Mgc3ViIGRldmljZSglcylcbiIsCisJCQkJCXN1YmRldnNbaV0ubmFtZSk7CisJ CQlyZXQgPSAtRU5PTUVNOworCQkJZ290byBlcnI7CisJCX0KKworCQlwZGV2LT5kZXYucGFyZW50 ID0gY2hpcC0+ZGV2OworCQlwZGV2LT5kZXYucGxhdGZvcm1fZGF0YSA9IHN1YmRldnNbaV0ucGxh dGZvcm1fZGF0YTsKKworCQlyZXQgPSBwbGF0Zm9ybV9kZXZpY2VfYWRkKHBkZXYpOworCQlpZiAo cmV0KSB7CisJCQlkZXZfZXJyKGNoaXAtPmRldiwgImZhaWxlZCB0byBhZGQgc3ViIGRldmljZSgl cylcbiIsCisJCQkJCXN1YmRldnNbaV0ubmFtZSk7CisJCQlnb3RvIGVycjsKKwkJfQorCX0KKwly ZXR1cm4gMDsKK2VycjoKKwlkYTkwM3hfcmVtb3ZlX3N1YmRldnMoY2hpcCk7CisJcmV0dXJuIHJl dDsKK30KKworc3RhdGljIGludCBfX2RldmluaXQgZGE5MDN4X3Byb2JlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQsCisJCQkJICBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCit7CisJ c3RydWN0IGRhOTAzeF9wbGF0Zm9ybV9kYXRhICpwZGF0YSA9IGNsaWVudC0+ZGV2LnBsYXRmb3Jt X2RhdGE7CisJc3RydWN0IGRhOTAzeF9jaGlwICpjaGlwOworCXVuc2lnbmVkIGludCB0bXA7CisJ aW50IHJldDsKKworCWNoaXAgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgZGE5MDN4X2NoaXApLCBH RlBfS0VSTkVMKTsKKwlpZiAoY2hpcCA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWNo aXAtPmNsaWVudCA9IGNsaWVudDsKKwljaGlwLT5kZXYgPSAmY2xpZW50LT5kZXY7CisJY2hpcC0+ b3BzID0gKHN0cnVjdCBkYTkwM3hfY2hpcF9vcHMgKilpZC0+ZHJpdmVyX2RhdGE7CisKKwltdXRl eF9pbml0KCZjaGlwLT5sb2NrKTsKKwlJTklUX1dPUksoJmNoaXAtPmlycV93b3JrLCBkYTkwM3hf aXJxX3dvcmspOworCUJMT0NLSU5HX0lOSVRfTk9USUZJRVJfSEVBRCgmY2hpcC0+bm90aWZpZXJf bGlzdCk7CisKKwlyZXQgPSBjaGlwLT5vcHMtPmluaXRfY2hpcChjaGlwKTsKKwlpZiAocmV0KQor CQlnb3RvIG91dF9mcmVlX2NoaXA7CisKKwkvKiBtYXNrIGFuZCBjbGVhciBhbGwgSVJRcyAqLwor CWNoaXAtPmV2ZW50c19tYXNrID0gMHhmZmZmZmZmZjsKKwljaGlwLT5vcHMtPm1hc2tfZXZlbnRz KGNoaXAsIGNoaXAtPmV2ZW50c19tYXNrKTsKKwljaGlwLT5vcHMtPnJlYWRfZXZlbnRzKGNoaXAs ICZ0bXApOworCisJcmV0ID0gcmVxdWVzdF9pcnEoY2xpZW50LT5pcnEsIGRhOTAzeF9pcnFfaGFu ZGxlciwKKwkJCUlSUUZfRElTQUJMRUQgfCBJUlFGX1RSSUdHRVJfRkFMTElORywKKwkJCSJkYTkw M3giLCBjaGlwKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiZmFpbGVk IHRvIHJlcXVlc3QgaXJxICVkXG4iLAorCQkJCWNsaWVudC0+aXJxKTsKKwkJZ290byBvdXRfZnJl ZV9jaGlwOworCX0KKworCXJldCA9IGRhOTAzeF9hZGRfc3ViZGV2cyhjaGlwLCBwZGF0YS0+c3Vi ZGV2cywgcGRhdGEtPm51bV9zdWJkZXZzKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dF9mcmVlX2ly cTsKKworCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGNoaXApOworCXJldHVybiAwOworCitv dXRfZnJlZV9pcnE6CisJZnJlZV9pcnEoY2xpZW50LT5pcnEsIGNoaXApOworb3V0X2ZyZWVfY2hp cDoKKwlrZnJlZShjaGlwKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IF9fZGV2ZXhp dCBkYTkwM3hfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCit7CisJc3RydWN0IGRh OTAzeF9jaGlwICpjaGlwID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisKKwlkYTkwM3hf cmVtb3ZlX3N1YmRldnMoY2hpcCk7CisJa2ZyZWUoY2hpcCk7CisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgZGE5MDN4X2NoaXBfb3BzIGRhOTAzMF9vcHMgPSB7CisJLmluaXRfY2hpcAk9 IGRhOTAzMF9pbml0X2NoaXAsCisJLnVubWFza19ldmVudHMJPSBkYTkwMzBfdW5tYXNrX2V2ZW50 cywKKwkubWFza19ldmVudHMJPSBkYTkwMzBfbWFza19ldmVudHMsCisJLnJlYWRfZXZlbnRzCT0g ZGE5MDMwX3JlYWRfZXZlbnRzLAorCS5yZWFkX3N0YXR1cwk9IGRhOTAzMF9yZWFkX3N0YXR1cywK K307CisKK3N0YXRpYyBzdHJ1Y3QgZGE5MDN4X2NoaXBfb3BzIGRhOTAzNF9vcHMgPSB7CisJLmlu aXRfY2hpcAk9IGRhOTAzNF9pbml0X2NoaXAsCisJLnVubWFza19ldmVudHMJPSBkYTkwMzRfdW5t YXNrX2V2ZW50cywKKwkubWFza19ldmVudHMJPSBkYTkwMzRfbWFza19ldmVudHMsCisJLnJlYWRf ZXZlbnRzCT0gZGE5MDM0X3JlYWRfZXZlbnRzLAorCS5yZWFkX3N0YXR1cwk9IGRhOTAzNF9yZWFk X3N0YXR1cywKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBkYTkwM3hf aWRfdGFibGVbXSA9IHsKKwl7ICJkYTkwMzAiLCAodW5zaWduZWQgbG9uZykmZGE5MDMwX29wcywg fSwKKwl7ICJkYTkwMzQiLCAodW5zaWduZWQgbG9uZykmZGE5MDM0X29wcywgfSwKKwl7IH0sCit9 OworTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGRhOTAzeF9pZF90YWJsZSk7CisKK3N0YXRpYyBz dHJ1Y3QgaTJjX2RyaXZlciBkYTkwM3hfZHJpdmVyID0geworCS5kcml2ZXIJPSB7CisJCS5uYW1l CT0gImRhOTAzeCIsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAorCX0sCisJLnByb2JlCQk9IGRh OTAzeF9wcm9iZSwKKwkucmVtb3ZlCQk9IF9fZGV2ZXhpdF9wKGRhOTAzeF9yZW1vdmUpLAorCS5p ZF90YWJsZQk9IGRhOTAzeF9pZF90YWJsZSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGRhOTAz eF9pbml0KHZvaWQpCit7CisJcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZkYTkwM3hfZHJpdmVyKTsK K30KK21vZHVsZV9pbml0KGRhOTAzeF9pbml0KTsKKworc3RhdGljIHZvaWQgX19leGl0IGRhOTAz eF9leGl0KHZvaWQpCit7CisJaTJjX2RlbF9kcml2ZXIoJmRhOTAzeF9kcml2ZXIpOworfQorbW9k dWxlX2V4aXQoZGE5MDN4X2V4aXQpOworCitNT0RVTEVfREVTQ1JJUFRJT04oIlBNSUMgRHJpdmVy IGZvciBEaWFsb2cgU2VtaWNvbmR1Y3RvciBEQTkwMzQiKTsKK01PRFVMRV9BVVRIT1IoIkVyaWMg TWlhbyA8ZXJpYy5taWFvQG1hcnZlbGwuY29tPiIKKwkgICAgICAiTWlrZSBSYXBvcG9ydCA8bWlr ZUBjb21wdWxhYi5jby5pbD4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvaTJjL2RhOTAzeC5oIGIvaW5jbHVkZS9saW51eC9pMmMvZGE5MDN4LmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA0MzRjNwotLS0gL2Rldi9udWxs CisrKyBiL2luY2x1ZGUvbGludXgvaTJjL2RhOTAzeC5oCkBAIC0wLDAgKzEsMTY1IEBACisjaWZu ZGVmIF9fTElOVVhfUE1JQ19EQTkwM1hfSAorI2RlZmluZSBfX0xJTlVYX1BNSUNfREE5MDNYX0gK KworI2luY2x1ZGUgPGxpbnV4L2xlZHMuaD4KKworLyogVW5pZmllZCBzdWIgZGV2aWNlIElEcyBm b3IgREE5MDMwL0RBOTAzNCAqLworZW51bSB7CisJREE5MDMwX0lEX0xFRF8xLAorCURBOTAzMF9J RF9MRURfMiwKKwlEQTkwMzBfSURfTEVEXzMsCisJREE5MDMwX0lEX0xFRF80LAorCURBOTAzMF9J RF9WSUJSQSwKKwlEQTkwMzBfSURfV0xFRCwKKworCURBOTAzNF9JRF9MRURfMSwKKwlEQTkwMzRf SURfTEVEXzIsCisJREE5MDM0X0lEX1ZJQlJBLAorCURBOTAzNF9JRF9XTEVELAorCURBOTAzNF9J RF9UT1VDSCwKK307CisKKy8qCisgKiBEQTkwMzAvREE5MDM0IExFRHMgc3ViLWRldmljZXMgdXNl cyBnZW5lcmljICJzdHJ1Y3QgbGVkX2luZm8iCisgKiBhcyB0aGUgcGxhdGZvcm1fZGF0YQorICov CisKKy8qIERBOTAzMCBmbGFncyBmb3IgInN0cnVjdCBsZWRfaW5mbyIKKyAqLworI2RlZmluZSBE QTkwMzBfTEVEX1JBVEVfT04JKDAgPDwgNSkKKyNkZWZpbmUgREE5MDMwX0xFRF9SQVRFXzA1MlMJ KDEgPDwgNSkKKyNkZWZpbmUgREE5MDMwX0xFRF9EVVRZXzFfMTYJKDAgPDwgMykKKyNkZWZpbmUg REE5MDMwX0xFRF9EVVRZXzFfOAkoMSA8PCAzKQorI2RlZmluZSBEQTkwMzBfTEVEX0RVVFlfMV80 CSgyIDw8IDMpCisjZGVmaW5lIERBOTAzMF9MRURfRFVUWV8xXzIJKDMgPDwgMykKKworI2RlZmlu ZSBEQTkwMzBfVklCUkFfTU9ERV8xUDNWCSgwIDw8IDEpCisjZGVmaW5lIERBOTAzMF9WSUJSQV9N T0RFXzJQN1YJKDEgPDwgMSkKKyNkZWZpbmUgREE5MDMwX1ZJQlJBX0ZSRVFfMUhaCSgwIDw8IDIp CisjZGVmaW5lIERBOTAzMF9WSUJSQV9GUkVRXzJIWgkoMSA8PCAyKQorI2RlZmluZSBEQTkwMzBf VklCUkFfRlJFUV80SFoJKDIgPDwgMikKKyNkZWZpbmUgREE5MDMwX1ZJQlJBX0ZSRVFfOEhaCSgz IDw8IDIpCisjZGVmaW5lIERBOTAzMF9WSUJSQV9EVVRZX09OCSgwIDw8IDQpCisjZGVmaW5lIERB OTAzMF9WSUJSQV9EVVRZXzc1UAkoMSA8PCA0KQorI2RlZmluZSBEQTkwMzBfVklCUkFfRFVUWV81 MFAJKDIgPDwgNCkKKyNkZWZpbmUgREE5MDMwX1ZJQlJBX0RVVFlfMjVQCSgzIDw8IDQpCisKKy8q IERBOTAzNCBmbGFncyBmb3IgInN0cnVjdCBsZWRfaW5mbyIgKi8KKyNkZWZpbmUgREE5MDM0X0xF RF9SQU1QCQkoMSA8PCA3KQorCisvKiBEQTkwMzQgdG91Y2ggc2NyZWVuIHBsYXRmb3JtIGRhdGEg Ki8KK3N0cnVjdCBkYTkwMzRfdG91Y2hfcGRhdGEgeworCWludAlpbnRlcnZhbF9tczsJLyogc2Ft cGxpbmcgaW50ZXJ2YWwgd2hpbGUgcGVuIGRvd24gKi8KKwlpbnQJeF9pbnZlcnRlZDsKKwlpbnQJ eV9pbnZlcnRlZDsKK307CisKK3N0cnVjdCBkYTkwM3hfc3ViZGV2X2luZm8geworCWNvbnN0IGNo YXIJKm5hbWU7CisJaW50CQlpZDsKKwl2b2lkCQkqcGxhdGZvcm1fZGF0YTsKK307CisKK3N0cnVj dCBkYTkwM3hfcGxhdGZvcm1fZGF0YSB7CisJdWludDMyX3QJZXZlbnRzX2VuYWJsZWQ7CisJdm9p ZCAoKmV2ZW50X2hhbmRsZXIpKHN0cnVjdCBkZXZpY2UgKmRldiwgdWludDMyX3QgZXZlbnRzKTsK KworCWludCBudW1fc3ViZGV2czsKKwlzdHJ1Y3QgZGE5MDN4X3N1YmRldl9pbmZvICpzdWJkZXZz OworfTsKKworLyogYml0IGRlZmluaXRpb25zIGZvciBEQTkwMzAgZXZlbnRzICovCisjZGVmaW5l IERBOTAzMF9FVkVOVF9PTktFWQkJKDEgPDwgMCkKKyNkZWZpbmUJREE5MDMwX0VWRU5UX1BXUkVO CQkoMSA8PCAxKQorI2RlZmluZQlEQTkwMzBfRVZFTlRfRVhUT04JCSgxIDw8IDIpCisjZGVmaW5l CURBOTAzMF9FVkVOVF9DSERFVAkJKDEgPDwgMykKKyNkZWZpbmUJREE5MDMwX0VWRU5UX1RCQVQJ CSgxIDw8IDQpCisjZGVmaW5lCURBOTAzMF9FVkVOVF9WQkFUTU9OCQkoMSA8PCA1KQorI2RlZmlu ZQlEQTkwMzBfRVZFTlRfVkJBVE1PTl9UWE9OCSgxIDw8IDYpCisjZGVmaW5lCURBOTAzMF9FVkVO VF9DSElPVkVSCQkoMSA8PCA3KQorI2RlZmluZQlEQTkwMzBfRVZFTlRfVENUTwkJKDEgPDwgOCkK KyNkZWZpbmUJREE5MDMwX0VWRU5UX0NDVE8JCSgxIDw8IDkpCisjZGVmaW5lCURBOTAzMF9FVkVO VF9BRENfUkVBRFkJCSgxIDw8IDEwKQorI2RlZmluZQlEQTkwMzBfRVZFTlRfVkJVU180UDQJCSgx IDw8IDExKQorI2RlZmluZQlEQTkwMzBfRVZFTlRfVkJVU180UDAJCSgxIDw8IDEyKQorI2RlZmlu ZQlEQTkwMzBfRVZFTlRfU0VTU19WQUxJRAkJKDEgPDwgMTMpCisjZGVmaW5lCURBOTAzMF9FVkVO VF9TUlBfREVURUNUCQkoMSA8PCAxNCkKKyNkZWZpbmUJREE5MDMwX0VWRU5UX1dBVENIRE9HCQko MSA8PCAxNSkKKyNkZWZpbmUJREE5MDMwX0VWRU5UX0xETzE1CQkoMSA8PCAxNikKKyNkZWZpbmUJ REE5MDMwX0VWRU5UX0xETzE2CQkoMSA8PCAxNykKKyNkZWZpbmUJREE5MDMwX0VWRU5UX0xETzE3 CQkoMSA8PCAxOCkKKyNkZWZpbmUJREE5MDMwX0VWRU5UX0xETzE4CQkoMSA8PCAxOSkKKyNkZWZp bmUJREE5MDMwX0VWRU5UX0xETzE5CQkoMSA8PCAyMCkKKyNkZWZpbmUJREE5MDMwX0VWRU5UX0JV Q0syCQkoMSA8PCAyMSkKKworLyogYml0IGRlZmluaXRpb25zIGZvciBEQTkwMzQgZXZlbnRzICov CisjZGVmaW5lIERBOTAzNF9FVkVOVF9PTktFWQkJKDEgPDwgMCkKKyNkZWZpbmUgREE5MDM0X0VW RU5UX0VYVE9OCQkoMSA8PCAyKQorI2RlZmluZSBEQTkwMzRfRVZFTlRfQ0hERVQJCSgxIDw8IDMp CisjZGVmaW5lIERBOTAzNF9FVkVOVF9UQkFUCQkoMSA8PCA0KQorI2RlZmluZSBEQTkwMzRfRVZF TlRfVkJBVE1PTgkJKDEgPDwgNSkKKyNkZWZpbmUgREE5MDM0X0VWRU5UX1JFVl9JT1ZFUgkJKDEg PDwgNikKKyNkZWZpbmUgREE5MDM0X0VWRU5UX0NIX0lPVkVSCQkoMSA8PCA3KQorI2RlZmluZSBE QTkwMzRfRVZFTlRfQ0hfVENUTwkJKDEgPDwgOCkKKyNkZWZpbmUgREE5MDM0X0VWRU5UX0NIX0ND VE8JCSgxIDw8IDkpCisjZGVmaW5lIERBOTAzNF9FVkVOVF9VU0JfREVWCQkoMSA8PCAxMCkKKyNk ZWZpbmUgREE5MDM0X0VWRU5UX09UR0NQX0lPVkVSCSgxIDw8IDExKQorI2RlZmluZSBEQTkwMzRf RVZFTlRfVkJVU180UDU1CQkoMSA8PCAxMikKKyNkZWZpbmUgREE5MDM0X0VWRU5UX1ZCVVNfM1A4 CQkoMSA8PCAxMykKKyNkZWZpbmUgREE5MDM0X0VWRU5UX1NFU1NfMVA4CQkoMSA8PCAxNCkKKyNk ZWZpbmUgREE5MDM0X0VWRU5UX1NSUF9SRUFEWQkJKDEgPDwgMTUpCisjZGVmaW5lIERBOTAzNF9F VkVOVF9BRENfTUFOCQkoMSA8PCAxNikKKyNkZWZpbmUgREE5MDM0X0VWRU5UX0FEQ19BVVRPNAkJ KDEgPDwgMTcpCisjZGVmaW5lIERBOTAzNF9FVkVOVF9BRENfQVVUTzUJCSgxIDw8IDE4KQorI2Rl ZmluZSBEQTkwMzRfRVZFTlRfQURDX0FVVE82CQkoMSA8PCAxOSkKKyNkZWZpbmUgREE5MDM0X0VW RU5UX1BFTl9ET1dOCQkoMSA8PCAyMCkKKyNkZWZpbmUgREE5MDM0X0VWRU5UX1RTSV9SRUFEWQkJ KDEgPDwgMjEpCisjZGVmaW5lIERBOTAzNF9FVkVOVF9VQVJUX1RYCQkoMSA8PCAyMikKKyNkZWZp bmUgREE5MDM0X0VWRU5UX1VBUlRfUlgJCSgxIDw8IDIzKQorI2RlZmluZSBEQTkwMzRfRVZFTlRf SEVBRFNFVAkJKDEgPDwgMjUpCisjZGVmaW5lIERBOTAzNF9FVkVOVF9IT09LU1dJVENICQkoMSA8 PCAyNikKKyNkZWZpbmUgREE5MDM0X0VWRU5UX1dBVENIRE9HCQkoMSA8PCAyNykKKworZXh0ZXJu IGludCBkYTkwM3hfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IGRldmljZSAqZGV2LAorCQlzdHJ1 Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBpbnQgZXZlbnRzKTsKK2V4dGVybiBpbnQg ZGE5MDN4X3VucmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IGRldmljZSAqZGV2LAorCQlzdHJ1Y3Qg bm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBpbnQgZXZlbnRzKTsKKworLyogU3RhdHVzIFF1 ZXJ5IEludGVyZmFjZSAqLworI2RlZmluZSBEQTkwMzBfU1RBVFVTX09OS0VZCQkoMSA8PCAwKQor I2RlZmluZSBEQTkwMzBfU1RBVFVTX1BXUkVOMQkJKDEgPDwgMSkKKyNkZWZpbmUgREE5MDMwX1NU QVRVU19FWFRPTgkJKDEgPDwgMikKKyNkZWZpbmUgREE5MDMwX1NUQVRVU19DSERFVAkJKDEgPDwg MykKKyNkZWZpbmUgREE5MDMwX1NUQVRVU19UQkFUCQkoMSA8PCA0KQorI2RlZmluZSBEQTkwMzBf U1RBVFVTX1ZCQVRNT04JCSgxIDw8IDUpCisjZGVmaW5lIERBOTAzMF9TVEFUVVNfVkJBVE1PTl9U WE9OCSgxIDw8IDYpCisjZGVmaW5lIERBOTAzMF9TVEFUVVNfTUNMS0RFVAkJKDEgPDwgNykKKwor I2RlZmluZSBEQTkwMzRfU1RBVFVTX09OS0VZCQkoMSA8PCAwKQorI2RlZmluZSBEQTkwMzRfU1RB VFVTX0VYVE9OCQkoMSA8PCAyKQorI2RlZmluZSBEQTkwMzRfU1RBVFVTX0NIREVUCQkoMSA8PCAz KQorI2RlZmluZSBEQTkwMzRfU1RBVFVTX1RCQVQJCSgxIDw8IDQpCisjZGVmaW5lIERBOTAzNF9T VEFUVVNfVkJBVE1PTgkJKDEgPDwgNSkKKyNkZWZpbmUgREE5MDM0X1NUQVRVU19QRU5fRE9XTgkJ KDEgPDwgNikKKyNkZWZpbmUgREE5MDM0X1NUQVRVU19NQ0xLREVUCQkoMSA8PCA3KQorI2RlZmlu ZSBEQTkwMzRfU1RBVFVTX1VTQl9ERVYJCSgxIDw8IDgpCisjZGVmaW5lIERBOTAzNF9TVEFUVVNf SEVBRFNFVAkJKDEgPDwgOSkKKyNkZWZpbmUgREE5MDM0X1NUQVRVU19IT09LU1dJVENICSgxIDw8 IDEwKQorI2RlZmluZSBEQTkwMzRfU1RBVFVTX1JFTUNPTgkJKDEgPDwgMTEpCisjZGVmaW5lIERB OTAzNF9TVEFUVVNfVkJVU19WQUxJRF80UDU1CSgxIDw8IDEyKQorI2RlZmluZSBEQTkwMzRfU1RB VFVTX1ZCVVNfVkFMSURfM1A4CSgxIDw8IDEzKQorI2RlZmluZSBEQTkwMzRfU1RBVFVTX1NFU1Nf VkFMSURfMVA4CSgxIDw8IDE0KQorI2RlZmluZSBEQTkwMzRfU1RBVFVTX1NSUF9SRUFEWQkJKDEg PDwgMTUpCisKK2V4dGVybiBpbnQgZGE5MDN4X3F1ZXJ5X3N0YXR1cyhzdHJ1Y3QgZGV2aWNlICpk ZXYsIHVuc2lnbmVkIGludCBzdGF0dXMpOworCisKKy8qIE5PVEU6IHRoZSB0d28gZnVuY3Rpb25z IGJlbG93IGFyZSBub3QgaW50ZW5kZWQgZm9yIHVzZSBvdXRzaWRlCisgKiBvZiB0aGUgREE5MDM0 IHN1Yi1kZXZpY2UgZHJpdmVycworICovCitleHRlcm4gaW50IGRhOTAzeF93cml0ZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGludCByZWcsIHVpbnQ4X3QgdmFsKTsKK2V4dGVybiBpbnQgZGE5MDN4X3Jl YWQoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcmVnLCB1aW50OF90ICp2YWwpOworZXh0ZXJuIGlu dCBkYTkwM3hfdXBkYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJlZywgdWludDhfdCB2YWws IHVpbnQ4X3QgbWFzayk7CitleHRlcm4gaW50IGRhOTAzeF9zZXRfYml0KHN0cnVjdCBkZXZpY2Ug KmRldiwgaW50IHJlZywgdWludDhfdCBiaXRfbWFzayk7CitleHRlcm4gaW50IGRhOTAzeF9jbHJf Yml0KHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJlZywgdWludDhfdCBiaXRfbWFzayk7CisjZW5k aWYgLyogX19MSU5VWF9QTUlDX0RBOTAzWF9IICovCi0tIAoxLjUuNC4zCgo= ------=_Part_67524_17170796.1219397544217 Content-Type: text/x-diff; name=0002-leds-add-support-of-on-chip-LED-drivers-for-DA9030.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fk66ry1d1 Content-Disposition: attachment; filename=0002-leds-add-support-of-on-chip-LED-drivers-for-DA9030.patch RnJvbSBiN2E5MjgzMDRlOTBmMDhmMjlkMDg2NTZlOTg4NTBhYTdhNzIxYTg2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIE1pYW8gPGVyaWMubWlhb0BtYXJ2ZWxsLmNvbT4KRGF0 ZTogVGh1LCAxNCBBdWcgMjAwOCAxNjozMjo0MSArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIGxlZHM6 IGFkZCBzdXBwb3J0IG9mIG9uLWNoaXAgTEVEIGRyaXZlcnMgZm9yIERBOTAzMC9EQTkwMzQKClNp Z25lZC1vZmYtYnk6IE1pa2UgUmFwb3BvcnQgPG1pa2VAY29tcHVsYWIuaWwuY28+ClNpZ25lZC1v ZmYtYnk6IEVyaWMgTWlhbyA8ZXJpYy5taWFvQG1hcnZlbGwuY29tPgotLS0KIGRyaXZlcnMvbGVk cy9LY29uZmlnICAgICAgIHwgICAgNyArKwogZHJpdmVycy9sZWRzL01ha2VmaWxlICAgICAgfCAg ICAxICsKIGRyaXZlcnMvbGVkcy9sZWRzLWRhOTAzeC5jIHwgIDE3MiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxODAgaW5zZXJ0 aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2xlZHMv bGVkcy1kYTkwM3guYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9LY29uZmlnIGIvZHJpdmVy cy9sZWRzL0tjb25maWcKaW5kZXggOTU1NjI2Mi4uZGQyY2VmMiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9sZWRzL0tjb25maWcKKysrIGIvZHJpdmVycy9sZWRzL0tjb25maWcKQEAgLTE2Myw2ICsxNjMs MTMgQEAgY29uZmlnIExFRFNfUENBOTU1WAogCSAgTEVEIGRyaXZlciBjaGlwcyBhY2Nlc3NlZCB2 aWEgdGhlIEkyQyBidXMuICBTdXBwb3J0ZWQKIAkgIGRldmljZXMgaW5jbHVkZSBQQ0E5NTUwLCBQ Q0E5NTUxLCBQQ0E5NTUyLCBhbmQgUENBOTU1My4KIAorY29uZmlnIExFRFNfREE5MDNYCisJdHJp c3RhdGUgIkxFRCBTdXBwb3J0IGZvciBEQTkwMzAvREE5MDM0IFBNSUMiCisJZGVwZW5kcyBvbiBM RURTX0NMQVNTICYmIFBNSUNfREE5MDNYCisJaGVscAorCSAgVGhpcyBvcHRpb24gZW5hYmxlcyBz dXBwb3J0IGZvciBvbi1jaGlwIExFRCBkcml2ZXJzIGZvdW5kCisJICBvbiBEaWFsb2cgU2VtaWNv bmR1Y3RvciBEQTkwMzAvREE5MDM0IFBNSUNzLgorCiBjb21tZW50ICJMRUQgVHJpZ2dlcnMiCiAK IGNvbmZpZyBMRURTX1RSSUdHRVJTCmRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvTWFrZWZpbGUg Yi9kcml2ZXJzL2xlZHMvTWFrZWZpbGUKaW5kZXggZmY3OTgyYi4uODhjYjI2ZCAxMDA2NDQKLS0t IGEvZHJpdmVycy9sZWRzL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvbGVkcy9NYWtlZmlsZQpAQCAt MjMsNiArMjMsNyBAQCBvYmotJChDT05GSUdfTEVEU19DTEVWT19NQUlMKQkJKz0gbGVkcy1jbGV2 by1tYWlsLm8KIG9iai0kKENPTkZJR19MRURTX0hQNlhYKQkJKz0gbGVkcy1ocDZ4eC5vCiBvYmot JChDT05GSUdfTEVEU19GU0cpCQkJKz0gbGVkcy1mc2cubwogb2JqLSQoQ09ORklHX0xFRFNfUENB OTU1WCkJCSs9IGxlZHMtcGNhOTU1eC5vCitvYmotJChDT05GSUdfTEVEU19EQTkwM1gpCQkrPSBs ZWRzLWRhOTAzeC5vCiAKICMgTEVEIFRyaWdnZXJzCiBvYmotJChDT05GSUdfTEVEU19UUklHR0VS X1RJTUVSKQkrPSBsZWR0cmlnLXRpbWVyLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRz LWRhOTAzeC5jIGIvZHJpdmVycy9sZWRzL2xlZHMtZGE5MDN4LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNzEwOTVlMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbGVk cy9sZWRzLWRhOTAzeC5jCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogTEVEcyBkcml2ZXIgZm9y IERpYWxvZyBTZW1pY29uZHVjdG9yIERBOTAzMC9EQTkwMzQKKyAqCisgKiBDb3B5cmlnaHQgKEMp IDIwMDggQ29tcHVsYWIsIEx0ZC4KKyAqIAlNaWtlIFJhcG9wb3J0IDxtaWtlQGNvbXB1bGFiLmNv LmlsPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA4IE1hcnZlbGwgSW50ZXJuYXRpb25h bCBMdGQuCisgKiAJRXJpYyBNaWFvIDxlcmljLm1pYW9AbWFydmVsbC5jb20+CisgKgorICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8 bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4 L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2xlZHMuaD4KKyNpbmNsdWRlIDxs aW51eC9pMmMvZGE5MDN4Lmg+CisKKyNkZWZpbmUgREE5MDMwX0xFRDFfQ09OVFJPTAkweDIwCisj ZGVmaW5lIERBOTAzMF9MRUQyX0NPTlRST0wJMHgyMQorI2RlZmluZSBEQTkwMzBfTEVEM19DT05U Uk9MCTB4MjIKKyNkZWZpbmUgREE5MDMwX0xFRDRfQ09OVFJPTAkweDIzCisjZGVmaW5lIERBOTAz MF9NSVNDX0NPTlRST0xfQQkweDI0CS8qIFZpYnJhdG9yIENvbnRyb2wgKi8KKworI2RlZmluZSBE QTkwMzRfTEVEMV9DT05UUk9MCTB4MzUKKyNkZWZpbmUgREE5MDM0X0xFRDJfQ09OVFJPTAkweDM2 CisjZGVmaW5lIERBOTAzNF9WSUJSQQkJMHg0MAorCitzdHJ1Y3QgZGE5MDN4X2xlZCB7CisJc3Ry dWN0IGxlZF9jbGFzc2RldgljZGV2OworCXN0cnVjdCB3b3JrX3N0cnVjdAl3b3JrOworCXN0cnVj dCBkZXZpY2UJCSpkYTkwM3hfZGV2OworCWVudW0gbGVkX2JyaWdodG5lc3MJbmV3X2JyaWdodG5l c3M7CisJaW50CQkJaWQ7CisJaW50CQkJZmxhZ3M7Cit9OworCitzdGF0aWMgdm9pZCBkYTkwM3hf bGVkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoreworCXN0cnVjdCBkYTkwM3hfbGVk ICpsZWQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGRhOTAzeF9sZWQsIHdvcmspOworCXN0 cnVjdCBkZXZpY2UgKmRhOTAzeF9kZXYgPSBsZWQtPmRhOTAzeF9kZXY7CisJdWludDhfdCB2YWw7 CisJaW50IG9mZnNldDsKKworCXN3aXRjaCAobGVkLT5pZCkgeworCWNhc2UgREE5MDMwX0lEX0xF RF8xOgorCWNhc2UgREE5MDMwX0lEX0xFRF8yOgorCWNhc2UgREE5MDMwX0lEX0xFRF8zOgorCWNh c2UgREE5MDMwX0lEX0xFRF80OgorCQlvZmZzZXQgPSBsZWQtPmlkIC0gREE5MDMwX0lEX0xFRF8x OworCQl2YWwgPSBsZWQtPmZsYWdzICYgfjB4ODc7CisJCXZhbCB8PSAobGVkLT5uZXdfYnJpZ2h0 bmVzcykgPyAweDgwIDogMDsgLyogRU4gYml0ICovCisJCXZhbCB8PSAobGVkLT5uZXdfYnJpZ2h0 bmVzcyA+PiA1KSAmIDB4NzsgLyogUFdNPDI6MD4gKi8KKwkJZGE5MDN4X3dyaXRlKGRhOTAzeF9k ZXYsIERBOTAzMF9MRUQxX0NPTlRST0wgKyBvZmZzZXQsIHZhbCk7CisJCWJyZWFrOworCWNhc2Ug REE5MDMwX0lEX1ZJQlJBOgorCQl2YWwgPSBsZWQtPmZsYWdzICYgfjB4ODA7CisJCXZhbCB8PSAo bGVkLT5uZXdfYnJpZ2h0bmVzcykgPyAweDgwIDogMDsgLyogRU4gYml0ICovCisJCWRhOTAzeF93 cml0ZShkYTkwM3hfZGV2LCBEQTkwMzBfTUlTQ19DT05UUk9MX0EsIHZhbCk7CisJCWJyZWFrOwor CWNhc2UgREE5MDM0X0lEX0xFRF8xOgorCWNhc2UgREE5MDM0X0lEX0xFRF8yOgorCQlvZmZzZXQg PSBsZWQtPmlkIC0gREE5MDM0X0lEX0xFRF8xOworCQl2YWwgPSAobGVkLT5uZXdfYnJpZ2h0bmVz cyAqIDB4NWYgLyBMRURfRlVMTCkgJiAweDdmOworCQl2YWwgfD0gKGxlZC0+ZmxhZ3MgJiBEQTkw MzRfTEVEX1JBTVApID8gMHg4MCA6IDA7CisJCWRhOTAzeF93cml0ZShkYTkwM3hfZGV2LCBEQTkw MzRfTEVEMV9DT05UUk9MICsgb2Zmc2V0LCB2YWwpOworCQlicmVhazsKKwljYXNlIERBOTAzNF9J RF9WSUJSQToKKwkJdmFsID0gbGVkLT5uZXdfYnJpZ2h0bmVzcyAmIDB4ZmU7CisJCWRhOTAzeF93 cml0ZShkYTkwM3hfZGV2LCBEQTkwMzRfVklCUkEsIHZhbCk7CisJCWJyZWFrOworCX0KK30KKwor c3RhdGljIHZvaWQgZGE5MDN4X2xlZF9zZXQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYs CisJCQkgICBlbnVtIGxlZF9icmlnaHRuZXNzIHZhbHVlKQoreworCXN0cnVjdCBkYTkwM3hfbGVk ICpsZWQ7CisJCisJbGVkID0gY29udGFpbmVyX29mKGxlZF9jZGV2LCBzdHJ1Y3QgZGE5MDN4X2xl ZCwgY2Rldik7CisJbGVkLT5uZXdfYnJpZ2h0bmVzcyA9IHZhbHVlOworCXNjaGVkdWxlX3dvcmso JmxlZC0+d29yayk7Cit9CisKK3N0YXRpYyBpbnQgX19kZXZpbml0IGRhOTAzeF9sZWRfcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgbGVkX2luZm8gKnBkYXRh ID0gcGRldi0+ZGV2LnBsYXRmb3JtX2RhdGE7CisJc3RydWN0IGRldmljZSAqZGE5MDN4X2RldiA9 IHBkZXYtPmRldi5wYXJlbnQ7CisJc3RydWN0IGRhOTAzeF9sZWQgKmxlZDsKKwlpbnQgaWQsIHJl dDsKKworCWlmIChwZGF0YSA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKworCWlkID0gcGRldi0+aWQ7 CisKKwlpZiAoISgoaWQgPj0gREE5MDMwX0lEX0xFRF8xICYmIGlkIDw9IERBOTAzMF9JRF9WSUJS QSkgfHwKKwkgICAgICAoaWQgPj0gREE5MDM0X0lEX0xFRF8xICYmIGlkIDw9IERBOTAzNF9JRF9W SUJSQSkpKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImludmFsaWQgTEVEIElEICglZCkgc3Bl Y2lmaWVkXG4iLCBpZCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWxlZCA9IGt6YWxsb2Mo c2l6ZW9mKHN0cnVjdCBkYTkwM3hfbGVkKSwgR0ZQX0tFUk5FTCk7CisJaWYgKGxlZCA9PSBOVUxM KSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBhbGxvYyBtZW1vcnkgZm9yIExF RCVkXG4iLCBpZCk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWxlZC0+Y2Rldi5uYW1lID0g cGRhdGEtPm5hbWU7CisJbGVkLT5jZGV2LmRlZmF1bHRfdHJpZ2dlciA9IHBkYXRhLT5kZWZhdWx0 X3RyaWdnZXI7CisJbGVkLT5jZGV2LmJyaWdodG5lc3Nfc2V0ID0gZGE5MDN4X2xlZF9zZXQ7CisJ bGVkLT5jZGV2LmJyaWdodG5lc3MgPSBMRURfT0ZGOworCisJbGVkLT5pZCA9IGlkOworCWxlZC0+ ZmxhZ3MgPSBwZGF0YS0+ZmxhZ3M7CisJbGVkLT5kYTkwM3hfZGV2ID0gZGE5MDN4X2RldjsKKwls ZWQtPm5ld19icmlnaHRuZXNzID0gTEVEX09GRjsKKworCUlOSVRfV09SSygmbGVkLT53b3JrLCBk YTkwM3hfbGVkX3dvcmspOworCisJcmV0ID0gbGVkX2NsYXNzZGV2X3JlZ2lzdGVyKCZwZGV2LT5k ZXYsICZsZWQtPmNkZXYpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFp bGVkIHRvIHJlZ2lzdGVyIExFRCAlZFxuIiwgaWQpOworCQlnb3RvIGVycjsKKwl9CisKKwlwbGF0 Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBsZWQpOworCXJldHVybiAwOworCitlcnI6CisJa2ZyZWUo bGVkKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IF9fZGV2ZXhpdCBkYTkwM3hfbGVk X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBkYTkwM3hf bGVkICpsZWQgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWxlZF9jbGFzc2Rldl91 bnJlZ2lzdGVyKCZsZWQtPmNkZXYpOworCWtmcmVlKGxlZCk7CisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGRhOTAzeF9sZWRfZHJpdmVyID0geworCS5kcml2 ZXIJPSB7CisJCS5uYW1lCT0gImRhOTAzeC1sZWQiLAorCQkub3duZXIJPSBUSElTX01PRFVMRSwK Kwl9LAorCS5wcm9iZQkJPSBkYTkwM3hfbGVkX3Byb2JlLAorCS5yZW1vdmUJCT0gX19kZXZleGl0 X3AoZGE5MDN4X2xlZF9yZW1vdmUpLAorfTsKKworc3RhdGljIGludCBfX2luaXQgZGE5MDN4X2xl ZF9pbml0KHZvaWQpCit7CisJcmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmZGE5MDN4 X2xlZF9kcml2ZXIpOworfQorbW9kdWxlX2luaXQoZGE5MDN4X2xlZF9pbml0KTsKKworc3RhdGlj IHZvaWQgX19leGl0IGRhOTAzeF9sZWRfZXhpdCh2b2lkKQoreworCXBsYXRmb3JtX2RyaXZlcl91 bnJlZ2lzdGVyKCZkYTkwM3hfbGVkX2RyaXZlcik7Cit9Cittb2R1bGVfZXhpdChkYTkwM3hfbGVk X2V4aXQpOworCitNT0RVTEVfREVTQ1JJUFRJT04oIkxFRHMgZHJpdmVyIGZvciBEaWFsb2cgU2Vt aWNvbmR1Y3RvciBEQTkwMzAvREE5MDM0Iik7CitNT0RVTEVfQVVUSE9SKCJFcmljIE1pYW8gPGVy aWMubWlhb0BtYXJ2ZWxsLmNvbT4iCisJICAgICAgIk1pa2UgUmFwb3BvcnQgPG1pa2VAY29tcHVs YWIuY28uaWw+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRm b3JtOmRhOTAzeC1sZWQiKTsKLS0gCjEuNS40LjMKCg== ------=_Part_67524_17170796.1219397544217 Content-Type: text/x-diff; name=0003-backlight-add-DA9030-DA9034-WLED-based-backlight-su.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fk66s3hl2 Content-Disposition: attachment; filename=0003-backlight-add-DA9030-DA9034-WLED-based-backlight-su.patch RnJvbSAzMzU4NGU5Zjg1YzAyZTYxYWZlMGJmYjZjYjg5MjY5Y2M4NTllNGY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIE1pYW8gPGVyaWMubWlhb0BtYXJ2ZWxsLmNvbT4KRGF0 ZTogVGh1LCAxNCBBdWcgMjAwOCAxNzowOTo1OSArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIGJhY2ts aWdodDogYWRkIERBOTAzMC9EQTkwMzQgV0xFRC1iYXNlZCBiYWNrbGlnaHQgc3VwcG9ydAoKU2ln bmVkLW9mZi1ieTogTWlrZSBSYXBvcG9ydCA8bWlrZUBjb21wdWxhYi5pbC5jbz4KU2lnbmVkLW9m Zi1ieTogRXJpYyBNaWFvIDxlcmljLm1pYW9AbWFydmVsbC5jb20+Ci0tLQogZHJpdmVycy92aWRl by9iYWNrbGlnaHQvS2NvbmZpZyAgfCAgICA3ICsrCiBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9N YWtlZmlsZSB8ICAgIDEgKwogZHJpdmVycy92aWRlby9iYWNrbGlnaHQvZGE5MDN4LmMgfCAgMjAy ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQs IDIxMCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvdmlkZW8vYmFja2xpZ2h0L2RhOTAzeC5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRl by9iYWNrbGlnaHQvS2NvbmZpZyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L0tjb25maWcKaW5k ZXggNDUyYjc3MC4uZjUwYTAzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQv S2NvbmZpZworKysgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9LY29uZmlnCkBAIC0xNTYsNiAr MTU2LDEzIEBAIGNvbmZpZyBCQUNLTElHSFRfUFdNCiAJICBJZiB5b3UgaGF2ZSBhIExDRCBiYWNr bGlnaHQgYWRqdXN0YWJsZSBieSBQV00sIHNheSBZIHRvIGVuYWJsZQogCSAgdGhpcyBkcml2ZXIu CiAKK2NvbmZpZyBCQUNLTElHSFRfREE5MDNYCisJdHJpc3RhdGUgIkJhY2tsaWdodCBEcml2ZXIg Zm9yIERBOTAzMC9EQTkwMzQgdXNpbmcgV0xFRCIKKwlkZXBlbmRzIG9uIEJBQ0tMSUdIVF9DTEFT U19ERVZJQ0UgJiYgUE1JQ19EQTkwM1gKKwloZWxwCisJICBJZiB5b3UgaGF2ZSBhIExDRCBiYWNr bGlnaHQgY29ubmVjdGVkIHRvIHRoZSBXTEVEIG91dHB1dCBvZiBEQTkwMzAKKwkgIG9yIERBOTAz NCBXTEVEIG91dHB1dCwgc2F5IFkgaGVyZSB0byBlbmFibGUgdGhpcyBkcml2ZXIuCisKIGNvbmZp ZyBCQUNLTElHSFRfTUJQX05WSURJQQogICAgICAgIHRyaXN0YXRlICJNYWNCb29rIFBybyBOdmlk aWEgQmFja2xpZ2h0IERyaXZlciIKICAgICAgICBkZXBlbmRzIG9uIEJBQ0tMSUdIVF9DTEFTU19E RVZJQ0UgJiYgWDg2CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9NYWtlZmls ZSBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L01ha2VmaWxlCmluZGV4IGI0MDVhYWMuLmE2Y2U1 ZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvdmlkZW8vYmFja2xpZ2h0L01ha2VmaWxlCkBAIC0xNSw1ICsxNSw2IEBAIG9iai0kKENP TkZJR19CQUNLTElHSFRfT01BUDEpCSs9IG9tYXAxX2JsLm8KIG9iai0kKENPTkZJR19CQUNLTElH SFRfUFJPR0VBUikgKz0gcHJvZ2Vhcl9ibC5vCiBvYmotJChDT05GSUdfQkFDS0xJR0hUX0NBUklM TE9fUkFOQ0gpICs9IGNyX2JsbGNkLm8KIG9iai0kKENPTkZJR19CQUNLTElHSFRfUFdNKQkrPSBw d21fYmwubworb2JqLSQoQ09ORklHX0JBQ0tMSUdIVF9EQTkwM1gpCSs9IGRhOTAzeC5vCiBvYmot JChDT05GSUdfQkFDS0xJR0hUX01CUF9OVklESUEpICs9IG1icF9udmlkaWFfYmwubwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9kYTkwM3guYyBiL2RyaXZlcnMvdmlkZW8v YmFja2xpZ2h0L2RhOTAzeC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5 MDBjNjQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9kYTkwM3gu YwpAQCAtMCwwICsxLDIwMiBAQAorLyoKKyAqIEJhY2tsaWdodCBkcml2ZXIgZm9yIERpYWxvZyBT ZW1pY29uZHVjdG9yIERBOTAzMC9EQTkwMzQKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29t cHVsYWIsIEx0ZC4KKyAqIAlNaWtlIFJhcG9wb3J0IDxtaWtlQGNvbXB1bGFiLmNvLmlsPgorICoK KyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA4IE1hcnZlbGwgSW50ZXJuYXRpb25hbCBMdGQuCisg KiAJRXJpYyBNaWFvIDxlcmljLm1pYW9AbWFydmVsbC5jb20+CisgKgorICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvaW5p dC5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4 L2ZiLmg+CisjaW5jbHVkZSA8bGludXgvYmFja2xpZ2h0Lmg+CisjaW5jbHVkZSA8bGludXgvaTJj L2RhOTAzeC5oPgorCisjZGVmaW5lIERBOTAzMF9XTEVEX0NPTlRST0wJMHgyNQorI2RlZmluZSBE QTkwMzBfV0xFRF9DUF9FTgkoMSA8PCA2KQorI2RlZmluZSBEQTkwMzBfV0xFRF9UUklNKHgpCSgo eCkgJiAweDcpCisKKyNkZWZpbmUgREE5MDM0X1dMRURfQ09OVFJPTDEJMHgzQworI2RlZmluZSBE QTkwMzRfV0xFRF9DT05UUk9MMgkweDNECisKKyNkZWZpbmUgREE5MDM0X1dMRURfQk9PU1RfRU4J KDEgPDwgNSkKKworI2RlZmluZSBEQTkwMzBfTUFYX0JSSUdIVE5FU1MJOAorI2RlZmluZSBEQTkw MzRfTUFYX0JSSUdIVE5FU1MJMHg3ZgorCitzdHJ1Y3QgZGE5MDN4X2JhY2tsaWdodF9kYXRhIHsK KwlzdHJ1Y3QgZGV2aWNlICpkYTkwM3hfZGV2OworCWludCBpZDsKKwlpbnQgY3VycmVudF9icmln aHRuZXNzOworfTsKKworc3RhdGljIGludCBkYTkwM3hfYmFja2xpZ2h0X3NldChzdHJ1Y3QgYmFj a2xpZ2h0X2RldmljZSAqYmwsIGludCBicmlnaHRuZXNzKQoreworCXN0cnVjdCBkYTkwM3hfYmFj a2xpZ2h0X2RhdGEgKmRhdGEgPSBibF9nZXRfZGF0YShibCk7CisJc3RydWN0IGRldmljZSAqZGV2 ID0gZGF0YS0+ZGE5MDN4X2RldjsKKwl1aW50OF90IHZhbDsKKwlpbnQgcmV0ID0gMDsKKworCXN3 aXRjaCAoZGF0YS0+aWQpIHsKKwljYXNlIERBOTAzNF9JRF9XTEVEOgorCQlyZXQgPSBkYTkwM3hf dXBkYXRlKGRldiwgREE5MDM0X1dMRURfQ09OVFJPTDEsCisJCQkJYnJpZ2h0bmVzcywgMHg3Zik7 CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCWlmIChkYXRhLT5jdXJyZW50X2JyaWdo dG5lc3MgJiYgYnJpZ2h0bmVzcyA9PSAwKQorCQkJcmV0ID0gZGE5MDN4X2Nscl9iaXQoZGV2LAor CQkJCQlEQTkwMzRfV0xFRF9DT05UUk9MMiwKKwkJCQkJREE5MDM0X1dMRURfQk9PU1RfRU4pOwor CisJCWlmIChkYXRhLT5jdXJyZW50X2JyaWdodG5lc3MgPT0gMCAmJiBicmlnaHRuZXNzKQorCQkJ cmV0ID0gZGE5MDN4X3NldF9iaXQoZGV2LAorCQkJCQlEQTkwMzRfV0xFRF9DT05UUk9MMiwKKwkJ CQkJREE5MDM0X1dMRURfQk9PU1RfRU4pOworCQlicmVhazsKKwljYXNlIERBOTAzMF9JRF9XTEVE OgorCQl2YWwgPSBEQTkwMzBfV0xFRF9UUklNKGJyaWdodG5lc3MgLSAxKTsKKwkJdmFsIHw9IGJy aWdodG5lc3MgPyBEQTkwMzBfV0xFRF9DUF9FTiA6IDA7CisJCXJldCA9IGRhOTAzeF93cml0ZShk ZXYsIERBOTAzMF9XTEVEX0NPTlRST0wsIHZhbCk7CisJCWJyZWFrOworCX0KKworCWlmIChyZXQp CisJCXJldHVybiByZXQ7CisKKwlkYXRhLT5jdXJyZW50X2JyaWdodG5lc3MgPSBicmlnaHRuZXNz OworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRhOTAzeF9iYWNrbGlnaHRfdXBkYXRlX3N0 YXR1cyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmwpCit7CisJaW50IGJyaWdodG5lc3MgPSBi bC0+cHJvcHMuYnJpZ2h0bmVzczsKKworCWlmIChibC0+cHJvcHMucG93ZXIgIT0gRkJfQkxBTktf VU5CTEFOSykKKwkJYnJpZ2h0bmVzcyA9IDA7CisKKwlpZiAoYmwtPnByb3BzLmZiX2JsYW5rICE9 IEZCX0JMQU5LX1VOQkxBTkspCisJCWJyaWdodG5lc3MgPSAwOworCisJcmV0dXJuIGRhOTAzeF9i YWNrbGlnaHRfc2V0KGJsLCBicmlnaHRuZXNzKTsKK30KKworc3RhdGljIGludCBkYTkwM3hfYmFj a2xpZ2h0X2dldF9icmlnaHRuZXNzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpibCkKK3sKKwlz dHJ1Y3QgZGE5MDN4X2JhY2tsaWdodF9kYXRhICpkYXRhID0gYmxfZ2V0X2RhdGEoYmwpOworCXJl dHVybiBkYXRhLT5jdXJyZW50X2JyaWdodG5lc3M7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYmFja2xp Z2h0X29wcyBkYTkwM3hfYmFja2xpZ2h0X29wcyA9IHsKKwkudXBkYXRlX3N0YXR1cwk9IGRhOTAz eF9iYWNrbGlnaHRfdXBkYXRlX3N0YXR1cywKKwkuZ2V0X2JyaWdodG5lc3MJPSBkYTkwM3hfYmFj a2xpZ2h0X2dldF9icmlnaHRuZXNzLAorfTsKKworc3RhdGljIGludCBkYTkwM3hfYmFja2xpZ2h0 X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRhOTAzeF9i YWNrbGlnaHRfZGF0YSAqZGF0YTsKKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmw7CisJaW50 IGlkLCBtYXhfYnJpZ2h0bmVzczsKKworCWRhdGEgPSBremFsbG9jKHNpemVvZigqZGF0YSksIEdG UF9LRVJORUwpOworCWlmIChkYXRhID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCisJaWQg PSBwZGV2LT5pZDsKKworCXN3aXRjaCAoaWQpIHsKKwljYXNlIERBOTAzMF9JRF9XTEVEOgorCQlt YXhfYnJpZ2h0bmVzcyA9IERBOTAzMF9NQVhfQlJJR0hUTkVTUzsKKwkJYnJlYWs7CisJY2FzZSBE QTkwMzRfSURfV0xFRDoKKwkJbWF4X2JyaWdodG5lc3MgPSBEQTkwMzRfTUFYX0JSSUdIVE5FU1M7 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImludmFsaWQgYmFj a2xpZ2h0IGRldmljZSBJRCglZClcbiIsIGlkKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJ ZGF0YS0+ZGE5MDN4X2RldiA9IHBkZXYtPmRldi5wYXJlbnQ7CisJZGF0YS0+aWQgPSBpZDsKKwlk YXRhLT5jdXJyZW50X2JyaWdodG5lc3MgPSAwOworCisJYmwgPSBiYWNrbGlnaHRfZGV2aWNlX3Jl Z2lzdGVyKHBkZXYtPm5hbWUsICZwZGV2LT5kZXYsCisJCQlkYXRhLCAmZGE5MDN4X2JhY2tsaWdo dF9vcHMpOworCWlmIChJU19FUlIoYmwpKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxl ZCB0byByZWdpc3RlciBiYWNrbGlnaHRcbiIpOworCQlyZXR1cm4gUFRSX0VSUihibCk7CisJfQor CisJYmwtPnByb3BzLm1heF9icmlnaHRuZXNzID0gbWF4X2JyaWdodG5lc3M7CisJYmwtPnByb3Bz LmJyaWdodG5lc3MgPSBtYXhfYnJpZ2h0bmVzczsKKworCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBk ZXYsIGJsKTsKKwliYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhibCk7CisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgZGE5MDN4X2JhY2tsaWdodF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKK3sKKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmwgPSBwbGF0Zm9ybV9nZXRf ZHJ2ZGF0YShwZGV2KTsKKwlzdHJ1Y3QgZGE5MDN4X2JhY2tsaWdodF9kYXRhICpkYXRhID0gYmxf Z2V0X2RhdGEoYmwpOworCisJYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKGJsKTsKKwlrZnJl ZShkYXRhKTsKKwlyZXR1cm4gMDsKK30KKworI2lmZGVmIENPTkZJR19QTQorc3RhdGljIGludCBk YTkwM3hfYmFja2xpZ2h0X3N1c3BlbmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKKwkJ CQkgcG1fbWVzc2FnZV90IHN0YXRlKQoreworCXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpibCA9 IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCXJldHVybiBkYTkwM3hfYmFja2xpZ2h0X3Nl dChibCwgMCk7Cit9CisKK3N0YXRpYyBpbnQgZGE5MDN4X2JhY2tsaWdodF9yZXN1bWUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmwg PSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWJhY2tsaWdodF91cGRhdGVfc3RhdHVz KGJsKTsKKwlyZXR1cm4gMDsKK30KKyNlbHNlCisjZGVmaW5lIGRhOTAzeF9iYWNrbGlnaHRfc3Vz cGVuZAlOVUxMCisjZGVmaW5lIGRhOTAzeF9iYWNrbGlnaHRfcmVzdW1lCQlOVUxMCisjZW5kaWYK Kworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZGE5MDN4X2JhY2tsaWdodF9kcml2ZXIg PSB7CisJLmRyaXZlcgkJPSB7CisJCS5uYW1lCT0gImRhOTAzeC1iYWNrbGlnaHQiLAorCQkub3du ZXIJPSBUSElTX01PRFVMRSwKKwl9LAorCS5wcm9iZQkJPSBkYTkwM3hfYmFja2xpZ2h0X3Byb2Jl LAorCS5yZW1vdmUJCT0gZGE5MDN4X2JhY2tsaWdodF9yZW1vdmUsCisJLnN1c3BlbmQJPSBkYTkw M3hfYmFja2xpZ2h0X3N1c3BlbmQsCisJLnJlc3VtZQkJPSBkYTkwM3hfYmFja2xpZ2h0X3Jlc3Vt ZSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGRhOTAzeF9iYWNrbGlnaHRfaW5pdCh2b2lkKQor eworCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJmRhOTAzeF9iYWNrbGlnaHRfZHJp dmVyKTsKK30KK21vZHVsZV9pbml0KGRhOTAzeF9iYWNrbGlnaHRfaW5pdCk7CisKK3N0YXRpYyB2 b2lkIF9fZXhpdCBkYTkwM3hfYmFja2xpZ2h0X2V4aXQodm9pZCkKK3sKKwlwbGF0Zm9ybV9kcml2 ZXJfdW5yZWdpc3RlcigmZGE5MDN4X2JhY2tsaWdodF9kcml2ZXIpOworfQorbW9kdWxlX2V4aXQo ZGE5MDN4X2JhY2tsaWdodF9leGl0KTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJCYWNrbGlnaHQg RHJpdmVyIGZvciBEaWFsb2cgU2VtaWNvbmR1Y3RvciBEQTkwMzAvREE5MDM0Iik7CitNT0RVTEVf QVVUSE9SKCJFcmljIE1pYW8gPGVyaWMubWlhb0BtYXJ2ZWxsLmNvbT4iCisJICAgICAgIk1pa2Ug UmFwb3BvcnQgPG1pa2VAY29tcHVsYWIuY28uaWw+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7 CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmRhOTAzeC1iYWNrbGlnaHQiKTsKLS0gCjEuNS40LjMK Cg== ------=_Part_67524_17170796.1219397544217 Content-Type: text/x-diff; name=0004-input-add-touchscreen-interface-found-on-DA9034-PMI.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fk66s8u93 Content-Disposition: attachment; filename=0004-input-add-touchscreen-interface-found-on-DA9034-PMI.patch RnJvbSAwYjU1OWVlYmNhMzFkYmNkNmEzZWI5MzhkNWZhMWE5MWU4NTVhNGU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIE1pYW8gPGVyaWMubWlhb0BtYXJ2ZWxsLmNvbT4KRGF0 ZTogVGh1LCAxNCBBdWcgMjAwOCAxNzoyNDoyOCArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIGlucHV0 OiBhZGQgdG91Y2hzY3JlZW4gaW50ZXJmYWNlIGZvdW5kIG9uIERBOTAzNCBQTUlDCgpTaWduZWQt b2ZmLWJ5OiBFcmljIE1pYW8gPGVyaWMubWlhb0BtYXJ2ZWxsLmNvbT4KLS0tCiBkcml2ZXJzL2lu cHV0L3RvdWNoc2NyZWVuL0tjb25maWcgIHwgICAgOCArCiBkcml2ZXJzL2lucHV0L3RvdWNoc2Ny ZWVuL01ha2VmaWxlIHwgICAgMSArCiBkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2RhOTAzNC5j IHwgIDM4MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hh bmdlZCwgMzg5IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9kYTkwMzQuYwoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4v S2NvbmZpZwppbmRleCA2ZTYwYTk3Li4xZjRjNDQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0 L3RvdWNoc2NyZWVuL0tjb25maWcKKysrIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9LY29u ZmlnCkBAIC01NCw2ICs1NCwxNCBAQCBjb25maWcgVE9VQ0hTQ1JFRU5fQ09SR0kKIAkgIFRvIGNv bXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQogCSAgbW9k dWxlIHdpbGwgYmUgY2FsbGVkIGNvcmdpX3RzLgogCitjb25maWcgVE9VQ0hTQ1JFRU5fREE5MDM0 CisJdHJpc3RhdGUgIlRvdWNoc2NyZWVuIHN1cHBvcnQgZm9yIERpYWxvZyBTZW1pY29uZHVjdG9y IERBOTAzNCIKKwlkZXBlbmRzIG9uIFBNSUNfREE5MDNYCisJZGVmYXVsdCB5CisJaGVscAorCSAg U2F5IFkgaGVyZSB0byBlbmFibGUgdGhlIHN1cHBvcnQgZm9yIHRoZSB0b3VjaHNjcmVlbiBmb3Vu ZAorCSAgb24gRGlhbG9nIFNlbWljb25kdWN0b3IgREE5MDM0IFBNSUMuCisKIGNvbmZpZyBUT1VD SFNDUkVFTl9GVUpJVFNVCiAJdHJpc3RhdGUgIkZ1aml0c3Ugc2VyaWFsIHRvdWNoc2NyZWVuIgog CXNlbGVjdCBTRVJJTwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9NYWtl ZmlsZSBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vTWFrZWZpbGUKaW5kZXggMTVjZjI5MC4u YzQwODYwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9NYWtlZmlsZQor KysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL01ha2VmaWxlCkBAIC0yNyw2ICsyNyw3IEBA IG9iai0kKENPTkZJR19UT1VDSFNDUkVFTl9UT1VDSFJJR0hUKQkrPSB0b3VjaHJpZ2h0Lm8KIG9i ai0kKENPTkZJR19UT1VDSFNDUkVFTl9UT1VDSFdJTikJKz0gdG91Y2h3aW4ubwogb2JqLSQoQ09O RklHX1RPVUNIU0NSRUVOX1VDQjE0MDApCSs9IHVjYjE0MDBfdHMubwogb2JqLSQoQ09ORklHX1RP VUNIU0NSRUVOX1dNOTdYWCkJKz0gd205N3h4LXRzLm8KK29iai0kKENPTkZJR19UT1VDSFNDUkVF Tl9EQTkwMzQpCSs9IGRhOTAzNC5vCiB3bTk3eHgtdHMtJChDT05GSUdfVE9VQ0hTQ1JFRU5fV005 NzA1KQkrPSB3bTk3MDUubwogd205N3h4LXRzLSQoQ09ORklHX1RPVUNIU0NSRUVOX1dNOTcxMikJ Kz0gd205NzEyLm8KIHdtOTd4eC10cy0kKENPTkZJR19UT1VDSFNDUkVFTl9XTTk3MTMpCSs9IHdt OTcxMy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2RhOTAzNC5jIGIv ZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9kYTkwMzQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5hYjU0YTZhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9pbnB1dC90 b3VjaHNjcmVlbi9kYTkwMzQuYwpAQCAtMCwwICsxLDM4MCBAQAorLyoKKyAqIFRvdWNoc2NyZWVu IGRyaXZlciBmb3IgRGlhbG9nIFNlbWljb25kdWN0b3IgREE5MDM0CisgKgorICogQ29weXJpZ2h0 IChDKSAyMDA2LTIwMDggTWFydmVsbCBJbnRlcm5hdGlvbmFsIEx0ZC4KKyAqIAlGZW5nd2VpIFlp biA8ZmVuZ3dlaS55aW5AbWFydmVsbC5jb20+CisgKiAJRXJpYyBNaWFvIDxlcmljLm1pYW9AbWFy dmVsbC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgv bW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvaW5p dC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1f ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMv ZGE5MDN4Lmg+CisKKyNkZWZpbmUgREE5MDM0X01BTlVBTF9DVFJMCTB4NTAKKyNkZWZpbmUgREE5 MDM0X0xET19BRENfRU4JKDEgPDwgNCkKKworI2RlZmluZSBEQTkwMzRfQVVUT19DVFJMMQkweDUx CisKKyNkZWZpbmUgREE5MDM0X0FVVE9fQ1RSTDIJMHg1MgorI2RlZmluZSBEQTkwMzRfQVVUT19U U0lfRU4JKDEgPDwgMykKKyNkZWZpbmUgREE5MDM0X1BFTl9ERVRFQ1QJKDEgPDwgNCkKKworI2Rl ZmluZSBEQTkwMzRfVFNJX0NUUkwxCTB4NTMKKyNkZWZpbmUgREE5MDM0X1RTSV9DVFJMMgkweDU0 CisjZGVmaW5lIERBOTAzNF9UU0lfWF9NU0IJMHg2YworI2RlZmluZSBEQTkwMzRfVFNJX1lfTVNC CTB4NmQKKyNkZWZpbmUgREE5MDM0X1RTSV9YWV9MU0IJMHg2ZQorCitlbnVtIHsKKwlTVEFURV9J RExFLAkvKiB3YWl0IGZvciBwZW5kb3duICovCisJU1RBVEVfQlVTWSwJLyogVFNJIGJ1c3kgc2Ft cGxpbmcgKi8KKwlTVEFURV9TVE9QLAkvKiBzYW1wbGUgYXZhaWxhYmxlICovCisJU1RBVEVfV0FJ VCwJLyogV2FpdCB0byBzdGFydCBuZXh0IHNhbXBsZSAqLworfTsKKworZW51bSB7CisJRVZFTlRf UEVOX0RPV04sCisJRVZFTlRfUEVOX1VQLAorCUVWRU5UX1RTSV9SRUFEWSwKKwlFVkVOVF9USU1F RE9VVCwKK307CisKK3N0cnVjdCBkYTkwMzRfdG91Y2ggeworCXN0cnVjdCBkZXZpY2UJCSpkYTkw MzRfZGV2OworCXN0cnVjdCBpbnB1dF9kZXYJKmlucHV0X2RldjsKKworCXN0cnVjdCBkZWxheWVk X3dvcmsJdHNpX3dvcms7CisJc3RydWN0IG5vdGlmaWVyX2Jsb2NrCW5vdGlmaWVyOworCisJaW50 CXN0YXRlOworCisJaW50CWludGVydmFsX21zOworCWludAl4X2ludmVydGVkOworCWludAl5X2lu dmVydGVkOworCisJaW50CWxhc3RfeDsKKwlpbnQJbGFzdF95OworfTsKKworc3RhdGljIGlubGlu ZSBpbnQgaXNfcGVuX2Rvd24oc3RydWN0IGRhOTAzNF90b3VjaCAqdG91Y2gpCit7CisJcmV0dXJu IGRhOTAzeF9xdWVyeV9zdGF0dXModG91Y2gtPmRhOTAzNF9kZXYsIERBOTAzNF9TVEFUVVNfUEVO X0RPV04pOworfQorCitzdGF0aWMgaW5saW5lIGludCBkZXRlY3RfcGVuX2Rvd24oc3RydWN0IGRh OTAzNF90b3VjaCAqdG91Y2gsIGludCBvbikKK3sKKwlpZiAob24pCisJCXJldHVybiBkYTkwM3hf c2V0X2JpdCh0b3VjaC0+ZGE5MDM0X2RldiwKKwkJCQlEQTkwMzRfQVVUT19DVFJMMiwgREE5MDM0 X1BFTl9ERVRFQ1QpOworCWVsc2UKKwkJcmV0dXJuIGRhOTAzeF9jbHJfYml0KHRvdWNoLT5kYTkw MzRfZGV2LAorCQkJCURBOTAzNF9BVVRPX0NUUkwyLCBEQTkwMzRfUEVOX0RFVEVDVCk7Cit9CisK K3N0YXRpYyBpbnQgcmVhZF90c2koc3RydWN0IGRhOTAzNF90b3VjaCAqdG91Y2gpCit7CisJdWlu dDhfdCBfeCwgX3ksIF92OworCWludCByZXQ7CisKKwlyZXQgPSBkYTkwM3hfcmVhZCh0b3VjaC0+ ZGE5MDM0X2RldiwgREE5MDM0X1RTSV9YX01TQiwgJl94KTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCisJcmV0ID0gZGE5MDN4X3JlYWQodG91Y2gtPmRhOTAzNF9kZXYsIERBOTAzNF9UU0lf WV9NU0IsICZfeSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGRhOTAzeF9y ZWFkKHRvdWNoLT5kYTkwMzRfZGV2LCBEQTkwMzRfVFNJX1hZX0xTQiwgJl92KTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCisJdG91Y2gtPmxhc3RfeCA9ICgoX3ggPDwgMikgJiAweDNmYykg fCAoX3YgJiAweDMpOworCXRvdWNoLT5sYXN0X3kgPSAoKF95IDw8IDIpICYgMHgzZmMpIHwgKChf diAmIDB4YykgPj4gMik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHN0YXJ0 X3RzaShzdHJ1Y3QgZGE5MDM0X3RvdWNoICp0b3VjaCkKK3sKKwlyZXR1cm4gZGE5MDN4X3NldF9i aXQodG91Y2gtPmRhOTAzNF9kZXYsCisJCQlEQTkwMzRfQVVUT19DVFJMMiwgREE5MDM0X0FVVE9f VFNJX0VOKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgc3RvcF90c2koc3RydWN0IGRhOTAzNF90 b3VjaCAqdG91Y2gpCit7CisJcmV0dXJuIGRhOTAzeF9jbHJfYml0KHRvdWNoLT5kYTkwMzRfZGV2 LAorCQkJREE5MDM0X0FVVE9fQ1RSTDIsIERBOTAzNF9BVVRPX1RTSV9FTik7Cit9CisKK3N0YXRp YyBpbmxpbmUgdm9pZCByZXBvcnRfcGVuX2Rvd24oc3RydWN0IGRhOTAzNF90b3VjaCAqdG91Y2gp Cit7CisJaW50IHggPSB0b3VjaC0+bGFzdF94OworCWludCB5ID0gdG91Y2gtPmxhc3RfeTsKKwor CXggJj0gMHhmZmY7IHggPSB0b3VjaC0+eF9pbnZlcnRlZCA/ICgxMDI0IC0geCkgOiB4OworCXkg Jj0gMHhmZmY7IHkgPSB0b3VjaC0+eV9pbnZlcnRlZCA/ICgxMDI0IC0geSkgOiB5OworCisJaW5w dXRfcmVwb3J0X2Ficyh0b3VjaC0+aW5wdXRfZGV2LCBBQlNfWCwgeCk7CisJaW5wdXRfcmVwb3J0 X2Ficyh0b3VjaC0+aW5wdXRfZGV2LCBBQlNfWSwgeSk7CisJaW5wdXRfcmVwb3J0X2Ficyh0b3Vj aC0+aW5wdXRfZGV2LCBBQlNfUFJFU1NVUkUsIDI1NSk7CisJaW5wdXRfcmVwb3J0X2tleSh0b3Vj aC0+aW5wdXRfZGV2LCBCVE5fVE9VQ0gsIDEpOworCisJaW5wdXRfc3luYyh0b3VjaC0+aW5wdXRf ZGV2KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHJlcG9ydF9wZW5fdXAoc3RydWN0IGRhOTAz NF90b3VjaCAqdG91Y2gpCit7CisJaW5wdXRfcmVwb3J0X2Ficyh0b3VjaC0+aW5wdXRfZGV2LCBB QlNfUFJFU1NVUkUsIDApOworCWlucHV0X3JlcG9ydF9rZXkodG91Y2gtPmlucHV0X2RldiwgQlRO X1RPVUNILCAwKTsKKworCWlucHV0X3N5bmModG91Y2gtPmlucHV0X2Rldik7Cit9CisKK3N0YXRp YyB2b2lkIGRhOTAzNF9ldmVudF9oYW5kbGVyKHN0cnVjdCBkYTkwMzRfdG91Y2ggKnRvdWNoLCBp bnQgZXZlbnQpCit7CisJaW50IGVyciA9IDA7CisKKwlzd2l0Y2ggKHRvdWNoLT5zdGF0ZSkgewor CWNhc2UgU1RBVEVfSURMRToKKwkJaWYgKGV2ZW50ICE9IEVWRU5UX1BFTl9ET1dOKQorCQkJYnJl YWs7CisKKwkJLyogRW5hYmxlIGF1dG8gbWVhc3VyZW1lbnQgb2YgdGhlIFRTSSwgdGhpcyB3aWxs CisJCSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZSBwZW4gZG93biBkZXRlY3Rpb24KKwkJICovCisJ CWVyciA9IHN0YXJ0X3RzaSh0b3VjaCk7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycl9yZXNldDsK KworCQl0b3VjaC0+c3RhdGUgPSBTVEFURV9CVVNZOworCQlicmVhazsKKworCWNhc2UgU1RBVEVf QlVTWToKKwkJaWYgKGV2ZW50ICE9IEVWRU5UX1RTSV9SRUFEWSkKKwkJCWJyZWFrOworCisJCWVy ciA9IHJlYWRfdHNpKHRvdWNoKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gZXJyX3Jlc2V0OworCQkK KwkJLyogRGlzYWJsZSBhdXRvIG1lYXN1cmVtZW50IG9mIHRoZSBUU0ksIHNvIHRoYXQKKwkJICog cGVuIGRvd24gc3RhdHVzIHdpbGwgYmUgYXZhaWxhYmxlCisJCSAqLworCQllcnIgPSBzdG9wX3Rz aSh0b3VjaCk7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycl9yZXNldDsKKworCQl0b3VjaC0+c3Rh dGUgPSBTVEFURV9TVE9QOworCQlicmVhazsKKworCWNhc2UgU1RBVEVfU1RPUDoKKwkJaWYgKGV2 ZW50ID09IEVWRU5UX1BFTl9ET1dOKSB7CisJCQlyZXBvcnRfcGVuX2Rvd24odG91Y2gpOworCQkJ c2NoZWR1bGVfZGVsYXllZF93b3JrKCZ0b3VjaC0+dHNpX3dvcmssCisJCQkJbXNlY3NfdG9famlm Zmllcyh0b3VjaC0+aW50ZXJ2YWxfbXMpKTsKKwkJCXRvdWNoLT5zdGF0ZSA9IFNUQVRFX1dBSVQ7 CisJCX0KKworCQlpZiAoZXZlbnQgPT0gRVZFTlRfUEVOX1VQKSB7CisJCQlyZXBvcnRfcGVuX3Vw KHRvdWNoKTsKKwkJCXRvdWNoLT5zdGF0ZSA9IFNUQVRFX0lETEU7CisJCX0KKworCQlpbnB1dF9z eW5jKHRvdWNoLT5pbnB1dF9kZXYpOworCQlicmVhazsKKworCWNhc2UgU1RBVEVfV0FJVDoKKwkJ aWYgKGV2ZW50ICE9IEVWRU5UX1RJTUVET1VUKQorCQkJYnJlYWs7CisKKwkJaWYgKGlzX3Blbl9k b3duKHRvdWNoKSkgeworCQkJc3RhcnRfdHNpKHRvdWNoKTsKKwkJCXRvdWNoLT5zdGF0ZSA9IFNU QVRFX0JVU1k7CisJCX0gZWxzZQorCQkJdG91Y2gtPnN0YXRlID0gU1RBVEVfSURMRTsKKwkJYnJl YWs7CisJfQorCXJldHVybjsKKworZXJyX3Jlc2V0OgorCXRvdWNoLT5zdGF0ZSA9IFNUQVRFX0lE TEU7CisJc3RvcF90c2kodG91Y2gpOworCWRldGVjdF9wZW5fZG93bih0b3VjaCwgMSk7Cit9CisK K3N0YXRpYyB2b2lkIGRhOTAzNF90c2lfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7 CisJc3RydWN0IGRhOTAzNF90b3VjaCAqdG91Y2ggPQorCQljb250YWluZXJfb2Yod29yaywgc3Ry dWN0IGRhOTAzNF90b3VjaCwgdHNpX3dvcmsud29yayk7CisKKwlkYTkwMzRfZXZlbnRfaGFuZGxl cih0b3VjaCwgRVZFTlRfVElNRURPVVQpOworfQorCitzdGF0aWMgaW50IGRhOTAzNF90b3VjaF9u b3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAorCQkJCSB1bnNpZ25lZCBsb25nIGV2 ZW50LCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBkYTkwMzRfdG91Y2ggKnRvdWNoID0KKwkJY29u dGFpbmVyX29mKG5iLCBzdHJ1Y3QgZGE5MDM0X3RvdWNoLCBub3RpZmllcik7CisKKwlpZiAoZXZl bnQgJiBEQTkwMzRfRVZFTlRfUEVOX0RPV04pIHsKKwkJaWYgKGlzX3Blbl9kb3duKHRvdWNoKSkK KwkJCWRhOTAzNF9ldmVudF9oYW5kbGVyKHRvdWNoLCBFVkVOVF9QRU5fRE9XTik7CisJCWVsc2UK KwkJCWRhOTAzNF9ldmVudF9oYW5kbGVyKHRvdWNoLCBFVkVOVF9QRU5fVVApOworCX0KKworCWlm IChldmVudCAmIERBOTAzNF9FVkVOVF9UU0lfUkVBRFkpCisJCWRhOTAzNF9ldmVudF9oYW5kbGVy KHRvdWNoLCBFVkVOVF9UU0lfUkVBRFkpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg ZGE5MDM0X3RvdWNoX29wZW4oc3RydWN0IGlucHV0X2RldiAqZGV2KQoreworCXN0cnVjdCBkYTkw MzRfdG91Y2ggKnRvdWNoID0gaW5wdXRfZ2V0X2RydmRhdGEoZGV2KTsKKwlpbnQgcmV0OworCisJ cmV0ID0gZGE5MDN4X3JlZ2lzdGVyX25vdGlmaWVyKHRvdWNoLT5kYTkwMzRfZGV2LCAmdG91Y2gt Pm5vdGlmaWVyLAorCQkJREE5MDM0X0VWRU5UX1BFTl9ET1dOIHwgREE5MDM0X0VWRU5UX1RTSV9S RUFEWSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIC1FQlVTWTsKKworCS8qIEVuYWJsZSBBREMgTERP ICovCisJcmV0ID0gZGE5MDN4X3NldF9iaXQodG91Y2gtPmRhOTAzNF9kZXYsCisJCQlEQTkwMzRf TUFOVUFMX0NUUkwsIERBOTAzNF9MRE9fQURDX0VOKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCisJLyogVFNJX0RFTEFZOiAzIHNsb3RzLCBUU0lfU0tJUDogMyBzbG90cyAqLworCXJldCA9 IGRhOTAzeF93cml0ZSh0b3VjaC0+ZGE5MDM0X2RldiwgREE5MDM0X1RTSV9DVFJMMSwgMHgxYik7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGRhOTAzeF93cml0ZSh0b3VjaC0+ ZGE5MDM0X2RldiwgREE5MDM0X1RTSV9DVFJMMiwgMHgwMCk7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKworCXRvdWNoLT5zdGF0ZSA9IFNUQVRFX0lETEU7CisJZGV0ZWN0X3Blbl9kb3duKHRv dWNoLCAxKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZGE5MDM0X3RvdWNoX2Nsb3Nl KHN0cnVjdCBpbnB1dF9kZXYgKmRldikKK3sKKwlzdHJ1Y3QgZGE5MDM0X3RvdWNoICp0b3VjaCA9 IGlucHV0X2dldF9kcnZkYXRhKGRldik7CisKKwlkYTkwM3hfdW5yZWdpc3Rlcl9ub3RpZmllcih0 b3VjaC0+ZGE5MDM0X2RldiwgJnRvdWNoLT5ub3RpZmllciwKKwkJCURBOTAzNF9FVkVOVF9QRU5f RE9XTiB8IERBOTAzNF9FVkVOVF9UU0lfUkVBRFkpOworCisJY2FuY2VsX2RlbGF5ZWRfd29ya19z eW5jKCZ0b3VjaC0+dHNpX3dvcmspOworCisJdG91Y2gtPnN0YXRlID0gU1RBVEVfSURMRTsKKwlz dG9wX3RzaSh0b3VjaCk7CisJZGV0ZWN0X3Blbl9kb3duKHRvdWNoLCAwKTsKKworCS8qIERpc2Fi bGUgQURDIExETyAqLworCWRhOTAzeF9jbHJfYml0KHRvdWNoLT5kYTkwMzRfZGV2LAorCQkJREE5 MDM0X01BTlVBTF9DVFJMLCBEQTkwMzRfTERPX0FEQ19FTik7Cit9CisKKworc3RhdGljIGludCBf X2RldmluaXQgZGE5MDM0X3RvdWNoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cit7CisJc3RydWN0IGRhOTAzNF90b3VjaF9wZGF0YSAqcGRhdGEgPSBwZGV2LT5kZXYucGxhdGZv cm1fZGF0YTsKKwlzdHJ1Y3QgZGE5MDM0X3RvdWNoICp0b3VjaDsKKwlzdHJ1Y3QgaW5wdXRfZGV2 ICppbnB1dF9kZXY7CisJaW50IHJldCA9IDA7CisKKwl0b3VjaCA9IGt6YWxsb2Moc2l6ZW9mKHN0 cnVjdCBkYTkwMzRfdG91Y2gpLCBHRlBfS0VSTkVMKTsKKwlpZiAodG91Y2ggPT0gTlVMTCkgewor CQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gYWxsb2NhdGUgZHJpdmVyIGRhdGFcbiIp OworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwl0b3VjaC0+ZGE5MDM0X2Rldgk9IHBkZXYtPmRl di5wYXJlbnQ7CisJdG91Y2gtPmludGVydmFsX21zCT0gcGRhdGEtPmludGVydmFsX21zOworCXRv dWNoLT54X2ludmVydGVkCT0gcGRhdGEtPnhfaW52ZXJ0ZWQ7CisJdG91Y2gtPnlfaW52ZXJ0ZWQJ PSBwZGF0YS0+eV9pbnZlcnRlZDsKKworCUlOSVRfREVMQVlFRF9XT1JLKCZ0b3VjaC0+dHNpX3dv cmssIGRhOTAzNF90c2lfd29yayk7CisJdG91Y2gtPm5vdGlmaWVyLm5vdGlmaWVyX2NhbGwgPSBk YTkwMzRfdG91Y2hfbm90aWZpZXI7CisKKwlpbnB1dF9kZXYgPSBpbnB1dF9hbGxvY2F0ZV9kZXZp Y2UoKTsKKwlpZiAoIWlucHV0X2RldikgeworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQg dG8gYWxsb2NhdGUgaW5wdXQgZGV2aWNlXG4iKTsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBl cnJfZnJlZV90b3VjaDsKKwl9CisKKwlpbnB1dF9kZXYtPm5hbWUJCT0gcGRldi0+bmFtZTsKKwlp bnB1dF9kZXYtPm9wZW4JCT0gZGE5MDM0X3RvdWNoX29wZW47CisJaW5wdXRfZGV2LT5jbG9zZQk9 IGRhOTAzNF90b3VjaF9jbG9zZTsKKwlpbnB1dF9kZXYtPmRldi5wYXJlbnQJPSAmcGRldi0+ZGV2 OworCisJc2V0X2JpdChFVl9BQlMsIGlucHV0X2Rldi0+ZXZiaXQpOworCXNldF9iaXQoQUJTX1gs IGlucHV0X2Rldi0+YWJzYml0KTsKKwlzZXRfYml0KEFCU19ZLCBpbnB1dF9kZXYtPmFic2JpdCk7 CisJc2V0X2JpdChBQlNfUFJFU1NVUkUsIGlucHV0X2Rldi0+YWJzYml0KTsKKworCWlucHV0X3Nl dF9hYnNfcGFyYW1zKGlucHV0X2RldiwgQUJTX1gsIDAsIDEwMjMsIDAsIDApOworCWlucHV0X3Nl dF9hYnNfcGFyYW1zKGlucHV0X2RldiwgQUJTX1ksIDAsIDEwMjMsIDAsIDApOworCWlucHV0X3Nl dF9hYnNfcGFyYW1zKGlucHV0X2RldiwgQUJTX1BSRVNTVVJFLCAwLCAyNTUsIDAsIDApOworCisJ dG91Y2gtPmlucHV0X2RldiA9IGlucHV0X2RldjsKKwlpbnB1dF9zZXRfZHJ2ZGF0YShpbnB1dF9k ZXYsIHRvdWNoKTsKKworCXJldCA9IGlucHV0X3JlZ2lzdGVyX2RldmljZShpbnB1dF9kZXYpOwor CWlmIChyZXQpCisJCWdvdG8gZXJyX2ZyZWVfaW5wdXQ7CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0 YShwZGV2LCB0b3VjaCk7CisJcmV0dXJuIDA7CisKK2Vycl9mcmVlX2lucHV0OgorCWlucHV0X2Zy ZWVfZGV2aWNlKGlucHV0X2Rldik7CitlcnJfZnJlZV90b3VjaDoKKwlrZnJlZSh0b3VjaCk7CisJ cmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBfX2RldmV4aXQgZGE5MDM0X3RvdWNoX3JlbW92 ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBkYTkwMzRfdG91Y2gg KnRvdWNoID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisKKwlpbnB1dF9mcmVlX2Rldmlj ZSh0b3VjaC0+aW5wdXRfZGV2KTsKKwlrZnJlZSh0b3VjaCk7CisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGRhOTAzNF90b3VjaF9kcml2ZXIgPSB7CisJLmRy aXZlcgk9IHsKKwkJLm5hbWUJPSAiZGE5MDM0LXRvdWNoIiwKKwkJLm93bmVyCT0gVEhJU19NT0RV TEUsCisJfSwKKwkucHJvYmUJCT0gZGE5MDM0X3RvdWNoX3Byb2JlLAorCS5yZW1vdmUJCT0gZGE5 MDM0X3RvdWNoX3JlbW92ZSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGRhOTAzNF90b3VjaF9p bml0KHZvaWQpCit7CisJcmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmZGE5MDM0X3Rv dWNoX2RyaXZlcik7Cit9Cittb2R1bGVfaW5pdChkYTkwMzRfdG91Y2hfaW5pdCk7CisKK3N0YXRp YyB2b2lkIF9fZXhpdCBkYTkwMzRfdG91Y2hfZXhpdCh2b2lkKQoreworCXBsYXRmb3JtX2RyaXZl cl91bnJlZ2lzdGVyKCZkYTkwMzRfdG91Y2hfZHJpdmVyKTsKK30KK21vZHVsZV9leGl0KGRhOTAz NF90b3VjaF9leGl0KTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJUb3VjaHNjcmVlbiBkcml2ZXIg Zm9yIERpYWxvZyBTZW1pY29uZHVjdG9yIERBOTAzNCIpOworTU9EVUxFX0FVVEhPUigiRXJpYyBN aWFvIDxlcmljLm1pYW9AbWFydmVsbC5jb20+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitN T0RVTEVfQUxJQVMoInBsYXRmb3JtOmRhOTAzNC10b3VjaCIpOwotLSAKMS41LjQuMwoK ------=_Part_67524_17170796.1219397544217-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/