[PATCH] s3c-fb: added patch series for s5pv210 and some features.

InKi Dae <[email protected]> Fri, 7 May 2010 16:59:56 +0900
Newsgroups gmane.linux.kernel,gmane.linux.fbdev.devel
Message-ID <[email protected]>
--000e0cd139c4f3a4a20485fc71f6
Content-Type: text/plain; charset=ISO-8859-1

Hello all,

this includes three patch series and divides previous patch
into smaller part.

so Andrew, please remove my previous patch,
s3c-fb-add-s5pv210-support-and-some-features.patch from mm tree.

patch contents are as following.

1. s3c_fb_1_3.patch
  - as patch for supporting s5pv210, CH_ENABLE bit of SHAD
    register should be enabled to enable window layer on s5pv210.

2. s3c_fb_2_3.patch
   - 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. s3c_fb_3_3.patch
   - 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.

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 <[email protected]>
Reviewed-by: KyungMin Park <kyungmin.park.samsung.com>

Best Regards,
InKi Dae

--000e0cd139c4f3a4a20485fc71f6
Content-Type: application/octet-stream; name="s3c_fb_2_3.patch"
Content-Disposition: attachment; filename="s3c_fb_2_3.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g8wpslyz0

ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvZmIuaCBiL2Fy
Y2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvZmIuaAppbmRleCA0NDM5ZmYzLi45ZjI0
MzA0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L2ZiLmgK
KysrIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9mYi5oCkBAIC0zNyw2ICsz
Nyw3IEBAIHN0cnVjdCBzM2NfZmJfcGRfd2luIHsKICAqCQlkZXZpY2UuCiAgKiBAc2hhZG93X2No
X2VuYWJsZTogaXQgc2hvdWxkIGJlIGVuYWJsZWQgdG8gZW5hYmxlIHdpbmRvdyBsYXllciBvbiBz
NXBjMTEwLgogICogCQkgICAgICBlbmFibGUgaXMgMSBhbmQgZGlzYWJsZSBpcyAwLgorICogQGRl
ZmF1bHRfd2luOiBkZWZhdWx0IHdpbmRvdyBsYXllciBudW1iZXIgdG8gYmUgdXNlZCBmb3IgVUkg
bGF5ZXIuCiAgKiBAdmlkY29uMDogVGhlIGJhc2UgdmlkY29uMCB2YWx1ZXMgdG8gY29udHJvbCB0
aGUgcGFuZWwgZGF0YSBmb3JtYXQuCiAgKiBAdmlkY29uMTogVGhlIGJhc2UgdmlkY29uMSB2YWx1
ZXMgdG8gY29udHJvbCB0aGUgcGFuZWwgZGF0YSBvdXRwdXQuCiAgKiBAd2luOiBUaGUgc2V0dXAg
ZGF0YSBmb3IgZWFjaCBoYXJkd2FyZSB3aW5kb3csIG9yIE5VTEwgZm9yIHVudXNlZC4KQEAgLTUz
LDYgKzU0LDcgQEAgc3RydWN0IHMzY19mYl9wbGF0ZGF0YSB7CiAKIAlzdHJ1Y3QgczNjX2ZiX3Bk
X3dpbgkqd2luW1MzQ19GQl9NQVhfV0lOXTsKIAl1MzIJCQlzaGFkb3dfY2hfZW5hYmxlOworCXUz
MgkJCWRlZmF1bHRfd2luOwogCiAJdTMyCQkJIHZpZGNvbjA7CiAJdTMyCQkJIHZpZGNvbjE7CmRp
ZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3MzYy1mYi5jIGIvZHJpdmVycy92aWRlby9zM2MtZmIu
YwppbmRleCAzNDAyNjdlLi5iMWQ3MjUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3MzYy1m
Yi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vczNjLWZiLmMKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0
aWMgaW50IHMzY19mYl9zZXRfcGFyKHN0cnVjdCBmYl9pbmZvICppbmZvKQogCiAJLyogdXNlIHdp
bmRvdyAwIGFzIHRoZSBiYXNpcyBmb3IgdGhlIGxjZCBvdXRwdXQgdGltaW5ncyAqLwogCi0JaWYg
KHdpbl9ubyA9PSAwKSB7CisJaWYgKHdpbl9ubyA9PSBzZmItPnBkYXRhLT5kZWZhdWx0X3dpbikg
ewogCQljbGtkaXYgPSBzM2NfZmJfY2FsY19waXhjbGsoc2ZiLCB2YXItPnBpeGNsb2NrKTsKIAog
CQlkYXRhID0gc2ZiLT5wZGF0YS0+dmlkY29uMDsKQEAgLTY0Myw3ICs2NDMsNyBAQCBzdGF0aWMg
aW50IHMzY19mYl9ibGFuayhpbnQgYmxhbmtfbW9kZSwgc3RydWN0IGZiX2luZm8gKmluZm8pCiAJ
Lyogd2UncmUgc3R1Y2sgd2l0aCB0aGlzIHVudGlsIHdlIGNhbiBkbyBzb21ldGhpbmcgYWJvdXQg
b3ZlcnJpZGluZwogCSAqIHRoZSBwb3dlciBjb250cm9sIHVzaW5nIHRoZSBibGFua2luZyBldmVu
dCBmb3IgYSBzaW5nbGUgZmIuCiAJICovCi0JaWYgKGluZGV4ID09IDApCisJaWYgKGluZGV4ID09
IHNmYi0+cGRhdGEtPmRlZmF1bHRfd2luKQogCQlzM2NfZmJfZW5hYmxlKHNmYiwgYmxhbmtfbW9k
ZSAhPSBGQl9CTEFOS19QT1dFUkRPV04gPyAxIDogMCk7CiAKIAlyZXR1cm4gMDsK
--000e0cd139c4f3a4a20485fc71f6
Content-Type: application/octet-stream; name="s3c_fb_3_3.patch"
Content-Disposition: attachment; filename="s3c_fb_3_3.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g8wpslz31

ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvcmVncy1mYi5o
IGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9yZWdzLWZiLmgKaW5kZXggMGVm
ODA2ZS4uNDFjNjhhYyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUv
cGxhdC9yZWdzLWZiLmgKKysrIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9y
ZWdzLWZiLmgKQEAgLTE3Myw2ICsxNzMsNyBAQAogI2RlZmluZSBXSU5DT054X0JJVFNXUAkJCQko
MSA8PCAxOCkKICNkZWZpbmUgV0lOQ09OeF9CWVRTV1AJCQkJKDEgPDwgMTcpCiAjZGVmaW5lIFdJ
TkNPTnhfSEFXU1dQCQkJCSgxIDw8IDE2KQorI2RlZmluZSBXSU5DT054X1dTV1AJCQkJKDEgPDwg
MTUpCiAjZGVmaW5lIFdJTkNPTnhfQlVSU1RMRU5fTUFTSwkJCSgweDMgPDwgOSkKICNkZWZpbmUg
V0lOQ09OeF9CVVJTVExFTl9TSElGVAkJCSg5KQogI2RlZmluZSBXSU5DT054X0JVUlNUTEVOXzE2
V09SRAkJCSgweDAgPDwgOSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vczNjLWZiLmMgYi9k
cml2ZXJzL3ZpZGVvL3MzYy1mYi5jCmluZGV4IGIxZDcyNTIuLmUyY2ZkYzIgMTAwNjQ0Ci0tLSBh
L2RyaXZlcnMvdmlkZW8vczNjLWZiLmMKKysrIGIvZHJpdmVycy92aWRlby9zM2MtZmIuYwpAQCAt
NDMwLDYgKzQzMCw3IEBAIHN0YXRpYyBpbnQgczNjX2ZiX3NldF9wYXIoc3RydWN0IGZiX2luZm8g
KmluZm8pCiAJCWVsc2UKIAkJCWRhdGEgfD0gV0lOQ09OMF9CUFBNT0RFXzI0QlBQXzg4ODsKIAor
CQlkYXRhIHw9IFdJTkNPTnhfV1NXUDsKIAkJZGF0YSB8PSBXSU5DT054X0JVUlNUTEVOXzE2V09S
RDsKIAkJYnJlYWs7CiAJfQo=
--000e0cd139c4f3a4a20485fc71f6
Content-Type: application/octet-stream; name="s3c_fb_1_3.patch"
Content-Disposition: attachment; filename="s3c_fb_1_3.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g8wpslz52

ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtczVwdjIxMC9pbmNsdWRlL21hY2gvcmVncy1mYi5o
IGIvYXJjaC9hcm0vbWFjaC1zNXB2MjEwL2luY2x1ZGUvbWFjaC9yZWdzLWZiLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQwNjcxNAotLS0gL2Rldi9udWxsCisrKyBiL2Fy
Y2gvYXJtL21hY2gtczVwdjIxMC9pbmNsdWRlL21hY2gvcmVncy1mYi5oCkBAIC0wLDAgKzEsOTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOSBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLgorICogICBQ
YXdlbCBPc2NpYWsgPHAub3NjaWFrQHNhbXN1bmcuY29tPgorICoKKyAqIE1hY2hpbmUtc3BlY2lm
aWMgZnJhbWVidWZmZXIgZGVmaW5pdGlvbnMgZm9yIFNhbXN1bmcgUzVQQzExMC4KKyAqCisgKiBU
aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9NQUNIX1JFR1NfRkJfSAor
I2RlZmluZSBfX0FTTV9BUkNIX01BQ0hfUkVHU19GQl9IIF9fRklMRV9fCisKKyNpbmNsdWRlIDxw
bGF0L3JlZ3MtZmItdjUuaD4KKworLyogV0lOQ09OeCAqLworI2RlZmluZSBXSU5DT054X0JVRlNU
QVRVU19ICQkJCSgxIDw8IDMxKQorI2RlZmluZSBXSU5DT054X0JVRlNFTF9ICQkJCSgxIDw8IDMw
KQorI2RlZmluZSBXSU5DT054X0xJTUlUX09OCQkJCSgxIDw8IDI5KQorI2RlZmluZSBXSU5DT054
X0VRNzA5CQkJCQkoMSA8PCAyOCkKKworCisvKiBWSURDT04zICovCisjZGVmaW5lIFZJRENPTjMJ
CQkJCQkoMHgwYykKKyNkZWZpbmUgVklEQ09OM19WRV9PTgkJCQkJKDEgPDwgMjApCisjZGVmaW5l
IFZJRENPTjNfQ0dfT04JCQkJCSgxIDw8IDE4KQorI2RlZmluZSBWSURDT04zX0dNX09OCQkJCQko
MSA8PCAxNikKKyNkZWZpbmUgVklEQ09OM19IVV9DU0NfRl9OQVJST1cJCQkJKDEgPDwgMTQpCisj
ZGVmaW5lIFZJRENPTjNfSFVfQ1NDX0ZfRVE3MDkJCQkJKDEgPDwgMTMpCisjZGVmaW5lIFZJRENP
TjNfSFVfQ1NDX0ZfRU4JCQkJKDEgPDwgMTIpCisjZGVmaW5lIFZJRENPTjNfSFVfQ1NDX0JfTkFS
Uk9XCQkJCSgxIDw8IDEwKQorI2RlZmluZSBWSURDT04zX0hVX0NTQ19CX0VRNzA5CQkJCSgxIDw8
IDkpCisjZGVmaW5lIFZJRENPTjNfSFVfQ1NDX0JfRU4JCQkJKDEgPDwgOCkKKyNkZWZpbmUgVklE
Q09OM19IVUVfRU4JCQkJCSgxIDw8IDcpCisjZGVmaW5lIFZJRENPTjNfUENfRElSX05FRwkJCQko
MSA8PCAxKQorI2RlZmluZSBWSURDT04zX1BDX0VOCQkJCQkoMSA8PCAwKQorCisKKy8qIFZJRFRD
T04zICovCisjZGVmaW5lIFZJRFRDT04zCQkJCQkoMHgxYykKKyNkZWZpbmUgVklEVENPTjNfVlNZ
TkNfRU4JCQkJKDEgPDwgMzEpCisjZGVmaW5lIFZJRFRDT04zX0ZSTV9FTgkJCQkJKDEgPDwgMjkp
CisjZGVmaW5lIFZJRFRDT04zX0lOVkZSTV9MT1cJCQkJKDEgPDwgMjgpCisjZGVmaW5lIFZJRFRD
T04zX0ZSTVZSQVRFX01BU0sJCQkJMHhmCisjZGVmaW5lIFZJRFRDT04zX0ZSTVZSQVRFX1NISUZU
CQkJCSgyNCkKKyNkZWZpbmUgVklEVENPTjNfRlJNVkZQRF9NQVNLCQkJCTB4ZmYKKyNkZWZpbmUg
VklEVENPTjNfRlJNVkZQRF9TSElGVAkJCQkoOCkKKyNkZWZpbmUgVklEVENPTjNfRlJNVlNQV19N
QVNLCQkJCTB4ZmYKKyNkZWZpbmUgVklEVENPTjNfRlJNVlNQV19TSElGVAkJCQkoMCkKKworCisj
ZGVmaW5lIFNIQURPV0NPTgkJCQkJKDB4MzQpCisjZGVmaW5lIFNIQURPV0NPTl9DSF9FTkFCTEUo
eCkJCQkJKDEgPDwgeCkKKyNkZWZpbmUgU0hBRE9XQ09OX0NIX0RJU0FCTEUoeCkJCQkJKDAgPDwg
eCkKKyNkZWZpbmUgU0hBRE9XQ09OX0NIX0xPQ0FMX0VOQUJMRSh4KQkJCSgxIDw8ICh4ICsgNSkp
CisjZGVmaW5lIFNIQURPV0NPTl9DSF9MT0NBTF9ESVNBQkxFKHgpCQkJKDAgPDwgKHggKyA1KSkK
Ky8qIFNldCB0byBkaXNhYmxlIHdpbmRvdyA0LTAgc2hhZG93IHJlZ2lzdGVycycgdXBkYXRlICov
CisjZGVmaW5lIFNIQURPV0NPTl9XNF9QUk9URUNUCQkJCSgxIDw8IDE0KQorI2RlZmluZSBTSEFE
T1dDT05fVzNfUFJPVEVDVAkJCQkoMSA8PCAxMykKKyNkZWZpbmUgU0hBRE9XQ09OX1cyX1BST1RF
Q1QJCQkJKDEgPDwgMTIpCisjZGVmaW5lIFNIQURPV0NPTl9XMV9QUk9URUNUCQkJCSgxIDw8IDEx
KQorI2RlZmluZSBTSEFET1dDT05fVzBfUFJPVEVDVAkJCQkoMSA8PCAxMCkKKworCisvKiBWaWRl
byBidWZmZXIgYWRkcmVzcyBzaGFkb3cgcmVnaXN0ZXJzIChyZWFkLW9ubHkpICovCisjZGVmaW5l
IFZJRFdfQlVGX1NUQVJUX1NIQURPVyhfYnVmKQkJCSgweDIwYTAgKyAoKF9idWYpICogOCkpCisj
ZGVmaW5lIFZJRFdfQlVGX0VORF9TSEFET1coX2J1ZikJCQkoMHgyMGQwICsgKChfYnVmKSAqIDgp
KQorCisvKiBGb3Igd2luZG93cyAxLTQgKi8KKyNkZWZpbmUgV3hLRVlfQUxQSEEoX3dpbikJCQkJ
KDB4MTYwICsgKChfd2luKSAqIDQpKQorCisjZGVmaW5lIENPTE9SR0FJTkNPTgkJCQkJKDB4MWMw
KQorI2RlZmluZSBWRVNGUkNPTjAJCQkJCSgweDFjNCkKKyNkZWZpbmUgVkVTRlJDT04xCQkJCQko
MHgxYzgpCisjZGVmaW5lIFZFU0ZSQ09OMgkJCQkJKDB4MWNjKQorCisvKiBIdWUgbWF0cml4IGNv
ZWZmaWNpZW50cyAqLworI2RlZmluZSBIVUVDT0VGMDAJCQkJCSgweDFlYykKKyNkZWZpbmUgSFVF
Q09FRjAxCQkJCQkoMHgxZjApCisjZGVmaW5lIEhVRUNPRUYxMAkJCQkJKDB4MWY0KQorI2RlZmlu
ZSBIVUVDT0VGMTEJCQkJCSgweDFmOCkKKyNkZWZpbmUgSFVFT0ZGU0VUCQkJCQkoMHgxZmMpCisK
Ky8qIFJUUU9TIGNvbnRyb2wgZm9yIHdpbmRvd3MgMC00Ki8KKyNkZWZpbmUgV3hSVFFPU0NPTihf
d2luKQkJCQkoMHgyNjQgKyAoKF93aW4pICogNCkpCisKKy8qIEdhbW1hIExVVCBkYXRhIGZvciBp
bmRleCBJMSBhbmQgSTAsIHdoZXJlCisgKiBJMCA9IF9pbmRleCwgSTEgPSBfaW5kZXggKyAxLgor
ICovCisjZGVmaW5lIEdBTU1BTFVUX0JBU0UJCQkJCSgweDM3YykKKyNkZWZpbmUgR0FNTUFMVVRf
STFJMChfaW5kZXgpCQkJKEdBTU1BTFVUX0JBU0UgKyAoKF9pbmRleCkgKiA0KSkKKworI2VuZGlm
IC8qIF9fQVNNX0FSQ0hfTUFDSF9SRUdTX0ZCX0ggKi8KKwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0v
cGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9mYi5oIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2lu
Y2x1ZGUvcGxhdC9mYi5oCmluZGV4IGZmYzAxYTcuLjQ0MzlmZjMgMTAwNjQ0Ci0tLSBhL2FyY2gv
YXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvZmIuaAorKysgYi9hcmNoL2FybS9wbGF0LXNh
bXN1bmcvaW5jbHVkZS9wbGF0L2ZiLmgKQEAgLTM1LDYgKzM1LDggQEAgc3RydWN0IHMzY19mYl9w
ZF93aW4gewogICogQHNldHVwX2dwaW86IFNldHVwIHRoZSBleHRlcm5hbCBHUElPIHBpbnMgdG8g
dGhlIHJpZ2h0IHN0YXRlIHRvIHRyYW5zZmVyCiAgKgkJdGhlIGRhdGEgZnJvbSB0aGUgZGlzcGxh
eSBzeXN0ZW0gdG8gdGhlIGNvbm5lY3RlZCBkaXNwbGF5CiAgKgkJZGV2aWNlLgorICogQHNoYWRv
d19jaF9lbmFibGU6IGl0IHNob3VsZCBiZSBlbmFibGVkIHRvIGVuYWJsZSB3aW5kb3cgbGF5ZXIg
b24gczVwYzExMC4KKyAqIAkJICAgICAgZW5hYmxlIGlzIDEgYW5kIGRpc2FibGUgaXMgMC4KICAq
IEB2aWRjb24wOiBUaGUgYmFzZSB2aWRjb24wIHZhbHVlcyB0byBjb250cm9sIHRoZSBwYW5lbCBk
YXRhIGZvcm1hdC4KICAqIEB2aWRjb24xOiBUaGUgYmFzZSB2aWRjb24xIHZhbHVlcyB0byBjb250
cm9sIHRoZSBwYW5lbCBkYXRhIG91dHB1dC4KICAqIEB3aW46IFRoZSBzZXR1cCBkYXRhIGZvciBl
YWNoIGhhcmR3YXJlIHdpbmRvdywgb3IgTlVMTCBmb3IgdW51c2VkLgpAQCAtNTAsNiArNTIsNyBA
QCBzdHJ1Y3QgczNjX2ZiX3BsYXRkYXRhIHsKIAl2b2lkCSgqc2V0dXBfZ3Bpbykodm9pZCk7CiAK
IAlzdHJ1Y3QgczNjX2ZiX3BkX3dpbgkqd2luW1MzQ19GQl9NQVhfV0lOXTsKKwl1MzIJCQlzaGFk
b3dfY2hfZW5hYmxlOwogCiAJdTMyCQkJIHZpZGNvbjA7CiAJdTMyCQkJIHZpZGNvbjE7CmRpZmYg
LS1naXQgYS9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L3JlZ3MtZmItdjUuaCBi
L2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvcmVncy1mYi12NS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlMDY4NmQKLS0tIC9kZXYvbnVsbAorKysgYi9h
cmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L3JlZ3MtZmItdjUuaApAQCAtMCwwICsx
LDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5IFNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uCisg
KiAgIFBhd2VsIE9zY2lhayA8cC5vc2NpYWtAc2Ftc3VuZy5jb20+CisgKgorICogQ29tbW9uIGZy
YW1lYnVmZmVyIHJlZ2lzdGVyIGRlZmluaXRpb25zIGZvciBTYW1zdW5nIFM1UEMxeHggZmFtaWx5
LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX1JFR1Nf
RkJfVjVfSAorI2RlZmluZSBfX0FTTV9BUkNIX1JFR1NfRkJfVjVfSCBfX0ZJTEVfXworCisjaW5j
bHVkZSA8cGxhdC9yZWdzLWZiLXY0Lmg+CisKKy8qIFZQMSBpbnRlcmZhY2UgdGltaW5nIGNvbnRy
b2wgKi8KKyNkZWZpbmUgVlAxQ09OMAkJCQkJCSgweDExOCkKKyNkZWZpbmUgVlAxX1JBVEVDT05f
RU4JCQkJCSgxIDw8IDMxKQorI2RlZmluZSBWUDFfQ0xLUkFURV9NQVNLCQkJCSgweGZmKQorCisj
ZGVmaW5lIFZQMUNPTjEJCQkJCQkoMHgxMWMpCisjZGVmaW5lIFZQMV9WVFJFR0NPTl9FTgkJCQkJ
KDEgPDwgMzEpCisjZGVmaW5lIFZQMV9WQlBEX01BU0sJCQkJCSgweGZmZikKKyNkZWZpbmUgVlAx
X1ZCUERfU0hJRlQJCQkJCSgxNikKKworCisjZGVmaW5lIFdQQUxDT05fSAkJCQkJKDB4MTljKQor
I2RlZmluZSBXUEFMQ09OX0wJCQkJCSgweDFhMCkKKworLyogUGFsbGV0ZSBjb250cm8gZm9yIFdQ
QUwwIGFuZCBXUEFMMSBpcyB0aGUgc2FtZSBhcyBpbiBTM0M2NHh4LCBidXQKKyAqIGRpZmZlcmVu
dCBmb3IgV1BBTDItNAorICovCisvKiBJbiBXUEFMQ09OX0wgKGFrYSBXUEFMQ09OKSAqLworI2Rl
ZmluZSBXUEFMQ09OX1cxUEFMXzMyQlBQX0E4ODgJCQkoMHg3IDw8IDMpCisjZGVmaW5lIFdQQUxD
T05fVzBQQUxfMzJCUFBfQTg4OAkJCSgweDcgPDwgMCkKKworLyogVzJQQUwtVzRQQUwgY29uc2lz
dCBvZiBvbmUgYml0IGZyb20gV1BBTENPTl9MIGFuZCB0d28gZnJvbSBXUEFMQ09OX0gsCisgKiBl
LmcuIFcyUEFMWzIuLjBdIGlzIG1hZGUgb2YgKFdQQUxDT05fSFsxMC4uOV0sIFdQQUxDT05fTFs2
XSkuCisgKi8KKyNkZWZpbmUgV1BBTENPTl9MX1d4UEFMX0xfTUFTSwkJCQkoMHgxKQorI2RlZmlu
ZSBXUEFMQ09OX0xfVzJQQUxfTF9TSElGVAkJCQkoNikKKyNkZWZpbmUgV1BBTENPTl9MX1czUEFM
X0xfU0hJRlQJCQkJKDcpCisjZGVmaW5lIFdQQUxDT05fTF9XNFBBTF9MX1NISUZUCQkJCSg4KQor
CisjZGVmaW5lIFdQQUxDT05fTF9XeFBBTF9IX01BU0sJCQkJKDB4MykKKyNkZWZpbmUgV1BBTENP
Tl9IX1cyUEFMX0hfU0hJRlQJCQkJKDkpCisjZGVmaW5lIFdQQUxDT05fSF9XM1BBTF9IX1NISUZU
CQkJCSgxMykKKyNkZWZpbmUgV1BBTENPTl9IX1c0UEFMX0hfU0hJRlQJCQkJKDE3KQorCisvKiBQ
ZXItd2luZG93IGFscGhhIHZhbHVlIHJlZ2lzdGVycyAqLworLyogRm9yIHdpbmRvdyAwIDgtYml0
IGFscGhhIHZhbHVlcyBhcmUgaW4gVklEVzBBTFBIQXgsCisgKiBmb3Igd2luZG93cyAxLTQgYWxw
aGEgdmFsdWVzIGNvbnNpc3Qgb2YgdHdvIHBhcnRzLCB0aGUgNCBsb3cgYml0cyBhcmUKKyAqIHRh
a2VuIGZyb20gVklEV3hBTFBIQXggYW5kIDQgaGlnaCBiaXRzIGFyZSBmcm9tIFZJRE9TRHhDLAor
ICogZS5nLiBXSU4xX0FMUEhBMF9CWzcuLjBdID0gKFZJRE9TRDFDWzMuLjBdLCBWSURXMUFMUEhB
MFszLi4wXSkKKyAqLworI2RlZmluZSBWSURXeEFMUEhBMChfd2luKQkJCQkoMHgyMDAgKyAoX3dp
biAqIDgpKQorI2RlZmluZSBWSURXeEFMUEhBMShfd2luKQkJCQkoMHgyMDQgKyAoX3dpbiAqIDgp
KQorCisvKiBPbmx5IGZvciB3aW5kb3cgMCBpbiBWSURXMEFMUEhBeC4gKi8KKyNkZWZpbmUgVklE
VzBBTFBIQXhfUihfeCkJCQkJKChfeCkgPDwgMTYpCisjZGVmaW5lIFZJRFcwQUxQSEF4X1JfTUFT
SwkJCQkoMHhmZiA8PCAxNikKKyNkZWZpbmUgVklEVzBBTFBIQXhfUl9TSElGVAkJCQkoMTYpCisj
ZGVmaW5lIFZJRFcwQUxQSEF4X0coX3gpCQkJCSgoX3gpIDw8IDgpCisjZGVmaW5lIFZJRFcwQUxQ
SEF4X0dfTUFTSwkJCQkoMHhmZiA8PCA4KQorI2RlZmluZSBWSURXMEFMUEhBeF9HX1NISUZUCQkJ
CSg4KQorI2RlZmluZSBWSURXMEFMUEhBeF9CKF94KQkJCQkoKF94KSA8PCAwKQorI2RlZmluZSBW
SURXMEFMUEhBeF9CX01BU0sJCQkJKDB4ZmYgPDwgMCkKKyNkZWZpbmUgVklEVzBBTFBIQXhfQl9T
SElGVAkJCQkoMCkKKworLyogTG93IDQgYml0cyBvZiBhbHBoYTAtMSBmb3Igd2luZG93cyAxLTQg
Ki8KKyNkZWZpbmUgVklEVzE0QUxQSEF4X1JfTChfeCkJCQkJKChfeCkgPDwgMTYpCisjZGVmaW5l
IFZJRFcxNEFMUEhBeF9SX0xfTUFTSwkJCQkoMHhmIDw8IDE2KQorI2RlZmluZSBWSURXMTRBTFBI
QXhfUl9MX1NISUZUCQkJCSgxNikKKyNkZWZpbmUgVklEVzE0QUxQSEF4X0dfTChfeCkJCQkJKChf
eCkgPDwgOCkKKyNkZWZpbmUgVklEVzE0QUxQSEF4X0dfTF9NQVNLCQkJCSgweGYgPDwgOCkKKyNk
ZWZpbmUgVklEVzE0QUxQSEF4X0dfTF9TSElGVAkJCQkoOCkKKyNkZWZpbmUgVklEVzE0QUxQSEF4
X0JfTChfeCkJCQkJKChfeCkgPDwgMCkKKyNkZWZpbmUgVklEVzE0QUxQSEF4X0JfTF9NQVNLCQkJ
CSgweGYgPDwgMCkKKyNkZWZpbmUgVklEVzE0QUxQSEF4X0JfTF9TSElGVAkJCQkoMCkKKworCisv
KiBQZXItd2luZG93IGJsZW5kaW5nIGVxdWF0aW9uIGNvbnRyb2wgcmVnaXN0ZXJzICovCisjZGVm
aW5lIEJMRU5ERVF4KF93aW4pCQkJCQkoMHgyNDQgKyAoKF93aW4pICogNCkpCisjZGVmaW5lIEJM
RU5ERVExCQkJCQkoMHgyNDQpCisjZGVmaW5lIEJMRU5ERVEyCQkJCQkoMHgyNDgpCisjZGVmaW5l
IEJMRU5ERVEzCQkJCQkoMHgyNGMpCisjZGVmaW5lIEJMRU5ERVE0CQkJCQkoMHgyNTApCisKKyNk
ZWZpbmUgQkxFTkRFUXhfUV9GVU5DKF94KQkJCQkoKF94KSA8PCAxOCkKKyNkZWZpbmUgQkxFTkRF
UXhfUV9GVU5DX01BU0sJCQkJKDB4ZiA8PCAxOCkKKyNkZWZpbmUgQkxFTkRFUXhfUF9GVU5DKF94
KQkJCQkoKF94KSA8PCAxMikKKyNkZWZpbmUgQkxFTkRFUXhfUF9GVU5DX01BU0sJCQkJKDB4ZiA8
PCAxMikKKyNkZWZpbmUgQkxFTkRFUXhfQl9GVU5DKF94KQkJCQkoKF94KSA8PCA2KQorI2RlZmlu
ZSBCTEVOREVReF9CX0ZVTkNfTUFTSwkJCQkoMHhmIDw8IDYpCisjZGVmaW5lIEJMRU5ERVF4X0Ff
RlVOQyhfeCkJCQkJKChfeCkgPDwgMCkKKyNkZWZpbmUgQkxFTkRFUXhfQV9GVU5DX01BU0sJCQkJ
KDB4ZiA8PCAwKQorCisjZGVmaW5lIEJMRU5EQ09OCQkJCQkoMHgyNjApCisjZGVmaW5lIEJMRU5E
Q09OXzhCSVRfQUxQSEEJCQkJKDEgPDwgMCkKKworLyogUGVyLXdpbmRvdyBwYWxldHRlIGJhc2Ug
YWRkcmVzc2VzIChzdGFydCBvZiBwYWxldHRlIG1lbW9yeSkuCisgKiBFYWNoIHdpbmRvdyBwYWxl
dHRlIGFyZWEgY29uc2lzdHMgb2YgMjU2IDMyLWJpdCBlbnRyaWVzLgorICogU1RBUlQgaXMgdGhl
IGZpcnN0IGFkZHJlc3MgKGVudHJ5IDB0aCksIEVORCBpcyB0aGUgYWRkcmVzcyBvZiAyNTV0aCBl
bnRyeS4KKyAqLworI2RlZmluZSBXSU4wX1BBTF9CQVNFCQkJCQkoMHgyNDAwKQorI2RlZmluZSBX
SU4wX1BBTF9FTkQJCQkJCSgweDI3ZmMpCisjZGVmaW5lIFdJTjFfUEFMX0JBU0UJCQkJCSgweDI4
MDApCisjZGVmaW5lIFdJTjFfUEFMX0VORAkJCQkJKDB4MmJmYykKKyNkZWZpbmUgV0lOMl9QQUxf
QkFTRQkJCQkJKDB4MmMwMCkKKyNkZWZpbmUgV0lOMl9QQUxfRU5ECQkJCQkoMHgyZmZjKQorI2Rl
ZmluZSBXSU4zX1BBTF9CQVNFCQkJCQkoMHgzMDAwKQorI2RlZmluZSBXSU4zX1BBTF9FTkQJCQkJ
CSgweDMzZmMpCisjZGVmaW5lIFdJTjRfUEFMX0JBU0UJCQkJCSgweDM0MDApCisjZGVmaW5lIFdJ
TjRfUEFMX0VORAkJCQkJKDB4MzdmYykKKworI2RlZmluZSBXSU4wX1BBTChfZW50cnkpCQkJKFdJ
TjBfUEFMX0JBU0UgKyAoKF9lbnRyeSkgKiA0KSkKKyNkZWZpbmUgV0lOMV9QQUwoX2VudHJ5KQkJ
CShXSU4xX1BBTF9CQVNFICsgKChfZW50cnkpICogNCkpCisjZGVmaW5lIFdJTjJfUEFMKF9lbnRy
eSkJCQkoV0lOMl9QQUxfQkFTRSArICgoX2VudHJ5KSAqIDQpKQorI2RlZmluZSBXSU4zX1BBTChf
ZW50cnkpCQkJKFdJTjNfUEFMX0JBU0UgKyAoKF9lbnRyeSkgKiA0KSkKKyNkZWZpbmUgV0lONF9Q
QUwoX2VudHJ5KQkJCShXSU40X1BBTF9CQVNFICsgKChfZW50cnkpICogNCkpCisKK3N0YXRpYyBp
bmxpbmUgdW5zaWduZWQgaW50IHMzY19mYl9wYWxfcmVnKHVuc2lnbmVkIGludCB3aW5kb3csIGlu
dCByZWcpCit7CisJc3dpdGNoICh3aW5kb3cpIHsKKwljYXNlIDA6IHJldHVybiBXSU4wX1BBTChy
ZWcpOworCWNhc2UgMTogcmV0dXJuIFdJTjFfUEFMKHJlZyk7CisJY2FzZSAyOiByZXR1cm4gV0lO
Ml9QQUwocmVnKTsKKwljYXNlIDM6IHJldHVybiBXSU4zX1BBTChyZWcpOworCWNhc2UgNDogcmV0
dXJuIFdJTjRfUEFMKHJlZyk7CisJfQorCisJQlVHKCk7Cit9CisKKworI2VuZGlmIC8qIF9fQVNN
X0FSQ0hfUkVHU19GQl9WNV9IICovCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vS2NvbmZp
ZyBiL2RyaXZlcnMvdmlkZW8vS2NvbmZpZwppbmRleCA2ZTE2MjQ0Li4yMTkwMDMxIDEwMDY0NAot
LS0gYS9kcml2ZXJzL3ZpZGVvL0tjb25maWcKKysrIGIvZHJpdmVycy92aWRlby9LY29uZmlnCkBA
IC0xOTE0LDcgKzE5MTQsNyBAQCBjb25maWcgRkJfVE1JT19BQ0NFTEwKIAogY29uZmlnIEZCX1Mz
QwogCXRyaXN0YXRlICJTYW1zdW5nIFMzQyBmcmFtZWJ1ZmZlciBzdXBwb3J0IgotCWRlcGVuZHMg
b24gRkIgJiYgQVJDSF9TM0M2NFhYCisJZGVwZW5kcyBvbiBGQiAmJiAoQVJDSF9TM0M2NFhYIHx8
IEFSQ0hfUzVQVjIxMCkKIAlzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUCiAJc2VsZWN0IEZCX0NGQl9D
T1BZQVJFQQogCXNlbGVjdCBGQl9DRkJfSU1BR0VCTElUCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zp
ZGVvL3MzYy1mYi5jIGIvZHJpdmVycy92aWRlby9zM2MtZmIuYwppbmRleCA5NjgyZWNjLi4zNDAy
NjdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3MzYy1mYi5jCisrKyBiL2RyaXZlcnMvdmlk
ZW8vczNjLWZiLmMKQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMgaW50IHMzY19mYl9zZXRfcGFy
KHN0cnVjdCBmYl9pbmZvICppbmZvKQogCXZvaWQgX19pb21lbSAqcmVncyA9IHNmYi0+cmVnczsK
IAlpbnQgd2luX25vID0gd2luLT5pbmRleDsKIAl1MzIgb3NkY19kYXRhID0gMDsKLQl1MzIgZGF0
YTsKKwl1MzIgZGF0YSwgc2hhZG93ID0gMDsKIAl1MzIgcGFnZXdpZHRoOwogCWludCBjbGtkaXY7
CiAKQEAgLTM3Miw2ICszNzIsMTIgQEAgc3RhdGljIGludCBzM2NfZmJfc2V0X3BhcihzdHJ1Y3Qg
ZmJfaW5mbyAqaW5mbykKIAogCWRhdGEgPSBXSU5DT054X0VOV0lOOwogCisJLyogc2hhZG93X2No
X2VuYWJsZSBzaG91bGQgYmUgMSB0byBlbmFibGUgd2luZG93IGxheWVyIG9uIHM1cGMxMTAuICov
CisJaWYgKHNmYi0+cGRhdGEtPnNoYWRvd19jaF9lbmFibGUpIHsKKwkJc2hhZG93ID0gcmVhZGwo
c2ZiLT5yZWdzICsgU0hBRE9XQ09OKTsKKwkJc2hhZG93IHw9IFNIQURPV0NPTl9DSF9FTkFCTEUo
d2luX25vKTsKKwl9CisKIAkvKiBub3RlLCBzaW5jZSB3ZSBoYXZlIHRvIHJvdW5kIHVwIHRoZSBi
aXRzLXBlci1waXhlbCwgd2UgZW5kIHVwCiAJICogcmVseWluZyBvbiB0aGUgYml0ZmllbGQgaW5m
b3JtYXRpb24gZm9yIHIvZy9iL2EgdG8gd29yayBvdXQKIAkgKiBleGFjdGx5IHdoaWNoIG1vZGUg
b2Ygb3BlcmF0aW9uIGlzIGludGVuZGVkLiAqLwpAQCAtNDQ0LDYgKzQ1MCw3IEBAIHN0YXRpYyBp
bnQgczNjX2ZiX3NldF9wYXIoc3RydWN0IGZiX2luZm8gKmluZm8pCiAKIAl3cml0ZWwoZGF0YSwg
cmVncyArIFdJTkNPTih3aW5fbm8pKTsKIAl3cml0ZWwoMHgwLCByZWdzICsgV0lOeE1BUCh3aW5f
bm8pKTsKKwl3cml0ZWwoc2hhZG93LCBzZmItPnJlZ3MgKyBTSEFET1dDT04pOwogCiAJcmV0dXJu
IDA7CiB9CkBAIC03MjQsMTIgKzczMSwyMSBAQCBzdGF0aWMgdm9pZCBzM2NfZmJfZnJlZV9tZW1v
cnkoc3RydWN0IHMzY19mYiAqc2ZiLCBzdHJ1Y3QgczNjX2ZiX3dpbiAqd2luKQogICovCiBzdGF0
aWMgdm9pZCBzM2NfZmJfcmVsZWFzZV93aW4oc3RydWN0IHMzY19mYiAqc2ZiLCBzdHJ1Y3QgczNj
X2ZiX3dpbiAqd2luKQogeworCXUzMiBzaGFkb3c7CisKIAlpZiAod2luLT5mYmluZm8pIHsKIAkJ
dW5yZWdpc3Rlcl9mcmFtZWJ1ZmZlcih3aW4tPmZiaW5mbyk7CiAJCWZiX2RlYWxsb2NfY21hcCgm
d2luLT5mYmluZm8tPmNtYXApOwogCQlzM2NfZmJfZnJlZV9tZW1vcnkoc2ZiLCB3aW4pOwogCQlm
cmFtZWJ1ZmZlcl9yZWxlYXNlKHdpbi0+ZmJpbmZvKTsKIAl9CisKKwkvKiBzaGFkb3dfY2hfZW5h
YmxlIHNob3VsZCBiZSAwIHRvIGRpc2FibGUgd2luZG93IGxheWVyIG9uIHM1cGMxMTAuICovCisJ
aWYgKHNmYi0+cGRhdGEtPnNoYWRvd19jaF9lbmFibGUpIHsKKwkJc2hhZG93ID0gcmVhZGwoc2Zi
LT5yZWdzICsgU0hBRE9XQ09OKTsKKwkJc2hhZG93ICY9IH5TSEFET1dDT05fQ0hfRElTQUJMRSh3
aW4tPmluZGV4KTsKKwkJd3JpdGVsKHNoYWRvdywgc2ZiLT5yZWdzICsgU0hBRE9XQ09OKTsKKwl9
CiB9CiAKIC8qKgo=
--000e0cd139c4f3a4a20485fc71f6--