Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757531AbXFZMja (ORCPT ); Tue, 26 Jun 2007 08:39:30 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754276AbXFZMjX (ORCPT ); Tue, 26 Jun 2007 08:39:23 -0400 Received: from wa-out-1112.google.com ([209.85.146.178]:41036 "EHLO wa-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752236AbXFZMjW (ORCPT ); Tue, 26 Jun 2007 08:39:22 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:mime-version:content-type; b=AJCRgiqgf06Q4alSo0IzzSf/pYC/6xkWGMz2O+xPWtY80o5U0yE1P/w9jscICTI3Z7MpkqiEPQIdGQrkQ+EN0U4YyQ3diON+lJD4FVI/Q47rPmRCRQLXyzfIYAiF3n+n4U8lYEg7r91pdKJVIlwd1819TjcvM2WwZVUfM8FnHOU= Message-ID: <5d5443650706260539i63a0d93cn32d6e09ddee64db2@mail.gmail.com> Date: Tue, 26 Jun 2007 18:09:21 +0530 From: "Trilok Soni" To: linux-fbdev-devel@lists.sourceforge.net, adaplas@gmail.com, akpm@linux-foundation.org Subject: [PATCH 06/17] OMAP: Add TI OMAP2 external LCD controller support - RFBI Cc: "Tony Lindgren" , imre.deak@solidboot.com, juha.yrjola@solidboot.com, linux-kernel@vger.kernel.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_17360_8151526.1182861561315" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 21271 Lines: 288 ------=_Part_17360_8151526.1182861561315 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline -- --Trilok Soni ------=_Part_17360_8151526.1182861561315 Content-Type: text/x-patch; name=0006-OMAP-Add-TI-OMAP2-external-LCD-controller-support-RFBI.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f3ed7xhn Content-Disposition: attachment; filename="0006-OMAP-Add-TI-OMAP2-external-LCD-controller-support-RFBI.patch" RnJvbSBhMjEzNWIwY2E2YWQwMjM0ZTlmNTBmMThmN2MxZmFhZTlkNjk5ZTY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbXJlIERlYWsgPGltcmUuZGVha0Bzb2xpZGJvb3QuY29tPgpE YXRlOiBUdWUsIDI2IEp1biAyMDA3IDE3OjQ3OjE4ICswNTMwClN1YmplY3Q6IFtQQVRDSCAwNi8x N10gT01BUDogQWRkIFRJIE9NQVAyIGV4dGVybmFsIExDRCBjb250cm9sbGVyIHN1cHBvcnQgLSBS RkJJCgotIEFkZHMgc3VwcG9ydCBmb3IgIFRleGFzIEluc3RydW1lbnRzIE9NQVAyIHByb2Nlc3Nv cnMgYm9hcmRzCiAgY29ubmVjdGVkIHdpdGggZXh0ZXJuYWwgTENEIGNvbnRyb2xsZXIgdGhyb3Vn aCAiUmVtb3RlCiAgZnJhbWVidWZmZXIgSW50ZXJmYWNlIgoKU2lnbmVkLW9mZi1ieTogVHJpbG9r IFNvbmkgPHNvbmkudHJpbG9rQGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL3ZpZGVvL29tYXAvTWFr ZWZpbGUgfCAgICAxICsKIGRyaXZlcnMvdmlkZW8vb21hcC9yZmJpLmMgICB8ICA1ODggKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA1 ODkgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL3ZpZGVvL29tYXAvcmZiaS5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9vbWFwL01h a2VmaWxlIGIvZHJpdmVycy92aWRlby9vbWFwL01ha2VmaWxlCmluZGV4IDUyODliZjkuLjFlOGRk MzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vb21hcC9NYWtlZmlsZQorKysgYi9kcml2ZXJz L3ZpZGVvL29tYXAvTWFrZWZpbGUKQEAgLTEwLDYgKzEwLDcgQEAgb2Jqcy15JChDT05GSUdfQVJD SF9PTUFQMSkgKz0gbGNkYy5vCiBvYmpzLXkkKENPTkZJR19BUkNIX09NQVAyKSArPSBkaXNwYy5v CiAKIG9ianMtJChDT05GSUdfQVJDSF9PTUFQMSkkKENPTkZJR19GQl9PTUFQX0xDRENfRVhURVJO QUwpICs9IHNvc3NpLm8KK29ianMtJChDT05GSUdfQVJDSF9PTUFQMikkKENPTkZJR19GQl9PTUFQ X0xDRENfRVhURVJOQUwpICs9IHJmYmkubwogCiBvbWFwZmItb2JqcyA6PSAkKG9ianMteXkpCiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vb21hcC9yZmJpLmMgYi9kcml2ZXJzL3ZpZGVvL29t YXAvcmZiaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNDI2OTgKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3ZpZGVvL29tYXAvcmZiaS5jCkBAIC0wLDAgKzEsNTg4 IEBACisvKgorICogT01BUDIgUmVtb3RlIEZyYW1lIEJ1ZmZlciBJbnRlcmZhY2Ugc3VwcG9ydAor ICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBOb2tpYSBDb3Jwb3JhdGlvbgorICogQXV0aG9yOiBK dWhhIFlyavZs5CA8anVoYS55cmpvbGFAbm9raWEuY29tPgorICoJICAgSW1yZSBEZWFrIDxpbXJl LmRlYWtAbm9raWEuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUK KyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsIGJ1dAorICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LiwKKyAqIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMw NywgVVNBLgorICovCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgv ZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4K KyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNp bmNsdWRlIDxsaW51eC9pby5oPgorCisjaW5jbHVkZSA8YXNtL2FyY2gvb21hcGZiLmg+CisKKyNp bmNsdWRlICJkaXNwYy5oIgorCisvKiBUbyB3b3JrIGFyb3VuZCBhbiBSRkJJIHRyYW5zZmVyIHJh dGUgbGltaXRhdGlvbiAqLworI2RlZmluZSBPTUFQX1JGQklfUkFURV9MSU1JVAkxCisKKyNkZWZp bmUgUkZCSV9CQVNFCQkweDQ4MDUwODAwCisjZGVmaW5lIFJGQklfUkVWSVNJT04JCTB4MDAwMAor I2RlZmluZSBSRkJJX1NZU0NPTkZJRwkJMHgwMDEwCisjZGVmaW5lIFJGQklfU1lTU1RBVFVTCQkw eDAwMTQKKyNkZWZpbmUgUkZCSV9DT05UUk9MCQkweDAwNDAKKyNkZWZpbmUgUkZCSV9QSVhFTF9D TlQJCTB4MDA0NAorI2RlZmluZSBSRkJJX0xJTkVfTlVNQkVSCTB4MDA0OAorI2RlZmluZSBSRkJJ X0NNRAkJMHgwMDRjCisjZGVmaW5lIFJGQklfUEFSQU0JCTB4MDA1MAorI2RlZmluZSBSRkJJX0RB VEEJCTB4MDA1NAorI2RlZmluZSBSRkJJX1JFQUQJCTB4MDA1OAorI2RlZmluZSBSRkJJX1NUQVRV UwkJMHgwMDVjCisjZGVmaW5lIFJGQklfQ09ORklHMAkJMHgwMDYwCisjZGVmaW5lIFJGQklfT05P RkZfVElNRTAJMHgwMDY0CisjZGVmaW5lIFJGQklfQ1lDTEVfVElNRTAJMHgwMDY4CisjZGVmaW5l IFJGQklfREFUQV9DWUNMRTFfMAkweDAwNmMKKyNkZWZpbmUgUkZCSV9EQVRBX0NZQ0xFMl8wCTB4 MDA3MAorI2RlZmluZSBSRkJJX0RBVEFfQ1lDTEUzXzAJMHgwMDc0CisjZGVmaW5lIFJGQklfVlNZ TkNfV0lEVEgJMHgwMDkwCisjZGVmaW5lIFJGQklfSFNZTkNfV0lEVEgJMHgwMDk0CisKKyNkZWZp bmUgRElTUENfQkFTRQkJMHg0ODA1MDQwMAorI2RlZmluZSBESVNQQ19DT05UUk9MCQkweDAwNDAK Kworc3RhdGljIHN0cnVjdCB7CisJdTMyCQliYXNlOworCXZvaWQJCSgqbGNkY19jYWxsYmFjayko dm9pZCAqZGF0YSk7CisJdm9pZAkJKmxjZGNfY2FsbGJhY2tfZGF0YTsKKwl1bnNpZ25lZCBsb25n CWw0X2toejsKKwlpbnQJCWJpdHNfcGVyX2N5Y2xlOworCXN0cnVjdCBvbWFwZmJfZGV2aWNlICpm YmRldjsKKwlzdHJ1Y3QgY2xrCSpkc3NfaWNrOworCXN0cnVjdCBjbGsJKmRzczFfZmNrOworCXVu c2lnbmVkCXRlYXJzeW5jX3Bpbl9jbnQ7CisJdW5zaWduZWQJdGVhcnN5bmNfbW9kZTsKK30gcmZi aTsKKworc3RhdGljIGlubGluZSB2b2lkIHJmYmlfd3JpdGVfcmVnKGludCBpZHgsIHUzMiB2YWwp Cit7CisJX19yYXdfd3JpdGVsKHZhbCwgcmZiaS5iYXNlICsgaWR4KTsKK30KKworc3RhdGljIGlu bGluZSB1MzIgcmZiaV9yZWFkX3JlZyhpbnQgaWR4KQoreworCXJldHVybiBfX3Jhd19yZWFkbChy ZmJpLmJhc2UgKyBpZHgpOworfQorCitzdGF0aWMgaW50IHJmYmlfZ2V0X2Nsb2Nrcyh2b2lkKQor eworCWlmIChJU19FUlIoKHJmYmkuZHNzX2ljayA9IGNsa19nZXQocmZiaS5mYmRldi0+ZGV2LCAi ZHNzX2ljayIpKSkpIHsKKwkJZGV2X2VycihyZmJpLmZiZGV2LT5kZXYsICJjYW4ndCBnZXQgZHNz X2ljayIpOworCQlyZXR1cm4gUFRSX0VSUihyZmJpLmRzc19pY2spOworCX0KKworCWlmIChJU19F UlIoKHJmYmkuZHNzMV9mY2sgPSBjbGtfZ2V0KHJmYmkuZmJkZXYtPmRldiwgImRzczFfZmNrIikp KSkgeworCQlkZXZfZXJyKHJmYmkuZmJkZXYtPmRldiwgImNhbid0IGdldCBkc3MxX2ZjayIpOwor CQljbGtfcHV0KHJmYmkuZHNzX2ljayk7CisJCXJldHVybiBQVFJfRVJSKHJmYmkuZHNzMV9mY2sp OworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCByZmJpX3B1dF9jbG9ja3Modm9p ZCkKK3sKKwljbGtfcHV0KHJmYmkuZHNzMV9mY2spOworCWNsa19wdXQocmZiaS5kc3NfaWNrKTsK K30KKworc3RhdGljIHZvaWQgcmZiaV9lbmFibGVfY2xvY2tzKGludCBlbmFibGUpCit7CisJaWYg KGVuYWJsZSkgeworCQljbGtfZW5hYmxlKHJmYmkuZHNzX2ljayk7CisJCWNsa19lbmFibGUocmZi aS5kc3MxX2Zjayk7CisJfSBlbHNlIHsKKwkJY2xrX2Rpc2FibGUocmZiaS5kc3MxX2Zjayk7CisJ CWNsa19kaXNhYmxlKHJmYmkuZHNzX2ljayk7CisJfQorfQorCisKKyNpZmRlZiBWRVJCT1NFCitz dGF0aWMgdm9pZCByZmJpX3ByaW50X3RpbWluZ3Modm9pZCkKK3sKKwl1MzIgbDsKKwl1MzIgdGlt ZTsKKworCWwgPSByZmJpX3JlYWRfcmVnKFJGQklfQ09ORklHMCk7CisJdGltZSA9IDEwMDAwMDAw MDAgLyByZmJpLmw0X2toejsKKwlpZiAobCAmICgxIDw8IDQpKQorCQl0aW1lICo9IDI7CisKKwlk ZXZfZGJnKHJmYmkuZmJkZXYtPmRldiwgIlRpY2sgdGltZSAldSBwc1xuIiwgdGltZSk7CisJbCA9 IHJmYmlfcmVhZF9yZWcoUkZCSV9PTk9GRl9USU1FMCk7CisJZGV2X2RiZyhyZmJpLmZiZGV2LT5k ZXYsCisJCSJDU09OVElNRSAlZCwgQ1NPRkZUSU1FICVkLCBXRU9OVElNRSAlZCwgV0VPRkZUSU1F ICVkLCAiCisJCSJSRU9OVElNRSAlZCwgUkVPRkZUSU1FICVkXG4iLAorCQlsICYgMHgwZiwgKGwg Pj4gNCkgJiAweDNmLCAobCA+PiAxMCkgJiAweDBmLCAobCA+PiAxNCkgJiAweDNmLAorCQkobCA+ PiAyMCkgJiAweDBmLCAobCA+PiAyNCkgJiAweDNmKTsKKworCWwgPSByZmJpX3JlYWRfcmVnKFJG QklfQ1lDTEVfVElNRTApOworCWRldl9kYmcocmZiaS5mYmRldi0+ZGV2LAorCQkiV0VDWUNMRVRJ TUUgJWQsIFJFQ1lDTEVUSU1FICVkLCBDU1BVTFNFV0lEVEggJWQsICIKKwkJIkFDQ0VTU1RJTUUg JWRcbiIsCisJCShsICYgMHgzZiksIChsID4+IDYpICYgMHgzZiwgKGwgPj4gMTIpICYgMHgzZiwK KwkJKGwgPj4gMjIpICYgMHgzZik7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgcmZiaV9wcmludF90 aW1pbmdzKHZvaWQpIHt9CisjZW5kaWYKKworc3RhdGljIHZvaWQgcmZiaV9zZXRfdGltaW5ncyhj b25zdCBzdHJ1Y3QgZXh0aWZfdGltaW5ncyAqdCkKK3sKKwl1MzIgbDsKKworCUJVR19PTighdC0+ Y29udmVydGVkKTsKKworCXJmYmlfZW5hYmxlX2Nsb2NrcygxKTsKKwlyZmJpX3dyaXRlX3JlZyhS RkJJX09OT0ZGX1RJTUUwLCB0LT50aW1bMF0pOworCXJmYmlfd3JpdGVfcmVnKFJGQklfQ1lDTEVf VElNRTAsIHQtPnRpbVsxXSk7CisKKwlsID0gcmZiaV9yZWFkX3JlZyhSRkJJX0NPTkZJRzApOwor CWwgJj0gfigxIDw8IDQpOworCWwgfD0gKHQtPnRpbVsyXSA/IDEgOiAwKSA8PCA0OworCXJmYmlf d3JpdGVfcmVnKFJGQklfQ09ORklHMCwgbCk7CisKKwlyZmJpX3ByaW50X3RpbWluZ3MoKTsKKwly ZmJpX2VuYWJsZV9jbG9ja3MoMCk7Cit9CisKK3N0YXRpYyB2b2lkIHJmYmlfZ2V0X2Nsa19pbmZv KHUzMiAqY2xrX3BlcmlvZCwgdTMyICptYXhfY2xrX2RpdikKK3sKKwkqY2xrX3BlcmlvZCA9IDEw MDAwMDAwMDAgLyByZmJpLmw0X2toejsKKwkqbWF4X2Nsa19kaXYgPSAyOworfQorCitzdGF0aWMg aW50IHBzX3RvX3JmYmlfdGlja3MoaW50IHRpbWUsIGludCBkaXYpCit7CisJdW5zaWduZWQgbG9u ZyB0aWNrX3BzOworCWludCByZXQ7CisKKwkvKiBDYWxjdWxhdGUgaW4gcGljb3NlY3MgdG8geWll bGQgbW9yZSBleGFjdCByZXN1bHRzICovCisJdGlja19wcyA9IDEwMDAwMDAwMDAgLyAocmZiaS5s NF9raHopICogZGl2OworCisJcmV0ID0gKHRpbWUgKyB0aWNrX3BzIC0gMSkgLyB0aWNrX3BzOwor CisJcmV0dXJuIHJldDsKK30KKworI2lmZGVmIE9NQVBfUkZCSV9SQVRFX0xJTUlUCitzdGF0aWMg dW5zaWduZWQgbG9uZyByZmJpX2dldF9tYXhfdHhfcmF0ZSh2b2lkKQoreworCXVuc2lnbmVkIGxv bmcJbDRfcmF0ZSwgZHNzMV9yYXRlOworCWludAkJbWluX2w0X3RpY2tzID0gMDsKKwlpbnQJCWk7 CisKKwkvKiBBY2NvcmRpbmcgdG8gVEkgdGhpcyBjYW4ndCBiZSBjYWxjdWxhdGVkIHNvIG1ha2Ug dGhlCisJICogYWRqdXN0bWVudHMgZm9yIGEgY291cGxlIG9mIGtub3duIGZyZXF1ZW5jaWVzIGFu ZCB3YXJuIGZvcgorCSAqIG90aGVycy4KKwkgKi8KKwlzdGF0aWMgY29uc3Qgc3RydWN0IHsKKwkJ dW5zaWduZWQgbG9uZyBsNF9jbGs7CQkvKiBIWiAqLworCQl1bnNpZ25lZCBsb25nIGRzczFfY2xr OwkJLyogSFogKi8KKwkJdW5zaWduZWQgbG9uZyBtaW5fbDRfdGlja3M7CisJfSBmdGFiW10gPSB7 CisJCXsgNTUsCTEzMiwJNywgfSwJCS8qIDcuODYgTVBpeC9zICovCisJCXsgMTEwLAkxMTAsCTEy LCB9LAkJLyogOS4xNiBNUGl4L3MgKi8KKwkJeyAxMTAsCTEzMiwJMTAsIH0sCQkvKiAxMSAgIE1w aXgvcyAqLworCQl7IDEyMCwJMTIwLAkxMCwgfSwJCS8qIDEyICAgTXBpeC9zICovCisJCXsgMTMz LAkxMzMsCTEwLCB9LAkJLyogMTMuMyBNcGl4L3MgKi8KKwl9OworCisJbDRfcmF0ZSA9IHJmYmku bDRfa2h6IC8gMTAwMDsKKwlkc3MxX3JhdGUgPSBjbGtfZ2V0X3JhdGUocmZiaS5kc3MxX2Zjaykg LyAxMDAwMDAwOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZnRhYik7IGkrKykgewor CQkvKiBVc2UgYSB3aW5kb3cgaW5zdGVhZCBvZiBhbiBleGFjdCBtYXRjaCwgdG8gYWNjb3VudAor CQkgKiBmb3IgZGlmZmVyZW50IERQTEwgbXVsdGlwbGllciAvIGRpdmlkZXIgcGFpcnMuCisJCSAq LworCQlpZiAoYWJzKGZ0YWJbaV0ubDRfY2xrIC0gbDRfcmF0ZSkgPCAzICYmCisJCSAgICBhYnMo ZnRhYltpXS5kc3MxX2NsayAtIGRzczFfcmF0ZSkgPCAzKSB7CisJCQltaW5fbDRfdGlja3MgPSBm dGFiW2ldLm1pbl9sNF90aWNrczsKKwkJCWJyZWFrOworCQl9CisJfQorCWlmIChpID09IEFSUkFZ X1NJWkUoZnRhYikpIHsKKwkJLyogQ2FuJ3QgYmUgc3VyZSwgcmV0dXJuIGFueXdheSB0aGUgbWF4 aW11bSBub3QKKwkJICogcmF0ZS1saW1pdGVkLiBUaGlzIG1pZ2h0IGNhdXNlIGEgcHJvYmxlbSBv bmx5IGZvciB0aGUKKwkJICogdGVhcmluZyBzeW5jaHJvbmlzYXRpb24uCisJCSAqLworCQlkZXZf ZXJyKHJmYmkuZmJkZXYtPmRldiwKKwkJCSJjYW4ndCBkZXRlcm1pbmUgbWF4aW11bSBSRkJJIHRy YW5zZmVyIHJhdGVcbiIpOworCQlyZXR1cm4gcmZiaS5sNF9raHogKiAxMDAwOworCX0KKwlyZXR1 cm4gcmZiaS5sNF9raHogKiAxMDAwIC8gbWluX2w0X3RpY2tzOworfQorI2Vsc2UKK3N0YXRpYyBp bnQgcmZiaV9nZXRfbWF4X3R4X3JhdGUodm9pZCkKK3sKKwlyZXR1cm4gcmZiaS5sNF9raHogKiAx MDAwOworfQorI2VuZGlmCisKKworc3RhdGljIGludCByZmJpX2NvbnZlcnRfdGltaW5ncyhzdHJ1 Y3QgZXh0aWZfdGltaW5ncyAqdCkKK3sKKwl1MzIgbDsKKwlpbnQgcmVvbiwgcmVvZmYsIHdlb24s IHdlb2ZmLCBjc29uLCBjc29mZiwgY3NfcHVsc2U7CisJaW50IGFjdGltLCByZWN5Yywgd2VjeWM7 CisJaW50IGRpdiA9IHQtPmNsa19kaXY7CisKKwlpZiAoZGl2IDw9IDAgfHwgZGl2ID4gMikKKwkJ cmV0dXJuIC0xOworCisJLyogTWFrZSBzdXJlIHRoYXQgYWZ0ZXIgY29udmVyc2lvbiBpdCBzdGls bCBob2xkcyB0aGF0OgorCSAqIHdlb2ZmID4gd2VvbiwgcmVvZmYgPiByZW9uLCByZWN5YyA+PSBy ZW9mZiwgd2VjeWMgPj0gd2VvZmYsCisJICogY3NvZmYgPiBjc29uLCBjc29mZiA+PSBtYXgod2Vv ZmYsIHJlb2ZmKSwgYWN0aW0gPiByZW9uCisJICovCisJd2VvbiA9IHBzX3RvX3JmYmlfdGlja3Mo dC0+d2Vfb25fdGltZSwgZGl2KTsKKwl3ZW9mZiA9IHBzX3RvX3JmYmlfdGlja3ModC0+d2Vfb2Zm X3RpbWUsIGRpdik7CisJaWYgKHdlb2ZmIDw9IHdlb24pCisJCXdlb2ZmID0gd2VvbiArIDE7CisJ aWYgKHdlb24gPiAweDBmKQorCQlyZXR1cm4gLTE7CisJaWYgKHdlb2ZmID4gMHgzZikKKwkJcmV0 dXJuIC0xOworCisJcmVvbiA9IHBzX3RvX3JmYmlfdGlja3ModC0+cmVfb25fdGltZSwgZGl2KTsK KwlyZW9mZiA9IHBzX3RvX3JmYmlfdGlja3ModC0+cmVfb2ZmX3RpbWUsIGRpdik7CisJaWYgKHJl b2ZmIDw9IHJlb24pCisJCXJlb2ZmID0gcmVvbiArIDE7CisJaWYgKHJlb24gPiAweDBmKQorCQly ZXR1cm4gLTE7CisJaWYgKHJlb2ZmID4gMHgzZikKKwkJcmV0dXJuIC0xOworCisJY3NvbiA9IHBz X3RvX3JmYmlfdGlja3ModC0+Y3Nfb25fdGltZSwgZGl2KTsKKwljc29mZiA9IHBzX3RvX3JmYmlf dGlja3ModC0+Y3Nfb2ZmX3RpbWUsIGRpdik7CisJaWYgKGNzb2ZmIDw9IGNzb24pCisJCWNzb2Zm ID0gY3NvbiArIDE7CisJaWYgKGNzb2ZmIDwgbWF4KHdlb2ZmLCByZW9mZikpCisJCWNzb2ZmID0g bWF4KHdlb2ZmLCByZW9mZik7CisJaWYgKGNzb24gPiAweDBmKQorCQlyZXR1cm4gLTE7CisJaWYg KGNzb2ZmID4gMHgzZikKKwkJcmV0dXJuIC0xOworCisJbCA9ICBjc29uOworCWwgfD0gY3NvZmYg PDwgNDsKKwlsIHw9IHdlb24gIDw8IDEwOworCWwgfD0gd2VvZmYgPDwgMTQ7CisJbCB8PSByZW9u ICA8PCAyMDsKKwlsIHw9IHJlb2ZmIDw8IDI0OworCisJdC0+dGltWzBdID0gbDsKKworCWFjdGlt ID0gcHNfdG9fcmZiaV90aWNrcyh0LT5hY2Nlc3NfdGltZSwgZGl2KTsKKwlpZiAoYWN0aW0gPD0g cmVvbikKKwkJYWN0aW0gPSByZW9uICsgMTsKKwlpZiAoYWN0aW0gPiAweDNmKQorCQlyZXR1cm4g LTE7CisKKwl3ZWN5YyA9IHBzX3RvX3JmYmlfdGlja3ModC0+d2VfY3ljbGVfdGltZSwgZGl2KTsK KwlpZiAod2VjeWMgPCB3ZW9mZikKKwkJd2VjeWMgPSB3ZW9mZjsKKwlpZiAod2VjeWMgPiAweDNm KQorCQlyZXR1cm4gLTE7CisKKwlyZWN5YyA9IHBzX3RvX3JmYmlfdGlja3ModC0+cmVfY3ljbGVf dGltZSwgZGl2KTsKKwlpZiAocmVjeWMgPCByZW9mZikKKwkJcmVjeWMgPSByZW9mZjsKKwlpZiAo cmVjeWMgPiAweDNmKQorCQlyZXR1cm4gLTE7CisKKwljc19wdWxzZSA9IHBzX3RvX3JmYmlfdGlj a3ModC0+Y3NfcHVsc2Vfd2lkdGgsIGRpdik7CisJaWYgKGNzX3B1bHNlID4gMHgzZikKKwkJcmV0 dXJuIC0xOworCisJbCA9ICB3ZWN5YzsKKwlsIHw9IHJlY3ljICAgIDw8IDY7CisJbCB8PSBjc19w dWxzZSA8PCAxMjsKKwlsIHw9IGFjdGltICAgIDw8IDIyOworCisJdC0+dGltWzFdID0gbDsKKwor CXQtPnRpbVsyXSA9IGRpdiAtIDE7CisKKwl0LT5jb252ZXJ0ZWQgPSAxOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgcmZiaV9zZXR1cF90ZWFyc3luYyh1bnNpZ25lZCBwaW5fY250LAor CQkJICAgICAgIHVuc2lnbmVkIGhzX3B1bHNlX3RpbWUsIHVuc2lnbmVkIHZzX3B1bHNlX3RpbWUs CisJCQkgICAgICAgaW50IGhzX3BvbF9pbnYsIGludCB2c19wb2xfaW52LCBpbnQgZXh0aWZfZGl2 KQoreworCWludCBocywgdnM7CisJaW50IG1pbjsKKwl1MzIgbDsKKworCWlmIChwaW5fY250ICE9 IDEgJiYgcGluX2NudCAhPSAyKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWhzID0gcHNfdG9fcmZi aV90aWNrcyhoc19wdWxzZV90aW1lLCAxKTsKKwl2cyA9IHBzX3RvX3JmYmlfdGlja3ModnNfcHVs c2VfdGltZSwgMSk7CisJaWYgKGhzIDwgMikKKwkJcmV0dXJuIC1FRE9NOworCWlmIChwaW5fY250 ID09IDIpCisJCW1pbiA9IDI7CisJZWxzZQorCQltaW4gPSA0OworCWlmICh2cyA8IG1pbikKKwkJ cmV0dXJuIC1FRE9NOworCWlmICh2cyA9PSBocykKKwkJcmV0dXJuIC1FSU5WQUw7CisJcmZiaS50 ZWFyc3luY19waW5fY250ID0gcGluX2NudDsKKwlkZXZfZGJnKHJmYmkuZmJkZXYtPmRldiwKKwkJ InNldHVwX3RlYXJzeW5jOiBwaW5zICVkIGhzICVkIHZzICVkIGhzX2ludiAlZCB2c19pbnYgJWRc biIsCisJCXBpbl9jbnQsIGhzLCB2cywgaHNfcG9sX2ludiwgdnNfcG9sX2ludik7CisKKwlyZmJp X2VuYWJsZV9jbG9ja3MoMSk7CisJcmZiaV93cml0ZV9yZWcoUkZCSV9IU1lOQ19XSURUSCwgaHMp OworCXJmYmlfd3JpdGVfcmVnKFJGQklfVlNZTkNfV0lEVEgsIHZzKTsKKworCWwgPSByZmJpX3Jl YWRfcmVnKFJGQklfQ09ORklHMCk7CisJaWYgKGhzX3BvbF9pbnYpCisJCWwgJj0gfigxIDw8IDIx KTsKKwllbHNlCisJCWwgfD0gMSA8PCAyMTsKKwlpZiAodnNfcG9sX2ludikKKwkJbCAmPSB+KDEg PDwgMjApOworCWVsc2UKKwkJbCB8PSAxIDw8IDIwOworCXJmYmlfZW5hYmxlX2Nsb2NrcygwKTsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJmYmlfZW5hYmxlX3RlYXJzeW5jKGludCBl bmFibGUsIHVuc2lnbmVkIGxpbmUpCit7CisJdTMyIGw7CisKKwlkZXZfZGJnKHJmYmkuZmJkZXYt PmRldiwgInRlYXJzeW5jICVkIGxpbmUgJWQgbW9kZSAlZFxuIiwKKwkJZW5hYmxlLCBsaW5lLCBy ZmJpLnRlYXJzeW5jX21vZGUpOworCWlmIChsaW5lID4gKDEgPDwgMTEpIC0gMSkKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwlyZmJpX2VuYWJsZV9jbG9ja3MoMSk7CisJbCA9IHJmYmlfcmVhZF9yZWco UkZCSV9DT05GSUcwKTsKKwlsICY9IH4oMHgzIDw8IDIpOworCWlmIChlbmFibGUpIHsKKwkJcmZi aS50ZWFyc3luY19tb2RlID0gcmZiaS50ZWFyc3luY19waW5fY250OworCQlsIHw9IHJmYmkudGVh cnN5bmNfbW9kZSA8PCAyOworCX0gZWxzZQorCQlyZmJpLnRlYXJzeW5jX21vZGUgPSAwOworCXJm Ymlfd3JpdGVfcmVnKFJGQklfQ09ORklHMCwgbCk7CisJcmZiaV93cml0ZV9yZWcoUkZCSV9MSU5F X05VTUJFUiwgbGluZSk7CisJcmZiaV9lbmFibGVfY2xvY2tzKDApOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyB2b2lkIHJmYmlfd3JpdGVfY29tbWFuZChjb25zdCB2b2lkICpidWYsIHVuc2ln bmVkIGludCBsZW4pCit7CisJcmZiaV9lbmFibGVfY2xvY2tzKDEpOworCWlmIChyZmJpLmJpdHNf cGVyX2N5Y2xlID09IDE2KSB7CisJCWNvbnN0IHUxNiAqdyA9IGJ1ZjsKKwkJQlVHX09OKGxlbiAm IDEpOworCQlmb3IgKDsgbGVuOyBsZW4gLT0gMikKKwkJCXJmYmlfd3JpdGVfcmVnKFJGQklfQ01E LCAqdysrKTsKKwl9IGVsc2UgeworCQljb25zdCB1OCAqYiA9IGJ1ZjsKKwkJQlVHX09OKHJmYmku Yml0c19wZXJfY3ljbGUgIT0gOCk7CisJCWZvciAoOyBsZW47IGxlbi0tKQorCQkJcmZiaV93cml0 ZV9yZWcoUkZCSV9DTUQsICpiKyspOworCX0KKwlyZmJpX2VuYWJsZV9jbG9ja3MoMCk7Cit9CisK K3N0YXRpYyB2b2lkIHJmYmlfcmVhZF9kYXRhKHZvaWQgKmJ1ZiwgdW5zaWduZWQgaW50IGxlbikK K3sKKwlyZmJpX2VuYWJsZV9jbG9ja3MoMSk7CisJaWYgKHJmYmkuYml0c19wZXJfY3ljbGUgPT0g MTYpIHsKKwkJdTE2ICp3ID0gYnVmOworCQlCVUdfT04obGVuICYgfjEpOworCQlmb3IgKDsgbGVu OyBsZW4gLT0gMikgeworCQkJcmZiaV93cml0ZV9yZWcoUkZCSV9SRUFELCAwKTsKKwkJCSp3Kysg PSByZmJpX3JlYWRfcmVnKFJGQklfUkVBRCk7CisJCX0KKwl9IGVsc2UgeworCQl1OCAqYiA9IGJ1 ZjsKKwkJQlVHX09OKHJmYmkuYml0c19wZXJfY3ljbGUgIT0gOCk7CisJCWZvciAoOyBsZW47IGxl bi0tKSB7CisJCQlyZmJpX3dyaXRlX3JlZyhSRkJJX1JFQUQsIDApOworCQkJKmIrKyA9IHJmYmlf cmVhZF9yZWcoUkZCSV9SRUFEKTsKKwkJfQorCX0KKwlyZmJpX2VuYWJsZV9jbG9ja3MoMCk7Cit9 CisKK3N0YXRpYyB2b2lkIHJmYmlfd3JpdGVfZGF0YShjb25zdCB2b2lkICpidWYsIHVuc2lnbmVk IGludCBsZW4pCit7CisJcmZiaV9lbmFibGVfY2xvY2tzKDEpOworCWlmIChyZmJpLmJpdHNfcGVy X2N5Y2xlID09IDE2KSB7CisJCWNvbnN0IHUxNiAqdyA9IGJ1ZjsKKwkJQlVHX09OKGxlbiAmIDEp OworCQlmb3IgKDsgbGVuOyBsZW4gLT0gMikKKwkJCXJmYmlfd3JpdGVfcmVnKFJGQklfUEFSQU0s ICp3KyspOworCX0gZWxzZSB7CisJCWNvbnN0IHU4ICpiID0gYnVmOworCQlCVUdfT04ocmZiaS5i aXRzX3Blcl9jeWNsZSAhPSA4KTsKKwkJZm9yICg7IGxlbjsgbGVuLS0pCisJCQlyZmJpX3dyaXRl X3JlZyhSRkJJX1BBUkFNLCAqYisrKTsKKwl9CisJcmZiaV9lbmFibGVfY2xvY2tzKDApOworfQor CitzdGF0aWMgdm9pZCByZmJpX3RyYW5zZmVyX2FyZWEoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAor CQkJCXZvaWQgKGNhbGxiYWNrKSh2b2lkICogZGF0YSksIHZvaWQgKmRhdGEpCit7CisJdTMyIHc7 CisKKwlCVUdfT04oY2FsbGJhY2sgPT0gTlVMTCk7CisKKwlyZmJpX2VuYWJsZV9jbG9ja3MoMSk7 CisJb21hcF9kaXNwY19zZXRfbGNkX3NpemUod2lkdGgsIGhlaWdodCk7CisKKwlyZmJpLmxjZGNf Y2FsbGJhY2sgPSBjYWxsYmFjazsKKwlyZmJpLmxjZGNfY2FsbGJhY2tfZGF0YSA9IGRhdGE7CisK KwlyZmJpX3dyaXRlX3JlZyhSRkJJX1BJWEVMX0NOVCwgd2lkdGggKiBoZWlnaHQpOworCisJdyA9 IHJmYmlfcmVhZF9yZWcoUkZCSV9DT05UUk9MKTsKKwl3IHw9IDE7CQkJCS8qIGVuYWJsZSAqLwor CWlmICghcmZiaS50ZWFyc3luY19tb2RlKQorCQl3IHw9IDEgPDwgNDsJCS8qIGludGVybmFsIHRy aWdnZXIsIHJlc2V0IGJ5IEhXICovCisJcmZiaV93cml0ZV9yZWcoUkZCSV9DT05UUk9MLCB3KTsK KworCW9tYXBfZGlzcGNfZW5hYmxlX2xjZF9vdXQoMSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p ZCBfc3RvcF90cmFuc2Zlcih2b2lkKQoreworCXUzMiB3OworCisJdyA9IHJmYmlfcmVhZF9yZWco UkZCSV9DT05UUk9MKTsKKwlyZmJpX3dyaXRlX3JlZyhSRkJJX0NPTlRST0wsIHcgJiB+KDEgPDwg MCkpOworCXJmYmlfZW5hYmxlX2Nsb2NrcygwKTsKK30KKworc3RhdGljIHZvaWQgcmZiaV9kbWFf Y2FsbGJhY2sodm9pZCAqZGF0YSkKK3sKKwlfc3RvcF90cmFuc2ZlcigpOworCXJmYmkubGNkY19j YWxsYmFjayhyZmJpLmxjZGNfY2FsbGJhY2tfZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkIHJmYmlf c2V0X2JpdHNfcGVyX2N5Y2xlKGludCBicGMpCit7CisJdTMyIGw7CisKKwlyZmJpX2VuYWJsZV9j bG9ja3MoMSk7CisJbCA9IHJmYmlfcmVhZF9yZWcoUkZCSV9DT05GSUcwKTsKKwlsICY9IH4oMHgw MyA8PCAwKTsKKworCXN3aXRjaCAoYnBjKSB7CisJY2FzZSA4OgorCQlicmVhazsKKwljYXNlIDE2 OgorCQlsIHw9IDM7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCUJVRygpOworCX0KKwlyZmJpX3dy aXRlX3JlZyhSRkJJX0NPTkZJRzAsIGwpOworCXJmYmkuYml0c19wZXJfY3ljbGUgPSBicGM7CisJ cmZiaV9lbmFibGVfY2xvY2tzKDApOworfQorCitzdGF0aWMgaW50IHJmYmlfaW5pdChzdHJ1Y3Qg b21hcGZiX2RldmljZSAqZmJkZXYpCit7CisJdTMyIGw7CisJaW50IHI7CisKKwlyZmJpLmZiZGV2 ID0gZmJkZXY7CisJcmZiaS5iYXNlID0gaW9fcDJ2KFJGQklfQkFTRSk7CisKKwlpZiAoKHIgPSBy ZmJpX2dldF9jbG9ja3MoKSkgPCAwKQorCQlyZXR1cm4gcjsKKwlyZmJpX2VuYWJsZV9jbG9ja3Mo MSk7CisKKwlyZmJpLmw0X2toeiA9IGNsa19nZXRfcmF0ZShyZmJpLmRzc19pY2spIC8gMTAwMDsK KworCS8qIFJlc2V0ICovCisJcmZiaV93cml0ZV9yZWcoUkZCSV9TWVNDT05GSUcsIDEgPDwgMSk7 CisJd2hpbGUgKCEocmZiaV9yZWFkX3JlZyhSRkJJX1NZU1NUQVRVUykgJiAoMSA8PCAwKSkpOwor CisJbCA9IHJmYmlfcmVhZF9yZWcoUkZCSV9TWVNDT05GSUcpOworCS8qIEVuYWJsZSBhdXRvaWRs ZSBhbmQgc21hcnQtaWRsZSAqLworCWwgfD0gKDEgPDwgMCkgfCAoMiA8PCAzKTsKKwlyZmJpX3dy aXRlX3JlZyhSRkJJX1NZU0NPTkZJRywgbCk7CisKKwkvKiAxNi1iaXQgaW50ZXJmYWNlLCBJVEUg dHJpZ2dlciBtb2RlLCAxNi1iaXQgZGF0YSAqLworCWwgPSAoMHgwMyA8PCAwKSB8ICgweDAwIDw8 IDIpIHwgKDB4MDEgPDwgNSkgfCAoMHgwMiA8PCA3KTsKKwlsIHw9ICgwIDw8IDkpIHwgKDEgPDwg MjApIHwgKDEgPDwgMjEpOworCXJmYmlfd3JpdGVfcmVnKFJGQklfQ09ORklHMCwgbCk7CisKKwly ZmJpX3dyaXRlX3JlZyhSRkJJX0RBVEFfQ1lDTEUxXzAsIDB4MDAwMDAwMTApOworCisJbCA9IHJm YmlfcmVhZF9yZWcoUkZCSV9DT05UUk9MKTsKKwkvKiBTZWxlY3QgQ1MwLCBjbGVhciBieXBhc3Mg bW9kZSAqLworCWwgPSAoMHgwMSA8PCAyKTsKKwlyZmJpX3dyaXRlX3JlZyhSRkJJX0NPTlRST0ws IGwpOworCisJaWYgKChyID0gb21hcF9kaXNwY19yZXF1ZXN0X2lycShyZmJpX2RtYV9jYWxsYmFj aywgTlVMTCkpIDwgMCkgeworCQlkZXZfZXJyKGZiZGV2LT5kZXYsICJjYW4ndCBnZXQgRElTUEMg aXJxXG4iKTsKKwkJcmZiaV9lbmFibGVfY2xvY2tzKDApOworCQlyZXR1cm4gcjsKKwl9CisKKwls ID0gcmZiaV9yZWFkX3JlZyhSRkJJX1JFVklTSU9OKTsKKwlwcl9pbmZvKCJvbWFwZmI6IFJGQkkg dmVyc2lvbiAlZC4lZCBpbml0aWFsaXplZFxuIiwKKwkJKGwgPj4gNCkgJiAweDBmLCBsICYgMHgw Zik7CisKKwlyZmJpX2VuYWJsZV9jbG9ja3MoMCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IHZvaWQgcmZiaV9jbGVhbnVwKHZvaWQpCit7CisJb21hcF9kaXNwY19mcmVlX2lycSgpOworCXJm YmlfcHV0X2Nsb2NrcygpOworfQorCitjb25zdCBzdHJ1Y3QgbGNkX2N0cmxfZXh0aWYgb21hcDJf ZXh0X2lmID0geworCS5pbml0CQkJPSByZmJpX2luaXQsCisJLmNsZWFudXAJCT0gcmZiaV9jbGVh bnVwLAorCS5nZXRfY2xrX2luZm8JCT0gcmZiaV9nZXRfY2xrX2luZm8sCisJLmdldF9tYXhfdHhf cmF0ZQk9IHJmYmlfZ2V0X21heF90eF9yYXRlLAorCS5zZXRfYml0c19wZXJfY3ljbGUJPSByZmJp X3NldF9iaXRzX3Blcl9jeWNsZSwKKwkuY29udmVydF90aW1pbmdzCT0gcmZiaV9jb252ZXJ0X3Rp bWluZ3MsCisJLnNldF90aW1pbmdzCQk9IHJmYmlfc2V0X3RpbWluZ3MsCisJLndyaXRlX2NvbW1h bmQJCT0gcmZiaV93cml0ZV9jb21tYW5kLAorCS5yZWFkX2RhdGEJCT0gcmZiaV9yZWFkX2RhdGEs CisJLndyaXRlX2RhdGEJCT0gcmZiaV93cml0ZV9kYXRhLAorCS50cmFuc2Zlcl9hcmVhCQk9IHJm YmlfdHJhbnNmZXJfYXJlYSwKKwkuc2V0dXBfdGVhcnN5bmMJCT0gcmZiaV9zZXR1cF90ZWFyc3lu YywKKwkuZW5hYmxlX3RlYXJzeW5jCT0gcmZiaV9lbmFibGVfdGVhcnN5bmMsCisKKwkubWF4X3Ry YW5zbWl0X3NpemUJPSAodTMyKSB+MCwKK307CisKLS0gCjEuNS4wCgo= ------=_Part_17360_8151526.1182861561315-- - 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/