Return-Path: From: "Zhang, Zhenhua" To: "linux-bluetooth@vger.kernel.org" Date: Thu, 12 Nov 2009 15:50:04 +0800 Subject: [PATCH] oFonoHFP profile to enable audio routing in BlueZ Message-ID: <0463F45F3606F4428ED35AC8C709F92E089CA6A628@pdsmsx502.ccr.corp.intel.com> Content-Type: multipart/mixed; boundary="_004_0463F45F3606F4428ED35AC8C709F92E089CA6A628pdsmsx502ccrc_" MIME-Version: 1.0 Sender: linux-bluetooth-owner@vger.kernel.org List-ID: --_004_0463F45F3606F4428ED35AC8C709F92E089CA6A628pdsmsx502ccrc_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGksDQoNClRoZXNlIHRocmVlIHBhdGNoZXMgYXJlIGNyZWF0ZWQgdG8gZW5hYmxlIGF1ZGlvIHJv dXRpbmcgZm9yIEhhbmRzZnJlZSBQcm9maWxlLg0KSXQgd2FzIGNyZWF0ZWQgZHVyaW5nIHRoZSB2 b2ljZWNhbGwgZHJpdmVyIGltcGxlbWVudGF0aW9uIGluIG9Gb25vIHNvIGl0IGRvZXMNCm5vdCB1 c2UgdGhlIG5ldyBoZnAtYXBpIHlldC4gWW91IGNhbiB0YWtlIGl0IGFzIHJlZmVyZW5jZSBvbmx5 IHNpbmNlIGl0IHdpbGwNCm5vdCBiZSBjb21taXRlZCBpbnRvIHRydW5rLg0KDQpCYXNpY2FsbHks IGEgbmV3IHByb2ZpbGUgb0Zvbm9IRlAgd2FzIGFkZGVkIHRvIGNyZWF0ZSBSRkNPTU0gY29ubmVj dGlvbg0KYW5kIHR1cm4gSU8gaW50byBUVFkgZGV2aWNlIGZvciBvRm9uby4gSXQgc2VuZHMgVFRZ IGRldmljZSBzdHJpbmcgdG8gb0Zvbm8NCnRocm91Z2ggRC1CdXMuIE1lYW53aGlsZSwgaXQgbGlz dGVucyBvRm9ubyBwcm9wZXJ0eSBjaGFuZ2VzIHRvIGVtaXQgQ2FsbFN0YXJ0ZWQNCmFuZCBDYWxs RW5kZWQgc2lnbmFscy4gUHVsc2VBdWRpbyBjb3VsZCBsaXN0ZW4gdGhlc2Ugc2lnbmFscyBhbmQg cmVkaXJlY3QgYXVkaW8NCnNvdXJjZS9zaW5rIHRvIHVzZSBibHVldG9vdGggb25lLg0KDQpJZiB5 b3UgYXJlIGludGVyZXN0ZWQgYXQgaXQsIHlvdSBtYXkgYXBwbHkgMDAwMS4uMDAwMyBpbnRvIEJs dWVaLCBvRm9ubyBhbmQgUEENCnJlc3BlY3RpdmVseS4gTGFzdCBjb21taXQgU0hBLTEgaXMgaW4g cGF0Y2ggbm90ZS4NCg0KQW5kIHlvdSBuZWVkIHRvIGVuYWJsZSBvRm9ub0hGUCBieSBtb2RpZnkg YXVkaW8uY29uZjoNCglEaXNhYmxlPUdhdGV3YXkNCglFbmFibGU9b0Zvbm9IRlAsIEhlYWRzZXQN Cg0KSW4gb2Zvbm8gbW9kZW0uY29uZiwgc3BlY2lmeSBkZXZpY2UgYWRkcmVzcyBsaWtlOg0KCVto ZnBdDQoJRHJpdmVyPWhmcA0KCUFkZHJlc3M9MDA6MjI6QTk6OEM6QUY6MzQNCg0KQW5kIHBvd2Vy IG9uIG1vZGVtIGJ5Og0KCWRidXMtc2VuZCAtLXN5c3RlbSAtLXByaW50LXJlcGx5IC0tZGVzdD1v cmcub2Zvbm8gL2hmcDANCm9yZy5vZm9uby5Nb2RlbS5TZXRQcm9wZXJ0eSBzdHJpbmc6UG93ZXJl ZCB2YXJpYW50OmJvb2xlYW46dHJ1ZQ0KDQpUaGUgUHVsc2VBdWRpbyB3aWxsIGxvYWQgbW9kdWxl LWJsdWV0b290aC1kaXNjb3ZlciBhdXRvbWF0aWNhbGx5LiBJZiBub3QsDQpwbGVhc2UgbG9hZCBp dCBtYW51YWxseS4gVGhpcyBtb2R1bGUgbGlzdGVucyBCbHVlWiBzaWduYWwgYW5kIGxvYWQNCm1v ZHVsZS1ibHVldG9vdGgtZGV2aWNlIGF1dG9tYXRpY2FsbHkuIFVuZm9ydHVuYXRlbHksIHlvdSBu ZWVkIHRvIGxvYWQNCm1vZHVsZS1sb29wYmFjayBtYW51YWxseSB0byByZWRpcmVjdCBibHVleiBz b3VyY2Uvc2luayB0byBhbHNhLCBlLmcuOg0KCWxvYWQtbW9kdWxlIG1vZHVsZS1sb29wYmFjayBz b3VyY2U9ImJsdWV6X3NvdXJjZS5YWC4uWFgiDQpzaW5rPSJhbHNhX291dHB1dC4wLmFuYWxvZy1z dGVyZW8iDQoJbG9hZC1tb2R1bGUgbW9kdWxlLWxvb3BiYWNrIHNvdXJjZT0iYWxzYV9pbnB1dC4w LmFuYWxvZy1zdGVyZW8iDQpzaW5rPSJibHVlel9zaW5rLlhYLi5YWCINCg0KRmVlbCBmcmVlIHRv IGxldCBtZSBrbm93IGlmIGFueSBwcm9ibGVtcy4gVGhhbmtzLg0KDQpSZWdhcmRzLA0KWmhlbmh1 YQ0KIA0K --_004_0463F45F3606F4428ED35AC8C709F92E089CA6A628pdsmsx502ccrc_ Content-Type: application/octet-stream; name="0001-oFonoHFP-Add-oFonoHFP-profile-in-BlueZ.patch" Content-Description: 0001-oFonoHFP-Add-oFonoHFP-profile-in-BlueZ.patch Content-Disposition: attachment; filename="0001-oFonoHFP-Add-oFonoHFP-profile-in-BlueZ.patch"; size=19430; creation-date="Thu, 12 Nov 2009 15:45:43 GMT"; modification-date="Thu, 12 Nov 2009 15:45:43 GMT" Content-Transfer-Encoding: base64 RnJvbSAzMjM2N2UwZjk2YjI1YTBjNjBhOWZlNWYzODg2NDg0YzU0Yjg0MGUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGVuaHVhIFpoYW5nIDx6aGVuaHVhLnpoYW5nQGludGVsLmNv bT4KRGF0ZTogVGh1LCAxMiBOb3YgMjAwOSAyMjoyNDoxNSArMDgwMApTdWJqZWN0OiBbUEFUQ0gg MS8zXSBvRm9ub0hGUDogQWRkIG9Gb25vSEZQIHByb2ZpbGUgaW4gQmx1ZVoKClRoZSBvRm9ub0hG UCBwcm9maWxlIGlzIHVzZWQgdG8gcHJvdmlkZSBzZXJ2aWNlIGZvciBvRm9ubyBIRlAKdGVsZXBo b255IHBsdWdpbnMuIEl0IGV4cG9zZXMgdHdvIG1ldGhvZHM6IENvbm5lY3QgYW5kIERpc2Nvbm5l Y3QsCmFuZCB0d28gcHJvcGVydGllczogRGV2aWNlIGFuZCBDb25uZWN0ZWQuCgpPbmNlIG9Gb25v IHJlcXVlc3QgdG8gY3JlYXRlIGNvbm5lY3Rpb24gd2l0aCBCbHVldG9vdGggZGV2aWNlLCBpdApj cmVhdGVzIHRoZSByZmNvbW0gY29ubmVjdGlvbiBhbmQgdHVybnMgaW8gaW50byBhIFRUWSBkZXZp Y2UuIEFuZAppdCByZXR1cm5zIFRUWSBkZXZpY2UgbmFtZSB0byBvRm9ubyB0aHJvdWdoIEQtQnVz LiBJdCBsaXN0ZW5zCm9Gb25vIHByb3BlcnR5IGNoYW5nZXMgdG8gZW1pdCBDYWxsU3RhcnRlZCBh bmQgQ2FsbEVuZGVkIHNpZ25hbAp0byBQdWxzZUF1ZGlvLgoKTGFzdCBjb21taXQ6IDUxNTI3NGRm OTFlNDcwNDcyYQotLS0KIE1ha2VmaWxlLmFtICAgICAgIHwgICAgMSArCiBhdWRpby9kZXZpY2Uu YyAgICB8ICAgIDUgKysKIGF1ZGlvL2RldmljZS5oICAgIHwgICAgMyArLQogYXVkaW8vbWFpbi5j ICAgICAgfCAgIDE0ICsrKysKIGF1ZGlvL21hbmFnZXIuYyAgIHwgIDE5MyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBhdWRpby9tYW5hZ2VyLmgg ICB8ICAgIDEgKwogYXVkaW8vdW5peC5jICAgICAgfCAgMTIwICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLQogZG9jL2F1ZGlvLWFwaS50eHQgfCAgIDM3ICsrKysrKysrKysKIDggZmls ZXMgY2hhbmdlZCwgMzU4IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KaW5kZXggZDM2MGFjYi4uMmFlYmE2NyAxMDA2 NDQKLS0tIGEvTWFrZWZpbGUuYW0KKysrIGIvTWFrZWZpbGUuYW0KQEAgLTEyMSw2ICsxMjEsNyBA QCBidWlsdGluX3NvdXJjZXMgKz0gYXVkaW8vbWFpbi5jIFwKIAkJCWF1ZGlvL2F2ZHRwLmggYXVk aW8vYXZkdHAuYyBcCiAJCQlhdWRpby9pcGMuaCBhdWRpby9pcGMuYyBcCiAJCQlhdWRpby91bml4 LmggYXVkaW8vdW5peC5jIFwKKwkJCWF1ZGlvL29mb25vLWhmcC5oIGF1ZGlvL29mb25vLWhmcC5j IFwKIAkJCWF1ZGlvL3RlbGVwaG9ueS5oCiBidWlsdGluX25vZGlzdCArPSBhdWRpby90ZWxlcGhv bnkuYwogCmRpZmYgLS1naXQgYS9hdWRpby9kZXZpY2UuYyBiL2F1ZGlvL2RldmljZS5jCmluZGV4 IGVlZjJhYWIuLjYzYWY3YjUgMTAwNjQ0Ci0tLSBhL2F1ZGlvL2RldmljZS5jCisrKyBiL2F1ZGlv L2RldmljZS5jCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiY29udHJvbC5oIgogI2luY2x1 ZGUgImhlYWRzZXQuaCIKICNpbmNsdWRlICJnYXRld2F5LmgiCisjaW5jbHVkZSAib2Zvbm8taGZw LmgiCiAjaW5jbHVkZSAic2luay5oIgogI2luY2x1ZGUgInNvdXJjZS5oIgogCkBAIC02NDcsNiAr NjQ4LDEwIEBAIGdib29sZWFuIGF1ZGlvX2RldmljZV9pc19hY3RpdmUoc3RydWN0IGF1ZGlvX2Rl dmljZSAqZGV2LAogCWVsc2UgaWYgKCFzdHJjbXAoaW50ZXJmYWNlLCBBVURJT19HQVRFV0FZX0lO VEVSRkFDRSkgJiYgZGV2LT5nYXRld2F5ICYmCiAJCQkJZ2F0ZXdheV9pc19jb25uZWN0ZWQoZGV2 KSkKIAkJcmV0dXJuIFRSVUU7CisJZWxzZSBpZiAoIXN0cmNtcChpbnRlcmZhY2UsIEFVRElPX09G T05PX0hGUF9JTlRFUkZBQ0UpCisJCQkJJiYgZGV2LT5vZm9ub19oZnAKKwkJCQkmJiBvZm9ub19o ZnBfaXNfY29ubmVjdGVkKGRldikpCisJCXJldHVybiBUUlVFOwogCiAJcmV0dXJuIEZBTFNFOwog fQpkaWZmIC0tZ2l0IGEvYXVkaW8vZGV2aWNlLmggYi9hdWRpby9kZXZpY2UuaAppbmRleCBjODk5 ZDIwLi4wNWY3Y2ZmIDEwMDY0NAotLS0gYS9hdWRpby9kZXZpY2UuaAorKysgYi9hdWRpby9kZXZp Y2UuaApAQCAtNDgsNiArNDgsNyBAQCBzdHJ1Y3QgdGFyZ2V0Owogc3RydWN0IHNpbms7CiBzdHJ1 Y3QgaGVhZHNldDsKIHN0cnVjdCBnYXRld2F5Oworc3RydWN0IG9mb25vX2hmcDsKIHN0cnVjdCBk ZXZfcHJpdjsKIAogc3RydWN0IGF1ZGlvX2RldmljZSB7CkBAIC02MiwxMSArNjMsMTEgQEAgc3Ry dWN0IGF1ZGlvX2RldmljZSB7CiAKIAlzdHJ1Y3QgaGVhZHNldCAqaGVhZHNldDsKIAlzdHJ1Y3Qg Z2F0ZXdheSAqZ2F0ZXdheTsKKwlzdHJ1Y3Qgb2Zvbm9faGZwICpvZm9ub19oZnA7CiAJc3RydWN0 IHNpbmsgKnNpbms7CiAJc3RydWN0IHNvdXJjZSAqc291cmNlOwogCXN0cnVjdCBjb250cm9sICpj b250cm9sOwogCXN0cnVjdCB0YXJnZXQgKnRhcmdldDsKLQogCWd1aW50IGhzX3ByZWF1dGhfaWQ7 CiAKIAlzdHJ1Y3QgZGV2X3ByaXYgKnByaXY7CmRpZmYgLS1naXQgYS9hdWRpby9tYWluLmMgYi9h dWRpby9tYWluLmMKaW5kZXggOWRlZmU2MC4uM2ExNTcwOSAxMDA2NDQKLS0tIGEvYXVkaW8vbWFp bi5jCisrKyBiL2F1ZGlvL21haW4uYwpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgImhlYWRz ZXQuaCIKICNpbmNsdWRlICJtYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZ2F0ZXdheS5oIgorI2luY2x1 ZGUgIm9mb25vLWhmcC5oIgogCiBzdGF0aWMgR0lPQ2hhbm5lbCAqc2NvX3NlcnZlciA9IE5VTEw7 CiAKQEAgLTk4LDYgKzk5LDExIEBAIHN0YXRpYyB2b2lkIHNjb19zZXJ2ZXJfY2IoR0lPQ2hhbm5l bCAqY2hhbiwgR0Vycm9yICplcnIsIGdwb2ludGVyIGRhdGEpCiAJCQkJCQlGQUxTRSk7CiAKIAlp ZiAoIWRldmljZSkKKwkJZGV2aWNlID0gbWFuYWdlcl9maW5kX2RldmljZShOVUxMLCAmc3JjLCAm ZHN0LAorCQkJCQkJQVVESU9fT0ZPTk9fSEZQX0lOVEVSRkFDRSwKKwkJCQkJCUZBTFNFKTsKKwor CWlmICghZGV2aWNlKQogCQlnb3RvIGRyb3A7CiAKIAlpZiAoZGV2aWNlLT5oZWFkc2V0KSB7CkBA IC0xMjQsNiArMTMwLDE0IEBAIHN0YXRpYyB2b2lkIHNjb19zZXJ2ZXJfY2IoR0lPQ2hhbm5lbCAq Y2hhbiwgR0Vycm9yICplcnIsIGdwb2ludGVyIGRhdGEpCiAKIAkJaWYgKGdhdGV3YXlfY29ubmVj dF9zY28oZGV2aWNlLCBjaGFuKSA8IDApCiAJCQlnb3RvIGRyb3A7CisJfSBlbHNlIGlmIChkZXZp Y2UtPm9mb25vX2hmcCkgeworCQlpZiAoIW9mb25vX2hmcF9pc19jb25uZWN0ZWQoZGV2aWNlKSkg eworCQkJZGVidWcoIlJlZnVzaW5nIFNDTyBmcm9tIG5vbi1jb25uZWN0ZWQgQUciKTsKKwkJCWdv dG8gZHJvcDsKKwkJfQorCisJCWlmIChvZm9ub19oZnBfY29ubmVjdF9zY28oZGV2aWNlLCBjaGFu KSA8IDApCisJCQlnb3RvIGRyb3A7CiAJfSBlbHNlCiAJCWdvdG8gZHJvcDsKIApkaWZmIC0tZ2l0 IGEvYXVkaW8vbWFuYWdlci5jIGIvYXVkaW8vbWFuYWdlci5jCmluZGV4IGM2M2U5OGEuLjk2YTYy MmYgMTAwNjQ0Ci0tLSBhL2F1ZGlvL21hbmFnZXIuYworKysgYi9hdWRpby9tYW5hZ2VyLmMKQEAg LTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlICJhMmRwLmgiCiAjaW5jbHVkZSAiaGVhZHNldC5oIgog I2luY2x1ZGUgImdhdGV3YXkuaCIKKyNpbmNsdWRlICJvZm9uby1oZnAuaCIKICNpbmNsdWRlICJz aW5rLmgiCiAjaW5jbHVkZSAic291cmNlLmgiCiAjaW5jbHVkZSAiY29udHJvbC5oIgpAQCAtNzQs MTEgKzc1LDEyIEBACiB0eXBlZGVmIGVudW0gewogCUhFQURTRVQJPSAxIDw8IDAsCiAJR0FURVdB WQk9IDEgPDwgMSwKLQlTSU5LCT0gMSA8PCAyLAotCVNPVVJDRQk9IDEgPDwgMywKLQlDT05UUk9M CT0gMSA8PCA0LAotCVRBUkdFVAk9IDEgPDwgNSwKLQlJTlZBTElECT0gMSA8PCA2CisJT0ZPTk9f SEZQID0gMSA8PCAyLAorCVNJTksJPSAxIDw8IDMsCisJU09VUkNFCT0gMSA8PCA0LAorCUNPTlRS T0wJPSAxIDw8IDUsCisJVEFSR0VUCT0gMSA8PCA2LAorCUlOVkFMSUQJPSAxIDw8IDcKIH0gYXVk aW9fc2VydmljZV90eXBlOwogCiB0eXBlZGVmIGVudW0gewpAQCAtMTEwLDYgKzExMiw3IEBAIHN0 YXRpYyBzdHJ1Y3QgZW5hYmxlZF9pbnRlcmZhY2VzIGVuYWJsZWQgPSB7CiAJLmhmcAkJPSBUUlVF LAogCS5oZWFkc2V0CT0gVFJVRSwKIAkuZ2F0ZXdheQk9IEZBTFNFLAorCS5vZm9ub19oZnAJPSBG QUxTRSwKIAkuc2luawkJPSBUUlVFLAogCS5zb3VyY2UJCT0gRkFMU0UsCiAJLmNvbnRyb2wJPSBU UlVFLApAQCAtMTQwLDcgKzE0Myw3IEBAIGdib29sZWFuIHNlcnZlcl9pc19lbmFibGVkKGJkYWRk cl90ICpzcmMsIHVpbnQxNl90IHN2YykKIAljYXNlIEhBTkRTRlJFRV9TVkNMQVNTX0lEOgogCQly ZXR1cm4gZW5hYmxlZC5oZWFkc2V0ICYmIGVuYWJsZWQuaGZwOwogCWNhc2UgSEFORFNGUkVFX0FH V19TVkNMQVNTX0lEOgotCQlyZXR1cm4gZW5hYmxlZC5nYXRld2F5OworCQlyZXR1cm4gZW5hYmxl ZC5nYXRld2F5IHx8IGVuYWJsZWQub2Zvbm9faGZwOwogCWNhc2UgQVVESU9fU0lOS19TVkNMQVNT X0lEOgogCQlyZXR1cm4gZW5hYmxlZC5zaW5rOwogCWNhc2UgQVVESU9fU09VUkNFX1NWQ0xBU1Nf SUQ6CkBAIC0xOTgsOCArMjAxLDExIEBAIHN0YXRpYyB2b2lkIGhhbmRsZV91dWlkKGNvbnN0IGNo YXIgKnV1aWRzdHIsIHN0cnVjdCBhdWRpb19kZXZpY2UgKmRldmljZSkKIAkJYnJlYWs7CiAJY2Fz ZSBIQU5EU0ZSRUVfQUdXX1NWQ0xBU1NfSUQ6CiAJCWRlYnVnKCJGb3VuZCBIYW5kc2ZyZWUgQUcg cmVjb3JkIik7Ci0JCWlmIChkZXZpY2UtPmdhdGV3YXkgPT0gTlVMTCkKKwkJaWYgKGVuYWJsZWQu Z2F0ZXdheSAmJiAoZGV2aWNlLT5nYXRld2F5ID09IE5VTEwpKQogCQkJZGV2aWNlLT5nYXRld2F5 ID0gZ2F0ZXdheV9pbml0KGRldmljZSk7CisKKwkJaWYgKGVuYWJsZWQub2Zvbm9faGZwICYmIChk ZXZpY2UtPm9mb25vX2hmcCA9PSBOVUxMKSkKKwkJCWRldmljZS0+b2Zvbm9faGZwID0gb2Zvbm9f aGZwX2luaXQoZGV2aWNlKTsKIAkJYnJlYWs7CiAJY2FzZSBBVURJT19TSU5LX1NWQ0xBU1NfSUQ6 CiAJCWRlYnVnKCJGb3VuZCBBdWRpbyBTaW5rIik7CkBAIC01NDUsNiArNTUxLDIzIEBAIHN0YXRp YyB2b2lkIGdhdGV3YXlfYXV0aF9jYihEQnVzRXJyb3IgKmRlcnIsIHZvaWQgKnVzZXJfZGF0YSkK IAl9CiB9CiAKK3N0YXRpYyB2b2lkIG9mb25vX2hmcF9hdXRoX2NiKERCdXNFcnJvciAqZGVyciwg dm9pZCAqdXNlcl9kYXRhKQoreworCXN0cnVjdCBhdWRpb19kZXZpY2UgKmRldmljZSA9IHVzZXJf ZGF0YTsKKworCWlmIChkZXJyICYmIGRidXNfZXJyb3JfaXNfc2V0KGRlcnIpKQorCQllcnJvcigi QWNjZXNzIGRlbmllZDogJXMiLCBkZXJyLT5tZXNzYWdlKTsKKwllbHNlIHsKKwkJY2hhciBhZ19h ZGRyZXNzWzE4XTsKKworCQliYTJzdHIoJmRldmljZS0+ZHN0LCBhZ19hZGRyZXNzKTsKKwkJZGVi dWcoIkFjY2VwdGVkIEFHIGNvbm5lY3Rpb24gZnJvbSAlcyBmb3IgJXMiLAorCQkJYWdfYWRkcmVz cywgZGV2aWNlLT5wYXRoKTsKKworCQlvZm9ub19oZnBfc3RhcnRfc2VydmljZShkZXZpY2UpOwor CX0KK30KKwogc3RhdGljIHZvaWQgaGZfaW9fY2IoR0lPQ2hhbm5lbCAqY2hhbiwgZ3BvaW50ZXIg ZGF0YSkKIHsKIAliZGFkZHJfdCBzcmMsIGRzdDsKQEAgLTYwNiw2ICs2MjksNjcgQEAgZHJvcDoK IAlyZXR1cm47CiB9CiAKK3N0YXRpYyB2b2lkIG9mb25vX2hmX2lvX2NiKEdJT0NoYW5uZWwgKmNo YW4sIGdwb2ludGVyIGRhdGEpCit7CisJYmRhZGRyX3Qgc3JjLCBkc3Q7CisJR0Vycm9yICplcnIg PSBOVUxMOworCXVpbnQ4X3QgY2g7CisJY29uc3QgY2hhciAqc2VydmVyX3V1aWQsICpyZW1vdGVf dXVpZDsKKwl1aW50MTZfdCBzdmNsYXNzOworCXN0cnVjdCBhdWRpb19kZXZpY2UgKmRldmljZTsK KwlpbnQgcGVycjsKKworCWJ0X2lvX2dldChjaGFuLCBCVF9JT19SRkNPTU0sICZlcnIsCisJCQlC VF9JT19PUFRfU09VUkNFX0JEQUREUiwgJnNyYywKKwkJCUJUX0lPX09QVF9ERVNUX0JEQUREUiwg JmRzdCwKKwkJCUJUX0lPX09QVF9DSEFOTkVMLCAmY2gsCisJCQlCVF9JT19PUFRfSU5WQUxJRCk7 CisKKwlpZiAoZXJyKSB7CisJCWVycm9yKCIlcyIsIGVyci0+bWVzc2FnZSk7CisJCWdfZXJyb3Jf ZnJlZShlcnIpOworCQlyZXR1cm47CisJfQorCisJc2VydmVyX3V1aWQgPSBIRlBfSFNfVVVJRDsK KwlyZW1vdGVfdXVpZCA9IEhGUF9BR19VVUlEOworCXN2Y2xhc3MgPSBIQU5EU0ZSRUVfQUdXX1NW Q0xBU1NfSUQ7CisKKwlkZXZpY2UgPSBtYW5hZ2VyX2dldF9kZXZpY2UoJnNyYywgJmRzdCwgVFJV RSk7CisJaWYgKCFkZXZpY2UpCisJCWdvdG8gZHJvcDsKKworCWlmICghZGV2aWNlLT5vZm9ub19o ZnApIHsKKwkJYnRkX2RldmljZV9hZGRfdXVpZChkZXZpY2UtPmJ0ZF9kZXYsIHJlbW90ZV91dWlk KTsKKwkJaWYgKCFkZXZpY2UtPm9mb25vX2hmcCkKKwkJCWdvdG8gZHJvcDsKKwl9CisKKwlpZiAo b2Zvbm9faGZwX2lzX2Nvbm5lY3RlZChkZXZpY2UpKSB7CisJCWRlYnVnKCJSZWZ1c2luZyBuZXcg Y29ubmVjdGlvbiBzaW5jZSBvbmUgYWxyZWFkeSBleGlzdHMiKTsKKwkJZ290byBkcm9wOworCX0K KworCWlmIChvZm9ub19oZnBfY29ubmVjdF9yZmNvbW0oZGV2aWNlLCBjaGFuLCBjaCkgPCAwKSB7 CisJCWVycm9yKCJBbGxvY2F0aW5nIG5ldyBHSU9DaGFubmVsIGZhaWxlZCEiKTsKKwkJZ290byBk cm9wOworCX0KKworCXBlcnIgPSBhdWRpb19kZXZpY2VfcmVxdWVzdF9hdXRob3JpemF0aW9uKGRl dmljZSwgc2VydmVyX3V1aWQsCisJCQkJCQlvZm9ub19oZnBfYXV0aF9jYiwgZGV2aWNlKTsKKwlp ZiAocGVyciA8IDApIHsKKwkJZGVidWcoIkF1dGhvcml6YXRpb24gZGVuaWVkISIpOworCQlnb3Rv IGRyb3A7CisJfQorCisJcmV0dXJuOworCitkcm9wOgorCWdfaW9fY2hhbm5lbF9zaHV0ZG93bihj aGFuLCBUUlVFLCBOVUxMKTsKKwlnX2lvX2NoYW5uZWxfdW5yZWYoY2hhbik7CisJcmV0dXJuOwor fQorCiBzdGF0aWMgaW50IGhlYWRzZXRfc2VydmVyX2luaXQoc3RydWN0IGF1ZGlvX2FkYXB0ZXIg KmFkYXB0ZXIpCiB7CiAJdWludDhfdCBjaGFuID0gREVGQVVMVF9IU19BR19DSEFOTkVMOwpAQCAt NzYwLDYgKzg0NCw2MSBAQCBzdGF0aWMgaW50IGdhdGV3YXlfc2VydmVyX2luaXQoc3RydWN0IGF1 ZGlvX2FkYXB0ZXIgKmFkYXB0ZXIpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgb2Zvbm9f aGZwX3NlcnZlcl9pbml0KHN0cnVjdCBhdWRpb19hZGFwdGVyICphZGFwdGVyKQoreworCXVpbnQ4 X3QgY2hhbiA9IERFRkFVTFRfSEZQX0hTX0NIQU5ORUw7CisJc2RwX3JlY29yZF90ICpyZWNvcmQ7 CisJZ2Jvb2xlYW4gbWFzdGVyID0gVFJVRTsKKwlHRXJyb3IgKmVyciA9IE5VTEw7CisJR0lPQ2hh bm5lbCAqaW87CisJYmRhZGRyX3Qgc3JjOworCisJaWYgKGNvbmZpZykgeworCQlnYm9vbGVhbiB0 bXA7CisKKwkJdG1wID0gZ19rZXlfZmlsZV9nZXRfYm9vbGVhbihjb25maWcsICJHZW5lcmFsIiwg Ik1hc3RlciIsCisJCQkJCQkmZXJyKTsKKwkJaWYgKGVycikgeworCQkJZGVidWcoImF1ZGlvLmNv bmY6ICVzIiwgZXJyLT5tZXNzYWdlKTsKKwkJCWdfY2xlYXJfZXJyb3IoJmVycik7CisJCX0gZWxz ZQorCQkJbWFzdGVyID0gdG1wOworCX0KKworCWFkYXB0ZXJfZ2V0X2FkZHJlc3MoYWRhcHRlci0+ YnRkX2FkYXB0ZXIsICZzcmMpOworCisJaW8gPSBidF9pb19saXN0ZW4oQlRfSU9fUkZDT01NLCBO VUxMLCBvZm9ub19oZl9pb19jYiwgYWRhcHRlciwKKwkJCQlOVUxMLCAmZXJyLAorCQkJCUJUX0lP X09QVF9TT1VSQ0VfQkRBRERSLCAmc3JjLAorCQkJCUJUX0lPX09QVF9DSEFOTkVMLCBjaGFuLAor CQkJCUJUX0lPX09QVF9TRUNfTEVWRUwsIEJUX0lPX1NFQ19NRURJVU0sCisJCQkJQlRfSU9fT1BU X01BU1RFUiwgbWFzdGVyLAorCQkJCUJUX0lPX09QVF9JTlZBTElEKTsKKwlpZiAoIWlvKSB7CisJ CWVycm9yKCIlcyIsIGVyci0+bWVzc2FnZSk7CisJCWdfZXJyb3JfZnJlZShlcnIpOworCQlyZXR1 cm4gLTE7CisJfQorCisJYWRhcHRlci0+aGZwX2hzX3NlcnZlciA9IGlvOworCXJlY29yZCA9IGhm cF9oc19yZWNvcmQoY2hhbik7CisJaWYgKCFyZWNvcmQpIHsKKwkJZXJyb3IoIlVuYWJsZSB0byBh bGxvY2F0ZSBuZXcgc2VydmljZSByZWNvcmQiKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmIChh ZGRfcmVjb3JkX3RvX3NlcnZlcigmc3JjLCByZWNvcmQpIDwgMCkgeworCQllcnJvcigiVW5hYmxl IHRvIHJlZ2lzdGVyIEhGUCBIUyBzZXJ2aWNlIHJlY29yZCIpOworCQlzZHBfcmVjb3JkX2ZyZWUo cmVjb3JkKTsKKwkJZ19pb19jaGFubmVsX3VucmVmKGFkYXB0ZXItPmhmcF9oc19zZXJ2ZXIpOwor CQlhZGFwdGVyLT5oZnBfaHNfc2VydmVyID0gTlVMTDsKKwkJcmV0dXJuIC0xOworCX0KKworCWFk YXB0ZXItPmhmcF9oc19yZWNvcmRfaWQgPSByZWNvcmQtPmhhbmRsZTsKKwlyZXR1cm4gMDsKK30K Kwogc3RhdGljIGludCBhdWRpb19wcm9iZShzdHJ1Y3QgYnRkX2RldmljZSAqZGV2aWNlLCBHU0xp c3QgKnV1aWRzKQogewogCXN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciA9IGRldmljZV9nZXRf YWRhcHRlcihkZXZpY2UpOwpAQCAtMTAyMiw2ICsxMTYxLDIyIEBAIHN0YXRpYyB2b2lkIGF2cmNw X3NlcnZlcl9yZW1vdmUoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyKQogCWF1ZGlvX2FkYXB0 ZXJfdW5yZWYoYWRwKTsKIH0KIAorc3RhdGljIGludCBvZm9ub19oZnBfc2VydmVyX3Byb2JlKHN0 cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlcikKK3sKKwlzdHJ1Y3QgYXVkaW9fYWRhcHRlciAqYWRw OworCisJYWRwID0gYXVkaW9fYWRhcHRlcl9nZXQoYWRhcHRlcik7CisJaWYgKCFhZHApCisJCXJl dHVybiAtRUlOVkFMOworCisJcmV0dXJuIG9mb25vX2hmcF9zZXJ2ZXJfaW5pdChhZHApOworfQor CitzdGF0aWMgdm9pZCBvZm9ub19oZnBfc2VydmVyX3JlbW92ZShzdHJ1Y3QgYnRkX2FkYXB0ZXIg KmFkYXB0ZXIpCit7CisJcmV0dXJuIGdhdGV3YXlfc2VydmVyX3JlbW92ZShhZGFwdGVyKTsKK30K Kwogc3RhdGljIHN0cnVjdCBidGRfZGV2aWNlX2RyaXZlciBhdWRpb19kcml2ZXIgPSB7CiAJLm5h bWUJPSAiYXVkaW8iLAogCS51dWlkcwk9IEJURF9VVUlEUyhIU1BfSFNfVVVJRCwgSEZQX0hTX1VV SUQsIEhTUF9BR19VVUlELCBIRlBfQUdfVVVJRCwKQEAgLTEwNTUsNiArMTIxMCwxMiBAQCBzdGF0 aWMgc3RydWN0IGJ0ZF9hZGFwdGVyX2RyaXZlciBhdnJjcF9zZXJ2ZXJfZHJpdmVyID0gewogCS5y ZW1vdmUJPSBhdnJjcF9zZXJ2ZXJfcmVtb3ZlLAogfTsKIAorc3RhdGljIHN0cnVjdCBidGRfYWRh cHRlcl9kcml2ZXIgb2Zvbm9faGZwX3NlcnZlcl9kcml2ZXIgPSB7CisJLm5hbWUJPSAib2Zvbm8t aGFuZHNmcmVlIiwKKwkucHJvYmUJPSBvZm9ub19oZnBfc2VydmVyX3Byb2JlLAorCS5yZW1vdmUJ PSBvZm9ub19oZnBfc2VydmVyX3JlbW92ZSwKK307CisKIGludCBhdWRpb19tYW5hZ2VyX2luaXQo REJ1c0Nvbm5lY3Rpb24gKmNvbm4sIEdLZXlGaWxlICpjb25mLAogCQkJCQkJCWdib29sZWFuICpl bmFibGVfc2NvKQogewpAQCAtMTA4Myw2ICsxMjQ0LDggQEAgaW50IGF1ZGlvX21hbmFnZXJfaW5p dChEQnVzQ29ubmVjdGlvbiAqY29ubiwgR0tleUZpbGUgKmNvbmYsCiAJCQllbmFibGVkLnNvdXJj ZSA9IFRSVUU7CiAJCWVsc2UgaWYgKGdfc3RyX2VxdWFsKGxpc3RbaV0sICJDb250cm9sIikpCiAJ CQllbmFibGVkLmNvbnRyb2wgPSBUUlVFOworCQllbHNlIGlmIChnX3N0cl9lcXVhbChsaXN0W2ld LCAib0Zvbm9IRlAiKSkKKwkJCWVuYWJsZWQub2Zvbm9faGZwID0gVFJVRTsKIAl9CiAJZ19zdHJm cmVldihsaXN0KTsKIApAQCAtMTA5OSw2ICsxMjYyLDggQEAgaW50IGF1ZGlvX21hbmFnZXJfaW5p dChEQnVzQ29ubmVjdGlvbiAqY29ubiwgR0tleUZpbGUgKmNvbmYsCiAJCQllbmFibGVkLnNvdXJj ZSA9IEZBTFNFOwogCQllbHNlIGlmIChnX3N0cl9lcXVhbChsaXN0W2ldLCAiQ29udHJvbCIpKQog CQkJZW5hYmxlZC5jb250cm9sID0gRkFMU0U7CisJCWVsc2UgaWYgKGdfc3RyX2VxdWFsKGxpc3Rb aV0sICJvRm9ub0hGUCIpKQorCQkJZW5hYmxlZC5vZm9ub19oZnAgPSBGQUxTRTsKIAl9CiAJZ19z dHJmcmVldihsaXN0KTsKIApAQCAtMTE0MCw5ICsxMzA1LDEyIEBAIHByb2NlZWQ6CiAJaWYgKGVu YWJsZWQuY29udHJvbCkKIAkJYnRkX3JlZ2lzdGVyX2FkYXB0ZXJfZHJpdmVyKCZhdnJjcF9zZXJ2 ZXJfZHJpdmVyKTsKIAorCWlmIChlbmFibGVkLm9mb25vX2hmcCkKKwkJYnRkX3JlZ2lzdGVyX2Fk YXB0ZXJfZHJpdmVyKCZvZm9ub19oZnBfc2VydmVyX2RyaXZlcik7CisKIAlidGRfcmVnaXN0ZXJf ZGV2aWNlX2RyaXZlcigmYXVkaW9fZHJpdmVyKTsKIAotCSplbmFibGVfc2NvID0gKGVuYWJsZWQu Z2F0ZXdheSB8fCBlbmFibGVkLmhlYWRzZXQpOworCSplbmFibGVfc2NvID0gKGVuYWJsZWQuZ2F0 ZXdheSB8fCBlbmFibGVkLmhlYWRzZXQgfHwgZW5hYmxlZC5vZm9ub19oZnApOwogCiAJcmV0dXJu IDA7CiB9CkBAIC0xMTY5LDYgKzEzMzcsMTEgQEAgdm9pZCBhdWRpb19tYW5hZ2VyX2V4aXQodm9p ZCkKIAlpZiAoZW5hYmxlZC5nYXRld2F5KQogCQlidGRfdW5yZWdpc3Rlcl9hZGFwdGVyX2RyaXZl cigmZ2F0ZXdheV9zZXJ2ZXJfZHJpdmVyKTsKIAorCWlmIChlbmFibGVkLm9mb25vX2hmcCkgewor CQlidGRfdW5yZWdpc3Rlcl9hZGFwdGVyX2RyaXZlcigmb2Zvbm9faGZwX3NlcnZlcl9kcml2ZXIp OworCQlvZm9ub19oZnBfZXhpdCgpOworCX0KKwogCWlmIChlbmFibGVkLnNvdXJjZSB8fCBlbmFi bGVkLnNpbmspCiAJCWJ0ZF91bnJlZ2lzdGVyX2FkYXB0ZXJfZHJpdmVyKCZhMmRwX3NlcnZlcl9k cml2ZXIpOwogCkBAIC0xMjE4LDYgKzEzOTEsMTAgQEAgc3RydWN0IGF1ZGlvX2RldmljZSAqbWFu YWdlcl9maW5kX2RldmljZShjb25zdCBjaGFyICpwYXRoLAogCQkJCSYmICFkZXYtPmNvbnRyb2wp CiAJCQljb250aW51ZTsKIAorCQlpZiAoaW50ZXJmYWNlICYmICFzdHJjbXAoQVVESU9fT0ZPTk9f SEZQX0lOVEVSRkFDRSwgaW50ZXJmYWNlKQorCQkJCSYmICFkZXYtPm9mb25vX2hmcCkKKwkJCWNv bnRpbnVlOworCiAJCWlmIChjb25uZWN0ZWQgJiYgIWF1ZGlvX2RldmljZV9pc19hY3RpdmUoZGV2 LCBpbnRlcmZhY2UpKQogCQkJY29udGludWU7CiAKZGlmZiAtLWdpdCBhL2F1ZGlvL21hbmFnZXIu aCBiL2F1ZGlvL21hbmFnZXIuaAppbmRleCBjYjlkNjNjLi42NWNhNDE5IDEwMDY0NAotLS0gYS9h dWRpby9tYW5hZ2VyLmgKKysrIGIvYXVkaW8vbWFuYWdlci5oCkBAIC0yNiw2ICsyNiw3IEBAIHN0 cnVjdCBlbmFibGVkX2ludGVyZmFjZXMgewogCWdib29sZWFuIGhmcDsKIAlnYm9vbGVhbiBoZWFk c2V0OwogCWdib29sZWFuIGdhdGV3YXk7CisJZ2Jvb2xlYW4gb2Zvbm9faGZwOwogCWdib29sZWFu IHNpbms7CiAJZ2Jvb2xlYW4gc291cmNlOwogCWdib29sZWFuIGNvbnRyb2w7CmRpZmYgLS1naXQg YS9hdWRpby91bml4LmMgYi9hdWRpby91bml4LmMKaW5kZXggNmI0M2JkNC4uZTRmNGU0ZCAxMDA2 NDQKLS0tIGEvYXVkaW8vdW5peC5jCisrKyBiL2F1ZGlvL3VuaXguYwpAQCAtNDgsNiArNDgsNyBA QAogI2luY2x1ZGUgImhlYWRzZXQuaCIKICNpbmNsdWRlICJzaW5rLmgiCiAjaW5jbHVkZSAiZ2F0 ZXdheS5oIgorI2luY2x1ZGUgIm9mb25vLWhmcC5oIgogI2luY2x1ZGUgInVuaXguaCIKICNpbmNs dWRlICJnbGliLWhlbHBlci5oIgogCkBAIC01Nyw4ICs1OCw5IEBAIHR5cGVkZWYgZW51bSB7CiAJ VFlQRV9OT05FLAogCVRZUEVfSEVBRFNFVCwKIAlUWVBFX0dBVEVXQVksCisJVFlQRV9PRk9OT19I RlAsCiAJVFlQRV9TSU5LLAotCVRZUEVfU09VUkNFCisJVFlQRV9TT1VSQ0UsCiB9IHNlcnZpY2Vf dHlwZV90OwogCiB0eXBlZGVmIHZvaWQgKCpub3RpZnlfY2JfdCkgKHN0cnVjdCBhdWRpb19kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSk7CkBAIC0xOTYsNiArMTk4LDkgQEAgc3RhdGljIHNlcnZpY2Vf dHlwZV90IHNlbGVjdF9zZXJ2aWNlKHN0cnVjdCBhdWRpb19kZXZpY2UgKmRldiwgY29uc3QgY2hh ciAqaW50ZXIKIAkJcmV0dXJuIFRZUEVfSEVBRFNFVDsKIAllbHNlIGlmICghc3RyY21wKGludGVy ZmFjZSwgQVVESU9fR0FURVdBWV9JTlRFUkZBQ0UpICYmIGRldi0+Z2F0ZXdheSkKIAkJcmV0dXJu IFRZUEVfR0FURVdBWTsKKwllbHNlIGlmICghc3RyY21wKGludGVyZmFjZSwgQVVESU9fT0ZPTk9f SEZQX0lOVEVSRkFDRSkKKwkJCQkJJiYgZGV2LT5vZm9ub19oZnApCisJCXJldHVybiBUWVBFX09G T05PX0hGUDsKIAogCXJldHVybiBUWVBFX05PTkU7CiB9CkBAIC0zNDQsNiArMzQ5LDMyIEBAIHN0 YXRpYyB2b2lkIGdhdGV3YXlfc2V0dXBfY29tcGxldGUoc3RydWN0IGF1ZGlvX2RldmljZSAqZGV2 LCB2b2lkICp1c2VyX2RhdGEpCiAJdW5peF9pcGNfc2VuZG1zZyhjbGllbnQsICZyc3AtPmgpOwog fQogCitzdGF0aWMgdm9pZCBvZm9ub19oZnBfc2V0dXBfY29tcGxldGUoc3RydWN0IGF1ZGlvX2Rl dmljZSAqZGV2LCB2b2lkICp1c2VyX2RhdGEpCit7CisJc3RydWN0IHVuaXhfY2xpZW50ICpjbGll bnQgPSB1c2VyX2RhdGE7CisJY2hhciBidWZbQlRfU1VHR0VTVEVEX0JVRkZFUl9TSVpFXTsKKwlz dHJ1Y3QgYnRfc2V0X2NvbmZpZ3VyYXRpb25fcnNwICpyc3AgPSAodm9pZCAqKSBidWY7CisKKwlp ZiAoIWRldikgeworCQl1bml4X2lwY19lcnJvcihjbGllbnQsIEJUX1NFVF9DT05GSUdVUkFUSU9O LCBFSU8pOworCQlyZXR1cm47CisJfQorCisJY2xpZW50LT5yZXFfaWQgPSAwOworCisJbWVtc2V0 KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOworCisJcnNwLT5oLnR5cGUgPSBCVF9SRVNQT05TRTsKKwly c3AtPmgubmFtZSA9IEJUX1NFVF9DT05GSUdVUkFUSU9OOworCXJzcC0+aC5sZW5ndGggPSBzaXpl b2YoKnJzcCk7CisKKwlyc3AtPmxpbmtfbXR1ID0gNDg7CisKKwljbGllbnQtPmRhdGFfZmQgPSBv Zm9ub19oZnBfZ2V0X3Njb19mZChkZXYpOworCisJdW5peF9pcGNfc2VuZG1zZyhjbGllbnQsICZy c3AtPmgpOworfQorCiBzdGF0aWMgdm9pZCBoZWFkc2V0X3Jlc3VtZV9jb21wbGV0ZShzdHJ1Y3Qg YXVkaW9fZGV2aWNlICpkZXYsIHZvaWQgKnVzZXJfZGF0YSkKIHsKIAlzdHJ1Y3QgdW5peF9jbGll bnQgKmNsaWVudCA9IHVzZXJfZGF0YTsKQEAgLTQxOCw2ICs0NDksNDQgQEAgc3RhdGljIHZvaWQg Z2F0ZXdheV9yZXN1bWVfY29tcGxldGUoc3RydWN0IGF1ZGlvX2RldmljZSAqZGV2LCB2b2lkICp1 c2VyX2RhdGEpCiAJY2xpZW50LT5yZXFfaWQgPSAwOwogfQogCitzdGF0aWMgdm9pZCBvZm9ub19o ZnBfcmVzdW1lX2NvbXBsZXRlKHN0cnVjdCBhdWRpb19kZXZpY2UgKmRldiwgdm9pZCAqdXNlcl9k YXRhKQoreworCXN0cnVjdCB1bml4X2NsaWVudCAqY2xpZW50ID0gdXNlcl9kYXRhOworCWNoYXIg YnVmW0JUX1NVR0dFU1RFRF9CVUZGRVJfU0laRV07CisJc3RydWN0IGJ0X3N0YXJ0X3N0cmVhbV9y c3AgKnJzcCA9ICh2b2lkICopIGJ1ZjsKKwlzdHJ1Y3QgYnRfbmV3X3N0cmVhbV9pbmQgKmluZCA9 ICh2b2lkICopIGJ1ZjsKKworCWlmICghZGV2KQorCQlnb3RvIGZhaWxlZDsKKworCW1lbXNldChi dWYsIDAsIHNpemVvZihidWYpKTsKKwlyc3AtPmgudHlwZSA9IEJUX1JFU1BPTlNFOworCXJzcC0+ aC5uYW1lID0gQlRfU1RBUlRfU1RSRUFNOworCXJzcC0+aC5sZW5ndGggPSBzaXplb2YoKnJzcCk7 CisKKwl1bml4X2lwY19zZW5kbXNnKGNsaWVudCwgJnJzcC0+aCk7CisKKwltZW1zZXQoYnVmLCAw LCBzaXplb2YoYnVmKSk7CisJaW5kLT5oLnR5cGUgPSBCVF9JTkRJQ0FUSU9OOworCWluZC0+aC5u YW1lID0gQlRfTkVXX1NUUkVBTTsKKwlpbmQtPmgubGVuZ3RoID0gc2l6ZW9mKCppbmQpOworCisJ dW5peF9pcGNfc2VuZG1zZyhjbGllbnQsICZpbmQtPmgpOworCisJY2xpZW50LT5kYXRhX2ZkID0g b2Zvbm9faGZwX2dldF9zY29fZmQoZGV2KTsKKwlpZiAodW5peF9zZW5kbXNnX2ZkKGNsaWVudC0+ c29jaywgY2xpZW50LT5kYXRhX2ZkKSA8IDApIHsKKwkJZXJyb3IoInVuaXhfc2VuZG1zZ19mZDog JXMoJWQpIiwgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7CisJCXVuaXhfaXBjX2Vycm9yKGNsaWVu dCwgQlRfU1RBUlRfU1RSRUFNLCBFSU8pOworCX0KKworCWNsaWVudC0+cmVxX2lkID0gMDsKKwly ZXR1cm47CisKK2ZhaWxlZDoKKwllcnJvcigib2Zvbm9faGZwX3Jlc3VtZV9jb21wbGV0ZTogcmVz dW1lIGZhaWxlZCIpOworCXVuaXhfaXBjX2Vycm9yKGNsaWVudCwgQlRfU1RBUlRfU1RSRUFNLCBF SU8pOworfQorCiBzdGF0aWMgdm9pZCBoZWFkc2V0X3N1c3BlbmRfY29tcGxldGUoc3RydWN0IGF1 ZGlvX2RldmljZSAqZGV2LCB2b2lkICp1c2VyX2RhdGEpCiB7CiAJc3RydWN0IHVuaXhfY2xpZW50 ICpjbGllbnQgPSB1c2VyX2RhdGE7CkBAIC04NzAsNiArOTM5LDcgQEAgc3RhdGljIHZvaWQgc3Rh cnRfZGlzY292ZXJ5KHN0cnVjdCBhdWRpb19kZXZpY2UgKmRldiwgc3RydWN0IHVuaXhfY2xpZW50 ICpjbGllbnQKIAogCWNhc2UgVFlQRV9IRUFEU0VUOgogCWNhc2UgVFlQRV9HQVRFV0FZOgorCWNh c2UgVFlQRV9PRk9OT19IRlA6CiAJCWhlYWRzZXRfZGlzY292ZXJ5X2NvbXBsZXRlKGRldiwgY2xp ZW50KTsKIAkJYnJlYWs7CiAKQEAgLTk2OSw4ICsxMDM5LDkgQEAgc3RhdGljIHZvaWQgc3RhcnRf b3BlbihzdHJ1Y3QgYXVkaW9fZGV2aWNlICpkZXYsIHN0cnVjdCB1bml4X2NsaWVudCAqY2xpZW50 KQogCQl9CiAJCWJyZWFrOwogCi0gICAgICAgIGNhc2UgVFlQRV9HQVRFV0FZOgotICAgICAgICAg ICAgICAgIGJyZWFrOworCWNhc2UgVFlQRV9HQVRFV0FZOgorCWNhc2UgVFlQRV9PRk9OT19IRlA6 CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWVycm9yKCJObyBrbm93biBzZXJ2aWNlcyBmb3IgZGV2 aWNlIik7CiAJCWdvdG8gZmFpbGVkOwpAQCAtMTAzOCw3ICsxMTA5LDE0IEBAIHN0YXRpYyB2b2lk IHN0YXJ0X2NvbmZpZyhzdHJ1Y3QgYXVkaW9fZGV2aWNlICpkZXYsIHN0cnVjdCB1bml4X2NsaWVu dCAqY2xpZW50KQogCQl9IGVsc2UKIAkJCWlkID0gMDsKIAkJYnJlYWs7Ci0KKwljYXNlIFRZUEVf T0ZPTk9fSEZQOgorCQlpZiAob2Zvbm9faGZwX2NvbmZpZ19zdHJlYW0oZGV2LCBvZm9ub19oZnBf c2V0dXBfY29tcGxldGUsCisJCQkJCQljbGllbnQpID49IDApIHsKKwkJCWNsaWVudC0+Y2FuY2Vs ID0gb2Zvbm9faGZwX2NhbmNlbF9zdHJlYW07CisJCQlpZCA9IDE7CisJCX0gZWxzZQorCQkJaWQg PSAwOworCQlicmVhazsKIAlkZWZhdWx0OgogCQllcnJvcigiTm8ga25vd24gc2VydmljZXMgZm9y IGRldmljZSIpOwogCQlnb3RvIGZhaWxlZDsKQEAgLTExMTEsNiArMTE4OSwxNSBAQCBzdGF0aWMg dm9pZCBzdGFydF9yZXN1bWUoc3RydWN0IGF1ZGlvX2RldmljZSAqZGV2LCBzdHJ1Y3QgdW5peF9j bGllbnQgKmNsaWVudCkKIAkJY2xpZW50LT5jYW5jZWwgPSBnYXRld2F5X2NhbmNlbF9zdHJlYW07 CiAJCWJyZWFrOwogCisJY2FzZSBUWVBFX09GT05PX0hGUDoKKwkJaWYgKG9mb25vX2hmcF9yZXF1 ZXN0X3N0cmVhbShkZXYsIG9mb25vX2hmcF9yZXN1bWVfY29tcGxldGUsCisJCQkJCWNsaWVudCkp CisJCQlpZCA9IDE7CisJCWVsc2UKKwkJCWlkID0gMDsKKwkJY2xpZW50LT5jYW5jZWwgPSBvZm9u b19oZnBfY2FuY2VsX3N0cmVhbTsKKwkJYnJlYWs7CisKIAlkZWZhdWx0OgogCQllcnJvcigiTm8g a25vd24gc2VydmljZXMgZm9yIGRldmljZSIpOwogCQlnb3RvIGZhaWxlZDsKQEAgLTExODUsNiAr MTI3MiwxMyBAQCBzdGF0aWMgdm9pZCBzdGFydF9zdXNwZW5kKHN0cnVjdCBhdWRpb19kZXZpY2Ug KmRldiwgc3RydWN0IHVuaXhfY2xpZW50ICpjbGllbnQpCiAJCWlkID0gMTsKIAkJYnJlYWs7CiAK KwljYXNlIFRZUEVfT0ZPTk9fSEZQOgorCQlvZm9ub19oZnBfc3VzcGVuZF9zdHJlYW0oZGV2KTsK KwkJY2xpZW50LT5jYW5jZWwgPSBvZm9ub19oZnBfY2FuY2VsX3N0cmVhbTsKKwkJaGVhZHNldF9z dXNwZW5kX2NvbXBsZXRlKGRldiwgY2xpZW50KTsKKwkJaWQgPSAxOworCQlicmVhazsKKwogCWRl ZmF1bHQ6CiAJCWVycm9yKCJObyBrbm93biBzZXJ2aWNlcyBmb3IgZGV2aWNlIik7CiAJCWdvdG8g ZmFpbGVkOwpAQCAtMTI0MSw3ICsxMzM1LDggQEAgc3RhdGljIHZvaWQgc3RhcnRfY2xvc2Uoc3Ry dWN0IGF1ZGlvX2RldmljZSAqZGV2LCBzdHJ1Y3QgdW5peF9jbGllbnQgKmNsaWVudCwKIAkJfQog CQlicmVhazsKICAgICAgICAgY2FzZSBUWVBFX0dBVEVXQVk6Ci0gICAgICAgICAgICAgICAgYnJl YWs7CisJY2FzZSBUWVBFX09GT05PX0hGUDoKKwkJYnJlYWs7CiAJY2FzZSBUWVBFX1NPVVJDRToK IAljYXNlIFRZUEVfU0lOSzoKIAkJYTJkcCA9ICZjbGllbnQtPmQuYTJkcDsKQEAgLTEzMTcsNiAr MTQxMiwxMyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZ2V0Y2FwYWJpbGl0aWVzX3JlcShzdHJ1Y3Qg dW5peF9jbGllbnQgKmNsaWVudCwKIAkJCWludGVyZmFjZSA9IE5VTEw7CiAJCWRldiA9IG1hbmFn ZXJfZmluZF9kZXZpY2UocmVxLT5vYmplY3QsICZzcmMsICZkc3QsCiAJCQkJCQkJaW50ZXJmYWNl LCBUUlVFKTsKKworCQlpZiAoIWRldiAmJiAocmVxLT50cmFuc3BvcnQgPT0gQlRfQ0FQQUJJTElU SUVTX1RSQU5TUE9SVF9TQ08pKSB7CisJCQlpbnRlcmZhY2UgPSBnX3N0cmR1cChBVURJT19PRk9O T19IRlBfSU5URVJGQUNFKTsKKwkJCWRldiA9IG1hbmFnZXJfZmluZF9kZXZpY2UocmVxLT5vYmpl Y3QsICZzcmMsICZkc3QsCisJCQkJCQkJaW50ZXJmYWNlLCBUUlVFKTsKKwkJfQorCiAJCWlmICgh ZGV2ICYmIChyZXEtPmZsYWdzICYgQlRfRkxBR19BVVRPQ09OTkVDVCkpCiAJCQlkZXYgPSBtYW5h Z2VyX2ZpbmRfZGV2aWNlKHJlcS0+b2JqZWN0LCAmc3JjLCAmZHN0LAogCQkJCQkJCWludGVyZmFj ZSwgRkFMU0UpOwpAQCAtMTM1Myw3ICsxNDU1LDggQEAgc3RhdGljIGludCBoYW5kbGVfc2NvX29w ZW4oc3RydWN0IHVuaXhfY2xpZW50ICpjbGllbnQsIHN0cnVjdCBidF9vcGVuX3JlcSAqcmVxKQog CWlmICghY2xpZW50LT5pbnRlcmZhY2UpCiAJCWNsaWVudC0+aW50ZXJmYWNlID0gZ19zdHJkdXAo QVVESU9fSEVBRFNFVF9JTlRFUkZBQ0UpOwogCWVsc2UgaWYgKCFnX3N0cl9lcXVhbChjbGllbnQt PmludGVyZmFjZSwgQVVESU9fSEVBRFNFVF9JTlRFUkZBQ0UpICYmCi0JCSFnX3N0cl9lcXVhbChj bGllbnQtPmludGVyZmFjZSwgQVVESU9fR0FURVdBWV9JTlRFUkZBQ0UpKQorCQkhZ19zdHJfZXF1 YWwoY2xpZW50LT5pbnRlcmZhY2UsIEFVRElPX0dBVEVXQVlfSU5URVJGQUNFKSAmJgorCQkhZ19z dHJfZXF1YWwoY2xpZW50LT5pbnRlcmZhY2UsIEFVRElPX09GT05PX0hGUF9JTlRFUkZBQ0UpKQog CQlyZXR1cm4gLUVJTzsKIAogCWRlYnVnKCJvcGVuIHNjbyAtIG9iamVjdD0lcyBzb3VyY2U9JXMg ZGVzdGluYXRpb249JXMgbG9jaz0lcyVzIiwKQEAgLTE0NDcsMTAgKzE1NTAsMTMgQEAgc3RhdGlj IGludCBoYW5kbGVfc2NvX3RyYW5zcG9ydChzdHJ1Y3QgdW5peF9jbGllbnQgKmNsaWVudCwKIAkJ CWNsaWVudC0+aW50ZXJmYWNlID0gZ19zdHJkdXAoQVVESU9fSEVBRFNFVF9JTlRFUkZBQ0UpOwog CQllbHNlIGlmIChkZXYtPmdhdGV3YXkpCiAJCQljbGllbnQtPmludGVyZmFjZSA9IGdfc3RyZHVw KEFVRElPX0dBVEVXQVlfSU5URVJGQUNFKTsKKwkJZWxzZSBpZiAoZGV2LT5vZm9ub19oZnApCisJ CQljbGllbnQtPmludGVyZmFjZSA9IGdfc3RyZHVwKEFVRElPX09GT05PX0hGUF9JTlRFUkZBQ0Up OwogCQllbHNlCiAJCQlyZXR1cm4gLUVJTzsKIAl9IGVsc2UgaWYgKCFnX3N0cl9lcXVhbChjbGll bnQtPmludGVyZmFjZSwgQVVESU9fSEVBRFNFVF9JTlRFUkZBQ0UpICYmCi0JCQkhZ19zdHJfZXF1 YWwoY2xpZW50LT5pbnRlcmZhY2UsIEFVRElPX0dBVEVXQVlfSU5URVJGQUNFKSkKKwkJCSFnX3N0 cl9lcXVhbChjbGllbnQtPmludGVyZmFjZSwgQVVESU9fR0FURVdBWV9JTlRFUkZBQ0UpICYmCisJ CQkhZ19zdHJfZXF1YWwoY2xpZW50LT5pbnRlcmZhY2UsIEFVRElPX09GT05PX0hGUF9JTlRFUkZB Q0UpKQogCQlyZXR1cm4gLUVJTzsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZG9jL2F1ZGlv LWFwaS50eHQgYi9kb2MvYXVkaW8tYXBpLnR4dAppbmRleCAxZjA5Y2Q1Li41YzQxODJjIDEwMDY0 NAotLS0gYS9kb2MvYXVkaW8tYXBpLnR4dAorKysgYi9kb2MvYXVkaW8tYXBpLnR4dApAQCAtNDU2 LDMgKzQ1Niw0MCBAQCBwcm9wZXJ0aWVzCWJvb2xlYW4gQ29ubmVjdGVkIFtyZWFkb25seV0KIAkJ dWludDE2IE1pY3JvcGhvbmVHYWluICBbcmVhZG9ubHldCiAKIAkJCVRoZSBzcGVha2VyIGdhaW4g d2hlbiBhdmFpbGFibGUuCisKKworb0Zvbm9IRlAgaGllcmFyY2h5Cis9PT09PT09PT09PT09PT09 PT09PT09PT0KKworU2VydmljZQkJb3JnLmJsdWV6CitJbnRlcmZhY2UJb3JnLmJsdWV6Lm9Gb25v SEZQCitPYmplY3QgcGF0aAlbdmFyaWFibGUgcHJlZml4XS97aGNpMCxoY2kxLC4uLn0vZGV2X1hY X1hYX1hYX1hYX1hYX1hYCisKK1RoaXMgaW50ZXJmYWNlIGlzIGF2YWlsYWJsZSBmb3IgcmVtb3Rl IGRldmljZXMgd2hpY2ggY2FuIGZ1bmN0aW9uIGluIHRoZSBBdWRpbworR2F0ZXdheSByb2xlIG9m IHRoZSBIRlAgcHJvZmlsZXMuIEl0IHByb3ZpZGVzIGNvbm5lY3Rpb24gc2VydmljZSBmb3Igb0Zv bm8gdG8KK2NyZWF0ZSByZmNvbW0gY29ubmVjdGlvbiB3aXRoIHJlbW90ZSBkZXZpY2VzLgorCitN ZXRob2RzCQl2b2lkIENvbm5lY3QoKQorCisJCQlDb25uZWN0IHRvIHRoZSBBRyBzZXJ2aWNlIG9u IHRoZSByZW1vdGUgZGV2aWNlIGFuZAorCQkJdHVybiBSRkNPTU0gY29ubmVjdGlvbiBpbnRvIFRU WSBkZXZpY2UuIFNlbmQgVFRZCisJCQlkZXZpY2UgbmFtZSB0byBvRm9ubyB0aHJvdWdoIEQtQnVz LgorCisJCXZvaWQgRGlzY29ubmVjdCgpCisKKwkJCURpc2Nvbm5lY3QgZnJvbSB0aGUgQUcgc2Vy dmljZSBvbiB0aGUgcmVtb3RlIGRldmljZS4KKworU2lnbmFscwkJUHJvcGVydHlDaGFuZ2VkKHN0 cmluZyBuYW1lLCB2YXJpYW50IHZhbHVlKQorCisJCQlUaGlzIHNpZ25hbCBpbmRpY2F0ZXMgYSBj aGFuZ2VkIHZhbHVlIG9mIHRoZSBnaXZlbgorCQkJcHJvcGVydHkuCisKK3Byb3BlcnRpZXMJYm9v bGVhbiBDb25uZWN0ZWQgW3JlYWRvbmx5XQorCisJCQlJbmRpY2F0ZXMgaWYgdGhlcmUgaXMgYW4g YWN0aXZlIGNvbm5lY3Rpb24gdG8gdGhlCisJCQlBRyBzZXJ2aWNlIG9uIHRoZSByZW1vdGUgZGV2 aWNlLgorCisJCXN0cmluZyBEZXZpY2VbcmVhZG9ubHldCisKKwkJCVRoZSBUVFkgZGV2aWNlIG5h bWUgY3JlYXRlZCBmcm9tIFJGQ09NTSBjb25uZWN0aW9uLgorCi0tIAoxLjYuMi41Cgo= --_004_0463F45F3606F4428ED35AC8C709F92E089CA6A628pdsmsx502ccrc_ Content-Type: application/octet-stream; name="0002-oFonoHFP-Add-oFonoHFP-support-in-oFono.patch" Content-Description: 0002-oFonoHFP-Add-oFonoHFP-support-in-oFono.patch Content-Disposition: attachment; filename="0002-oFonoHFP-Add-oFonoHFP-support-in-oFono.patch"; size=10252; creation-date="Thu, 12 Nov 2009 15:45:43 GMT"; modification-date="Thu, 12 Nov 2009 15:45:43 GMT" Content-Transfer-Encoding: base64 RnJvbSBjYzgwZWIzYmU2NGQ1ODM3ZTA0NjlhODVhMTVlYzcwMzgzMzhkMTM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGVuaHVhIFpoYW5nIDx6aGVuaHVhLnpoYW5nQGludGVsLmNv bT4KRGF0ZTogVGh1LCAxMiBOb3YgMjAwOSAyMjowNjo0NCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg Mi8zXSBvRm9ub0hGUDogQWRkIG9Gb25vSEZQIHN1cHBvcnQgaW4gb0Zvbm8KCkl0IGFsbG93cyBI RlAgcGx1Z2luIHRvIGNvbW11bmlhdGUgd2l0aCBCbHVlWiBvRm9ub0hGUCBwcm9maWxlLgpUaGUg SEZQIHBsdWdpbiB1c2UgQ29ubmVjdCBhbmQgRGlzY29ubmVjdCBELUJ1cyBtZXRob2RzIG9mCm9G b25vSEZQIHRvIGdldCBUVFkgZGV2aWNlIGZyb20gb0Zvbm9IRlAuIFRoZSBwbHVnaW4gYWxzbwp3 YXRjaCBwcm9wZXJ0eSBjaGFuZ2Ugb2Ygb0Zvbm9IRlAgaWYgdGhlIGRldmljZSBpcyBkaXNjb25u ZWN0ZWQuCgpMYXN0IGNvbW1pdDogNzYwMGM0YjNhYzkzZDE0NzZkCi0tLQogcGx1Z2lucy9oZnAu YyAgICAgICB8ICAzMDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0KIHBsdWdpbnMvbW9kZW1jb25mLmMgfCAgICAzICstCiAyIGZpbGVzIGNoYW5nZWQs IDI5NSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3BsdWdpbnMv aGZwLmMgYi9wbHVnaW5zL2hmcC5jCmluZGV4IGZjMjlhZDkuLmMwZjhiYzggMTAwNjQ0Ci0tLSBh L3BsdWdpbnMvaGZwLmMKKysrIGIvcGx1Z2lucy9oZnAuYwpAQCAtMzAsNiArMzAsNyBAQAogI2lu Y2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnYXRjaGF0Lmg+CiAjaW5jbHVkZSA8Z2F0dHR5Lmg+ CisjaW5jbHVkZSA8Z2RidXMuaD4KIAogI2RlZmluZSBPRk9OT19BUElfU1VCSkVDVF9UT19DSEFO R0UKICNpbmNsdWRlIDxvZm9uby9wbHVnaW4uaD4KQEAgLTUyLDEwICs1MywyNiBAQAogCiAjaW5j bHVkZSA8ZHJpdmVycy9oZnBtb2RlbS9oZnBtb2RlbS5oPgogCisjaW5jbHVkZSA8b2Zvbm8vZGJ1 cy5oPgorCisjZGVmaW5lIEJMVUVaX1NFUlZJQ0UgIm9yZy5ibHVleiIKKyNkZWZpbmUgQkxVRVpf UEFUSCAiLyIKKyNkZWZpbmUgQkxVRVpfTUFOQUdFUl9JTlRFUkZBQ0UgIm9yZy5ibHVlei5NYW5h Z2VyIgorI2RlZmluZSBCTFVFWl9BREFQVEVSX0lOVEVSRkFDRSAib3JnLmJsdWV6LkFkYXB0ZXIi CisjZGVmaW5lIEJMVUVaX0RFVklDRV9JTlRFUkZBQ0UgIm9yZy5ibHVlei5EZXZpY2UiCisjZGVm aW5lIEJMVUVaX09GT05PX0hGUF9JTlRFUkZBQ0UgIm9yZy5ibHVlei5vRm9ub0hGUCIKKworI2Rl ZmluZSBQUk9QRVJUWV9DSEFOR0VEICJQcm9wZXJ0eUNoYW5nZWQiCisKIHN0YXRpYyBjb25zdCBj aGFyICpicnNmX3ByZWZpeFtdID0geyAiK0JSU0Y6IiwgTlVMTCB9Owogc3RhdGljIGNvbnN0IGNo YXIgKmNpbmRfcHJlZml4W10gPSB7ICIrQ0lORDoiLCBOVUxMIH07CiBzdGF0aWMgY29uc3QgY2hh ciAqY21lcl9wcmVmaXhbXSA9IHsgIitDTUVSOiIsIE5VTEwgfTsKIAorc3RhdGljIERCdXNDb25u ZWN0aW9uICpjb25uZWN0aW9uOworc3RhdGljIGNoYXIgKm9mb25vX2hhbmRzZnJlZV9wYXRoOwor CitzdGF0aWMgaW50IHRpbWVvdXQ7CisKIHN0YXRpYyBpbnQgaGZwX2Rpc2FibGUoc3RydWN0IG9m b25vX21vZGVtICptb2RlbSk7CiAKIHN0YXRpYyB2b2lkIGhmcF9kZWJ1Zyhjb25zdCBjaGFyICpz dHIsIHZvaWQgKnVzZXJfZGF0YSkKQEAgLTYzLDYgKzgwLDYwIEBAIHN0YXRpYyB2b2lkIGhmcF9k ZWJ1Zyhjb25zdCBjaGFyICpzdHIsIHZvaWQgKnVzZXJfZGF0YSkKIAlvZm9ub19pbmZvKCIlcyIs IHN0cik7CiB9CiAKK3N0YXRpYyBpbnQgc2VuZF9tZXRob2RfY2FsbChjb25zdCBjaGFyICpkZXN0 LCBjb25zdCBjaGFyICpwYXRoLAorCQkJCWNvbnN0IGNoYXIgKmludGVyZmFjZSwgY29uc3QgY2hh ciAqbWV0aG9kLAorCQkJCURCdXNQZW5kaW5nQ2FsbE5vdGlmeUZ1bmN0aW9uIGNiLAorCQkJCXZv aWQgKnVzZXJfZGF0YSwgaW50IHR5cGUsIC4uLikKK3sKKwlEQnVzTWVzc2FnZSAqbXNnOworCURC dXNQZW5kaW5nQ2FsbCAqY2FsbDsKKwl2YV9saXN0IGFyZ3M7CisKKwltc2cgPSBkYnVzX21lc3Nh Z2VfbmV3X21ldGhvZF9jYWxsKGRlc3QsIHBhdGgsIGludGVyZmFjZSwgbWV0aG9kKTsKKwlpZiAo IW1zZykgeworCQlvZm9ub19lcnJvcigiVW5hYmxlIHRvIGFsbG9jYXRlIG5ldyBELUJ1cyAlcyBt ZXNzYWdlIiwgbWV0aG9kKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJdmFfc3RhcnQoYXJn cywgdHlwZSk7CisKKwlpZiAoIWRidXNfbWVzc2FnZV9hcHBlbmRfYXJnc192YWxpc3QobXNnLCB0 eXBlLCBhcmdzKSkgeworCQlkYnVzX21lc3NhZ2VfdW5yZWYobXNnKTsKKwkJdmFfZW5kKGFyZ3Mp OworCQlyZXR1cm4gLUVJTzsKKwl9CisKKwl2YV9lbmQoYXJncyk7CisKKwlpZiAoIWNiKSB7CisJ CWdfZGJ1c19zZW5kX21lc3NhZ2UoY29ubmVjdGlvbiwgbXNnKTsKKwkJcmV0dXJuIDA7CisJfQor CisJaWYgKCFkYnVzX2Nvbm5lY3Rpb25fc2VuZF93aXRoX3JlcGx5KGNvbm5lY3Rpb24sIG1zZywg JmNhbGwsIC0xKSkgeworCQlvZm9ub19lcnJvcigiU2VuZGluZyAlcyBmYWlsZWQiLCBtZXRob2Qp OworCQlkYnVzX21lc3NhZ2VfdW5yZWYobXNnKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJZGJ1 c19wZW5kaW5nX2NhbGxfc2V0X25vdGlmeShjYWxsLCBjYiwgdXNlcl9kYXRhLCBOVUxMKTsKKwlk YnVzX3BlbmRpbmdfY2FsbF91bnJlZihjYWxsKTsKKwlkYnVzX21lc3NhZ2VfdW5yZWYobXNnKTsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gaGZwX2VuYWJsZV90aW1lb3V0KGdw b2ludGVyIHVzZXIpCit7CisJc3RydWN0IG9mb25vX21vZGVtICptb2RlbSA9IHVzZXI7CisKKwlp ZiAob2Zvbm9fbW9kZW1fZ2V0X3Bvd2VyZWQobW9kZW0pKQorCQlyZXR1cm4gRkFMU0U7CisKKwlo ZnBfZGlzYWJsZShtb2RlbSk7CisJcmV0dXJuIEZBTFNFOworfQorCiBzdGF0aWMgdm9pZCBjaW5k X3N0YXR1c19jYihnYm9vbGVhbiBvaywgR0F0UmVzdWx0ICpyZXN1bHQsCiAJCQkJZ3BvaW50ZXIg dXNlcl9kYXRhKQogewpAQCAtMjQwLDYgKzMxMSw4NiBAQCBzdGF0aWMgaW50IHNlcnZpY2VfbGV2 ZWxfY29ubmVjdGlvbihzdHJ1Y3Qgb2Zvbm9fbW9kZW0gKm1vZGVtLAogCXJldHVybiAtRUlOUFJP R1JFU1M7CiB9CiAKK3N0YXRpYyB2b2lkIGhhbmRsZV9vZm9ub19wcm9wZXJ0eShjb25zdCBjaGFy ICpwcm9wZXJ0eSwgREJ1c01lc3NhZ2VJdGVyIHN1YiwKKwkJCQl2b2lkICp1c2VyX2RhdGEpCit7 CisJc3RydWN0IG9mb25vX21vZGVtICptb2RlbSA9IHVzZXJfZGF0YTsKKwljb25zdCBjaGFyICp0 dHk7CisJZ2Jvb2xlYW4gY29ubmVjdGVkOworCisJaWYgKGdfc3RyX2VxdWFsKHByb3BlcnR5LCAi RGV2aWNlIikpIHsKKwkJZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2Jhc2ljKCZzdWIsICZ0dHkpOwor CisJCWlmICh0aW1lb3V0KQorCQkJZ19zb3VyY2VfcmVtb3ZlKHRpbWVvdXQpOworCisJCXNlcnZp Y2VfbGV2ZWxfY29ubmVjdGlvbihtb2RlbSwgdHR5KTsKKwl9CisKKwlpZiAoZ19zdHJfZXF1YWwo cHJvcGVydHksICJDb25uZWN0ZWQiKSkgeworCQlkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYmFzaWMo JnN1YiwgJmNvbm5lY3RlZCk7CisKKwkJaWYgKCFjb25uZWN0ZWQgJiYgb2Zvbm9fbW9kZW1fZ2V0 X3Bvd2VyZWQobW9kZW0pKQorCQkJaGZwX2Rpc2FibGUobW9kZW0pOworCX0KK30KKworc3RhdGlj IHZvaWQgb2Zvbm9fcHJvcGVydHlfY2hhbmdlZChEQnVzTWVzc2FnZSAqbXNnLCB2b2lkICp1c2Vy X2RhdGEpCit7CisJREJ1c01lc3NhZ2VJdGVyIGl0ZXIsIHN1YjsKKwljb25zdCBjaGFyICpwcm9w ZXJ0eTsKKworCWRidXNfbWVzc2FnZV9pdGVyX2luaXQobXNnLCAmaXRlcik7CisKKwlpZiAoZGJ1 c19tZXNzYWdlX2l0ZXJfZ2V0X2FyZ190eXBlKCZpdGVyKSAhPSBEQlVTX1RZUEVfU1RSSU5HKSB7 CisJCW9mb25vX2Vycm9yKCJVbmV4cGVjdGVkIHNpZ25hdHVyZSBpbiAiCisJCQkJCSJvRm9ubyBQ cm9wZXJ0eUNoYW5nZWQgc2lnbmFsIik7CisJCXJldHVybjsKKwl9CisKKwlkYnVzX21lc3NhZ2Vf aXRlcl9nZXRfYmFzaWMoJml0ZXIsICZwcm9wZXJ0eSk7CisKKwlkYnVzX21lc3NhZ2VfaXRlcl9u ZXh0KCZpdGVyKTsKKwlkYnVzX21lc3NhZ2VfaXRlcl9yZWN1cnNlKCZpdGVyLCAmc3ViKTsKKwor CWhhbmRsZV9vZm9ub19wcm9wZXJ0eShwcm9wZXJ0eSwgc3ViLCB1c2VyX2RhdGEpOworfQorCitz dGF0aWMgREJ1c0hhbmRsZXJSZXN1bHQgb2Zvbm9faGFuZHNmcmVlX3NpZ25hbChEQnVzQ29ubmVj dGlvbiAqY29ubiwKKwkJCQlEQnVzTWVzc2FnZSAqbXNnLCB2b2lkICp1c2VyX2RhdGEpCit7CisJ aWYgKGRidXNfbWVzc2FnZV9nZXRfdHlwZShtc2cpICE9IERCVVNfTUVTU0FHRV9UWVBFX1NJR05B TCkKKwkJcmV0dXJuIERCVVNfSEFORExFUl9SRVNVTFRfTk9UX1lFVF9IQU5ETEVEOworCisJaWYg KGRidXNfbWVzc2FnZV9pc19zaWduYWwobXNnLCBCTFVFWl9PRk9OT19IRlBfSU5URVJGQUNFLAor CQkJCVBST1BFUlRZX0NIQU5HRUQpKQorCQlvZm9ub19wcm9wZXJ0eV9jaGFuZ2VkKG1zZywgdXNl cl9kYXRhKTsKKworCXJldHVybiBEQlVTX0hBTkRMRVJfUkVTVUxUX05PVF9ZRVRfSEFORExFRDsK K30KKworc3RhdGljIGludCBoZnBfYWRkX2RidXNfZmlsdGVyKHN0cnVjdCBvZm9ub19tb2RlbSAq bW9kZW0sIHZvaWQgKmZpbHRlcikKK3sKKwljaGFyIG1hdGNoX3N0cmluZ1sxMjhdOworCisJY29u bmVjdGlvbiA9IG9mb25vX2RidXNfZ2V0X2Nvbm5lY3Rpb24oKTsKKworCWRidXNfY29ubmVjdGlv bl9yZWYoY29ubmVjdGlvbik7CisKKwlpZiAoIWRidXNfY29ubmVjdGlvbl9hZGRfZmlsdGVyKGNv bm5lY3Rpb24sCisJCQkJKERCdXNIYW5kbGVNZXNzYWdlRnVuY3Rpb24pZmlsdGVyLAorCQkJCW1v ZGVtLCBOVUxMKSkgeworCQlvZm9ub19lcnJvcigiaGZwX2FkZF9kYnVzX2ZpbHRlcjogQ2FuJ3Qg YWRkIHNpZ25hbCBmaWx0ZXIiKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJc25wcmludGYobWF0 Y2hfc3RyaW5nLCBzaXplb2YobWF0Y2hfc3RyaW5nKSwgInR5cGU9c2lnbmFsLGludGVyZmFjZT0l cyIsCisJCQkJQkxVRVpfT0ZPTk9fSEZQX0lOVEVSRkFDRSk7CisJZGJ1c19idXNfYWRkX21hdGNo KGNvbm5lY3Rpb24sIG1hdGNoX3N0cmluZywgTlVMTCk7CisKKwlyZXR1cm4gMDsKK30KKwogc3Rh dGljIGludCBoZnBfcHJvYmUoc3RydWN0IG9mb25vX21vZGVtICptb2RlbSkKIHsKIAlzdHJ1Y3Qg aGZwX2RhdGEgKmRhdGE7CkBAIC0yNTYsOSArNDA3LDIxIEBAIHN0YXRpYyBpbnQgaGZwX3Byb2Jl KHN0cnVjdCBvZm9ub19tb2RlbSAqbW9kZW0pCiAKIAlvZm9ub19tb2RlbV9zZXRfZGF0YShtb2Rl bSwgZGF0YSk7CiAKKwloZnBfYWRkX2RidXNfZmlsdGVyKG1vZGVtLCBvZm9ub19oYW5kc2ZyZWVf c2lnbmFsKTsKKwogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCBoZnBfZGJ1c19jbGVhbnVw KHZvaWQgKmZpbHRlcikKK3sKKwlpZiAob2Zvbm9faGFuZHNmcmVlX3BhdGgpCisJCWdfZnJlZShv Zm9ub19oYW5kc2ZyZWVfcGF0aCk7CisKKwlkYnVzX2Nvbm5lY3Rpb25fcmVtb3ZlX2ZpbHRlcihj b25uZWN0aW9uLAorCQkJCShEQnVzSGFuZGxlTWVzc2FnZUZ1bmN0aW9uKWZpbHRlciwgTlVMTCk7 CisJZGJ1c19jb25uZWN0aW9uX3VucmVmKGNvbm5lY3Rpb24pOworfQorCiBzdGF0aWMgdm9pZCBo ZnBfcmVtb3ZlKHN0cnVjdCBvZm9ub19tb2RlbSAqbW9kZW0pCiB7CiAJZ3BvaW50ZXIgZGF0YSA9 IG9mb25vX21vZGVtX2dldF9kYXRhKG1vZGVtKTsKQEAgLTI2NywyMyArNDMwLDE0NyBAQCBzdGF0 aWMgdm9pZCBoZnBfcmVtb3ZlKHN0cnVjdCBvZm9ub19tb2RlbSAqbW9kZW0pCiAJCWdfZnJlZShk YXRhKTsKIAogCW9mb25vX21vZGVtX3NldF9kYXRhKG1vZGVtLCBOVUxMKTsKKworCWhmcF9kYnVz X2NsZWFudXAob2Zvbm9faGFuZHNmcmVlX3NpZ25hbCk7Cit9CisKK3N0YXRpYyB2b2lkIHBvcnRf Y29ubmVjdF9jYihEQnVzUGVuZGluZ0NhbGwgKmNhbGwsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sK KwlEQnVzRXJyb3IgZXJyOworCURCdXNNZXNzYWdlICpyZXBseTsKKwljb25zdCBjaGFyICptc2c7 CisKKwlyZXBseSA9IGRidXNfcGVuZGluZ19jYWxsX3N0ZWFsX3JlcGx5KGNhbGwpOworCisJZGJ1 c19lcnJvcl9pbml0KCZlcnIpOworCisJaWYgKGRidXNfbWVzc2FnZV9nZXRfYXJncyhyZXBseSwg JmVyciwgREJVU19UWVBFX1NUUklORywKKwkJCQkmbXNnLCBEQlVTX1RZUEVfSU5WQUxJRCkgPT0g RkFMU0UpIHsKKwkJaWYgKGRidXNfZXJyb3JfaXNfc2V0KCZlcnIpID09IFRSVUUpIHsKKwkJCW9m b25vX2Vycm9yKCIlcyIsIGVyci5tZXNzYWdlKTsKKwkJCWRidXNfZXJyb3JfZnJlZSgmZXJyKTsK KwkJCWdvdG8gZG9uZTsKKwkJfQorCX0KKworCWlmIChzdHJjbXAobXNnLCAib2siKSkKKwkJb2Zv bm9fZXJyb3IoIkNvbm5lY3QgZmFpbGVkOiAlcyIsIG1zZyk7Citkb25lOgorCWRidXNfbWVzc2Fn ZV91bnJlZihyZXBseSk7Cit9CisKK3N0YXRpYyB2b2lkIGZpbmRfZGV2aWNlX2NiKERCdXNQZW5k aW5nQ2FsbCAqY2FsbCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworCURCdXNFcnJvciBlcnI7CisJ REJ1c01lc3NhZ2UgKnJlcGx5OworCWNvbnN0IGNoYXIgKmRldmljZTsKKwlpbnQgcmV0OworCisJ cmVwbHkgPSBkYnVzX3BlbmRpbmdfY2FsbF9zdGVhbF9yZXBseShjYWxsKTsKKworCWRidXNfZXJy b3JfaW5pdCgmZXJyKTsKKworCWlmIChkYnVzX21lc3NhZ2VfZ2V0X2FyZ3MocmVwbHksICZlcnIs IERCVVNfVFlQRV9PQkpFQ1RfUEFUSCwKKwkJCQkmZGV2aWNlLCBEQlVTX1RZUEVfSU5WQUxJRCkg PT0gRkFMU0UpIHsKKwkJaWYgKGRidXNfZXJyb3JfaXNfc2V0KCZlcnIpID09IFRSVUUpIHsKKwkJ CW9mb25vX2Vycm9yKCIlcyIsIGVyci5tZXNzYWdlKTsKKwkJCWRidXNfZXJyb3JfZnJlZSgmZXJy KTsKKwkJfQorCQlnb3RvIGRvbmU7CisJfQorCisJb2Zvbm9fZGVidWcoIlVzaW5nIGRldmljZSAl cyIsIGRldmljZSk7CisJb2Zvbm9faGFuZHNmcmVlX3BhdGggPSBnX3N0cmR1cChkZXZpY2UpOwor CisJcmV0ID0gc2VuZF9tZXRob2RfY2FsbChCTFVFWl9TRVJWSUNFLCBkZXZpY2UsCisJCQkJQkxV RVpfT0ZPTk9fSEZQX0lOVEVSRkFDRSwgIkNvbm5lY3QiLAorCQkJCXBvcnRfY29ubmVjdF9jYiwg TlVMTCwgREJVU19UWVBFX0lOVkFMSUQpOworCisJaWYgKHJldCA8IDApCisJCW9mb25vX2Vycm9y KCJwb3J0X2Nvbm5lY3QgZmFpbGVkKCVkKSIsIHJldCk7CisKK2RvbmU6CisJZGJ1c19tZXNzYWdl X3VucmVmKHJlcGx5KTs7Cit9CisKK3N0YXRpYyB2b2lkIGdldF9hZGFwdGVyX2NiKERCdXNQZW5k aW5nQ2FsbCAqY2FsbCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworCURCdXNFcnJvciBlcnI7CisJ REJ1c01lc3NhZ2UgKnJlcGx5OworCWNvbnN0IGNoYXIgKmFkYXB0ZXI7CisJY29uc3QgY2hhciAq YWRkcmVzcyA9IHVzZXJfZGF0YTsKKwlpbnQgcmV0OworCisJcmVwbHkgPSBkYnVzX3BlbmRpbmdf Y2FsbF9zdGVhbF9yZXBseShjYWxsKTsKKworCWRidXNfZXJyb3JfaW5pdCgmZXJyKTsKKwlpZiAo ZGJ1c19tZXNzYWdlX2dldF9hcmdzKHJlcGx5LCAmZXJyLAorCQkJCURCVVNfVFlQRV9PQkpFQ1Rf UEFUSCwKKwkJCQkmYWRhcHRlciwgREJVU19UWVBFX0lOVkFMSUQpID09IEZBTFNFKSB7CisJCWlm IChhZGFwdGVyID09IE5VTEwpCisJCQlvZm9ub19lcnJvcigiYmx1ZXRvb3RoIGFkYXB0ZXIgaXMg bm90IGVuYWJsZWQiKTsKKworCQlpZiAoZGJ1c19lcnJvcl9pc19zZXQoJmVycikgPT0gVFJVRSkg eworCQkJb2Zvbm9fZXJyb3IoIiVzICVzIiwgYWRhcHRlciwgZXJyLm1lc3NhZ2UpOworCQkJZGJ1 c19lcnJvcl9mcmVlKCZlcnIpOworCQl9CisJCWdvdG8gZG9uZTsKKwl9CisKKwlyZXQgPSBzZW5k X21ldGhvZF9jYWxsKEJMVUVaX1NFUlZJQ0UsIGFkYXB0ZXIsCisJCQkJQkxVRVpfQURBUFRFUl9J TlRFUkZBQ0UsICJGaW5kRGV2aWNlIiwKKwkJCQlmaW5kX2RldmljZV9jYiwgTlVMTCwKKwkJCQlE QlVTX1RZUEVfU1RSSU5HLCAmYWRkcmVzcywKKwkJCQlEQlVTX1RZUEVfSU5WQUxJRCk7CisKKwlp ZiAocmV0IDwgMCkKKwkJb2Zvbm9fZXJyb3IoImZpbmRfZGV2aWNlIGZhaWxlZCglZCkiLCByZXQp OworCitkb25lOgorCWRidXNfbWVzc2FnZV91bnJlZihyZXBseSk7CisKK30KKworc3RhdGljIGlu dCBoZnBfY29ubmVjdF9vZm9ub19oYW5kc2ZyZWUoY29uc3QgY2hhciAqYWRkcmVzcykKK3sKKwlv Zm9ub19kZWJ1ZygiQ29ubmVjdCB0byBibHVldG9vdGggZGFlbW9uIik7CisKKwlyZXR1cm4gc2Vu ZF9tZXRob2RfY2FsbChCTFVFWl9TRVJWSUNFLCBCTFVFWl9QQVRILAorCQkJCUJMVUVaX01BTkFH RVJfSU5URVJGQUNFLCAiRGVmYXVsdEFkYXB0ZXIiLAorCQkJCWdldF9hZGFwdGVyX2NiLCAoY2hh ciAqKWFkZHJlc3MsCisJCQkJREJVU19UWVBFX0lOVkFMSUQpOwogfQogCiAvKiBwb3dlciB1cCBo YXJkd2FyZSAqLwogc3RhdGljIGludCBoZnBfZW5hYmxlKHN0cnVjdCBvZm9ub19tb2RlbSAqbW9k ZW0pCiB7Ci0JY29uc3QgY2hhciAqdHR5OwotCWludCByZXQ7CisJY29uc3QgY2hhciAqYWRkcmVz czsKIAogCURCRygiJXAiLCBtb2RlbSk7CiAKLQl0dHkgPSBvZm9ub19tb2RlbV9nZXRfc3RyaW5n KG1vZGVtLCAiRGV2aWNlIik7Ci0JaWYgKHR0eSA9PSBOVUxMKQorCWFkZHJlc3MgPSBvZm9ub19t b2RlbV9nZXRfc3RyaW5nKG1vZGVtLCAiQWRkcmVzcyIpOworCisJREJHKCJhZGRyZXNzICVzIiwg YWRkcmVzcyk7CisKKwlpZiAoYWRkcmVzcyA9PSBOVUxMKQogCQlyZXR1cm4gLUVJTlZBTDsKIAot CXJldCA9IHNlcnZpY2VfbGV2ZWxfY29ubmVjdGlvbihtb2RlbSwgdHR5KTsKKwl0aW1lb3V0ID0g Z190aW1lb3V0X2FkZF9zZWNvbmRzKDEwLCBoZnBfZW5hYmxlX3RpbWVvdXQsIG1vZGVtKTsKKwor CWlmIChoZnBfY29ubmVjdF9vZm9ub19oYW5kc2ZyZWUoYWRkcmVzcykgIT0gMCkKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwlyZXR1cm4gLUVJTlBST0dSRVNTOworfQorCitzdGF0aWMgaW50IGhmcF9k aXNjb25uZWN0X29mb25vX2hhbmRzZnJlZSgpCit7CisJaWYgKCFvZm9ub19oYW5kc2ZyZWVfcGF0 aCB8fCAhY29ubmVjdGlvbikKKwkJcmV0dXJuIC0xOwogCi0JcmV0dXJuIHJldDsKKwlyZXR1cm4g c2VuZF9tZXRob2RfY2FsbChCTFVFWl9TRVJWSUNFLCBvZm9ub19oYW5kc2ZyZWVfcGF0aCwKKwkJ CQlCTFVFWl9PRk9OT19IRlBfSU5URVJGQUNFLCAiRGlzY29ubmVjdCIsCisJCQkJTlVMTCwgTlVM TCwgREJVU19UWVBFX0lOVkFMSUQpOwogfQogCiBzdGF0aWMgaW50IGhmcF9kaXNhYmxlKHN0cnVj dCBvZm9ub19tb2RlbSAqbW9kZW0pCkBAIC0zMDMsNiArNTkwLDcgQEAgc3RhdGljIGludCBoZnBf ZGlzYWJsZShzdHJ1Y3Qgb2Zvbm9fbW9kZW0gKm1vZGVtKQogCiAJb2Zvbm9fbW9kZW1fc2V0X3Bv d2VyZWQobW9kZW0sIEZBTFNFKTsKIAorCWhmcF9kaXNjb25uZWN0X29mb25vX2hhbmRzZnJlZSgp OwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9wbHVnaW5zL21vZGVtY29uZi5jIGIvcGx1 Z2lucy9tb2RlbWNvbmYuYwppbmRleCAzOWE2MmI4Li5lNzE1ODIyIDEwMDY0NAotLS0gYS9wbHVn aW5zL21vZGVtY29uZi5jCisrKyBiL3BsdWdpbnMvbW9kZW1jb25mLmMKQEAgLTEyMiwxMiArMTIy LDExIEBAIHN0YXRpYyBzdHJ1Y3Qgb2Zvbm9fbW9kZW0gKmNyZWF0ZV9tb2RlbShHS2V5RmlsZSAq a2V5ZmlsZSwgY29uc3QgY2hhciAqZ3JvdXApCiAKIAltb2RlbSA9IG9mb25vX21vZGVtX2NyZWF0 ZShkcml2ZXIpOwogCi0JaWYgKCFnX3N0cmNtcDAoZHJpdmVyLCAicGhvbmVzaW0iKSkKKwlpZiAo IWdfc3RyY21wMChkcml2ZXIsICJwaG9uZXNpbSIpIHx8ICFnX3N0cmNtcDAoZHJpdmVyLCAiaGZw IikpCiAJCXNldF9hZGRyZXNzKG1vZGVtLCBrZXlmaWxlLCBncm91cCk7CiAKIAlpZiAoIWdfc3Ry Y21wMChkcml2ZXIsICJhdGdlbiIpIHx8ICFnX3N0cmNtcDAoZHJpdmVyLCAiZzEiKSB8fAogCQkJ CQkJIWdfc3RyY21wMChkcml2ZXIsICJjYWx5cHNvIikgfHwKLQkJCQkJCSFnX3N0cmNtcDAoZHJp dmVyLCAiaGZwIikgfHwKIAkJCQkJCSFnX3N0cmNtcDAoZHJpdmVyLCAicGFsbXByZSIpKQogCQlz ZXRfZGV2aWNlKG1vZGVtLCBrZXlmaWxlLCBncm91cCk7CiAKLS0gCjEuNi4yLjUKCg== --_004_0463F45F3606F4428ED35AC8C709F92E089CA6A628pdsmsx502ccrc_ Content-Type: application/octet-stream; name="0003-oFonoHFP-Add-oFonoHFP-patch-in-PulseAudio.patch" Content-Description: 0003-oFonoHFP-Add-oFonoHFP-patch-in-PulseAudio.patch Content-Disposition: attachment; filename="0003-oFonoHFP-Add-oFonoHFP-patch-in-PulseAudio.patch"; size=7333; creation-date="Thu, 12 Nov 2009 15:45:42 GMT"; modification-date="Thu, 12 Nov 2009 15:45:42 GMT" Content-Transfer-Encoding: base64 RnJvbSBiN2RmM2Y5MTU2MmJlZTkzYWY2ZWJmOTVkOTA5NmRlYzNlNzgzZWMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGVuaHVhIFpoYW5nIDx6aGVuaHVhLnpoYW5nQGludGVsLmNv bT4KRGF0ZTogVGh1LCAxMiBOb3YgMjAwOSAxOToyNzoxNyArMDgwMApTdWJqZWN0OiBbUEFUQ0gg My8zXSBvRm9ub0hGUDogQWRkIG9Gb25vSEZQIHBhdGNoIGluIFB1bHNlQXVkaW8KClRoZSBwYXRj aCBsaXN0ZW5zIENhbGxTdGFydGVkIGFuZCBDYWxsRW5kZWQgc2lnbmFsIHRvIGVuYWJsZSBQQQpw bHVnaW5zIGZvciBCbHVlWi4gSXQgY3JlYXRlcyBCVCBzb3VyY2UgYW5kIHNpbmsgaW4gUEEuIEl0 J3Mgbm90CmEgY29tcGxldGUgcGF0Y2ggc28geW91IHN0aWxsIG5lZWQgdG8gbG9hZCBsb29wYmFj ayBtb2R1bGUKbWFudWFsbHkuIEZvciBleGFtcGxlLCByZWRpcmVjdCBCVCBzb3VyY2UgdG8gc3Bl YWtlcjoKCglsb2FkLW1vZHVsZSBtb2R1bGUtbG9vcGJhY2sgc291cmNlPSJibHVlel9zb3VyY2Uu WFguLlhYIgpzaW5rPSJhbHNhX291dHB1dC4wLmFuYWxvZy1zdGVyZW8iCgpMYXN0IGNvbW1pdDog YWZkMWI2ZDM1NWVmMWE0MWNiICh2MC45LjE5KS4KLS0tCiBzcmMvbW9kdWxlcy9ibHVldG9vdGgv Ymx1ZXRvb3RoLXV0aWwuYyAgICAgICAgICB8ICAgMzkgKysrKysrKysrKysrKysrKysrKystLS0K IHNyYy9tb2R1bGVzL2JsdWV0b290aC9tb2R1bGUtYmx1ZXRvb3RoLWRldmljZS5jIHwgICAxMyAr KysrKystLQogMiBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL2JsdWV0b290aC9ibHVldG9vdGgtdXRpbC5jIGIv c3JjL21vZHVsZXMvYmx1ZXRvb3RoL2JsdWV0b290aC11dGlsLmMKaW5kZXggZjhjNWI3Ny4uZDBj YjRkYSAxMDA2NDQKLS0tIGEvc3JjL21vZHVsZXMvYmx1ZXRvb3RoL2JsdWV0b290aC11dGlsLmMK KysrIGIvc3JjL21vZHVsZXMvYmx1ZXRvb3RoL2JsdWV0b290aC11dGlsLmMKQEAgLTEyMywxMCAr MTIzLDExIEBAIHN0YXRpYyBwYV9ib29sX3QgZGV2aWNlX2lzX2F1ZGlvKHBhX2JsdWV0b290aF9k ZXZpY2UgKmQpIHsKIAogICAgIHJldHVybgogICAgICAgICBkLT5kZXZpY2VfaW5mb192YWxpZCAm JgotICAgICAgICAoZC0+YXVkaW9fc3RhdGUgIT0gUEFfQlRfQVVESU9fU1RBVEVfSU5WQUxJRCAm JgorICAgICAgICBkLT5hdWRpb19zdGF0ZSAhPSBQQV9CVF9BVURJT19TVEFURV9JTlZBTElEOwor ICAgICAgICAvKihkLT5hdWRpb19zdGF0ZSAhPSBQQV9CVF9BVURJT19TVEFURV9JTlZBTElEICYm CiAgICAgICAgICAoZC0+YXVkaW9fc2lua19zdGF0ZSAhPSBQQV9CVF9BVURJT19TVEFURV9JTlZB TElEIHx8CiAgICAgICAgICAgZC0+YXVkaW9fc291cmNlX3N0YXRlICE9IFBBX0JUX0FVRElPX1NU QVRFX0lOVkFMSUQgfHwKLSAgICAgICAgICBkLT5oZWFkc2V0X3N0YXRlICE9IFBBX0JUX0FVRElP X1NUQVRFX0lOVkFMSUQpKTsKKyAgICAgICAgICBkLT5oZWFkc2V0X3N0YXRlICE9IFBBX0JUX0FV RElPX1NUQVRFX0lOVkFMSUQpKTsqLwogfQogCiBzdGF0aWMgaW50IHBhcnNlX2RldmljZV9wcm9w ZXJ0eShwYV9ibHVldG9vdGhfZGlzY292ZXJ5ICp5LCBwYV9ibHVldG9vdGhfZGV2aWNlICpkLCBE QnVzTWVzc2FnZUl0ZXIgKmkpIHsKQEAgLTU3Nyw3ICs1NzgsMzEgQEAgc3RhdGljIERCdXNIYW5k bGVyUmVzdWx0IGZpbHRlcl9jYihEQnVzQ29ubmVjdGlvbiAqYnVzLCBEQnVzTWVzc2FnZSAqbSwg dm9pZCAqdXMKICAgICAgICAgICAgIGRidXNfbWVzc2FnZV9nZXRfcGF0aChtKSwKICAgICAgICAg ICAgIGRidXNfbWVzc2FnZV9nZXRfbWVtYmVyKG0pKTsKIAotICAgIGlmIChkYnVzX21lc3NhZ2Vf aXNfc2lnbmFsKG0sICJvcmcuYmx1ZXouQWRhcHRlciIsICJEZXZpY2VSZW1vdmVkIikpIHsKKyAg ICBpZiAoZGJ1c19tZXNzYWdlX2dldF9tZW1iZXIobSkgJiYgIXN0cmNtcChkYnVzX21lc3NhZ2Vf Z2V0X21lbWJlcihtKSwiQ2FsbFN0YXJ0ZWQiKSkgeworICAgICAgICBwYV9sb2dfZXJyb3IoIkNh bGxTdGFydGVkIik7CisgICAgICAgIHBhX2JsdWV0b290aF9kZXZpY2UgKmQ7CisKKyAgICAgICAg aWYgKChkID0gcGFfaGFzaG1hcF9nZXQoeS0+ZGV2aWNlcywgZGJ1c19tZXNzYWdlX2dldF9wYXRo KG0pKSkpIHsKKyAgICAgICAgICAgIGlmIChkYnVzX21lc3NhZ2VfaGFzX2ludGVyZmFjZShtLCAi b3JnLmJsdWV6Lm9Gb25vSEZQIikpIHsKKyAgICAgICAgICAgICAgICBwYV9sb2dfZXJyb3IoIm9G b25vSEZQIENhbGxTdGFydGVkIGRldGVjdGVkXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIGQtPmF1ZGlvX3N0YXRlID0gUEFfQlRfQVVESU9fU1RBVEVfQ09OTkVDVEVEOworICAgICAg ICAgICAgcnVuX2NhbGxiYWNrKHksIGQsIEZBTFNFKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBl bHNlIGlmIChkYnVzX21lc3NhZ2VfZ2V0X21lbWJlcihtKSAmJiAhc3RyY21wKGRidXNfbWVzc2Fn ZV9nZXRfbWVtYmVyKG0pLCJDYWxsRW5kZWQiKSkgeworICAgICAgICBwYV9sb2dfZXJyb3IoIkNh bGxFbmRlZCIpOworICAgICAgICBwYV9ibHVldG9vdGhfZGV2aWNlICpkOworCisgICAgICAgIGlm ICgoZCA9IHBhX2hhc2htYXBfZ2V0KHktPmRldmljZXMsIGRidXNfbWVzc2FnZV9nZXRfcGF0aCht KSkpKSB7CisgICAgICAgICAgICBpZiAoZGJ1c19tZXNzYWdlX2hhc19pbnRlcmZhY2UobSwgIm9y Zy5ibHVlei5vRm9ub0hGUCIpKSB7CisgICAgICAgICAgICAgICAgcGFfbG9nX2Vycm9yKCJvRm9u b0hGUCBDYWxsRW5kZWQgZGV0ZWN0ZWRcbiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg ZC0+YXVkaW9fc3RhdGUgPSBQQV9CVF9BVURJT19TVEFURV9ESVNDT05ORUNURUQ7CisgICAgICAg ICAgICBydW5fY2FsbGJhY2soeSwgZCwgVFJVRSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxz ZSBpZiAoZGJ1c19tZXNzYWdlX2lzX3NpZ25hbChtLCAib3JnLmJsdWV6LkFkYXB0ZXIiLCAiRGV2 aWNlUmVtb3ZlZCIpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGg7CiAgICAgICAgIHBhX2Js dWV0b290aF9kZXZpY2UgKmQ7CiAKQEAgLTc5NCw3ICs4MTksOSBAQCBwYV9ibHVldG9vdGhfZGlz Y292ZXJ5KiBwYV9ibHVldG9vdGhfZGlzY292ZXJ5X2dldChwYV9jb3JlICpjKSB7CiAgICAgICAg ICAgICAgICAgInR5cGU9J3NpZ25hbCcsc2VuZGVyPSdvcmcuYmx1ZXonLGludGVyZmFjZT0nb3Jn LmJsdWV6LkF1ZGlvJyxtZW1iZXI9J1Byb3BlcnR5Q2hhbmdlZCciLAogICAgICAgICAgICAgICAg ICJ0eXBlPSdzaWduYWwnLHNlbmRlcj0nb3JnLmJsdWV6JyxpbnRlcmZhY2U9J29yZy5ibHVlei5I ZWFkc2V0JyxtZW1iZXI9J1Byb3BlcnR5Q2hhbmdlZCciLAogICAgICAgICAgICAgICAgICJ0eXBl PSdzaWduYWwnLHNlbmRlcj0nb3JnLmJsdWV6JyxpbnRlcmZhY2U9J29yZy5ibHVlei5BdWRpb1Np bmsnLG1lbWJlcj0nUHJvcGVydHlDaGFuZ2VkJyIsCi0gICAgICAgICAgICAgICAgInR5cGU9J3Np Z25hbCcsc2VuZGVyPSdvcmcuYmx1ZXonLGludGVyZmFjZT0nb3JnLmJsdWV6LkF1ZGlvU291cmNl JyxtZW1iZXI9J1Byb3BlcnR5Q2hhbmdlZCciLCBOVUxMKSA8IDApIHsKKyAgICAgICAgICAgICAg ICAidHlwZT0nc2lnbmFsJyxzZW5kZXI9J29yZy5ibHVleicsaW50ZXJmYWNlPSdvcmcuYmx1ZXou QXVkaW9Tb3VyY2UnLG1lbWJlcj0nUHJvcGVydHlDaGFuZ2VkJyIsCisgICAgICAgICAgICAgICAg InR5cGU9J3NpZ25hbCcsc2VuZGVyPSdvcmcuYmx1ZXonLGludGVyZmFjZT0nb3JnLmJsdWV6Lm9G b25vSEZQJyxtZW1iZXI9J0NhbGxTdGFydGVkJyIsCisgICAgICAgICAgICAgICAgInR5cGU9J3Np Z25hbCcsc2VuZGVyPSdvcmcuYmx1ZXonLGludGVyZmFjZT0nb3JnLmJsdWV6Lm9Gb25vSEZQJyxt ZW1iZXI9J0NhbGxFbmRlZCciLCBOVUxMKSA8IDApIHsKICAgICAgICAgcGFfbG9nKCJGYWlsZWQg dG8gYWRkIEQtQnVzIG1hdGNoZXM6ICVzIiwgZXJyLm1lc3NhZ2UpOwogICAgICAgICBnb3RvIGZh aWw7CiAgICAgfQpAQCAtODQ4LDcgKzg3NSw5IEBAIHZvaWQgcGFfYmx1ZXRvb3RoX2Rpc2NvdmVy eV91bnJlZihwYV9ibHVldG9vdGhfZGlzY292ZXJ5ICp5KSB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgInR5cGU9J3NpZ25hbCcsc2VuZGVyPSdvcmcuYmx1ZXonLGludGVyZmFjZT0n b3JnLmJsdWV6LkF1ZGlvJyxtZW1iZXI9J1Byb3BlcnR5Q2hhbmdlZCciLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJ0eXBlPSdzaWduYWwnLHNlbmRlcj0nb3JnLmJsdWV6JyxpbnRl cmZhY2U9J29yZy5ibHVlei5IZWFkc2V0JyxtZW1iZXI9J1Byb3BlcnR5Q2hhbmdlZCciLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlPSdzaWduYWwnLHNlbmRlcj0nb3JnLmJs dWV6JyxpbnRlcmZhY2U9J29yZy5ibHVlei5BdWRpb1NpbmsnLG1lbWJlcj0nUHJvcGVydHlDaGFu Z2VkJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGU9J3NpZ25hbCcsc2Vu ZGVyPSdvcmcuYmx1ZXonLGludGVyZmFjZT0nb3JnLmJsdWV6LkF1ZGlvU291cmNlJyxtZW1iZXI9 J1Byb3BlcnR5Q2hhbmdlZCciLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAidHlwZT0nc2lnbmFsJyxzZW5kZXI9J29yZy5ibHVleicsaW50ZXJmYWNlPSdvcmcuYmx1ZXou QXVkaW9Tb3VyY2UnLG1lbWJlcj0nUHJvcGVydHlDaGFuZ2VkJyIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgInR5cGU9J3NpZ25hbCcsc2VuZGVyPSdvcmcuYmx1ZXonLGludGVyZmFj ZT0nb3JnLmJsdWV6Lm9Gb25vSEZQJyxtZW1iZXI9J0NhbGxTdGFydGVkJyIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgInR5cGU9J3NpZ25hbCcsc2VuZGVyPSdvcmcuYmx1ZXonLGlu dGVyZmFjZT0nb3JnLmJsdWV6Lm9Gb25vSEZQJyxtZW1iZXI9J0NhbGxFbmRlZCciLCBOVUxMKTsK IAogICAgICAgICBkYnVzX2Nvbm5lY3Rpb25fcmVtb3ZlX2ZpbHRlcihwYV9kYnVzX2Nvbm5lY3Rp b25fZ2V0KHktPmNvbm5lY3Rpb24pLCBmaWx0ZXJfY2IsIHkpOwogCmRpZmYgLS1naXQgYS9zcmMv bW9kdWxlcy9ibHVldG9vdGgvbW9kdWxlLWJsdWV0b290aC1kZXZpY2UuYyBiL3NyYy9tb2R1bGVz L2JsdWV0b290aC9tb2R1bGUtYmx1ZXRvb3RoLWRldmljZS5jCmluZGV4IDQ1OTJmY2EuLmM4ZDY2 ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9tb2R1bGVzL2JsdWV0b290aC9tb2R1bGUtYmx1ZXRvb3RoLWRl dmljZS5jCisrKyBiL3NyYy9tb2R1bGVzL2JsdWV0b290aC9tb2R1bGUtYmx1ZXRvb3RoLWRldmlj ZS5jCkBAIC02NzYsNiArNjc2LDkgQEAgc3RhdGljIGludCBzZXRfY29uZihzdHJ1Y3QgdXNlcmRh dGEgKnUpIHsKICAgICBtc2cub3Blbl9yZXEuaC5uYW1lID0gQlRfT1BFTjsKICAgICBtc2cub3Bl bl9yZXEuaC5sZW5ndGggPSBzaXplb2YobXNnLm9wZW5fcmVxKTsKIAorICAgIHBhX2Fzc2VydCh1 LT5hZGRyZXNzKTsKKyAgICBwYV9zdHJsY3B5KG1zZy5vcGVuX3JlcS5kZXN0aW5hdGlvbiwgdS0+ YWRkcmVzcywgc2l6ZW9mKG1zZy5vcGVuX3JlcS5kZXN0aW5hdGlvbikpOworCiAgICAgcGFfc3Ry bGNweShtc2cub3Blbl9yZXEub2JqZWN0LCB1LT5wYXRoLCBzaXplb2YobXNnLm9wZW5fcmVxLm9i amVjdCkpOwogICAgIG1zZy5vcGVuX3JlcS5zZWlkID0gKHUtPnByb2ZpbGUgPT0gUFJPRklMRV9B MkRQIHx8IHUtPnByb2ZpbGUgPT0gUFJPRklMRV9BMkRQX1NPVVJDRSkgPyB1LT5hMmRwLnNiY19j YXBhYmlsaXRpZXMuY2FwYWJpbGl0eS5zZWlkIDogQlRfQTJEUF9TRUlEX1JBTkdFICsgMTsKICAg ICBtc2cub3Blbl9yZXEubG9jayA9ICh1LT5wcm9maWxlID09IFBST0ZJTEVfQTJEUCkgPyBCVF9X UklURV9MT0NLIDogQlRfUkVBRF9MT0NLIHwgQlRfV1JJVEVfTE9DSzsKQEAgLTIyMDksNyArMjIx MiwxMSBAQCBzdGF0aWMgaW50IGFkZF9jYXJkKHN0cnVjdCB1c2VyZGF0YSAqdSwgY29uc3QgcGFf Ymx1ZXRvb3RoX2RldmljZSAqZGV2aWNlKSB7CiAgICAgfQogCiAgICAgaWYgKHBhX2JsdWV0b290 aF91dWlkX2hhcyhkZXZpY2UtPnV1aWRzLCBIU1BfSFNfVVVJRCkgfHwKLSAgICAgICAgcGFfYmx1 ZXRvb3RoX3V1aWRfaGFzKGRldmljZS0+dXVpZHMsIEhGUF9IU19VVUlEKSkgeworICAgICAgICBw YV9ibHVldG9vdGhfdXVpZF9oYXMoZGV2aWNlLT51dWlkcywgSEZQX0hTX1VVSUQpIHx8CisJCS8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgICAg cGFfYmx1ZXRvb3RoX3V1aWRfaGFzKGRldmljZS0+dXVpZHMsIEhTUF9BR19VVUlEKSB8fAorICAg ICAgICBwYV9ibHVldG9vdGhfdXVpZF9oYXMoZGV2aWNlLT51dWlkcywgSEZQX0FHX1VVSUQpKSB7 CisJCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAg ICAgICAgcCA9IHBhX2NhcmRfcHJvZmlsZV9uZXcoImhzcCIsIF8oIlRlbGVwaG9ueSBEdXBsZXgg KEhTUC9IRlApIiksIHNpemVvZihlbnVtIHByb2ZpbGUpKTsKICAgICAgICAgcC0+cHJpb3JpdHkg PSAyMDsKICAgICAgICAgcC0+bl9zaW5rcyA9IDE7CkBAIC0yMjQ5LDE0ICsyMjU2LDE0IEBAIHN0 YXRpYyBpbnQgYWRkX2NhcmQoc3RydWN0IHVzZXJkYXRhICp1LCBjb25zdCBwYV9ibHVldG9vdGhf ZGV2aWNlICpkZXZpY2UpIHsKICAgICB1LT5jYXJkLT5zZXRfcHJvZmlsZSA9IGNhcmRfc2V0X3By b2ZpbGU7CiAKICAgICBkID0gUEFfQ0FSRF9QUk9GSUxFX0RBVEEodS0+Y2FyZC0+YWN0aXZlX3By b2ZpbGUpOwotCisvKgogICAgIGlmICgoZGV2aWNlLT5oZWFkc2V0X3N0YXRlIDwgUEFfQlRfQVVE SU9fU1RBVEVfQ09OTkVDVEVEICYmICpkID09IFBST0ZJTEVfSFNQKSB8fAogICAgICAgICAoZGV2 aWNlLT5hdWRpb19zaW5rX3N0YXRlIDwgUEFfQlRfQVVESU9fU1RBVEVfQ09OTkVDVEVEICYmICpk ID09IFBST0ZJTEVfQTJEUCkpIHsKICAgICAgICAgcGFfbG9nX3dhcm4oIkRlZmF1bHQgcHJvZmls ZSBub3QgY29ubmVjdGVkLCBzZWxlY3Rpbmcgb2ZmIHByb2ZpbGUiKTsKICAgICAgICAgdS0+Y2Fy ZC0+YWN0aXZlX3Byb2ZpbGUgPSBwYV9oYXNobWFwX2dldCh1LT5jYXJkLT5wcm9maWxlcywgIm9m ZiIpOwogICAgICAgICB1LT5jYXJkLT5zYXZlX3Byb2ZpbGUgPSBGQUxTRTsKICAgICB9Ci0KKyov CiAgICAgZCA9IFBBX0NBUkRfUFJPRklMRV9EQVRBKHUtPmNhcmQtPmFjdGl2ZV9wcm9maWxlKTsK ICAgICB1LT5wcm9maWxlID0gKmQ7CiAKLS0gCjEuNi4yLjUKCg== --_004_0463F45F3606F4428ED35AC8C709F92E089CA6A628pdsmsx502ccrc_--