From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8902BCDB46E for ; Thu, 12 Oct 2023 16:29:10 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 1188640905; Thu, 12 Oct 2023 16:29:10 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 1188640905 Authentication-Results: smtp4.osuosl.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=WY0gkb3A X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xRhsv8_I8cMI; Thu, 12 Oct 2023 16:29:08 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id 690F4408FB; Thu, 12 Oct 2023 16:29:08 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 690F4408FB Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 47050C0039; Thu, 12 Oct 2023 16:29:08 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 0BCC9C0032 for ; Thu, 12 Oct 2023 16:29:07 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id E29C9402D7 for ; Thu, 12 Oct 2023 16:29:06 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org E29C9402D7 Authentication-Results: smtp2.osuosl.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=WY0gkb3A X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6JYYC8zLHgqt for ; Thu, 12 Oct 2023 16:29:05 +0000 (UTC) Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) by smtp2.osuosl.org (Postfix) with ESMTPS id 87AC14059D for ; Thu, 12 Oct 2023 16:29:05 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 87AC14059D Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-1c7373cff01so18231125ad.1 for ; Thu, 12 Oct 2023 09:29:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697128145; x=1697732945; darn=lists.linuxfoundation.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xYJgt5+b5HVwNIIrlfXEoBwZ8hfn4jjcSeUfjjs6Z20=; b=WY0gkb3Aca3OsNLqYvCglxw7USXSbu4A/4YKV5r0wohObhe1/LQOsyYeq2+B7tu7ta YOfUyAER0WMuWbFxXl/2UZHBJUqunETel68snJOZECN1RFD5acpwJuLeLB/DrOlVV4I4 qZHGfcCJ9n/RSnsB1gCNZXc7I5LtN6fEoKcqUTR4R1pVL5f0vuaEkxZlfFRKxvlTVQLF /SG/1szyHZkeafx1gXWx0tcou/f3fzqPGy83GNuKADfEok6LuUgPkgMkv+Txt7IXhJiD l1xPvrW5AFoQnbDrnDYL0AeUEDTsW9kv74xtnKoOhXy12tsk7QKlf6idKuoR41Io4alQ freQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697128145; x=1697732945; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xYJgt5+b5HVwNIIrlfXEoBwZ8hfn4jjcSeUfjjs6Z20=; b=ReIhLLj3vjQ2gz0XNpsEre6nwz8hY9d25Ti+hMsqewJgYKrA4Fqb+CMGIWIs9rcC5p N3rFxkX4nH+yfbxiwWL4FGJZOdpyGyerEfB9m4NWCpeI/VGNpxCscoy10YgRgml5jJI6 AHMr+uVwwGKHpowIj7QSgXyAc1BicqupdasGjIdKOYLFkC3hj/E/cInHOK5peJd27OI1 0VV1fS/5liEhkyCnExLLy+jwqirOflYs0MrPzUkYOth2CfkGkmQsyt+SkWsQtbYiaSh+ xG8r+XpFhHhQ8wXenBj3Q/leT43JKxNpsYmzDaGFH2mH5kWUOeZcZmfMY6abUNjcek7m v/Kg== X-Gm-Message-State: AOJu0Yzd79wtnS40d1Sbew/+vHsEX2+v1gNb7dyXh2/bElIMjPNZQMQt gmo2yCvPetst5795q38M1QQ= X-Google-Smtp-Source: AGHT+IEplS+hBqgmppkXIT5BVJywWknho121+6Zkx/sjKXbuRQWRXySiKi1xHpmak/ChlGNRmwuvYQ== X-Received: by 2002:a17:903:41c4:b0:1c5:7d49:570e with SMTP id u4-20020a17090341c400b001c57d49570emr35874014ple.29.1697128144775; Thu, 12 Oct 2023 09:29:04 -0700 (PDT) Received: from localhost.localdomain ([49.37.136.12]) by smtp.gmail.com with ESMTPSA id f9-20020a170902ce8900b001bb9f104328sm2181575plg.146.2023.10.12.09.29.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 09:29:04 -0700 (PDT) From: Anshul Dalal To: linux-input@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v5 2/2] input: joystick: driver for Adafruit Seesaw Gamepad Date: Thu, 12 Oct 2023 21:57:56 +0530 Message-ID: <20231012162759.691555-2-anshulusr@gmail.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231012162759.691555-1-anshulusr@gmail.com> References: <20231012162759.691555-1-anshulusr@gmail.com> MIME-Version: 1.0 Cc: Conor Dooley , Anshul Dalal , Dmitry Torokhov , =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= , linux-kernel@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , linux-kernel-mentees@lists.linuxfoundation.org X-BeenThere: linux-kernel-mentees@lists.linuxfoundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-kernel-mentees-bounces@lists.linuxfoundation.org Sender: "Linux-kernel-mentees" QWRkcyBhIGRyaXZlciBmb3IgYSBtaW5pIGdhbWVwYWQgdGhhdCBjb21tdW5pY2F0ZXMgb3ZlciBp MmMsIHRoZSBnYW1lcGFkCmhhcyBiaWRpcmVjdGlvbmFsIHRodW1iIHN0aWNrIGlucHV0IGFuZCBz aXggYnV0dG9ucy4KClRoZSBnYW1lcGFkIGNoaXAgdXRpbGl6ZXMgdGhlIG9wZW4gZnJhbWV3b3Jr IGZyb20gQWRhZnJ1aXQgY2FsbGVkICdTZWVzYXcnCnRvIHRyYW5zbWl0IHRoZSBBREMgZGF0YSBm b3IgdGhlIGpveXN0aWNrIGFuZCBkaWdpdGFsIHBpbiBzdGF0ZSBmb3IgdGhlCmJ1dHRvbnMuIEkg aGF2ZSBvbmx5IGltcGxlbWVudGVkIHRoZSBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIHRvIHJlY2Vp dmUgdGhlCnRodW1iIHN0aWNrIGFuZCBidXR0b24gc3RhdGUuCgpTdGVwcyBpbiByZWFkaW5nIHRo ZSBnYW1lcGFkIHN0YXRlIG92ZXIgaTJjOgogIDEuIFJlc2V0IHRoZSByZWdpc3RlcnMKICAyLiBT ZXQgdGhlIHBpbiBtb2RlIG9mIHRoZSBwaW5zIHNwZWNpZmllZCBieSB0aGUgYEJVVFRPTl9NQVNL YCB0byBpbnB1dAogICAgICBgQlVUVE9OX01BU0tgOiBBIGJpdC1tYXAgZm9yIHRoZSBzaXggZGln aXRhbCBwaW5zIGludGVybmFsbHkKICAgICAgIGNvbm5lY3RlZCB0byB0aGUgam95c3RpY2sgYnV0 dG9ucy4KICAzLiBFbmFibGUgaW50ZXJuYWwgcHVsbHVwIHJlc2lzdG9ycyBmb3IgdGhlIGBCVVRU T05fTUFTS2AKICA0LiBCdWxrIHNldCB0aGUgcGluIHN0YXRlIEhJR0ggZm9yIGBCVVRUT05fTUFT S2AKICA1LiBQb2xsIHRoZSBkZXZpY2UgZm9yIGJ1dHRvbiBhbmQgam95c3RpY2sgc3RhdGUgZG9u ZSBieToKICAgICAgYHNlZXNhd19yZWFkX2RhdGEoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwg c3RydWN0IHNlZXNhd19kYXRhICpkYXRhKWAKClByb2R1Y3QgcGFnZToKICBodHRwczovL3d3dy5h ZGFmcnVpdC5jb20vcHJvZHVjdC81NzQzCkFyZHVpbm8gZHJpdmVyOgogIGh0dHBzOi8vZ2l0aHVi LmNvbS9hZGFmcnVpdC9BZGFmcnVpdF9TZWVzYXcKCkRyaXZlciB0ZXN0ZWQgb24gUlBpIFplcm8g MlcKClJldmlld2VkLWJ5OiBUaG9tYXMgV2Vpw59zY2h1aCA8bGludXhAd2Vpc3NzY2h1aC5uZXQ+ ClNpZ25lZC1vZmYtYnk6IEFuc2h1bCBEYWxhbCA8YW5zaHVsdXNyQGdtYWlsLmNvbT4KLS0tCgpD aGFuZ2VzIGZvciB2NToKLSBBZGRlZCBsaW5rIHRvIHRoZSBkYXRhc2hlZXQKLSBBZGRlZCBkZWJ1 ZyBsb2cgbWVzc2FnZSB3aGVuIGBzZWVzYXdfcmVhZF9kYXRhYCBmYWlscwoKQ2hhbmdlcyBmb3Ig djQ6Ci0gQ2hhbmdlZCBgMVVMIDw8IEJVVFRPTl9gIHRvIEJJVChCVVRUT05fKQotIFJlbW92ZWQg YGhhcmR3YXJlX2lkYCBmaWVsZCBmcm9tIGBzdHJ1Y3Qgc2Vlc2F3X2dhbWVwYWRgCi0gUmVtb3Zl ZCByZWR1bmRhbnQgY2hlY2tzIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gYW5kIHJl Y2VpdmVkIGJ5CiAgYGkyY19tYXN0ZXJfc2VuZGAgYW5kIGBpMmNfbWFzdGVyX3JlY3ZgCi0gVXNl ZCBgZ2V0X3VuYWxpZ25lZF9iZTMyYCB0byBpbnN0YW50aWF0ZSBgdTMyIHJlc3VsdGAgZnJvbSBg cmVhZF9idWZgCi0gQ2hhbmdlZCAgYHJlc3VsdCAmICgxVUwgPDwgQlVUVE9OXylgIHRvCiAgYHRl c3RfYml0KEJVVFRPTl8sIChsb25nICopJnJlc3VsdClgCi0gQ2hhbmdlZCBgS0JVSUxEX01PRE5B TUVgIGluIGlkLXRhYmxlcyB0byBgU0VFU0FXX0RFVklDRV9OQU1FYAotIEZpeGVkIGZvcm1hdHRp bmcgaXNzdWVzCi0gQ2hhbmdlZCBidXR0b24gcmVwb3J0aW5nOgogICAgU2luY2UgdGhlIGdhbWVw YWQgaGFkIHRoZSBhY3Rpb24gYnV0dG9ucyBpbiBhIG5vbi1zdGFuZGFyZCBsYXlvdXQ6CiAgICAg ICAgIChYKQogICAgICAoWSkgICAoQSkKICAgICAgICAgKEIpCiAgICBUaGVyZWZvcmUgbW92ZWQg dG8gdXNpbmcgZ2VuZXJpYyBkaXJlY3Rpb25hbCBhY3Rpb24gYnV0dG9uIGV2ZW50IGNvZGVzCiAg ICBpbnN0ZWFkIG9mIEJUTl9bQUJYWV0uCgpDaGFuZ2VzIGZvciB2MzoKLSBubyB1cGRhdGVzCgpD aGFuZ2VzIGZvciB2MjoKYWRhZnJ1aXQtc2Vlc2F3LmM6Ci0gUmVuYW1lZCBmaWxlIGZyb20gJ2Fk YWZydWl0X3NlZXNhdy5jJwotIENoYW5nZWQgZGV2aWNlIG5hbWUgZnJvbSAnc2Vlc2F3X2dhbWVw YWQnIHRvICdzZWVzYXctZ2FtZXBhZCcKLSBDaGFuZ2VkIGNvdW50IHBhcmFtZXRlciBmb3IgcmVj ZWl2aW5nIGpveXN0aWNrIHggb24gbGluZSAxMTg6CiAgICBgMmAgdG8gYHNpemVvZih3cml0ZV9i dWYpYAotIEZpeGVkIGludmFsaWQgYnVmZmVyIHNpemUgb24gbGluZSAxMjMgYW5kIDEyNjoKICAg IGBkYXRhLT55YCB0byBgc2l6ZW9mKGRhdGEtPnkpYAotIEFkZGVkIGNvbW1lbnQgZm9yIHRoZSBg bWRlbGF5KDEwKWAgb24gbGluZSAxNjkKLSBDaGFuZ2VkIGluY29uc2lzdGVudCBpbmRlbnRhdGlv biBvbiBsaW5lIDI3MQpLY29uZmlnOgotIEZpeGVkIGluZGVudGF0aW9uIGZvciB0aGUgaGVscCB0 ZXh0Ci0gVXBkYXRlZCBtb2R1bGUgbmFtZQpNYWtlZmlsZToKLSBVcGRhdGVkIG1vZHVsZSBvYmpl Y3QgZmlsZSBuYW1lCk1BSU5UQUlORVJTOgotIFVwZGF0ZWQgZmlsZSBuYW1lIGZvciB0aGUgZHJp dmVyIGFuZCBiaW5kaW5ncwoKIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDcgKwogZHJpdmVycy9pbnB1dC9qb3lzdGljay9LY29uZmlnICAgICAgICAgICB8ICAg OSArCiBkcml2ZXJzL2lucHV0L2pveXN0aWNrL01ha2VmaWxlICAgICAgICAgIHwgICAxICsKIGRy aXZlcnMvaW5wdXQvam95c3RpY2svYWRhZnJ1aXQtc2Vlc2F3LmMgfCAyNzMgKysrKysrKysrKysr KysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMjkwIGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2lucHV0L2pveXN0aWNrL2FkYWZydWl0LXNlZXNhdy5jCgpkaWZm IC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA2YzRjY2U0NWEwOWQuLmEz MTRmOWI0OGUyMSAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAg LTQ0MSw2ICs0NDEsMTMgQEAgVzoJaHR0cDovL3dpa2kuYW5hbG9nLmNvbS9BRDc4NzkKIFc6CWh0 dHBzOi8vZXouYW5hbG9nLmNvbS9saW51eC1zb2Z0d2FyZS1kcml2ZXJzCiBGOglkcml2ZXJzL2lu cHV0L3RvdWNoc2NyZWVuL2FkNzg3OS5jCiAKK0FEQUZSVUlUIE1JTkkgSTJDIEdBTUVQQUQKK006 CUFuc2h1bCBEYWxhbCA8YW5zaHVsdXNyQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWlucHV0QHZnZXIu a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp bmRpbmdzL2lucHV0L2FkYWZydWl0LHNlZXNhdy1nYW1lcGFkLnlhbWwKK0Y6CWRyaXZlcnMvaW5w dXQvam95c3RpY2svYWRhZnJ1aXQtc2Vlc2F3LmMKKwogQUREUkVTUyBTUEFDRSBMQVlPVVQgUkFO RE9NSVpBVElPTiAoQVNMUikKIE06CUppcmkgS29zaW5hIDxqaWtvc0BrZXJuZWwub3JnPgogUzoJ TWFpbnRhaW5lZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9LY29uZmlnIGIv ZHJpdmVycy9pbnB1dC9qb3lzdGljay9LY29uZmlnCmluZGV4IGFjNjkyNWNlODM2Ni4uZGY5Y2Qx ODMwYjI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L2pveXN0aWNrL0tjb25maWcKKysrIGIv ZHJpdmVycy9pbnB1dC9qb3lzdGljay9LY29uZmlnCkBAIC00MTIsNCArNDEyLDEzIEBAIGNvbmZp ZyBKT1lTVElDS19TRU5TRUhBVAogCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVs ZSwgY2hvb3NlIE0gaGVyZTogdGhlCiAJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2Vuc2VoYXRf am95c3RpY2suCiAKK2NvbmZpZyBKT1lTVElDS19TRUVTQVcKKwl0cmlzdGF0ZSAiQWRhZnJ1aXQg TWluaSBJMkMgR2FtZXBhZCB3aXRoIFNlZXNhdyIKKwlkZXBlbmRzIG9uIEkyQworCWhlbHAKKwkg IFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBBZGFmcnVpdCBNaW5pIEkyQyBHYW1l cGFkLgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBo ZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUKKwkgIGNhbGxlZCBhZGFmcnVpdC1zZWVzYXcuCisKIGVu ZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L2pveXN0aWNrL01ha2VmaWxlIGIvZHJpdmVy cy9pbnB1dC9qb3lzdGljay9NYWtlZmlsZQppbmRleCAzOTM3NTM1ZjAwOTguLjk5NzZmNTk2YTky MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9NYWtlZmlsZQorKysgYi9kcml2 ZXJzL2lucHV0L2pveXN0aWNrL01ha2VmaWxlCkBAIC0yOCw2ICsyOCw3IEBAIG9iai0kKENPTkZJ R19KT1lTVElDS19ONjQpCQkrPSBuNjRqb3kubwogb2JqLSQoQ09ORklHX0pPWVNUSUNLX1BTWFBB RF9TUEkpCSs9IHBzeHBhZC1zcGkubwogb2JqLSQoQ09ORklHX0pPWVNUSUNLX1BYUkMpCQkrPSBw eHJjLm8KIG9iai0kKENPTkZJR19KT1lTVElDS19RV0lJQykJCSs9IHF3aWljLWpveXN0aWNrLm8K K29iai0kKENPTkZJR19KT1lTVElDS19TRUVTQVcpCQkrPSBhZGFmcnVpdC1zZWVzYXcubwogb2Jq LSQoQ09ORklHX0pPWVNUSUNLX1NFTlNFSEFUKQkrPSBzZW5zZWhhdC1qb3lzdGljay5vCiBvYmot JChDT05GSUdfSk9ZU1RJQ0tfU0lERVdJTkRFUikJKz0gc2lkZXdpbmRlci5vCiBvYmotJChDT05G SUdfSk9ZU1RJQ0tfU1BBQ0VCQUxMKQkrPSBzcGFjZWJhbGwubwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9pbnB1dC9qb3lzdGljay9hZGFmcnVpdC1zZWVzYXcuYyBiL2RyaXZlcnMvaW5wdXQvam95c3Rp Y2svYWRhZnJ1aXQtc2Vlc2F3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi4yYTFlYWU4ZDI4NjEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2lucHV0L2pveXN0 aWNrL2FkYWZydWl0LXNlZXNhdy5jCkBAIC0wLDAgKzEsMjczIEBACisvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBB bnNodWwgRGFsYWwgPGFuc2h1bHVzckBnbWFpbC5jb20+CisgKgorICogRHJpdmVyIGZvciBBZGFm cnVpdCBNaW5pIEkyQyBHYW1lcGFkCisgKgorICogQmFzZWQgb24gdGhlIHdvcmsgb2Y6CisgKglP bGVoIEtyYXZjaGVua28gKFNwYXJrZnVuIFF3aWljIEpveXN0aWNrIGRyaXZlcikKKyAqCisgKiBE YXRhc2hlZXQ6IGh0dHBzOi8vY2RuLWxlYXJuLmFkYWZydWl0LmNvbS9kb3dubG9hZHMvcGRmL2dh bWVwYWQtcXQucGRmCisgKiBQcm9kdWN0IHBhZ2U6IGh0dHBzOi8vd3d3LmFkYWZydWl0LmNvbS9w cm9kdWN0LzU3NDMKKyAqIEZpcm13YXJlIGFuZCBoYXJkd2FyZSBzb3VyY2VzOiBodHRwczovL2dp dGh1Yi5jb20vYWRhZnJ1aXQvQWRhZnJ1aXRfU2Vlc2F3CisgKi8KKworI2luY2x1ZGUgPGFzbS1n ZW5lcmljL3VuYWxpZ25lZC5oPgorI2luY2x1ZGUgPGxpbnV4L2JpdHMuaD4KKyNpbmNsdWRlIDxs aW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUgPGxpbnV4L2lu cHV0Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+CisKKy8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KKyNkZWZpbmUgU0VFU0FXX0RFVklDRV9OQU1F CSJzZWVzYXctZ2FtZXBhZCIKKworI2RlZmluZSBTRUVTQVdfU1RBVFVTX0JBU0UJMAorI2RlZmlu ZSBTRUVTQVdfR1BJT19CQVNFCTEKKyNkZWZpbmUgU0VFU0FXX0FEQ19CQVNFCQk5CisKKyNkZWZp bmUgU0VFU0FXX0dQSU9fRElSQ0xSX0JVTEsJMworI2RlZmluZSBTRUVTQVdfR1BJT19CVUxLCTQK KyNkZWZpbmUgU0VFU0FXX0dQSU9fQlVMS19TRVQJNQorI2RlZmluZSBTRUVTQVdfR1BJT19QVUxM RU5TRVQJMTEKKworI2RlZmluZSBTRUVTQVdfU1RBVFVTX0hXX0lECTEKKyNkZWZpbmUgU0VFU0FX X1NUQVRVU19TV1JTVAkxMjcKKworI2RlZmluZSBTRUVTQVdfQURDX09GRlNFVAk3CisKKyNkZWZp bmUgQlVUVE9OX0EJNQorI2RlZmluZSBCVVRUT05fQgkxCisjZGVmaW5lIEJVVFRPTl9YCTYKKyNk ZWZpbmUgQlVUVE9OX1kJMgorI2RlZmluZSBCVVRUT05fU1RBUlQJMTYKKyNkZWZpbmUgQlVUVE9O X1NFTEVDVAkwCisKKyNkZWZpbmUgQU5BTE9HX1gJMTQKKyNkZWZpbmUgQU5BTE9HX1kJMTUKKwor I2RlZmluZSBTRUVTQVdfSk9ZU1RJQ0tfTUFYX0FYSVMJMTAyMworI2RlZmluZSBTRUVTQVdfSk9Z U1RJQ0tfRlVaWgkJMgorI2RlZmluZSBTRUVTQVdfSk9ZU1RJQ0tfRkxBVAkJNAorCisjZGVmaW5l IFNFRVNBV19HQU1FUEFEX1BPTExfSU5URVJWQUwJMTYKKyNkZWZpbmUgU0VFU0FXX0dBTUVQQURf UE9MTF9NSU4JCTgKKyNkZWZpbmUgU0VFU0FXX0dBTUVQQURfUE9MTF9NQVgJCTMyCisvKiBjbGFu Zy1mb3JtYXQgb24gKi8KKwordTMyIEJVVFRPTl9NQVNLID0gQklUKEJVVFRPTl9BKSB8IEJJVChC VVRUT05fQikgfCBCSVQoQlVUVE9OX1gpIHwKKwkJICBCSVQoQlVUVE9OX1kpIHwgQklUKEJVVFRP Tl9TVEFSVCkgfCBCSVQoQlVUVE9OX1NFTEVDVCk7CisKK3N0cnVjdCBzZWVzYXdfZ2FtZXBhZCB7 CisJY2hhciBwaHlzaWNhbF9wYXRoWzMyXTsKKwlzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dF9kZXY7 CisJc3RydWN0IGkyY19jbGllbnQgKmkyY19jbGllbnQ7Cit9OworCitzdHJ1Y3Qgc2Vlc2F3X2Rh dGEgeworCV9fYmUxNiB4OworCV9fYmUxNiB5OworCXU4IGJ1dHRvbl9hLCBidXR0b25fYiwgYnV0 dG9uX3gsIGJ1dHRvbl95LCBidXR0b25fc3RhcnQsIGJ1dHRvbl9zZWxlY3Q7Cit9OworCitzdGF0 aWMgaW50IHNlZXNhd19yZWFkX2RhdGEoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgc3RydWN0 IHNlZXNhd19kYXRhICpkYXRhKQoreworCWludCBlcnI7CisJdW5zaWduZWQgY2hhciB3cml0ZV9i dWZbMl0gPSB7IFNFRVNBV19HUElPX0JBU0UsIFNFRVNBV19HUElPX0JVTEsgfTsKKwl1bnNpZ25l ZCBjaGFyIHJlYWRfYnVmWzRdOworCisJZXJyID0gaTJjX21hc3Rlcl9zZW5kKGNsaWVudCwgd3Jp dGVfYnVmLCBzaXplb2Yod3JpdGVfYnVmKSk7CisJaWYgKGVyciA8IDApCisJCXJldHVybiBlcnI7 CisJZXJyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgcmVhZF9idWYsIHNpemVvZihyZWFkX2J1 ZikpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJdTMyIHJlc3VsdCA9IGdldF91 bmFsaWduZWRfYmUzMigmcmVhZF9idWYpOworCisJZGF0YS0+YnV0dG9uX2EgPSAhdGVzdF9iaXQo QlVUVE9OX0EsIChsb25nICopJnJlc3VsdCk7CisJZGF0YS0+YnV0dG9uX2IgPSAhdGVzdF9iaXQo QlVUVE9OX0IsIChsb25nICopJnJlc3VsdCk7CisJZGF0YS0+YnV0dG9uX3ggPSAhdGVzdF9iaXQo QlVUVE9OX1gsIChsb25nICopJnJlc3VsdCk7CisJZGF0YS0+YnV0dG9uX3kgPSAhdGVzdF9iaXQo QlVUVE9OX1ksIChsb25nICopJnJlc3VsdCk7CisJZGF0YS0+YnV0dG9uX3N0YXJ0ID0gIXRlc3Rf Yml0KEJVVFRPTl9TVEFSVCwgKGxvbmcgKikmcmVzdWx0KTsKKwlkYXRhLT5idXR0b25fc2VsZWN0 ID0gIXRlc3RfYml0KEJVVFRPTl9TRUxFQ1QsIChsb25nICopJnJlc3VsdCk7CisKKwl3cml0ZV9i dWZbMF0gPSBTRUVTQVdfQURDX0JBU0U7CisJd3JpdGVfYnVmWzFdID0gU0VFU0FXX0FEQ19PRkZT RVQgKyBBTkFMT0dfWDsKKwllcnIgPSBpMmNfbWFzdGVyX3NlbmQoY2xpZW50LCB3cml0ZV9idWYs IHNpemVvZih3cml0ZV9idWYpKTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuIGVycjsKKwllcnIg PSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCAoY2hhciAqKSZkYXRhLT54LCBzaXplb2YoZGF0YS0+ eCkpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCS8qCisJICogQURDIHJlYWRzIGxl ZnQgYXMgbWF4IGFuZCByaWdodCBhcyAwLCBtdXN0IGJlIHJldmVyc2VkIHNpbmNlIGtlcm5lbAor CSAqIGV4cGVjdHMgcmVwb3J0cyBpbiBvcHBvc2l0ZSBvcmRlci4KKwkgKi8KKwlkYXRhLT54ID0g U0VFU0FXX0pPWVNUSUNLX01BWF9BWElTIC0gYmUxNl90b19jcHUoZGF0YS0+eCk7CisKKwl3cml0 ZV9idWZbMV0gPSBTRUVTQVdfQURDX09GRlNFVCArIEFOQUxPR19ZOworCWVyciA9IGkyY19tYXN0 ZXJfc2VuZChjbGllbnQsIHdyaXRlX2J1Ziwgc2l6ZW9mKHdyaXRlX2J1ZikpOworCWlmIChlcnIg PCAwKQorCQlyZXR1cm4gZXJyOworCWVyciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIChjaGFy ICopJmRhdGEtPnksIHNpemVvZihkYXRhLT55KSk7CisJaWYgKGVyciA8IDApCisJCXJldHVybiBl cnI7CisJZGF0YS0+eSA9IGJlMTZfdG9fY3B1KGRhdGEtPnkpOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyB2b2lkIHNlZXNhd19wb2xsKHN0cnVjdCBpbnB1dF9kZXYgKmlucHV0KQoreworCXN0 cnVjdCBzZWVzYXdfZ2FtZXBhZCAqcHJpdmF0ZSA9IGlucHV0X2dldF9kcnZkYXRhKGlucHV0KTsK KwlzdHJ1Y3Qgc2Vlc2F3X2RhdGEgZGF0YTsKKwlpbnQgZXJyOworCisJZXJyID0gc2Vlc2F3X3Jl YWRfZGF0YShwcml2YXRlLT5pMmNfY2xpZW50LCAmZGF0YSk7CisJaWYgKGVyciAhPSAwKSB7CisJ CWRldl9kYmcoJmlucHV0LT5kZXYsICJmYWlsZWQgdG8gcmVhZCBqb3lzdGljayBzdGF0ZTogJWRc biIsCisJCQllcnIpOworCQlyZXR1cm47CisJfQorCisJaW5wdXRfcmVwb3J0X2FicyhpbnB1dCwg QUJTX1gsIGRhdGEueCk7CisJaW5wdXRfcmVwb3J0X2FicyhpbnB1dCwgQUJTX1ksIGRhdGEueSk7 CisJaW5wdXRfcmVwb3J0X2tleShpbnB1dCwgQlROX0VBU1QsIGRhdGEuYnV0dG9uX2EpOworCWlu cHV0X3JlcG9ydF9rZXkoaW5wdXQsIEJUTl9TT1VUSCwgZGF0YS5idXR0b25fYik7CisJaW5wdXRf cmVwb3J0X2tleShpbnB1dCwgQlROX05PUlRILCBkYXRhLmJ1dHRvbl94KTsKKwlpbnB1dF9yZXBv cnRfa2V5KGlucHV0LCBCVE5fV0VTVCwgZGF0YS5idXR0b25feSk7CisJaW5wdXRfcmVwb3J0X2tl eShpbnB1dCwgQlROX1NUQVJULCBkYXRhLmJ1dHRvbl9zdGFydCk7CisJaW5wdXRfcmVwb3J0X2tl eShpbnB1dCwgQlROX1NFTEVDVCwgZGF0YS5idXR0b25fc2VsZWN0KTsKKwlpbnB1dF9zeW5jKGlu cHV0KTsKK30KKworc3RhdGljIGludCBzZWVzYXdfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKK3sKKwlpbnQgZXJyOworCXN0cnVjdCBzZWVzYXdfZ2FtZXBhZCAqcHJpdmF0ZTsKKwl1 bnNpZ25lZCBjaGFyIHJlZ2lzdGVyX3Jlc2V0W10gPSB7IFNFRVNBV19TVEFUVVNfQkFTRSwKKwkJ CQkJICAgU0VFU0FXX1NUQVRVU19TV1JTVCwgMHhGRiB9OworCXVuc2lnbmVkIGNoYXIgZ2V0X2h3 X2lkW10gPSB7IFNFRVNBV19TVEFUVVNfQkFTRSwgU0VFU0FXX1NUQVRVU19IV19JRCB9OworCisJ ZXJyID0gaTJjX21hc3Rlcl9zZW5kKGNsaWVudCwgcmVnaXN0ZXJfcmVzZXQsIHNpemVvZihyZWdp c3Rlcl9yZXNldCkpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJLyogV2FpdCBm b3IgdGhlIHJlZ2lzdGVycyB0byByZXNldCBiZWZvcmUgcHJvY2VlZGluZyAqLworCW1kZWxheSgx MCk7CisKKwlwcml2YXRlID0gZGV2bV9remFsbG9jKCZjbGllbnQtPmRldiwgc2l6ZW9mKCpwcml2 YXRlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwcml2YXRlKQorCQlyZXR1cm4gLUVOT01FTTsKKwor CWVyciA9IGkyY19tYXN0ZXJfc2VuZChjbGllbnQsIGdldF9od19pZCwgc2l6ZW9mKGdldF9od19p ZCkpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJdW5zaWduZWQgY2hhciBoYXJk d2FyZV9pZDsKKworCWVyciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsICZoYXJkd2FyZV9pZCwg MSk7CisJaWYgKGVyciA8IDApCisJCXJldHVybiBlcnI7CisKKwlkZXZfZGJnKCZjbGllbnQtPmRl diwgIkFkYWZydWl0IFNlZXNhdyBHYW1lcGFkLCBIYXJkd2FyZSBJRDogJTAyeFxuIiwKKwkJaGFy ZHdhcmVfaWQpOworCisJcHJpdmF0ZS0+aTJjX2NsaWVudCA9IGNsaWVudDsKKwlzY25wcmludGYo cHJpdmF0ZS0+cGh5c2ljYWxfcGF0aCwgc2l6ZW9mKHByaXZhdGUtPnBoeXNpY2FsX3BhdGgpLAor CQkgICJpMmMvJXMiLCBkZXZfbmFtZSgmY2xpZW50LT5kZXYpKTsKKwlpMmNfc2V0X2NsaWVudGRh dGEoY2xpZW50LCBwcml2YXRlKTsKKworCXByaXZhdGUtPmlucHV0X2RldiA9IGRldm1faW5wdXRf YWxsb2NhdGVfZGV2aWNlKCZjbGllbnQtPmRldik7CisJaWYgKCFwcml2YXRlLT5pbnB1dF9kZXYp CisJCXJldHVybiAtRU5PTUVNOworCisJcHJpdmF0ZS0+aW5wdXRfZGV2LT5pZC5idXN0eXBlID0g QlVTX0kyQzsKKwlwcml2YXRlLT5pbnB1dF9kZXYtPm5hbWUgPSAiQWRhZnJ1aXQgU2Vlc2F3IEdh bWVwYWQiOworCXByaXZhdGUtPmlucHV0X2Rldi0+cGh5cyA9IHByaXZhdGUtPnBoeXNpY2FsX3Bh dGg7CisJaW5wdXRfc2V0X2RydmRhdGEocHJpdmF0ZS0+aW5wdXRfZGV2LCBwcml2YXRlKTsKKwlp bnB1dF9zZXRfYWJzX3BhcmFtcyhwcml2YXRlLT5pbnB1dF9kZXYsIEFCU19YLCAwLAorCQkJICAg ICBTRUVTQVdfSk9ZU1RJQ0tfTUFYX0FYSVMsIFNFRVNBV19KT1lTVElDS19GVVpaLAorCQkJICAg ICBTRUVTQVdfSk9ZU1RJQ0tfRkxBVCk7CisJaW5wdXRfc2V0X2Fic19wYXJhbXMocHJpdmF0ZS0+ aW5wdXRfZGV2LCBBQlNfWSwgMCwKKwkJCSAgICAgU0VFU0FXX0pPWVNUSUNLX01BWF9BWElTLCBT RUVTQVdfSk9ZU1RJQ0tfRlVaWiwKKwkJCSAgICAgU0VFU0FXX0pPWVNUSUNLX0ZMQVQpOworCWlu cHV0X3NldF9jYXBhYmlsaXR5KHByaXZhdGUtPmlucHV0X2RldiwgRVZfS0VZLCBCVE5fRUFTVCk7 CisJaW5wdXRfc2V0X2NhcGFiaWxpdHkocHJpdmF0ZS0+aW5wdXRfZGV2LCBFVl9LRVksIEJUTl9T T1VUSCk7CisJaW5wdXRfc2V0X2NhcGFiaWxpdHkocHJpdmF0ZS0+aW5wdXRfZGV2LCBFVl9LRVks IEJUTl9OT1JUSCk7CisJaW5wdXRfc2V0X2NhcGFiaWxpdHkocHJpdmF0ZS0+aW5wdXRfZGV2LCBF Vl9LRVksIEJUTl9XRVNUKTsKKwlpbnB1dF9zZXRfY2FwYWJpbGl0eShwcml2YXRlLT5pbnB1dF9k ZXYsIEVWX0tFWSwgQlROX1NUQVJUKTsKKwlpbnB1dF9zZXRfY2FwYWJpbGl0eShwcml2YXRlLT5p bnB1dF9kZXYsIEVWX0tFWSwgQlROX1NFTEVDVCk7CisKKwllcnIgPSBpbnB1dF9zZXR1cF9wb2xs aW5nKHByaXZhdGUtPmlucHV0X2Rldiwgc2Vlc2F3X3BvbGwpOworCWlmIChlcnIpIHsKKwkJZGV2 X2VycigmY2xpZW50LT5kZXYsICJmYWlsZWQgdG8gc2V0IHVwIHBvbGxpbmc6ICVkXG4iLCBlcnIp OworCQlyZXR1cm4gZXJyOworCX0KKworCWlucHV0X3NldF9wb2xsX2ludGVydmFsKHByaXZhdGUt PmlucHV0X2RldiwKKwkJCQlTRUVTQVdfR0FNRVBBRF9QT0xMX0lOVEVSVkFMKTsKKwlpbnB1dF9z ZXRfbWF4X3BvbGxfaW50ZXJ2YWwocHJpdmF0ZS0+aW5wdXRfZGV2LAorCQkJCSAgICBTRUVTQVdf R0FNRVBBRF9QT0xMX01BWCk7CisJaW5wdXRfc2V0X21pbl9wb2xsX2ludGVydmFsKHByaXZhdGUt PmlucHV0X2RldiwKKwkJCQkgICAgU0VFU0FXX0dBTUVQQURfUE9MTF9NSU4pOworCisJZXJyID0g aW5wdXRfcmVnaXN0ZXJfZGV2aWNlKHByaXZhdGUtPmlucHV0X2Rldik7CisJaWYgKGVycikgewor CQlkZXZfZXJyKCZjbGllbnQtPmRldiwgImZhaWxlZCB0byByZWdpc3RlciBqb3lzdGljazogJWRc biIsIGVycik7CisJCXJldHVybiBlcnI7CisJfQorCisJLyogU2V0IFBpbiBNb2RlIHRvIGlucHV0 IGFuZCBlbmFibGUgcHVsbC11cCByZXNpc3RvcnMgKi8KKwl1bnNpZ25lZCBjaGFyIHBpbl9tb2Rl W10gPSB7IFNFRVNBV19HUElPX0JBU0UsCVNFRVNBV19HUElPX0RJUkNMUl9CVUxLLAorCQkJCSAg ICAgQlVUVE9OX01BU0sgPj4gMjQsIEJVVFRPTl9NQVNLID4+IDE2LAorCQkJCSAgICAgQlVUVE9O X01BU0sgPj4gOCwJQlVUVE9OX01BU0sgfTsKKwllcnIgPSBpMmNfbWFzdGVyX3NlbmQoY2xpZW50 LCBwaW5fbW9kZSwgc2l6ZW9mKHBpbl9tb2RlKSk7CisJaWYgKGVyciA8IDApCisJCXJldHVybiBl cnI7CisJcGluX21vZGVbMV0gPSBTRUVTQVdfR1BJT19QVUxMRU5TRVQ7CisJZXJyID0gaTJjX21h c3Rlcl9zZW5kKGNsaWVudCwgcGluX21vZGUsIHNpemVvZihwaW5fbW9kZSkpOworCWlmIChlcnIg PCAwKQorCQlyZXR1cm4gZXJyOworCXBpbl9tb2RlWzFdID0gU0VFU0FXX0dQSU9fQlVMS19TRVQ7 CisJZXJyID0gaTJjX21hc3Rlcl9zZW5kKGNsaWVudCwgcGluX21vZGUsIHNpemVvZihwaW5fbW9k ZSkpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJcmV0dXJuIDA7Cit9CisKKyNp ZmRlZiBDT05GSUdfT0YKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX3NlZXNh d19tYXRjaFtdID0geworCXsKKwkJLmNvbXBhdGlibGUgPSAiYWRhZnJ1aXQsc2Vlc2F3LWdhbWVw YWQiLAorCX0sCisJeyAvKiBTZW50aW5lbCAqLyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShv Ziwgb2Zfc2Vlc2F3X21hdGNoKTsKKyNlbmRpZiAvKiBDT05GSUdfT0YgKi8KKworLyogY2xhbmct Zm9ybWF0IG9mZiAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHNlZXNhd19p ZF90YWJsZVtdID0geworCXsgU0VFU0FXX0RFVklDRV9OQU1FLCAwIH0sCisJeyAvKiBTZW50aW5l bCAqLyB9Cit9OworLyogY2xhbmctZm9ybWF0IG9uICovCisKK01PRFVMRV9ERVZJQ0VfVEFCTEUo aTJjLCBzZWVzYXdfaWRfdGFibGUpOworCitzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgc2Vlc2F3 X2RyaXZlciA9IHsKKwkuZHJpdmVyID0geworCQkubmFtZSA9IFNFRVNBV19ERVZJQ0VfTkFNRSwK KwkJLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKG9mX3NlZXNhd19tYXRjaCksCisJfSwK KwkuaWRfdGFibGUgPSBzZWVzYXdfaWRfdGFibGUsCisJLnByb2JlID0gc2Vlc2F3X3Byb2JlLAor fTsKK21vZHVsZV9pMmNfZHJpdmVyKHNlZXNhd19kcml2ZXIpOworCitNT0RVTEVfQVVUSE9SKCJB bnNodWwgRGFsYWwgPGFuc2h1bHVzckBnbWFpbC5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04o IkFkYWZydWl0IE1pbmkgSTJDIEdhbWVwYWQgZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BM Iik7Ci0tIAoyLjQyLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkxpbnV4LWtlcm5lbC1tZW50ZWVzIG1haWxpbmcgbGlzdApMaW51eC1rZXJuZWwtbWVu dGVlc0BsaXN0cy5saW51eGZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0 aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWtlcm5lbC1tZW50ZWVzCg==