From mboxrd@z Thu Jan 1 00:00:00 1970 From: Darius Subject: [PATCH V11] I2C driver for IMX Date: Wed, 23 Jul 2008 10:20:12 +0300 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040703050901040606040407" Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: i2c-bounces-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org Errors-To: i2c-bounces-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org To: i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org Cc: linux-arm-kernel-xIg/pKzrS19vn6HldHNs0ANdhmdF6hFW@public.gmane.org List-Id: linux-i2c@vger.kernel.org This is a multi-part message in MIME format. --------------040703050901040606040407 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Description: Implementation of I2C Adapter/Algorithm Driver for I2C Bus integrated in Freescale's i.MXL and i.MX1 processors Changes from V10 version: - adapter class changed to I2C_CLASS_ALL - changes regarding new IMX Clock API Signed-off-by: Darius Augulis --- --------------040703050901040606040407 Content-Type: text/plain; name="patch-i2c-imx" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="patch-i2c-imx" SW5kZXg6IGxpbnV4LTIuNi4yNi1naXQ3L2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaW14LmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gL2Rldi9udWxsCisrKyBsaW51eC0yLjYuMjYtZ2l0Ny9kcml2 ZXJzL2kyYy9idXNzZXMvaTJjLWlteC5jCkBAIC0wLDAgKzEsNjIzIEBACisvKgorICoJQ29w eXJpZ2h0IChDKSAyMDAyIE1vdG9yb2xhIEdTRy1DaGluYQorICoKKyAqCVRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq CW1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisgKglhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMgorICoJb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICoJVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKglidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICoJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorICoJR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAqCisgKglZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICoJYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqCUZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEt MTMwNywKKyAqCVVTQS4KKyAqCisgKiBBdXRob3I6CisgKglEYXJpdXMgQXVndWxpcywgVGVs dG9uaWthIEluYy4KKyAqCisgKiBEZXNjLjoKKyAqCUltcGxlbWVudGF0aW9uIG9mIEkyQyBB ZGFwdGVyL0FsZ29yaXRobSBEcml2ZXIKKyAqCWZvciBJMkMgQnVzIGludGVncmF0ZWQgaW4g aS5NWEwsIGkuTVgxCisgKgorICoJbW9kdWxlIHBhcmFtZXRlcnM6CisgKgkJLSBjbGtmcmVx OgorICoJCQlTZXRzIHRoZSBkZXNpcmVkIGNsb2NrIHJhdGUKKyAqCQkJVGhlIGRlZmF1bHQg dmFsdWUgaXMgMTAwMDAwCisgKgkJCU1heCB2YWx1ZSBpcyA0MDAwMDAKKyAqCisgKglEZXJp dmVkIGZyb20gTW90b3JvbGEgR1NHIENoaW5hIEkyQyBleGFtcGxlIGRyaXZlcgorICoKKyAq CUNvcHlyaWdodCAoQykgMjAwNSBUb3JzdGVuIEtvc2Nob3JyZWsgPGtvc2Nob3JyZWsgYXQg c3luZXJ0cm9uaXh4LmRlCisgKglQb3J0aW9uczoKKyAqCUNvcHlyaWdodCAoQykgMjAwNSBN YXR0aGlhcyBCbGFzY2hrZSA8Ymxhc2Noa2UgYXQgc3luZXJ0cm9uaXh4LmRlCisgKglDb3B5 cmlnaHQgKEMpIDIwMDcgUmlnaHRIYW5kIFRlY2hub2xvZ2llcywgSW5jLiA8YWR5ZXJhdHJp Z2h0aGFuZHRlY2guY29tPgorICoJQ29weXJpZ2h0IChDKSAyMDA4IERhcml1cyBBdWd1bGlz IDxkYXJpdXMuYXVndWxpcyBhdCB0ZWx0b25pa2EubHQ+CisgKgorICovCisKKy8qKiBJbmNs dWRlcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5j bHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVk ZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNs dWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxp bnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5j bHVkZSA8bGludXgvY2xrLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvaXJxcy5oPgorI2luY2x1 ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvaW14LXJlZ3Mu aD4KKworLyoqIERlZmluZXMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisKKy8qIFRoaXMgd2lsbCBiZSB0aGUgZHJpdmVyIG5hbWUgdGhlIGtlcm5lbCBy ZXBvcnRzICovCisjZGVmaW5lIERSSVZFUl9OQU1FICJpbXgtaTJjIgorCisvKiBEZWZhdWx0 IHZhbHVlcyBvZiBtb2R1bGUgcGFyYW1ldGVycyAqLworI2RlZmluZSBJTVhfSTJDX0JJVF9S QVRFCTEwMDAwMAkvKiAxMDBrSHogKi8KKworLyogVGltZW91dHMgKi8KKyNkZWZpbmUgSTJD X0lNWF9USU1FX0JVU1kJMjAwMAkvKiBsb29wIGNvdW50ICovCisjZGVmaW5lIEkyQ19JTVhf VElNRV9BQ0sJMjAwMAkvKiBsb29wIGNvdW50ICovCisjZGVmaW5lIEkyQ19JTVhfVElNRV9U UlgJNQkvKiBzZWNvbmRzICovCisKKy8qIElNWCBJMkMgcmVnaXN0ZXJzICovCisjZGVmaW5l IElNWF9JMkNfSUFEUgkweDAwCS8qIGkyYyBzbGF2ZSBhZGRyZXNzICovCisjZGVmaW5lIElN WF9JMkNfSUZEUgkweDA0CS8qIGkyYyBmcmVxdWVuY3kgZGl2aWRlciAqLworI2RlZmluZSBJ TVhfSTJDX0kyQ1IJMHgwOAkvKiBpMmMgY29udHJvbCAqLworI2RlZmluZSBJTVhfSTJDX0ky U1IJMHgwQwkvKiBpMmMgc3RhdHVzICovCisjZGVmaW5lIElNWF9JMkNfSTJEUgkweDEwCS8q IGkyYyB0cmFuc2ZlciBkYXRhICovCisKKy8qIEJpdHMgb2YgSU1YIEkyQyByZWdpc3RlcnMg Ki8KKyNkZWZpbmUgSTJTUl9SWEFLCTB4MDEKKyNkZWZpbmUgSTJTUl9JSUYJMHgwMgorI2Rl ZmluZSBJMlNSX1NSVwkweDA0CisjZGVmaW5lIEkyU1JfSUFMCTB4MTAKKyNkZWZpbmUgSTJT Ul9JQkIJMHgyMAorI2RlZmluZSBJMlNSX0lBQVMJMHg0MAorI2RlZmluZSBJMlNSX0lDRgkw eDgwCisjZGVmaW5lIEkyQ1JfUlNUQQkweDA0CisjZGVmaW5lIEkyQ1JfVFhBSwkweDA4Cisj ZGVmaW5lIEkyQ1JfTVRYCTB4MTAKKyNkZWZpbmUgSTJDUl9NU1RBCTB4MjAKKyNkZWZpbmUg STJDUl9JSUVOCTB4NDAKKyNkZWZpbmUgSTJDUl9JRU4JMHg4MAorCisvKiogVmFyaWFibGVz ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIHVu c2lnbmVkIGludCBjbGtmcmVxID0gSU1YX0kyQ19CSVRfUkFURTsKK3N0YXRpYyB1bnNpZ25l ZCBpbnQgZGlzYWJsZV9kZWxheTsJLyogRHVtbXkgZGVsYXkgKi8KKworLyoKKyAqIHNvcnRl ZCBsaXN0IG9mIGNsb2NrIGRpdmlkZXIsIHJlZ2lzdGVyIHZhbHVlIHBhaXJzCisgKiB0YWtl biBmcm9tIHRhYmxlIDI2LTUsIHAuMjYtOSwgRnJlZXNjYWxlIGkuTVgKKyAqIEludGVncmF0 ZWQgUG9ydGFibGUgU3lzdGVtIFByb2Nlc3NvciBSZWZlcmVuY2UgTWFudWFsCisgKiBEb2N1 bWVudCBOdW1iZXI6IE1DOTMyOE1YTFJNLCBSZXYuIDUuMSwgMDYvMjAwNworICoKKyAqIER1 cGxpY2F0ZWQgZGl2aWRlciB2YWx1ZXMgcmVtb3ZlZCBmcm9tIGxpc3QKKyAqLworCitzdGF0 aWMgdTE2IF9faW5pdGRhdGEgaTJjX2lteF9jbGtfZGl2aWRlciBbNTBdIFsyXSA9IHsKKwl7 IDIyLAkweDIwIH0sIHsgMjQsCTB4MjEgfSwgeyAyNiwJMHgyMiB9LCB7IDI4LAkweDIzIH0s CisJeyAzMCwJMHgwMCB9LAl7IDMyLAkweDI0IH0sIHsgMzYsCTB4MjUgfSwgeyA0MCwJMHgy NiB9LAorCXsgNDIsCTB4MDMgfSwgeyA0NCwJMHgyNyB9LAl7IDQ4LAkweDI4IH0sIHsgNTIs CTB4MDUgfSwKKwl7IDU2LAkweDI5IH0sIHsgNjAsCTB4MDYgfSwgeyA2NCwJMHgyQSB9LAl7 IDcyLAkweDJCIH0sCisJeyA4MCwJMHgyQyB9LCB7IDg4LAkweDA5IH0sIHsgOTYsCTB4MkQg fSwgeyAxMDQsCTB4MEEgfSwKKwl7IDExMiwJMHgyRSB9LCB7IDEyOCwJMHgyRiB9LCB7IDE0 NCwJMHgwQyB9LCB7IDE2MCwJMHgzMCB9LAorCXsgMTkyLAkweDMxIH0sCXsgMjI0LAkweDMy IH0sIHsgMjQwLAkweDBGIH0sIHsgMjU2LAkweDMzIH0sCisJeyAyODgsCTB4MTAgfSwgeyAz MjAsCTB4MzQgfSwJeyAzODQsCTB4MzUgfSwgeyA0NDgsCTB4MzYgfSwKKwl7IDQ4MCwJMHgx MyB9LCB7IDUxMiwJMHgzNyB9LCB7IDU3NiwJMHgxNCB9LAl7IDY0MCwJMHgzOCB9LAorCXsg NzY4LAkweDM5IH0sIHsgODk2LAkweDNBIH0sIHsgOTYwLAkweDE3IH0sIHsgMTAyNCwJMHgz QiB9LAorCXsgMTE1MiwJMHgxOCB9LCB7IDEyODAsCTB4M0MgfSwgeyAxNTM2LAkweDNEIH0s IHsgMTc5MiwJMHgzRSB9LAorCXsgMTkyMCwJMHgxQiB9LAl7IDIwNDgsCTB4M0YgfSwgeyAy MzA0LAkweDFDIH0sIHsgMjU2MCwJMHgxRCB9LAorCXsgMzA3MiwJMHgxRSB9LCB7IDM4NDAs CTB4MUYgfQorfTsKKworc3RydWN0IGlteF9pMmNfc3RydWN0IHsKKwlzdHJ1Y3QgaTJjX2Fk YXB0ZXIJYWRhcHRlcjsKKwlzdHJ1Y3QgcmVzb3VyY2UJCSpyZXM7CisJdm9pZCBfX2lvbWVt CQkqYmFzZTsKKwlpbnQJCQlpcnE7CisJd2FpdF9xdWV1ZV9oZWFkX3QJcXVldWU7CisJdW5z aWduZWQgbG9uZwkJaTJjc3I7Cit9OworCisvKiogRnVuY3Rpb25zIGZvciBJTVggSTJDIGFk YXB0ZXIgZHJpdmVyICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludCBpMmNfaW14X2J1c19i dXN5KHN0cnVjdCBpbXhfaTJjX3N0cnVjdCAqaTJjX2lteCkKK3sKKwl1bnNpZ25lZCBsb25n IG9yaWdfamlmZmllcyA9IGppZmZpZXM7CisKKwlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVy LmRldiwgIjwlcz5cbiIsIF9fZnVuY19fKTsKKworCS8qIHdhaXQgZm9yIGJ1cyBub3QgYnVz eSAqLworCXdoaWxlIChyZWFkYihpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JMlNSKSAmIEky U1JfSUJCKSB7CisJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgeworCQkJZGV2X2Ri ZygmaTJjX2lteC0+YWRhcHRlci5kZXYsCisJCQkJIjwlcz4gSTJDIEludGVycnVwdGVkXG4i LCBfX2Z1bmNfXyk7CisJCQlyZXR1cm4gLUVJTlRSOworCQl9CisJCWlmICh0aW1lX2FmdGVy KGppZmZpZXMsIG9yaWdfamlmZmllcyArIEhaKSkgeworCQkJZGV2X2RiZygmaTJjX2lteC0+ YWRhcHRlci5kZXYsCisJCQkJIjwlcz4gSTJDIGJ1cyBpcyBidXN5XG4iLCBfX2Z1bmNfXyk7 CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCQlzY2hlZHVsZSgpOworCX0KKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IGkyY19pbXhfdHJ4X2NvbXBsZXRlKHN0cnVjdCBpbXhfaTJj X3N0cnVjdCAqaTJjX2lteCkKK3sKKwlpbnQgcmVzdWx0OworCisJcmVzdWx0ID0gd2FpdF9l dmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoaTJjX2lteC0+cXVldWUsCisJCWkyY19pbXgt PmkyY3NyICYgSTJTUl9JSUYsIEkyQ19JTVhfVElNRV9UUlggKiBIWik7CisKKwlpZiAodW5s aWtlbHkocmVzdWx0IDwgMCkpIHsKKwkJZGV2X2RiZygmaTJjX2lteC0+YWRhcHRlci5kZXYs ICI8JXM+IHJlc3VsdCA8IDBcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9 IGVsc2UgaWYgKHVubGlrZWx5KCEoaTJjX2lteC0+aTJjc3IgJiBJMlNSX0lJRikpKSB7CisJ CWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LCAiPCVzPiBUaW1lb3V0XG4iLCBfX2Z1 bmNfXyk7CisJCXJldHVybiAtRVRJTUVET1VUOworCX0KKwlkZXZfZGJnKCZpMmNfaW14LT5h ZGFwdGVyLmRldiwgIjwlcz4gVFJYIGNvbXBsZXRlXG4iLCBfX2Z1bmNfXyk7CisJaTJjX2lt eC0+aTJjc3IgPSAwOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGkyY19pbXhfYWNr ZWQoc3RydWN0IGlteF9pMmNfc3RydWN0ICppMmNfaW14KQoreworCXVuc2lnbmVkIGxvbmcg b3JpZ19qaWZmaWVzID0gamlmZmllczsKKworCS8qIFdhaXQgZm9yIGFjayAqLworCXdoaWxl IChyZWFkYihpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JMlNSKSAmIEkyU1JfUlhBSykgewor CQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsKKwkJCWRldl9kYmcoJmkyY19pbXgt PmFkYXB0ZXIuZGV2LAorCQkJCSI8JXM+IEkyQyBJbnRlcnJ1cHRlZFxuIiwgX19mdW5jX18p OworCQkJcmV0dXJuIC1FSU5UUjsKKwkJfQorCQlpZiAodGltZV9hZnRlcihqaWZmaWVzLCBv cmlnX2ppZmZpZXMgKyBIWikpIHsKKwkJCWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2 LAorCQkJCSI8JXM+IE5vIEFDS1xuIiwgX19mdW5jX18pOworCQkJcmV0dXJuIC1FSU87CisJ CX0KKwkJc2NoZWR1bGUoKTsKKwl9CisKKwlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRl diwgIjwlcz4gQUNLIHJlY2VpdmVkXG4iLCBfX2Z1bmNfXyk7CisJcmV0dXJuIDA7ICAgLyog Tm8gQUNLICovCit9CisKK3N0YXRpYyB2b2lkIGkyY19pbXhfc3RhcnQoc3RydWN0IGlteF9p MmNfc3RydWN0ICppMmNfaW14KQoreworCXVuc2lnbmVkIGludCB0ZW1wID0gMDsKKworCWRl dl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LCAiPCVzPlxuIiwgX19mdW5jX18pOworCisJ LyogRW5hYmxlIEkyQyBjb250cm9sbGVyICovCisJd3JpdGViKEkyQ1JfSUVOLCBpMmNfaW14 LT5iYXNlICsgSU1YX0kyQ19JMkNSKTsKKwkvKiBTdGFydCBJMkMgdHJhbnNhY3Rpb24gKi8K Kwl0ZW1wID0gcmVhZGIoaTJjX2lteC0+YmFzZSArIElNWF9JMkNfSTJDUik7CisJdGVtcCB8 PSBJMkNSX01TVEE7CisJd3JpdGViKHRlbXAsIGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0ky Q1IpOworCXRlbXAgfD0gSTJDUl9JSUVOIHwgSTJDUl9NVFggfCBJMkNSX1RYQUs7CisJd3Jp dGViKHRlbXAsIGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyQ1IpOworfQorCitzdGF0aWMg dm9pZCBpMmNfaW14X3N0b3Aoc3RydWN0IGlteF9pMmNfc3RydWN0ICppMmNfaW14KQorewor CXVuc2lnbmVkIGludCB0ZW1wID0gMDsKKworCS8qIFN0b3AgSTJDIHRyYW5zYWN0aW9uICov CisJZGV2X2RiZygmaTJjX2lteC0+YWRhcHRlci5kZXYsICI8JXM+XG4iLCBfX2Z1bmNfXyk7 CisJdGVtcCA9IHJlYWRiKGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyQ1IpOworCXRlbXAg Jj0gfkkyQ1JfTVNUQTsKKwl3cml0ZWIodGVtcCwgaTJjX2lteC0+YmFzZSArIElNWF9JMkNf STJDUik7CisJLyogc2V0dXAgY2hpcCByZWdpc3RlcnMgdG8gZGVmYXVsdHMgKi8KKwl3cml0 ZWIoSTJDUl9JRU4sIGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyQ1IpOworCXdyaXRlYigw LCBpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JMlNSKTsKKwkvKgorCSAqIFRoaXMgZGVsYXkg Y2F1c2VkIGJ5IGFuIGkuTVhMIGhhcmR3YXJlIGJ1Zy4KKwkgKiBJZiBubyAob3IgdG9vIHNo b3J0KSBkZWxheSwgbm8gIlNUT1AiIGJpdCB3aWxsIGJlIGdlbmVyYXRlZC4KKwkgKi8KKwl1 ZGVsYXkoZGlzYWJsZV9kZWxheSk7CisJLyogRGlzYWJsZSBJMkMgY29udHJvbGxlciAqLwor CXdyaXRlYigwLCBpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JMkNSKTsKK30KKworc3RhdGlj IHZvaWQgX19pbml0IGkyY19pbXhfc2V0X2NsayhzdHJ1Y3QgaW14X2kyY19zdHJ1Y3QgKmky Y19pbXgsIHVuc2lnbmVkIGludCByYXRlKQoreworCXN0cnVjdCBjbGsgKmNsazsKKwl1bnNp Z25lZCBsb25nIGhjbGtfcmF0ZTsKKwl1bnNpZ25lZCBpbnQgZGVzaXJlZF9kaXY7CisJaW50 IGk7CisKKwkvKiBEaXZpZGVyIHZhbHVlIGNhbGN1bGF0aW9uICovCisJY2xrID0gY2xrX2dl dChOVUxMLCAiaGNsayIpOworCWNsa19lbmFibGUoY2xrKTsKKwloY2xrX3JhdGUgPSBjbGtf Z2V0X3JhdGUoY2xrKTsKKwlkZXNpcmVkX2RpdiA9IChoY2xrX3JhdGUgKyByYXRlIC0gMSkg LyByYXRlOworCWlmIChkZXNpcmVkX2RpdiA8IGkyY19pbXhfY2xrX2RpdmlkZXJbMF1bMF0p CisJCWkgPSAwOworCWVsc2UgaWYgKGRlc2lyZWRfZGl2ID4gaTJjX2lteF9jbGtfZGl2aWRl cltBUlJBWV9TSVpFKGkyY19pbXhfY2xrX2RpdmlkZXIpIC0gMV1bMF0pCisJCWkgPSBBUlJB WV9TSVpFKGkyY19pbXhfY2xrX2RpdmlkZXIpIC0gMTsKKwllbHNlCisJCWZvciAoaSA9IDA7 IGkyY19pbXhfY2xrX2RpdmlkZXJbaV1bMF0gPCBkZXNpcmVkX2RpdjsgaSsrKTsKKworCS8q IFdyaXRlIGRpdmlkZXIgdmFsdWUgdG8gcmVnaXN0ZXIgKi8KKwl3cml0ZWIoaTJjX2lteF9j bGtfZGl2aWRlcltpXVsxXSwgaTJjX2lteC0+YmFzZSArIElNWF9JMkNfSUZEUik7CisKKwkv KgorCSAqIFRoZXJlIGR1bW15IGRlbGF5IGlzIGNhbGN1bGF0ZWQuCisJICogSXQgc2hvdWxk IGJlIGFib3V0IG9uZSBJMkMgY2xvY2sgcGVyaW9kIGxvbmcuCisJICogVGhpcyBkZWxheSBp cyB1c2VkIGluIEkyQyBidXMgZGlzYWJsZSBmdW5jdGlvbgorCSAqIHRvIGZpeCBjaGlwIGhh cmR3YXJlIGJ1Zy4KKwkgKi8KKwlkaXNhYmxlX2RlbGF5ID0gKDUwMDAwMFUgKiBpMmNfaW14 X2Nsa19kaXZpZGVyW2ldWzBdCisJCSsgKGhjbGtfcmF0ZSAvIDIpIC0gMSkgLyAoaGNsa19y YXRlIC8gMik7CisKKwkvKiBkZXZfZGJnKCkgY2FuJ3QgYmUgdXNlZCwgYmVjYXVzZSBhZGFw dGVyIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZCAqLworI2lmZGVmIENPTkZJR19JMkNfREVCVUdf QlVTCisJdW5zaWduZWQgbG9uZyBzeXNjbGtfcmF0ZTsKKwljbGsgPSBjbGtfZ2V0KE5VTEws ICJzeXN0ZW1fY2xrIik7CisJY2xrX2VuYWJsZShjbGspOworCXN5c2Nsa19yYXRlID0gY2xr X2dldF9yYXRlKGNsayk7CisJcHJpbnRrKEtFUk5fREVCVUcgIkkyQzogPCVzPiBTWVNDTEs9 JWQsIEhDTEs9JWQsIFJFUSBESVY9JWRcbiIsCisJCV9fZnVuY19fLCBzeXNjbGtfcmF0ZSwg aGNsa19yYXRlLCBkZXNpcmVkX2Rpdik7CisJcHJpbnRrKEtFUk5fREVCVUcgIkkyQzogPCVz PiBJRkRSW0lDXT0weCV4LCBSRUFMIERJVj0lZFxuIiwKKwkJX19mdW5jX18sIGkyY19pbXhf Y2xrX2RpdmlkZXJbaV1bMV0sIGkyY19pbXhfY2xrX2RpdmlkZXJbaV1bMF0pOworI2VuZGlm Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBpMmNfaW14X2lzcihpbnQgaXJxLCB2b2lkICpk ZXZfaWQpCit7CisJc3RydWN0IGlteF9pMmNfc3RydWN0ICppMmNfaW14ID0gZGV2X2lkOwor CXVuc2lnbmVkIGludCB0ZW1wOworCisJdGVtcCA9IHJlYWRiKGkyY19pbXgtPmJhc2UgKyBJ TVhfSTJDX0kyU1IpOworCWlmICh0ZW1wICYgSTJTUl9JSUYpIHsKKwkJLyogc2F2ZSBzdGF0 dXMgcmVnaXN0ZXIgKi8KKwkJaTJjX2lteC0+aTJjc3IgPSB0ZW1wOworCQl0ZW1wICY9IH5J MlNSX0lJRjsKKwkJd3JpdGViKHRlbXAsIGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyU1Ip OworCQl3YWtlX3VwX2ludGVycnVwdGlibGUoJmkyY19pbXgtPnF1ZXVlKTsKKwl9CisKKwly ZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0YXRpYyBpbnQgaTJjX2lteF93cml0ZShzdHJ1 Y3QgaW14X2kyY19zdHJ1Y3QgKmkyY19pbXgsIHN0cnVjdCBpMmNfbXNnICptc2dzKQorewor CWludCBpLCByZXN1bHQ7CisKKwlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwgIjwl cz4gd3JpdGUgc2xhdmUgYWRkcmVzczogYWRkcj0weCV4XG4iLAorCQlfX2Z1bmNfXywgbXNn cy0+YWRkcik7CisKKwkvKiB3cml0ZSBzbGF2ZSBhZGRyZXNzICovCisJd3JpdGViKG1zZ3Mt PmFkZHIsIGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyRFIpOworCXJlc3VsdCA9IGkyY19p bXhfdHJ4X2NvbXBsZXRlKGkyY19pbXgpOworCWlmIChyZXN1bHQpCisJCXJldHVybiByZXN1 bHQ7CisJcmVzdWx0ID0gaTJjX2lteF9hY2tlZChpMmNfaW14KTsKKwlpZiAocmVzdWx0KQor CQlyZXR1cm4gcmVzdWx0OworCWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LCAiPCVz PiB3cml0ZSBkYXRhXG4iLCBfX2Z1bmNfXyk7CisKKwkvKiB3cml0ZSBkYXRhICovCisJZm9y IChpID0gMDsgaSA8IG1zZ3MtPmxlbjsgaSsrKSB7CisJCWRldl9kYmcoJmkyY19pbXgtPmFk YXB0ZXIuZGV2LAorCQkJIjwlcz4gd3JpdGUgYnl0ZTogQiVkPTB4JVhcbiIsCisJCQlfX2Z1 bmNfXywgaSwgbXNncy0+YnVmW2ldKTsKKwkJd3JpdGViKG1zZ3MtPmJ1ZltpXSwgaTJjX2lt eC0+YmFzZSArIElNWF9JMkNfSTJEUik7CisJCXJlc3VsdCA9IGkyY19pbXhfdHJ4X2NvbXBs ZXRlKGkyY19pbXgpOworCQlpZiAocmVzdWx0KQorCQkJcmV0dXJuIHJlc3VsdDsKKwkJcmVz dWx0ID0gaTJjX2lteF9hY2tlZChpMmNfaW14KTsKKwkJaWYgKHJlc3VsdCkKKwkJCXJldHVy biByZXN1bHQ7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGkyY19pbXhfcmVh ZChzdHJ1Y3QgaW14X2kyY19zdHJ1Y3QgKmkyY19pbXgsIHN0cnVjdCBpMmNfbXNnICptc2dz KQoreworCWludCBpLCByZXN1bHQ7CisJdW5zaWduZWQgaW50IHRlbXA7CisKKwlkZXZfZGJn KCZpMmNfaW14LT5hZGFwdGVyLmRldiwKKwkJIjwlcz4gd3JpdGUgc2xhdmUgYWRkcmVzczog YWRkcj0weCV4XG4iLAorCQlfX2Z1bmNfXywgbXNncy0+YWRkciB8IDB4MDEpOworCisJLyog d3JpdGUgc2xhdmUgYWRkcmVzcyAqLworCXdyaXRlYihtc2dzLT5hZGRyIHwgMHgwMSwgaTJj X2lteC0+YmFzZSArIElNWF9JMkNfSTJEUik7CisJcmVzdWx0ID0gaTJjX2lteF90cnhfY29t cGxldGUoaTJjX2lteCk7CisJaWYgKHJlc3VsdCkKKwkJcmV0dXJuIHJlc3VsdDsKKwlyZXN1 bHQgPSBpMmNfaW14X2Fja2VkKGkyY19pbXgpOworCWlmIChyZXN1bHQpCisJCXJldHVybiBy ZXN1bHQ7CisKKwlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwgIjwlcz4gc2V0dXAg YnVzXG4iLCBfX2Z1bmNfXyk7CisKKwkvKiBzZXR1cCBidXMgdG8gcmVhZCBkYXRhICovCisJ dGVtcCA9IHJlYWRiKGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyQ1IpOworCXRlbXAgJj0g fkkyQ1JfTVRYOworCWlmIChtc2dzLT5sZW4gLSAxKQorCQl0ZW1wICY9IH5JMkNSX1RYQUs7 CisJd3JpdGViKHRlbXAsIGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyQ1IpOworCXJlYWRi KGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyRFIpOyAvKiBkdW1teSByZWFkICovCisKKwlk ZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwgIjwlcz4gcmVhZCBkYXRhXG4iLCBfX2Z1 bmNfXyk7CisKKwkvKiByZWFkIGRhdGEgKi8KKwlmb3IgKGkgPSAwOyBpIDwgbXNncy0+bGVu OyBpKyspIHsKKwkJcmVzdWx0ID0gaTJjX2lteF90cnhfY29tcGxldGUoaTJjX2lteCk7CisJ CWlmIChyZXN1bHQpCisJCQlyZXR1cm4gcmVzdWx0OworCQlpZiAoaSA9PSAobXNncy0+bGVu IC0gMSkpIHsKKwkJCWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LAorCQkJCSI8JXM+ IGNsZWFyIE1TVEFcbiIsIF9fZnVuY19fKTsKKwkJCXRlbXAgPSByZWFkYihpMmNfaW14LT5i YXNlICsgSU1YX0kyQ19JMkNSKTsKKwkJCXRlbXAgJj0gfkkyQ1JfTVNUQTsKKwkJCXdyaXRl Yih0ZW1wLCBpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JMkNSKTsKKwkJfSBlbHNlIGlmIChp ID09IChtc2dzLT5sZW4gLSAyKSkgeworCQkJZGV2X2RiZygmaTJjX2lteC0+YWRhcHRlci5k ZXYsCisJCQkJIjwlcz4gc2V0IFRYQUtcbiIsIF9fZnVuY19fKTsKKwkJCXRlbXAgPSByZWFk YihpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JMkNSKTsKKwkJCXRlbXAgfD0gSTJDUl9UWEFL OworCQkJd3JpdGViKHRlbXAsIGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyQ1IpOworCQl9 CisJCW1zZ3MtPmJ1ZltpXSA9IHJlYWRiKGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyRFIp OworCQlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwKKwkJCSI8JXM+IHJlYWQgYnl0 ZTogQiVkPTB4JVhcbiIsCisJCQlfX2Z1bmNfXywgaSwgbXNncy0+YnVmW2ldKTsKKwl9CisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaTJjX2lteF94ZmVyKHN0cnVjdCBpMmNfYWRh cHRlciAqYWRhcHRlciwgc3RydWN0IGkyY19tc2cgKm1zZ3MsIGludCBudW0pCit7CisJdW5z aWduZWQgaW50IGksIHRlbXA7CisJaW50IHJlc3VsdDsKKwlzdHJ1Y3QgaW14X2kyY19zdHJ1 Y3QgKmkyY19pbXggPSBpMmNfZ2V0X2FkYXBkYXRhKGFkYXB0ZXIpOworCisJZGV2X2RiZygm aTJjX2lteC0+YWRhcHRlci5kZXYsICI8JXM+XG4iLCBfX2Z1bmNfXyk7CisKKwkvKiBDaGVj ayBvciBpMmMgYnVzIGlzIG5vdCBidXN5ICovCisJcmVzdWx0ID0gaTJjX2lteF9idXNfYnVz eShpMmNfaW14KTsKKwlpZiAocmVzdWx0KQorCQlnb3RvIGZhaWwwOworCisJLyogU3RhcnQg STJDIHRyYW5zZmVyICovCisJaTJjX2lteF9zdGFydChpMmNfaW14KTsKKworCS8qIHJlYWQv d3JpdGUgZGF0YSAqLworCWZvciAoaSA9IDA7IGkgPCBudW07IGkrKykgeworCQlpZiAoaSkg eworCQkJZGV2X2RiZygmaTJjX2lteC0+YWRhcHRlci5kZXYsCisJCQkJIjwlcz4gcmVwZWF0 ZWQgc3RhcnRcbiIsIF9fZnVuY19fKTsKKwkJCXRlbXAgPSByZWFkYihpMmNfaW14LT5iYXNl ICsgSU1YX0kyQ19JMkNSKTsKKwkJCXRlbXAgfD0gSTJDUl9SU1RBOworCQkJd3JpdGViKHRl bXAsIGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyQ1IpOworCQl9CisJCWRldl9kYmcoJmky Y19pbXgtPmFkYXB0ZXIuZGV2LAorCQkJIjwlcz4gdHJhbnNmZXIgbWVzc2FnZTogJWRcbiIs IF9fZnVuY19fLCBpKTsKKwkJLyogd3JpdGUvcmVhZCBkYXRhICovCisjaWZkZWYgQ09ORklH X0kyQ19ERUJVR19CVVMKKwkJdGVtcCA9IHJlYWRiKGkyY19pbXgtPmJhc2UgKyBJTVhfSTJD X0kyQ1IpOworCQlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwgIjwlcz4gQ09OVFJP TDogSUVOPSVkLCBJSUVOPSVkLCAiCisJCQkiTVNUQT0lZCwgTVRYPSVkLCBUWEFLPSVkLCBS U1RBPSVkXG4iLCBfX2Z1bmNfXywKKwkJCSh0ZW1wICYgSTJDUl9JRU4gPyAxIDogMCksICh0 ZW1wICYgSTJDUl9JSUVOID8gMSA6IDApLAorCQkJKHRlbXAgJiBJMkNSX01TVEEgPyAxIDog MCksICh0ZW1wICYgSTJDUl9NVFggPyAxIDogMCksCisJCQkodGVtcCAmIEkyQ1JfVFhBSyA/ IDEgOiAwKSwgKHRlbXAgJiBJMkNSX1JTVEEgPyAxIDogMCkpOworCQl0ZW1wID0gcmVhZGIo aTJjX2lteC0+YmFzZSArIElNWF9JMkNfSTJTUik7CisJCWRldl9kYmcoJmkyY19pbXgtPmFk YXB0ZXIuZGV2LAorCQkJIjwlcz4gU1RBVFVTOiBJQ0Y9JWQsIElBQVM9JWQsIElCQj0lZCwg IgorCQkJIklBTD0lZCwgU1JXPSVkLCBJSUY9JWQsIFJYQUs9JWRcbiIsIF9fZnVuY19fLAor CQkJKHRlbXAgJiBJMlNSX0lDRiA/IDEgOiAwKSwgKHRlbXAgJiBJMlNSX0lBQVMgPyAxIDog MCksCisJCQkodGVtcCAmIEkyU1JfSUJCID8gMSA6IDApLCAodGVtcCAmIEkyU1JfSUFMID8g MSA6IDApLAorCQkJKHRlbXAgJiBJMlNSX1NSVyA/IDEgOiAwKSwgKHRlbXAgJiBJMlNSX0lJ RiA/IDEgOiAwKSwKKwkJCSh0ZW1wICYgSTJTUl9SWEFLID8gMSA6IDApKTsKKyNlbmRpZgor CQlpZiAobXNnc1tpXS5mbGFncyAmIEkyQ19NX1JEKQorCQkJcmVzdWx0ID0gaTJjX2lteF9y ZWFkKGkyY19pbXgsICZtc2dzW2ldKTsKKwkJZWxzZQorCQkJcmVzdWx0ID0gaTJjX2lteF93 cml0ZShpMmNfaW14LCAmbXNnc1tpXSk7CisJfQorCitmYWlsMDoKKwkvKiBTdG9wIEkyQyB0 cmFuc2ZlciAqLworCWkyY19pbXhfc3RvcChpMmNfaW14KTsKKworCWRldl9kYmcoJmkyY19p bXgtPmFkYXB0ZXIuZGV2LCAiPCVzPiBleGl0IHdpdGg6ICVzOiAlZFxuIiwgX19mdW5jX18s CisJCShyZXN1bHQgPCAwKSA/ICJlcnJvciIgOiAic3VjY2VzcyBtc2ciLAorCQkocmVzdWx0 IDwgMCkgPyByZXN1bHQgOiBudW0pOworCXJldHVybiAocmVzdWx0IDwgMCkgPyByZXN1bHQg OiBudW07Cit9CisKK3N0YXRpYyB1MzIgaTJjX2lteF9mdW5jKHN0cnVjdCBpMmNfYWRhcHRl ciAqYWRhcHRlcikKK3sKKwlyZXR1cm4gSTJDX0ZVTkNfSTJDIHwgSTJDX0ZVTkNfU01CVVNf RU1VTDsKK30KKworc3RhdGljIHN0cnVjdCBpMmNfYWxnb3JpdGhtIGkyY19pbXhfYWxnbyA9 IHsKKwkubWFzdGVyX3hmZXIJPSBpMmNfaW14X3hmZXIsCisJLmZ1bmN0aW9uYWxpdHkJPSBp MmNfaW14X2Z1bmMsCit9OworCitzdGF0aWMgaW50IF9faW5pdCBpMmNfaW14X3Byb2JlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGlteF9pMmNfc3RydWN0 ICppMmNfaW14OworCXN0cnVjdCByZXNvdXJjZSAqcmVzOworCXZvaWQgX19pb21lbSAqYmFz ZTsKKwlpbnQgaXJxOworCWludCByZXNfc2l6ZTsKKwlpbnQgcmV0OworCisJZGV2X2RiZygm cGRldi0+ZGV2LCAiPCVzPlxuIiwgX19mdW5jX18pOworCisJcmVzID0gcGxhdGZvcm1fZ2V0 X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKKwlpcnEgPSBwbGF0Zm9ybV9n ZXRfaXJxKHBkZXYsIDApOworCWlmICghcmVzKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwg ImNhbid0IGdldCBkZXZpY2UgcmVzb3VyY2VzXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJ fQorCWlmIChpcnEgPCAwKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImNhbid0IGdldCBp cnEgbnVtYmVyXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCXJlc19zaXplID0gcmVz LT5lbmQgLSByZXMtPnN0YXJ0ICsgMTsKKwlpZiAoIXJlcXVlc3RfbWVtX3JlZ2lvbihyZXMt PnN0YXJ0LCByZXNfc2l6ZSwgcmVzLT5uYW1lKSkgeworCQlkZXZfZXJyKCZwZGV2LT5kZXYs ICJjYW4ndCBhbGxvY2F0ZSAlZCBieXRlcyBhdCAlZCBhZGRyZXNzXG4iLAorCQkJcmVzX3Np emUsIHJlcy0+c3RhcnQpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJYmFzZSA9IGlvcmVt YXAocmVzLT5zdGFydCwgcmVzX3NpemUpOworCWlmICghYmFzZSkgeworCQlkZXZfZXJyKCZw ZGV2LT5kZXYsICJpb3JlbWFwIGZhaWxlZFxuIik7CisJCXJldCA9IC1FSU87CisJCWdvdG8g ZmFpbDA7CisJfQorCWkyY19pbXggPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaW14X2kyY19z dHJ1Y3QpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWkyY19pbXgpIHsKKwkJZGV2X2VycigmcGRl di0+ZGV2LCAiY2FuJ3QgYWxsb2NhdGUgaW50ZXJmYWNlXG4iKTsKKwkJcmV0ID0gLUVOT01F TTsKKwkJZ290byBmYWlsMTsKKwl9CisKKwkvKiBTZXR1cCBpMmNfaW14IGRyaXZlciBzdHJ1 Y3R1cmUgKi8KKwlzdHJjcHkoaTJjX2lteC0+YWRhcHRlci5uYW1lLCBwZGV2LT5uYW1lKTsK KwlpMmNfaW14LT5hZGFwdGVyLm93bmVyCQk9IFRISVNfTU9EVUxFOworCWkyY19pbXgtPmFk YXB0ZXIuYWxnbwkJPSAmaTJjX2lteF9hbGdvOworCWkyY19pbXgtPmFkYXB0ZXIuZGV2LnBh cmVudAk9ICZwZGV2LT5kZXY7CisJaTJjX2lteC0+YWRhcHRlci5jbGFzcyAJCT0gSTJDX0NM QVNTX0FMTDsKKwlpMmNfaW14LT5hZGFwdGVyLm5yIAkJPSBwZGV2LT5pZDsKKwlpMmNfaW14 LT5pcnEJCQk9IGlycTsKKwlpMmNfaW14LT5iYXNlCQkJPSBiYXNlOworCWkyY19pbXgtPnJl cwkJCT0gcmVzOworCisJaW5pdF93YWl0cXVldWVfaGVhZCgmaTJjX2lteC0+cXVldWUpOwor CisJLyogU2V0IHVwIHBsYXRmb3JtIGRyaXZlciBkYXRhICovCisJcGxhdGZvcm1fc2V0X2Ry dmRhdGEocGRldiwgaTJjX2lteCk7CisKKwlyZXQgPSByZXF1ZXN0X2lycShpMmNfaW14LT5p cnEsIGkyY19pbXhfaXNyLAorCQlJUlFGX0RJU0FCTEVELCBwZGV2LT5uYW1lLCBpMmNfaW14 KTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImNhbm5vdCBjbGFpbSBp cnEgJWRcbiIsIGkyY19pbXgtPmlycSk7CisJCWdvdG8gZmFpbDI7CisJfQorCisJLyogU2V0 IHVwIGFkYXB0ZXIgZGF0YSAqLworCWkyY19zZXRfYWRhcGRhdGEoJmkyY19pbXgtPmFkYXB0 ZXIsIGkyY19pbXgpOworCisJLyogU2V0IHVwIGNsb2NrIGRpdmlkZXIgKi8KKwlpMmNfaW14 X3NldF9jbGsoaTJjX2lteCwgY2xrZnJlcSk7CisKKwkvKiBTZXQgdXAgSS9PIHBpbnMgZm9y IEkyQyovCisJaW14X2dwaW9fbW9kZShQQTE1X1BGX0kyQ19TREEpOworCWlteF9ncGlvX21v ZGUoUEExNl9QRl9JMkNfU0NMKTsKKworCS8qIFNldCB1cCBjaGlwIHJlZ2lzdGVycyB0byBk ZWZhdWx0cyAqLworCXdyaXRlYigwLCBpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JMkNSKTsK Kwl3cml0ZWIoMCwgaTJjX2lteC0+YmFzZSArIElNWF9JMkNfSTJTUik7CisKKworCS8qIEFk ZCBJMkMgYWRhcHRlciAqLworCXJldCA9IGkyY19hZGRfbnVtYmVyZWRfYWRhcHRlcigmaTJj X2lteC0+YWRhcHRlcik7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2 LCAicmVnaXN0cmF0aW9uIGZhaWxlZFxuIik7CisJCWdvdG8gZmFpbDM7CisJfQorCisJZGV2 X2RiZygmaTJjX2lteC0+YWRhcHRlci5kZXYsICJjbGFpbWVkIGlycSAlZFxuIiwgaTJjX2lt eC0+aXJxKTsKKwlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwgImRldmljZSByZXNv dXJjZXMgZnJvbSAweCV4IHRvIDB4JXhcbiIsCisJCWkyY19pbXgtPnJlcy0+c3RhcnQsIGky Y19pbXgtPnJlcy0+ZW5kKTsKKwlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwgImFs bG9jYXRlZCAlZCBieXRlcyBhdCAweCV4IFxuIiwKKwkJcmVzX3NpemUsIGkyY19pbXgtPnJl cy0+c3RhcnQpOworCWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LCAiYWRhcHRlciBu YW1lOiBcIiVzXCJcbiIsCisJCWkyY19pbXgtPmFkYXB0ZXIubmFtZSk7CisJZGV2X2RiZygm aTJjX2lteC0+YWRhcHRlci5kZXYsICJJTVggSTJDIGFkYXB0ZXIgcmVnaXN0ZXJlZFxuIik7 CisKKwlyZXR1cm4gMDsgICAvKiBSZXR1cm4gT0sgKi8KKworZmFpbDM6CisJZnJlZV9pcnEo aTJjX2lteC0+aXJxLCBpMmNfaW14KTsKK2ZhaWwyOgorCXBsYXRmb3JtX3NldF9kcnZkYXRh KHBkZXYsIE5VTEwpOworCWtmcmVlKGkyY19pbXgpOworZmFpbDE6CisJaW91bm1hcChpMmNf aW14LT5iYXNlKTsKK2ZhaWwwOgorCXJlbGVhc2VfbWVtX3JlZ2lvbihyZXMtPnN0YXJ0LCBy ZXNfc2l6ZSk7CisJcmV0dXJuIHJldDsgLyogUmV0dXJuIGVycm9yIG51bWJlciAqLworfQor CitzdGF0aWMgaW50IF9fZXhpdCBpMmNfaW14X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQoreworCXN0cnVjdCBpbXhfaTJjX3N0cnVjdCAqaTJjX2lteCA9IHBsYXRm b3JtX2dldF9kcnZkYXRhKHBkZXYpOworCisJLyogcmVtb3ZlIGFkYXB0ZXIgKi8KKwlkZXZf ZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwgImFkYXB0ZXIgcmVtb3ZlZFxuIik7CisJaTJj X2RlbF9hZGFwdGVyKCZpMmNfaW14LT5hZGFwdGVyKTsKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0 YShwZGV2LCBOVUxMKTsKKworCS8qIGZyZWUgaW50ZXJydXB0ICovCisJZnJlZV9pcnEoaTJj X2lteC0+aXJxLCBpMmNfaW14KTsKKworCS8qIHNldHVwIGNoaXAgcmVnaXN0ZXJzIHRvIGRl ZmF1bHRzICovCisJd3JpdGViKDAsIGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0lBRFIpOwor CXdyaXRlYigwLCBpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JRkRSKTsKKwl3cml0ZWIoMCwg aTJjX2lteC0+YmFzZSArIElNWF9JMkNfSTJDUik7CisJd3JpdGViKDAsIGkyY19pbXgtPmJh c2UgKyBJTVhfSTJDX0kyU1IpOworCisJLyogcmVsZWFzZSBtZW1vcnkgKi8KKwlyZWxlYXNl X21lbV9yZWdpb24oaTJjX2lteC0+cmVzLT5zdGFydCwgaTJjX2lteC0+cmVzLT5lbmQgLSBp MmNfaW14LT5yZXMtPnN0YXJ0ICsgMSk7CisJaW91bm1hcChpMmNfaW14LT5iYXNlKTsKKwlr ZnJlZShpMmNfaW14KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBwbGF0Zm9y bV9kcml2ZXIgaTJjX2lteF9kcml2ZXIgPSB7CisJLnByb2JlCQk9IGkyY19pbXhfcHJvYmUs CisJLnJlbW92ZQkJPSBpMmNfaW14X3JlbW92ZSwKKwkuZHJpdmVyCT0geworCQkubmFtZQk9 IERSSVZFUl9OQU1FLAorCQkub3duZXIJPSBUSElTX01PRFVMRSwKKwl9Cit9OworCitzdGF0 aWMgaW50IF9faW5pdCBpMmNfYWRhcF9pbXhfaW5pdCh2b2lkKQoreworCXJldHVybiBwbGF0 Zm9ybV9kcml2ZXJfcHJvYmUoJmkyY19pbXhfZHJpdmVyLCBpMmNfaW14X3Byb2JlKTsKK30K Kworc3RhdGljIHZvaWQgX19leGl0IGkyY19hZGFwX2lteF9leGl0KHZvaWQpCit7CisJcGxh dGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmkyY19pbXhfZHJpdmVyKTsKK30KKworbW9kdWxl X2luaXQoaTJjX2FkYXBfaW14X2luaXQpOworbW9kdWxlX2V4aXQoaTJjX2FkYXBfaW14X2V4 aXQpOworCittb2R1bGVfcGFyYW0oY2xrZnJlcSwgdWludCwgU19JUlVHTyk7CitNT0RVTEVf UEFSTV9ERVNDKGNsa2ZyZXEsICJkZXNpcmVkIElNWCBJMkMgQ2xvY2sgUmF0ZSBpbiBIeiIp OworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQVVUSE9SKCJEYXJpdXMgQXVn dWxpcyIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJJMkMgYWRhcHRlciBkcml2ZXIgZm9yIElN WCBJMkMgYnVzIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOiIgRFJJVkVSX05BTUUpOwpJ bmRleDogbGludXgtMi42LjI2LWdpdDcvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gbGludXgtMi42LjI2LWdpdDcub3JpZy9kcml2ZXJzL2kyYy9idXNz ZXMvS2NvbmZpZworKysgbGludXgtMi42LjI2LWdpdDcvZHJpdmVycy9pMmMvYnVzc2VzL0tj b25maWcKQEAgLTM0MCw2ICszNDAsMTYgQEAgY29uZmlnIEkyQ19JQk1fSUlDCiAJICBUaGlz IGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gIElmIHNvLCB0aGUgbW9k dWxlCiAJICB3aWxsIGJlIGNhbGxlZCBpMmMtaWJtX2lpYy4KIAorY29uZmlnIEkyQ19JTVgK Kwl0cmlzdGF0ZSAiSU1YIEkyQyBpbnRlcmZhY2UiCisJZGVwZW5kcyBvbiBBUkNIX0lNWAor CWhlbHAKKwkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBJSUMgYnVzIGNv bnRyb2xsZXIgb24KKwkgIHRoZSBGcmVlc2NhbGUgaS5NWEwgYW5kIGkuTVgxIHByb2Nlc3Nv cnMuCisKKwkgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAg SWYgc28sIHRoZSBtb2R1bGUKKwkgIHdpbGwgYmUgY2FsbGVkIGkyYy1pbXguCisKIGNvbmZp ZyBJMkNfSU9QM1hYCiAJdHJpc3RhdGUgIkludGVsIElPUHgzeHggYW5kIElYUDR4eCBvbi1j aGlwIEkyQyBpbnRlcmZhY2UiCiAJZGVwZW5kcyBvbiBBUkNIX0lPUDMyWCB8fCBBUkNIX0lP UDMzWCB8fCBBUkNIX0lYUDRYWCB8fCBBUkNIX0lPUDEzWFgKSW5kZXg6IGxpbnV4LTIuNi4y Ni1naXQ3L2RyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBs aW51eC0yLjYuMjYtZ2l0Ny5vcmlnL2RyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmlsZQorKysg bGludXgtMi42LjI2LWdpdDcvZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxlCkBAIC0zMiw2 ICszMiw3IEBAIG9iai0kKENPTkZJR19JMkNfQ1BNKQkJKz0gaTJjLWNwbS5vCiBvYmotJChD T05GSUdfSTJDX0RBVklOQ0kpCSs9IGkyYy1kYXZpbmNpLm8KIG9iai0kKENPTkZJR19JMkNf R1BJTykJCSs9IGkyYy1ncGlvLm8KIG9iai0kKENPTkZJR19JMkNfSUJNX0lJQykJKz0gaTJj LWlibV9paWMubworb2JqLSQoQ09ORklHX0kyQ19JTVgpCQkrPSBpMmMtaW14Lm8KIG9iai0k KENPTkZJR19JMkNfSU9QM1hYKQkrPSBpMmMtaW9wM3h4Lm8KIG9iai0kKENPTkZJR19JMkNf SVhQMjAwMCkJKz0gaTJjLWl4cDIwMDAubwogb2JqLSQoQ09ORklHX0kyQ19NUEMpCQkrPSBp MmMtbXBjLm8K --------------040703050901040606040407 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ i2c mailing list i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org http://lists.lm-sensors.org/mailman/listinfo/i2c --------------040703050901040606040407--