From mboxrd@z Thu Jan 1 00:00:00 1970 From: InKi Dae Subject: [PATCH] s3c-fb: added s5pv210 support and some features. Date: Thu, 6 May 2010 14:38:19 +0900 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=000e0cd1383ea025c00485e6590a Return-path: Sender: linux-kernel-owner@vger.kernel.org List-ID: To: Andrew Morton , linux-fbdev-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Cc: kyungmin.park@samsung.com, Ben Dooks --000e0cd1383ea025c00485e6590a Content-Type: text/plain; charset=ISO-8859-1 Hello all, this patch is for s5pv210(or s5pc110) support and adds resizing and default window features and also fixes distortendness situation on pixel format more then 24bpp. patch contents are as following. 1. resizing feature. - when application tries to change framebuffer attributes(pixel format, resolution and so no), fb_set_var() is called by linux framebuffer(fbmem.c) at that time, s3c-fb sets attributes for setting porch and pixelclock to registers so setting would be failed because wrong clock was set. this patch makes porch and pixelclock to be set only at initialization step. 2. default window. - s5pv210 has five window layers (window0 ~ 4), among them, window0 ~ 2 could be used for local path with fimc(capture device) and fimd writeback feature so this patch makes default window layer for UI to be set at machine code. 3. fixed distortedness situation on pixel format more then 24bpp. - it has been working fine at 16bpp but in case of pixel format more then 24bpp it would occur distortedness situation on that mode. so this patch set the word swap control bit of WINCONx to 1 as default value. but it should be set to 0 in case that each ENLOCAL bit of WINCON0 ~ 2 registers is enabled. this issue would be solved with local path feature soon. 4. s5pv210 support. - in case of fimd(display controller) of s5pv210, CH_ENABLE bit should be enabled to enable window layer. and also I would add MIPI-DSI and mDNIe(Image enhancement device) features(including device driver) in the near future. Please review this patch. Signed-off-by: InKi Dae Reviewed-by: KyungMin Park Best Regards, InKi Dae --000e0cd1383ea025c00485e6590a Content-Type: application/octet-stream; name="s3c-fb.patch" Content-Disposition: attachment; filename="s3c-fb.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g8v4zzyk0 Y29tbWl0IGMxNmEwZjJiNWE0OTJiOGVlZjUwOTA1NmI4YWM0MDZhYTMyMjUyMzAKQXV0aG9yOiBk YWVpbmtpIDxpbmtpLmRhZUBzYW1zdW5nLmNvbT4KRGF0ZTogICBUaHUgTWF5IDYgMTQ6MDM6MTMg MjAxMCArMDkwMAoKICAgIHM1cHYyMTA6IGFkZGVkIHJlc2l6aW5nIGFuZCBkZWZhdWx0IHdpbmRv dyBmZWF0dXJlcyBhbmQgZml4ZWQgZGlzdG9ydGVkbmVzcyBzaXR1YXRpb24uCiAgICAKICAgIFNp Z25lZC1vZmYtYnk6IGRhZWlua2kgPGlua2kuZGFlQHNhbXN1bmcuY29tPgoKZGlmZiAtLWdpdCBh L2FyY2gvYXJtL21hY2gtczVwdjIxMC9pbmNsdWRlL21hY2gvcmVncy1mYi5oIGIvYXJjaC9hcm0v bWFjaC1zNXB2MjEwL2luY2x1ZGUvbWFjaC9yZWdzLWZiLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uODQwNjcxNAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gt czVwdjIxMC9pbmNsdWRlL21hY2gvcmVncy1mYi5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBD b3B5cmlnaHQgMjAwOSBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLgorICogICBQYXdlbCBPc2NpYWsg PHAub3NjaWFrQHNhbXN1bmcuY29tPgorICoKKyAqIE1hY2hpbmUtc3BlY2lmaWMgZnJhbWVidWZm ZXIgZGVmaW5pdGlvbnMgZm9yIFNhbXN1bmcgUzVQQzExMC4KKyAqCisgKiBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9NQUNIX1JFR1NfRkJfSAorI2RlZmluZSBfX0FT TV9BUkNIX01BQ0hfUkVHU19GQl9IIF9fRklMRV9fCisKKyNpbmNsdWRlIDxwbGF0L3JlZ3MtZmIt djUuaD4KKworLyogV0lOQ09OeCAqLworI2RlZmluZSBXSU5DT054X0JVRlNUQVRVU19ICQkJCSgx IDw8IDMxKQorI2RlZmluZSBXSU5DT054X0JVRlNFTF9ICQkJCSgxIDw8IDMwKQorI2RlZmluZSBX SU5DT054X0xJTUlUX09OCQkJCSgxIDw8IDI5KQorI2RlZmluZSBXSU5DT054X0VRNzA5CQkJCQko MSA8PCAyOCkKKworCisvKiBWSURDT04zICovCisjZGVmaW5lIFZJRENPTjMJCQkJCQkoMHgwYykK KyNkZWZpbmUgVklEQ09OM19WRV9PTgkJCQkJKDEgPDwgMjApCisjZGVmaW5lIFZJRENPTjNfQ0df T04JCQkJCSgxIDw8IDE4KQorI2RlZmluZSBWSURDT04zX0dNX09OCQkJCQkoMSA8PCAxNikKKyNk ZWZpbmUgVklEQ09OM19IVV9DU0NfRl9OQVJST1cJCQkJKDEgPDwgMTQpCisjZGVmaW5lIFZJRENP TjNfSFVfQ1NDX0ZfRVE3MDkJCQkJKDEgPDwgMTMpCisjZGVmaW5lIFZJRENPTjNfSFVfQ1NDX0Zf RU4JCQkJKDEgPDwgMTIpCisjZGVmaW5lIFZJRENPTjNfSFVfQ1NDX0JfTkFSUk9XCQkJCSgxIDw8 IDEwKQorI2RlZmluZSBWSURDT04zX0hVX0NTQ19CX0VRNzA5CQkJCSgxIDw8IDkpCisjZGVmaW5l IFZJRENPTjNfSFVfQ1NDX0JfRU4JCQkJKDEgPDwgOCkKKyNkZWZpbmUgVklEQ09OM19IVUVfRU4J CQkJCSgxIDw8IDcpCisjZGVmaW5lIFZJRENPTjNfUENfRElSX05FRwkJCQkoMSA8PCAxKQorI2Rl ZmluZSBWSURDT04zX1BDX0VOCQkJCQkoMSA8PCAwKQorCisKKy8qIFZJRFRDT04zICovCisjZGVm aW5lIFZJRFRDT04zCQkJCQkoMHgxYykKKyNkZWZpbmUgVklEVENPTjNfVlNZTkNfRU4JCQkJKDEg PDwgMzEpCisjZGVmaW5lIFZJRFRDT04zX0ZSTV9FTgkJCQkJKDEgPDwgMjkpCisjZGVmaW5lIFZJ RFRDT04zX0lOVkZSTV9MT1cJCQkJKDEgPDwgMjgpCisjZGVmaW5lIFZJRFRDT04zX0ZSTVZSQVRF X01BU0sJCQkJMHhmCisjZGVmaW5lIFZJRFRDT04zX0ZSTVZSQVRFX1NISUZUCQkJCSgyNCkKKyNk ZWZpbmUgVklEVENPTjNfRlJNVkZQRF9NQVNLCQkJCTB4ZmYKKyNkZWZpbmUgVklEVENPTjNfRlJN VkZQRF9TSElGVAkJCQkoOCkKKyNkZWZpbmUgVklEVENPTjNfRlJNVlNQV19NQVNLCQkJCTB4ZmYK KyNkZWZpbmUgVklEVENPTjNfRlJNVlNQV19TSElGVAkJCQkoMCkKKworCisjZGVmaW5lIFNIQURP V0NPTgkJCQkJKDB4MzQpCisjZGVmaW5lIFNIQURPV0NPTl9DSF9FTkFCTEUoeCkJCQkJKDEgPDwg eCkKKyNkZWZpbmUgU0hBRE9XQ09OX0NIX0RJU0FCTEUoeCkJCQkJKDAgPDwgeCkKKyNkZWZpbmUg U0hBRE9XQ09OX0NIX0xPQ0FMX0VOQUJMRSh4KQkJCSgxIDw8ICh4ICsgNSkpCisjZGVmaW5lIFNI QURPV0NPTl9DSF9MT0NBTF9ESVNBQkxFKHgpCQkJKDAgPDwgKHggKyA1KSkKKy8qIFNldCB0byBk aXNhYmxlIHdpbmRvdyA0LTAgc2hhZG93IHJlZ2lzdGVycycgdXBkYXRlICovCisjZGVmaW5lIFNI QURPV0NPTl9XNF9QUk9URUNUCQkJCSgxIDw8IDE0KQorI2RlZmluZSBTSEFET1dDT05fVzNfUFJP VEVDVAkJCQkoMSA8PCAxMykKKyNkZWZpbmUgU0hBRE9XQ09OX1cyX1BST1RFQ1QJCQkJKDEgPDwg MTIpCisjZGVmaW5lIFNIQURPV0NPTl9XMV9QUk9URUNUCQkJCSgxIDw8IDExKQorI2RlZmluZSBT SEFET1dDT05fVzBfUFJPVEVDVAkJCQkoMSA8PCAxMCkKKworCisvKiBWaWRlbyBidWZmZXIgYWRk cmVzcyBzaGFkb3cgcmVnaXN0ZXJzIChyZWFkLW9ubHkpICovCisjZGVmaW5lIFZJRFdfQlVGX1NU QVJUX1NIQURPVyhfYnVmKQkJCSgweDIwYTAgKyAoKF9idWYpICogOCkpCisjZGVmaW5lIFZJRFdf QlVGX0VORF9TSEFET1coX2J1ZikJCQkoMHgyMGQwICsgKChfYnVmKSAqIDgpKQorCisvKiBGb3Ig d2luZG93cyAxLTQgKi8KKyNkZWZpbmUgV3hLRVlfQUxQSEEoX3dpbikJCQkJKDB4MTYwICsgKChf d2luKSAqIDQpKQorCisjZGVmaW5lIENPTE9SR0FJTkNPTgkJCQkJKDB4MWMwKQorI2RlZmluZSBW RVNGUkNPTjAJCQkJCSgweDFjNCkKKyNkZWZpbmUgVkVTRlJDT04xCQkJCQkoMHgxYzgpCisjZGVm aW5lIFZFU0ZSQ09OMgkJCQkJKDB4MWNjKQorCisvKiBIdWUgbWF0cml4IGNvZWZmaWNpZW50cyAq LworI2RlZmluZSBIVUVDT0VGMDAJCQkJCSgweDFlYykKKyNkZWZpbmUgSFVFQ09FRjAxCQkJCQko MHgxZjApCisjZGVmaW5lIEhVRUNPRUYxMAkJCQkJKDB4MWY0KQorI2RlZmluZSBIVUVDT0VGMTEJ CQkJCSgweDFmOCkKKyNkZWZpbmUgSFVFT0ZGU0VUCQkJCQkoMHgxZmMpCisKKy8qIFJUUU9TIGNv bnRyb2wgZm9yIHdpbmRvd3MgMC00Ki8KKyNkZWZpbmUgV3hSVFFPU0NPTihfd2luKQkJCQkoMHgy NjQgKyAoKF93aW4pICogNCkpCisKKy8qIEdhbW1hIExVVCBkYXRhIGZvciBpbmRleCBJMSBhbmQg STAsIHdoZXJlCisgKiBJMCA9IF9pbmRleCwgSTEgPSBfaW5kZXggKyAxLgorICovCisjZGVmaW5l IEdBTU1BTFVUX0JBU0UJCQkJCSgweDM3YykKKyNkZWZpbmUgR0FNTUFMVVRfSTFJMChfaW5kZXgp CQkJKEdBTU1BTFVUX0JBU0UgKyAoKF9pbmRleCkgKiA0KSkKKworI2VuZGlmIC8qIF9fQVNNX0FS Q0hfTUFDSF9SRUdTX0ZCX0ggKi8KKwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1zYW1zdW5n L2luY2x1ZGUvcGxhdC9mYi5oIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9m Yi5oCmluZGV4IGZmYzAxYTcuLmE0Njg2ODQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtc2Ft c3VuZy9pbmNsdWRlL3BsYXQvZmIuaAorKysgYi9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVk ZS9wbGF0L2ZiLmgKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IHMzY19mYl9wbGF0ZGF0YSB7CiAJ dm9pZAkoKnNldHVwX2dwaW8pKHZvaWQpOwogCiAJc3RydWN0IHMzY19mYl9wZF93aW4JKndpbltT M0NfRkJfTUFYX1dJTl07CisJdTMyCQkJZGVmYXVsdF93aW47CiAKIAl1MzIJCQkgdmlkY29uMDsK IAl1MzIJCQkgdmlkY29uMTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNs dWRlL3BsYXQvcmVncy1mYi12NS5oIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxh dC9yZWdzLWZiLXY1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUwNjg2 ZAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQv cmVncy1mYi12NS5oCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDkgU2Ft c3VuZyBFbGVjdHJvbmljcyBDby4KKyAqICAgUGF3ZWwgT3NjaWFrIDxwLm9zY2lha0BzYW1zdW5n LmNvbT4KKyAqCisgKiBDb21tb24gZnJhbWVidWZmZXIgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9y IFNhbXN1bmcgUzVQQzF4eCBmYW1pbHkuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFz CisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisj aWZuZGVmIF9fQVNNX0FSQ0hfUkVHU19GQl9WNV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfUkVHU19G Ql9WNV9IIF9fRklMRV9fCisKKyNpbmNsdWRlIDxwbGF0L3JlZ3MtZmItdjQuaD4KKworLyogVlAx IGludGVyZmFjZSB0aW1pbmcgY29udHJvbCAqLworI2RlZmluZSBWUDFDT04wCQkJCQkJKDB4MTE4 KQorI2RlZmluZSBWUDFfUkFURUNPTl9FTgkJCQkJKDEgPDwgMzEpCisjZGVmaW5lIFZQMV9DTEtS QVRFX01BU0sJCQkJKDB4ZmYpCisKKyNkZWZpbmUgVlAxQ09OMQkJCQkJCSgweDExYykKKyNkZWZp bmUgVlAxX1ZUUkVHQ09OX0VOCQkJCQkoMSA8PCAzMSkKKyNkZWZpbmUgVlAxX1ZCUERfTUFTSwkJ CQkJKDB4ZmZmKQorI2RlZmluZSBWUDFfVkJQRF9TSElGVAkJCQkJKDE2KQorCisKKyNkZWZpbmUg V1BBTENPTl9ICQkJCQkoMHgxOWMpCisjZGVmaW5lIFdQQUxDT05fTAkJCQkJKDB4MWEwKQorCisv KiBQYWxsZXRlIGNvbnRybyBmb3IgV1BBTDAgYW5kIFdQQUwxIGlzIHRoZSBzYW1lIGFzIGluIFMz QzY0eHgsIGJ1dAorICogZGlmZmVyZW50IGZvciBXUEFMMi00CisgKi8KKy8qIEluIFdQQUxDT05f TCAoYWthIFdQQUxDT04pICovCisjZGVmaW5lIFdQQUxDT05fVzFQQUxfMzJCUFBfQTg4OAkJCSgw eDcgPDwgMykKKyNkZWZpbmUgV1BBTENPTl9XMFBBTF8zMkJQUF9BODg4CQkJKDB4NyA8PCAwKQor CisvKiBXMlBBTC1XNFBBTCBjb25zaXN0IG9mIG9uZSBiaXQgZnJvbSBXUEFMQ09OX0wgYW5kIHR3 byBmcm9tIFdQQUxDT05fSCwKKyAqIGUuZy4gVzJQQUxbMi4uMF0gaXMgbWFkZSBvZiAoV1BBTENP Tl9IWzEwLi45XSwgV1BBTENPTl9MWzZdKS4KKyAqLworI2RlZmluZSBXUEFMQ09OX0xfV3hQQUxf TF9NQVNLCQkJCSgweDEpCisjZGVmaW5lIFdQQUxDT05fTF9XMlBBTF9MX1NISUZUCQkJCSg2KQor I2RlZmluZSBXUEFMQ09OX0xfVzNQQUxfTF9TSElGVAkJCQkoNykKKyNkZWZpbmUgV1BBTENPTl9M X1c0UEFMX0xfU0hJRlQJCQkJKDgpCisKKyNkZWZpbmUgV1BBTENPTl9MX1d4UEFMX0hfTUFTSwkJ CQkoMHgzKQorI2RlZmluZSBXUEFMQ09OX0hfVzJQQUxfSF9TSElGVAkJCQkoOSkKKyNkZWZpbmUg V1BBTENPTl9IX1czUEFMX0hfU0hJRlQJCQkJKDEzKQorI2RlZmluZSBXUEFMQ09OX0hfVzRQQUxf SF9TSElGVAkJCQkoMTcpCisKKy8qIFBlci13aW5kb3cgYWxwaGEgdmFsdWUgcmVnaXN0ZXJzICov CisvKiBGb3Igd2luZG93IDAgOC1iaXQgYWxwaGEgdmFsdWVzIGFyZSBpbiBWSURXMEFMUEhBeCwK KyAqIGZvciB3aW5kb3dzIDEtNCBhbHBoYSB2YWx1ZXMgY29uc2lzdCBvZiB0d28gcGFydHMsIHRo ZSA0IGxvdyBiaXRzIGFyZQorICogdGFrZW4gZnJvbSBWSURXeEFMUEhBeCBhbmQgNCBoaWdoIGJp dHMgYXJlIGZyb20gVklET1NEeEMsCisgKiBlLmcuIFdJTjFfQUxQSEEwX0JbNy4uMF0gPSAoVklE T1NEMUNbMy4uMF0sIFZJRFcxQUxQSEEwWzMuLjBdKQorICovCisjZGVmaW5lIFZJRFd4QUxQSEEw KF93aW4pCQkJCSgweDIwMCArIChfd2luICogOCkpCisjZGVmaW5lIFZJRFd4QUxQSEExKF93aW4p CQkJCSgweDIwNCArIChfd2luICogOCkpCisKKy8qIE9ubHkgZm9yIHdpbmRvdyAwIGluIFZJRFcw QUxQSEF4LiAqLworI2RlZmluZSBWSURXMEFMUEhBeF9SKF94KQkJCQkoKF94KSA8PCAxNikKKyNk ZWZpbmUgVklEVzBBTFBIQXhfUl9NQVNLCQkJCSgweGZmIDw8IDE2KQorI2RlZmluZSBWSURXMEFM UEhBeF9SX1NISUZUCQkJCSgxNikKKyNkZWZpbmUgVklEVzBBTFBIQXhfRyhfeCkJCQkJKChfeCkg PDwgOCkKKyNkZWZpbmUgVklEVzBBTFBIQXhfR19NQVNLCQkJCSgweGZmIDw8IDgpCisjZGVmaW5l IFZJRFcwQUxQSEF4X0dfU0hJRlQJCQkJKDgpCisjZGVmaW5lIFZJRFcwQUxQSEF4X0IoX3gpCQkJ CSgoX3gpIDw8IDApCisjZGVmaW5lIFZJRFcwQUxQSEF4X0JfTUFTSwkJCQkoMHhmZiA8PCAwKQor I2RlZmluZSBWSURXMEFMUEhBeF9CX1NISUZUCQkJCSgwKQorCisvKiBMb3cgNCBiaXRzIG9mIGFs cGhhMC0xIGZvciB3aW5kb3dzIDEtNCAqLworI2RlZmluZSBWSURXMTRBTFBIQXhfUl9MKF94KQkJ CQkoKF94KSA8PCAxNikKKyNkZWZpbmUgVklEVzE0QUxQSEF4X1JfTF9NQVNLCQkJCSgweGYgPDwg MTYpCisjZGVmaW5lIFZJRFcxNEFMUEhBeF9SX0xfU0hJRlQJCQkJKDE2KQorI2RlZmluZSBWSURX MTRBTFBIQXhfR19MKF94KQkJCQkoKF94KSA8PCA4KQorI2RlZmluZSBWSURXMTRBTFBIQXhfR19M X01BU0sJCQkJKDB4ZiA8PCA4KQorI2RlZmluZSBWSURXMTRBTFBIQXhfR19MX1NISUZUCQkJCSg4 KQorI2RlZmluZSBWSURXMTRBTFBIQXhfQl9MKF94KQkJCQkoKF94KSA8PCAwKQorI2RlZmluZSBW SURXMTRBTFBIQXhfQl9MX01BU0sJCQkJKDB4ZiA8PCAwKQorI2RlZmluZSBWSURXMTRBTFBIQXhf Ql9MX1NISUZUCQkJCSgwKQorCisKKy8qIFBlci13aW5kb3cgYmxlbmRpbmcgZXF1YXRpb24gY29u dHJvbCByZWdpc3RlcnMgKi8KKyNkZWZpbmUgQkxFTkRFUXgoX3dpbikJCQkJCSgweDI0NCArICgo X3dpbikgKiA0KSkKKyNkZWZpbmUgQkxFTkRFUTEJCQkJCSgweDI0NCkKKyNkZWZpbmUgQkxFTkRF UTIJCQkJCSgweDI0OCkKKyNkZWZpbmUgQkxFTkRFUTMJCQkJCSgweDI0YykKKyNkZWZpbmUgQkxF TkRFUTQJCQkJCSgweDI1MCkKKworI2RlZmluZSBCTEVOREVReF9RX0ZVTkMoX3gpCQkJCSgoX3gp IDw8IDE4KQorI2RlZmluZSBCTEVOREVReF9RX0ZVTkNfTUFTSwkJCQkoMHhmIDw8IDE4KQorI2Rl ZmluZSBCTEVOREVReF9QX0ZVTkMoX3gpCQkJCSgoX3gpIDw8IDEyKQorI2RlZmluZSBCTEVOREVR eF9QX0ZVTkNfTUFTSwkJCQkoMHhmIDw8IDEyKQorI2RlZmluZSBCTEVOREVReF9CX0ZVTkMoX3gp CQkJCSgoX3gpIDw8IDYpCisjZGVmaW5lIEJMRU5ERVF4X0JfRlVOQ19NQVNLCQkJCSgweGYgPDwg NikKKyNkZWZpbmUgQkxFTkRFUXhfQV9GVU5DKF94KQkJCQkoKF94KSA8PCAwKQorI2RlZmluZSBC TEVOREVReF9BX0ZVTkNfTUFTSwkJCQkoMHhmIDw8IDApCisKKyNkZWZpbmUgQkxFTkRDT04JCQkJ CSgweDI2MCkKKyNkZWZpbmUgQkxFTkRDT05fOEJJVF9BTFBIQQkJCQkoMSA8PCAwKQorCisvKiBQ ZXItd2luZG93IHBhbGV0dGUgYmFzZSBhZGRyZXNzZXMgKHN0YXJ0IG9mIHBhbGV0dGUgbWVtb3J5 KS4KKyAqIEVhY2ggd2luZG93IHBhbGV0dGUgYXJlYSBjb25zaXN0cyBvZiAyNTYgMzItYml0IGVu dHJpZXMuCisgKiBTVEFSVCBpcyB0aGUgZmlyc3QgYWRkcmVzcyAoZW50cnkgMHRoKSwgRU5EIGlz IHRoZSBhZGRyZXNzIG9mIDI1NXRoIGVudHJ5LgorICovCisjZGVmaW5lIFdJTjBfUEFMX0JBU0UJ CQkJCSgweDI0MDApCisjZGVmaW5lIFdJTjBfUEFMX0VORAkJCQkJKDB4MjdmYykKKyNkZWZpbmUg V0lOMV9QQUxfQkFTRQkJCQkJKDB4MjgwMCkKKyNkZWZpbmUgV0lOMV9QQUxfRU5ECQkJCQkoMHgy YmZjKQorI2RlZmluZSBXSU4yX1BBTF9CQVNFCQkJCQkoMHgyYzAwKQorI2RlZmluZSBXSU4yX1BB TF9FTkQJCQkJCSgweDJmZmMpCisjZGVmaW5lIFdJTjNfUEFMX0JBU0UJCQkJCSgweDMwMDApCisj ZGVmaW5lIFdJTjNfUEFMX0VORAkJCQkJKDB4MzNmYykKKyNkZWZpbmUgV0lONF9QQUxfQkFTRQkJ CQkJKDB4MzQwMCkKKyNkZWZpbmUgV0lONF9QQUxfRU5ECQkJCQkoMHgzN2ZjKQorCisjZGVmaW5l IFdJTjBfUEFMKF9lbnRyeSkJCQkoV0lOMF9QQUxfQkFTRSArICgoX2VudHJ5KSAqIDQpKQorI2Rl ZmluZSBXSU4xX1BBTChfZW50cnkpCQkJKFdJTjFfUEFMX0JBU0UgKyAoKF9lbnRyeSkgKiA0KSkK KyNkZWZpbmUgV0lOMl9QQUwoX2VudHJ5KQkJCShXSU4yX1BBTF9CQVNFICsgKChfZW50cnkpICog NCkpCisjZGVmaW5lIFdJTjNfUEFMKF9lbnRyeSkJCQkoV0lOM19QQUxfQkFTRSArICgoX2VudHJ5 KSAqIDQpKQorI2RlZmluZSBXSU40X1BBTChfZW50cnkpCQkJKFdJTjRfUEFMX0JBU0UgKyAoKF9l bnRyeSkgKiA0KSkKKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgczNjX2ZiX3BhbF9yZWco dW5zaWduZWQgaW50IHdpbmRvdywgaW50IHJlZykKK3sKKwlzd2l0Y2ggKHdpbmRvdykgeworCWNh c2UgMDogcmV0dXJuIFdJTjBfUEFMKHJlZyk7CisJY2FzZSAxOiByZXR1cm4gV0lOMV9QQUwocmVn KTsKKwljYXNlIDI6IHJldHVybiBXSU4yX1BBTChyZWcpOworCWNhc2UgMzogcmV0dXJuIFdJTjNf UEFMKHJlZyk7CisJY2FzZSA0OiByZXR1cm4gV0lONF9QQUwocmVnKTsKKwl9CisKKwlCVUcoKTsK K30KKworCisjZW5kaWYgLyogX19BU01fQVJDSF9SRUdTX0ZCX1Y1X0ggKi8KKwpkaWZmIC0tZ2l0 IGEvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9yZWdzLWZiLmggYi9hcmNoL2Fy bS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L3JlZ3MtZmIuaAppbmRleCAwZWY4MDZlLi40MWM2 OGFjIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L3JlZ3Mt ZmIuaAorKysgYi9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L3JlZ3MtZmIuaApA QCAtMTczLDYgKzE3Myw3IEBACiAjZGVmaW5lIFdJTkNPTnhfQklUU1dQCQkJCSgxIDw8IDE4KQog I2RlZmluZSBXSU5DT054X0JZVFNXUAkJCQkoMSA8PCAxNykKICNkZWZpbmUgV0lOQ09OeF9IQVdT V1AJCQkJKDEgPDwgMTYpCisjZGVmaW5lIFdJTkNPTnhfV1NXUAkJCQkoMSA8PCAxNSkKICNkZWZp bmUgV0lOQ09OeF9CVVJTVExFTl9NQVNLCQkJKDB4MyA8PCA5KQogI2RlZmluZSBXSU5DT054X0JV UlNUTEVOX1NISUZUCQkJKDkpCiAjZGVmaW5lIFdJTkNPTnhfQlVSU1RMRU5fMTZXT1JECQkJKDB4 MCA8PCA5KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9LY29uZmlnIGIvZHJpdmVycy92aWRl by9LY29uZmlnCmluZGV4IDZlMTYyNDQuLjIxOTAwMzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlk ZW8vS2NvbmZpZworKysgYi9kcml2ZXJzL3ZpZGVvL0tjb25maWcKQEAgLTE5MTQsNyArMTkxNCw3 IEBAIGNvbmZpZyBGQl9UTUlPX0FDQ0VMTAogCiBjb25maWcgRkJfUzNDCiAJdHJpc3RhdGUgIlNh bXN1bmcgUzNDIGZyYW1lYnVmZmVyIHN1cHBvcnQiCi0JZGVwZW5kcyBvbiBGQiAmJiBBUkNIX1Mz QzY0WFgKKwlkZXBlbmRzIG9uIEZCICYmIChBUkNIX1MzQzY0WFggfHwgQVJDSF9TNVBWMjEwKQog CXNlbGVjdCBGQl9DRkJfRklMTFJFQ1QKIAlzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBCiAJc2VsZWN0 IEZCX0NGQl9JTUFHRUJMSVQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vczNjLWZiLmMgYi9k cml2ZXJzL3ZpZGVvL3MzYy1mYi5jCmluZGV4IDk2ODJlY2MuLjM5OGE5NzYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvdmlkZW8vczNjLWZiLmMKKysrIGIvZHJpdmVycy92aWRlby9zM2MtZmIuYwpAQCAt MjY4LDkgKzI2OCw4IEBAIHN0YXRpYyBpbnQgczNjX2ZiX3NldF9wYXIoc3RydWN0IGZiX2luZm8g KmluZm8pCiAJdm9pZCBfX2lvbWVtICpyZWdzID0gc2ZiLT5yZWdzOwogCWludCB3aW5fbm8gPSB3 aW4tPmluZGV4OwogCXUzMiBvc2RjX2RhdGEgPSAwOwotCXUzMiBkYXRhOworCXUzMiBkYXRhLCBz aGFkb3c7CiAJdTMyIHBhZ2V3aWR0aDsKLQlpbnQgY2xrZGl2OwogCiAJZGV2X2RiZyhzZmItPmRl diwgInNldHRpbmcgZnJhbWVidWZmZXIgcGFyYW1ldGVyc1xuIik7CiAKQEAgLTMwMCw0MiArMjk5 LDcgQEAgc3RhdGljIGludCBzM2NfZmJfc2V0X3BhcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIAkv KiBkaXNhYmxlIHRoZSB3aW5kb3cgd2hpbHN0IHdlIHVwZGF0ZSBpdCAqLwogCXdyaXRlbCgwLCBy ZWdzICsgV0lOQ09OKHdpbl9ubykpOwogCi0JLyogdXNlIHdpbmRvdyAwIGFzIHRoZSBiYXNpcyBm b3IgdGhlIGxjZCBvdXRwdXQgdGltaW5ncyAqLwotCi0JaWYgKHdpbl9ubyA9PSAwKSB7Ci0JCWNs a2RpdiA9IHMzY19mYl9jYWxjX3BpeGNsayhzZmIsIHZhci0+cGl4Y2xvY2spOwotCi0JCWRhdGEg PSBzZmItPnBkYXRhLT52aWRjb24wOwotCQlkYXRhICY9IH4oVklEQ09OMF9DTEtWQUxfRl9NQVNL IHwgVklEQ09OMF9DTEtESVIpOwotCi0JCWlmIChjbGtkaXYgPiAxKQotCQkJZGF0YSB8PSBWSURD T04wX0NMS1ZBTF9GKGNsa2Rpdi0xKSB8IFZJRENPTjBfQ0xLRElSOwotCQllbHNlCi0JCQlkYXRh ICY9IH5WSURDT04wX0NMS0RJUjsJLyogMToxIGNsb2NrICovCi0KLQkJLyogd3JpdGUgdGhlIHRp bWluZyBkYXRhIHRvIHRoZSBwYW5lbCAqLwotCi0JCWRhdGEgfD0gVklEQ09OMF9FTlZJRCB8IFZJ RENPTjBfRU5WSURfRjsKLQkJd3JpdGVsKGRhdGEsIHJlZ3MgKyBWSURDT04wKTsKLQotCQlkYXRh ID0gVklEVENPTjBfVkJQRCh2YXItPnVwcGVyX21hcmdpbiAtIDEpIHwKLQkJICAgICAgIFZJRFRD T04wX1ZGUEQodmFyLT5sb3dlcl9tYXJnaW4gLSAxKSB8Ci0JCSAgICAgICBWSURUQ09OMF9WU1BX KHZhci0+dnN5bmNfbGVuIC0gMSk7Ci0KLQkJd3JpdGVsKGRhdGEsIHJlZ3MgKyBWSURUQ09OMCk7 Ci0KLQkJZGF0YSA9IFZJRFRDT04xX0hCUEQodmFyLT5sZWZ0X21hcmdpbiAtIDEpIHwKLQkJICAg ICAgIFZJRFRDT04xX0hGUEQodmFyLT5yaWdodF9tYXJnaW4gLSAxKSB8Ci0JCSAgICAgICBWSURU Q09OMV9IU1BXKHZhci0+aHN5bmNfbGVuIC0gMSk7Ci0KLQkJd3JpdGVsKGRhdGEsIHJlZ3MgKyBW SURUQ09OMSk7Ci0KLQkJZGF0YSA9IFZJRFRDT04yX0xJTkVWQUwodmFyLT55cmVzIC0gMSkgfAot CQkgICAgICAgVklEVENPTjJfSE9aVkFMKHZhci0+eHJlcyAtIDEpOwotCQl3cml0ZWwoZGF0YSwg cmVncyArIFZJRFRDT04yKTsKLQl9Ci0KLQkvKiB3cml0ZSB0aGUgYnVmZmVyIGFkZHJlc3MgKi8K KwkJLyogd3JpdGUgdGhlIGJ1ZmZlciBhZGRyZXNzICovCiAKIAl3cml0ZWwoaW5mby0+Zml4LnNt ZW1fc3RhcnQsIHJlZ3MgKyBWSURXX0JVRl9TVEFSVCh3aW5fbm8pKTsKIApAQCAtMzcyLDYgKzMz Niw5IEBAIHN0YXRpYyBpbnQgczNjX2ZiX3NldF9wYXIoc3RydWN0IGZiX2luZm8gKmluZm8pCiAK IAlkYXRhID0gV0lOQ09OeF9FTldJTjsKIAorCXNoYWRvdyA9IHJlYWRsKHNmYi0+cmVncyArIFNI QURPV0NPTik7CisJc2hhZG93IHw9IFNIQURPV0NPTl9DSF9FTkFCTEUod2luX25vKTsKKwogCS8q IG5vdGUsIHNpbmNlIHdlIGhhdmUgdG8gcm91bmQgdXAgdGhlIGJpdHMtcGVyLXBpeGVsLCB3ZSBl bmQgdXAKIAkgKiByZWx5aW5nIG9uIHRoZSBiaXRmaWVsZCBpbmZvcm1hdGlvbiBmb3Igci9nL2Iv YSB0byB3b3JrIG91dAogCSAqIGV4YWN0bHkgd2hpY2ggbW9kZSBvZiBvcGVyYXRpb24gaXMgaW50 ZW5kZWQuICovCkBAIC00MjQsNiArMzkxLDcgQEAgc3RhdGljIGludCBzM2NfZmJfc2V0X3Bhcihz dHJ1Y3QgZmJfaW5mbyAqaW5mbykKIAkJZWxzZQogCQkJZGF0YSB8PSBXSU5DT04wX0JQUE1PREVf MjRCUFBfODg4OwogCisJCWRhdGEgfD0gV0lOQ09OeF9XU1dQOwogCQlkYXRhIHw9IFdJTkNPTnhf QlVSU1RMRU5fMTZXT1JEOwogCQlicmVhazsKIAl9CkBAIC00NDQsNiArNDEyLDYxIEBAIHN0YXRp YyBpbnQgczNjX2ZiX3NldF9wYXIoc3RydWN0IGZiX2luZm8gKmluZm8pCiAKIAl3cml0ZWwoZGF0 YSwgcmVncyArIFdJTkNPTih3aW5fbm8pKTsKIAl3cml0ZWwoMHgwLCByZWdzICsgV0lOeE1BUCh3 aW5fbm8pKTsKKwl3cml0ZWwoc2hhZG93LCBzZmItPnJlZ3MgKyBTSEFET1dDT04pOworCisJcmV0 dXJuIDA7Cit9CisKKy8qKgorICogczNjX2ZiX3NldF90aW1pbmcoKSAtIHMzY19mYl9wcm9iZV93 aW4gcmVxdWVzdCB0byBzZXQgdGltaW5nIHN1Y2ggYXMgcGl4ZWwgY2xvY2ssCisgKiAJCQkJcG9y Y2ggYW5kIHNvIG9uLgorICogQGluZm86IFRoZSBmcmFtZWJ1ZmZlciB0byBpbml0aWFsaXplLgor ICoKKyAqIHMzY19mYl9wcm9iZV93aW4gcmVxdWVzdCB0byBpbml0aWFsaXplIHRoZSBzcGVjaWZp ZWQgZnJhbWVidWZmZXIKKyAqLworc3RhdGljIGludCBzM2NfZmJfc2V0X3RpbWluZyhzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciA9ICZpbmZv LT52YXI7CisJc3RydWN0IHMzY19mYl93aW4gKndpbiA9IGluZm8tPnBhcjsKKwlzdHJ1Y3QgczNj X2ZiICpzZmIgPSB3aW4tPnBhcmVudDsKKwl2b2lkIF9faW9tZW0gKnJlZ3MgPSBzZmItPnJlZ3M7 CisJaW50IHdpbl9ubyA9IHdpbi0+aW5kZXg7CisJaW50IGNsa2RpdjsKKwl1MzIgZGF0YTsKKwor CS8qIHVzZSB3aW5kb3cgMCBhcyB0aGUgYmFzaXMgZm9yIHRoZSBsY2Qgb3V0cHV0IHRpbWluZ3Mg Ki8KKwlpZiAod2luX25vID09IHNmYi0+cGRhdGEtPmRlZmF1bHRfd2luKSB7CisJCWNsa2RpdiA9 IHMzY19mYl9jYWxjX3BpeGNsayhzZmIsIHZhci0+cGl4Y2xvY2spOworCisJCWRhdGEgPSBzZmIt PnBkYXRhLT52aWRjb24wOworCQlkYXRhICY9IH4oVklEQ09OMF9DTEtWQUxfRl9NQVNLIHwgVklE Q09OMF9DTEtESVIpOworCisJCWlmIChjbGtkaXYgPiAxKQorCQkJZGF0YSB8PSBWSURDT04wX0NM S1ZBTF9GKGNsa2Rpdi0xKSB8IFZJRENPTjBfQ0xLRElSOworCQllbHNlCisJCQlkYXRhICY9IH5W SURDT04wX0NMS0RJUjsJLyogMToxIGNsb2NrICovCisKKwkJLyogd3JpdGUgdGhlIHRpbWluZyBk YXRhIHRvIHRoZSBwYW5lbCAqLworCisJCWRhdGEgfD0gVklEQ09OMF9FTlZJRCB8IFZJRENPTjBf RU5WSURfRjsKKwkJd3JpdGVsKGRhdGEsIHJlZ3MgKyBWSURDT04wKTsKKworCQlkYXRhID0gVklE VENPTjBfVkJQRCh2YXItPnVwcGVyX21hcmdpbiAtIDEpIHwKKwkJICAgICAgIFZJRFRDT04wX1ZG UEQodmFyLT5sb3dlcl9tYXJnaW4gLSAxKSB8CisJCSAgICAgICBWSURUQ09OMF9WU1BXKHZhci0+ dnN5bmNfbGVuIC0gMSk7CisKKwkJd3JpdGVsKGRhdGEsIHJlZ3MgKyBWSURUQ09OMCk7CisKKwkJ ZGF0YSA9IFZJRFRDT04xX0hCUEQodmFyLT5sZWZ0X21hcmdpbiAtIDEpIHwKKwkJICAgICAgIFZJ RFRDT04xX0hGUEQodmFyLT5yaWdodF9tYXJnaW4gLSAxKSB8CisJCSAgICAgICBWSURUQ09OMV9I U1BXKHZhci0+aHN5bmNfbGVuIC0gMSk7CisKKwkJd3JpdGVsKGRhdGEsIHJlZ3MgKyBWSURUQ09O MSk7CisKKwkJZGF0YSA9IFZJRFRDT04yX0xJTkVWQUwodmFyLT55cmVzIC0gMSkgfAorCQkgICAg ICAgVklEVENPTjJfSE9aVkFMKHZhci0+eHJlcyAtIDEpOworCQl3cml0ZWwoZGF0YSwgcmVncyAr IFZJRFRDT04yKTsKKwl9CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTYzNiw3ICs2NTksNyBAQCBzdGF0 aWMgaW50IHMzY19mYl9ibGFuayhpbnQgYmxhbmtfbW9kZSwgc3RydWN0IGZiX2luZm8gKmluZm8p CiAJLyogd2UncmUgc3R1Y2sgd2l0aCB0aGlzIHVudGlsIHdlIGNhbiBkbyBzb21ldGhpbmcgYWJv dXQgb3ZlcnJpZGluZwogCSAqIHRoZSBwb3dlciBjb250cm9sIHVzaW5nIHRoZSBibGFua2luZyBl dmVudCBmb3IgYSBzaW5nbGUgZmIuCiAJICovCi0JaWYgKGluZGV4ID09IDApCisJaWYgKGluZGV4 ID09IHNmYi0+cGRhdGEtPmRlZmF1bHRfd2luKQogCQlzM2NfZmJfZW5hYmxlKHNmYiwgYmxhbmtf bW9kZSAhPSBGQl9CTEFOS19QT1dFUkRPV04gPyAxIDogMCk7CiAKIAlyZXR1cm4gMDsKQEAgLTcy NCwxMiArNzQ3LDE4IEBAIHN0YXRpYyB2b2lkIHMzY19mYl9mcmVlX21lbW9yeShzdHJ1Y3QgczNj X2ZiICpzZmIsIHN0cnVjdCBzM2NfZmJfd2luICp3aW4pCiAgKi8KIHN0YXRpYyB2b2lkIHMzY19m Yl9yZWxlYXNlX3dpbihzdHJ1Y3QgczNjX2ZiICpzZmIsIHN0cnVjdCBzM2NfZmJfd2luICp3aW4p CiB7CisJdTMyIHNoYWRvdzsKKwogCWlmICh3aW4tPmZiaW5mbykgewogCQl1bnJlZ2lzdGVyX2Zy YW1lYnVmZmVyKHdpbi0+ZmJpbmZvKTsKIAkJZmJfZGVhbGxvY19jbWFwKCZ3aW4tPmZiaW5mby0+ Y21hcCk7CiAJCXMzY19mYl9mcmVlX21lbW9yeShzZmIsIHdpbik7CiAJCWZyYW1lYnVmZmVyX3Jl bGVhc2Uod2luLT5mYmluZm8pOwogCX0KKworCXNoYWRvdyA9IHJlYWRsKHNmYi0+cmVncyArIFNI QURPV0NPTik7CisJc2hhZG93ICY9IH5TSEFET1dDT05fQ0hfRElTQUJMRSh3aW4tPmluZGV4KTsK Kwl3cml0ZWwoc2hhZG93LCBzZmItPnJlZ3MgKyBTSEFET1dDT04pOwogfQogCiAvKioKQEAgLTgx Niw2ICs4NDUsOCBAQCBzdGF0aWMgaW50IF9fZGV2aW5pdCBzM2NfZmJfcHJvYmVfd2luKHN0cnVj dCBzM2NfZmIgKnNmYiwgdW5zaWduZWQgaW50IHdpbl9ubywKIAogCXMzY19mYl9zZXRfcGFyKGZi aW5mbyk7CiAKKwlzM2NfZmJfc2V0X3RpbWluZyhmYmluZm8pOworCiAJZGV2X2RiZyhzZmItPmRl diwgImFib3V0IHRvIHJlZ2lzdGVyIGZyYW1lYnVmZmVyXG4iKTsKIAogCS8qIHJ1biB0aGUgY2hl Y2tfdmFyIGFuZCBzZXRfcGFyIG9uIG91ciBjb25maWd1cmF0aW9uLiAqLwo= --000e0cd1383ea025c00485e6590a--