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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1A61DC7EE22 for ; Thu, 4 May 2023 00:49:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229745AbjEDAtL (ORCPT ); Wed, 3 May 2023 20:49:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55526 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229684AbjEDAtG (ORCPT ); Wed, 3 May 2023 20:49:06 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3900F107; Wed, 3 May 2023 17:49:05 -0700 (PDT) Received: from notapiano.myfiosgateway.com (unknown [IPv6:2600:4041:5b1a:cd00:524d:e95d:1a9c:492a]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: nfraprado) by madras.collabora.co.uk (Postfix) with ESMTPSA id 70741660484E; Thu, 4 May 2023 01:49:02 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1683161344; bh=u8XBXZldjo0pv5hTDvJ4RWujEWWiFgrxeXoopBw2qJ4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=m9a8FxggP8hhRCVLp6wIzFVNcqkmdoUIfr9Bvp1Ry6BcXZ/BCn7G3mm05+JrU3c4b auL7Q+cfn1fZLP98Lss+/LpIzInsDyMoXGgPDI34PGglmFuIgJhEqG538mQXirmmAt BWkoNI0kmYsT/RjyhqQAUi0WnyR440ATT5wtx4Tzt/8e4QIc39fXoHT8vFYhTJZMjV HVTPvEPxh4ivWPGEaRD002ALtrm37HrbZiqsdC+I4LGMt10bJf5fiztiTe0JGx5eI0 yo0O2ndkco5fctdiSTBSON05ULvdBL1pin6yAmeXYStf0jbHIRZxJl5CVNOn6j+xw9 4yc7M1V5d2IKw== From: =?UTF-8?q?N=C3=ADcolas=20F=2E=20R=2E=20A=2E=20Prado?= To: Daniel Lezcano Cc: kernel@collabora.com, Alexandre Mergnat , Balsam CHIHI , Chen-Yu Tsai , Alexandre Bailon , AngeloGioacchino Del Regno , =?UTF-8?q?N=C3=ADcolas=20F=2E=20R=2E=20A=2E=20Prado?= , Amit Kucheria , Matthias Brugger , "Rafael J. Wysocki" , Zhang Rui , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-pm@vger.kernel.org Subject: [PATCH v2 2/6] thermal/drivers/mediatek/lvts_thermal: Honor sensors in immediate mode Date: Wed, 3 May 2023 20:48:48 -0400 Message-Id: <20230504004852.627049-3-nfraprado@collabora.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230504004852.627049-1-nfraprado@collabora.com> References: <20230504004852.627049-1-nfraprado@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Each controller can be configured to operate on immediate or filtered mode. On filtered mode, the sensors are enabled by setting the corresponding bits in MONCTL0, while on immediate mode, by setting MSRCTL1. Previously, the code would set MSRCTL1 for all four sensors when configured to immediate mode, but given that the controller might not have all four sensors connected, this would cause interrupts to trigger for non-existent sensors. Fix this by handling the MSRCTL1 register analogously to the MONCTL0: only enable the sensors that were declared. Fixes: f5f633b18234 ("thermal/drivers/mediatek: Add the Low Voltage Thermal Sensor driver") Signed-off-by: NĂ­colas F. R. A. Prado Reviewed-by: AngeloGioacchino Del Regno Tested-by: Chen-Yu Tsai --- (no changes since v1) drivers/thermal/mediatek/lvts_thermal.c | 50 +++++++++++++------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/drivers/thermal/mediatek/lvts_thermal.c b/drivers/thermal/mediatek/lvts_thermal.c index 2988f201633a..f7d998a45ea0 100644 --- a/drivers/thermal/mediatek/lvts_thermal.c +++ b/drivers/thermal/mediatek/lvts_thermal.c @@ -922,24 +922,6 @@ static int lvts_ctrl_configure(struct device *dev, struct lvts_ctrl *lvts_ctrl) LVTS_HW_FILTER << 3 | LVTS_HW_FILTER; writel(value, LVTS_MSRCTL0(lvts_ctrl->base)); - /* - * LVTS_MSRCTL1 : Measurement control - * - * Bits: - * - * 9: Ignore MSRCTL0 config and do immediate measurement on sensor3 - * 6: Ignore MSRCTL0 config and do immediate measurement on sensor2 - * 5: Ignore MSRCTL0 config and do immediate measurement on sensor1 - * 4: Ignore MSRCTL0 config and do immediate measurement on sensor0 - * - * That configuration will ignore the filtering and the delays - * introduced below in MONCTL1 and MONCTL2 - */ - if (lvts_ctrl->mode == LVTS_MSR_IMMEDIATE_MODE) { - value = BIT(9) | BIT(6) | BIT(5) | BIT(4); - writel(value, LVTS_MSRCTL1(lvts_ctrl->base)); - } - /* * LVTS_MONCTL1 : Period unit and group interval configuration * @@ -1004,6 +986,8 @@ static int lvts_ctrl_start(struct device *dev, struct lvts_ctrl *lvts_ctrl) struct lvts_sensor *lvts_sensors = lvts_ctrl->sensors; struct thermal_zone_device *tz; u32 sensor_map = 0; + u32 sensor_map_bits[][4] = {{BIT(4), BIT(5), BIT(6), BIT(9)}, + {BIT(0), BIT(1), BIT(2), BIT(3)}}; int i; for (i = 0; i < lvts_ctrl->num_lvts_sensor; i++) { @@ -1040,20 +1024,38 @@ static int lvts_ctrl_start(struct device *dev, struct lvts_ctrl *lvts_ctrl) * map, so we can enable the temperature monitoring in * the hardware thermal controller. */ - sensor_map |= BIT(i); + sensor_map |= sensor_map_bits[lvts_ctrl->mode][i]; } /* - * Bits: - * 9: Single point access flow - * 0-3: Enable sensing point 0-3 - * * The initialization of the thermal zones give us * which sensor point to enable. If any thermal zone * was not described in the device tree, it won't be * enabled here in the sensor map. */ - writel(sensor_map | BIT(9), LVTS_MONCTL0(lvts_ctrl->base)); + if (lvts_ctrl->mode == LVTS_MSR_IMMEDIATE_MODE) { + /* + * LVTS_MSRCTL1 : Measurement control + * + * Bits: + * + * 9: Ignore MSRCTL0 config and do immediate measurement on sensor3 + * 6: Ignore MSRCTL0 config and do immediate measurement on sensor2 + * 5: Ignore MSRCTL0 config and do immediate measurement on sensor1 + * 4: Ignore MSRCTL0 config and do immediate measurement on sensor0 + * + * That configuration will ignore the filtering and the delays + * introduced in MONCTL1 and MONCTL2 + */ + writel(sensor_map, LVTS_MSRCTL1(lvts_ctrl->base)); + } else { + /* + * Bits: + * 9: Single point access flow + * 0-3: Enable sensing point 0-3 + */ + writel(sensor_map | BIT(9), LVTS_MONCTL0(lvts_ctrl->base)); + } return 0; } -- 2.40.1 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 3E105C77B7F for ; Thu, 4 May 2023 00:50:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=IhqtKr6aUC30bqHcLofzQE5RZa/unpO9/k+8NxnShO0=; b=Sdfjh2pB3ck9/e q1XFtMWrYA0J2LyUyL/RfKja2MNL5CTdalIUxq+35REp+0ou6pmDxl7C4lmz6sX3IXnTaigjBJgo1 MLegtHaK+Wsk9/9qJOMrh+FS4y2OvYMconjH3ead8qak6PwzSJaQvo1Wf+m5W8amx0P8PI6Gv28NL lTy/QEm1ixZ6pYJgwJMnd54uobiphjh/KcvASv8obEY6voOPw+12byd4PpG44+ozwJcywcwnjBVAw IkHg3vhnFgF6BWpDY/YZt4jrBcQXY2NLT78Mv2w5Kf68196NOskMNjHJNIPRHvFN2VUVdR1D9SoAc M9u9WobQ52G5M3HbWmpg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1puN9n-006CkE-1H; Thu, 04 May 2023 00:49:15 +0000 Received: from madras.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e5ab]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1puN9f-006Cf3-0a; Thu, 04 May 2023 00:49:10 +0000 Received: from notapiano.myfiosgateway.com (unknown [IPv6:2600:4041:5b1a:cd00:524d:e95d:1a9c:492a]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: nfraprado) by madras.collabora.co.uk (Postfix) with ESMTPSA id 70741660484E; Thu, 4 May 2023 01:49:02 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1683161344; bh=u8XBXZldjo0pv5hTDvJ4RWujEWWiFgrxeXoopBw2qJ4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=m9a8FxggP8hhRCVLp6wIzFVNcqkmdoUIfr9Bvp1Ry6BcXZ/BCn7G3mm05+JrU3c4b auL7Q+cfn1fZLP98Lss+/LpIzInsDyMoXGgPDI34PGglmFuIgJhEqG538mQXirmmAt BWkoNI0kmYsT/RjyhqQAUi0WnyR440ATT5wtx4Tzt/8e4QIc39fXoHT8vFYhTJZMjV HVTPvEPxh4ivWPGEaRD002ALtrm37HrbZiqsdC+I4LGMt10bJf5fiztiTe0JGx5eI0 yo0O2ndkco5fctdiSTBSON05ULvdBL1pin6yAmeXYStf0jbHIRZxJl5CVNOn6j+xw9 4yc7M1V5d2IKw== From: =?UTF-8?q?N=C3=ADcolas=20F=2E=20R=2E=20A=2E=20Prado?= To: Daniel Lezcano Cc: kernel@collabora.com, Alexandre Mergnat , Balsam CHIHI , Chen-Yu Tsai , Alexandre Bailon , AngeloGioacchino Del Regno , =?UTF-8?q?N=C3=ADcolas=20F=2E=20R=2E=20A=2E=20Prado?= , Amit Kucheria , Matthias Brugger , "Rafael J. Wysocki" , Zhang Rui , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-pm@vger.kernel.org Subject: [PATCH v2 2/6] thermal/drivers/mediatek/lvts_thermal: Honor sensors in immediate mode Date: Wed, 3 May 2023 20:48:48 -0400 Message-Id: <20230504004852.627049-3-nfraprado@collabora.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230504004852.627049-1-nfraprado@collabora.com> References: <20230504004852.627049-1-nfraprado@collabora.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230503_174907_498570_0700C5AB X-CRM114-Status: GOOD ( 16.18 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 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 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RWFjaCBjb250cm9sbGVyIGNhbiBiZSBjb25maWd1cmVkIHRvIG9wZXJhdGUgb24gaW1tZWRpYXRl IG9yIGZpbHRlcmVkCm1vZGUuIE9uIGZpbHRlcmVkIG1vZGUsIHRoZSBzZW5zb3JzIGFyZSBlbmFi bGVkIGJ5IHNldHRpbmcgdGhlCmNvcnJlc3BvbmRpbmcgYml0cyBpbiBNT05DVEwwLCB3aGlsZSBv biBpbW1lZGlhdGUgbW9kZSwgYnkgc2V0dGluZwpNU1JDVEwxLgoKUHJldmlvdXNseSwgdGhlIGNv ZGUgd291bGQgc2V0IE1TUkNUTDEgZm9yIGFsbCBmb3VyIHNlbnNvcnMgd2hlbgpjb25maWd1cmVk IHRvIGltbWVkaWF0ZSBtb2RlLCBidXQgZ2l2ZW4gdGhhdCB0aGUgY29udHJvbGxlciBtaWdodCBu b3QKaGF2ZSBhbGwgZm91ciBzZW5zb3JzIGNvbm5lY3RlZCwgdGhpcyB3b3VsZCBjYXVzZSBpbnRl cnJ1cHRzIHRvIHRyaWdnZXIKZm9yIG5vbi1leGlzdGVudCBzZW5zb3JzLiBGaXggdGhpcyBieSBo YW5kbGluZyB0aGUgTVNSQ1RMMSByZWdpc3RlcgphbmFsb2dvdXNseSB0byB0aGUgTU9OQ1RMMDog b25seSBlbmFibGUgdGhlIHNlbnNvcnMgdGhhdCB3ZXJlIGRlY2xhcmVkLgoKRml4ZXM6IGY1ZjYz M2IxODIzNCAoInRoZXJtYWwvZHJpdmVycy9tZWRpYXRlazogQWRkIHRoZSBMb3cgVm9sdGFnZSBU aGVybWFsIFNlbnNvciBkcml2ZXIiKQpTaWduZWQtb2ZmLWJ5OiBOw61jb2xhcyBGLiBSLiBBLiBQ cmFkbyA8bmZyYXByYWRvQGNvbGxhYm9yYS5jb20+ClJldmlld2VkLWJ5OiBBbmdlbG9HaW9hY2No aW5vIERlbCBSZWdubyA8YW5nZWxvZ2lvYWNjaGluby5kZWxyZWdub0Bjb2xsYWJvcmEuY29tPgpU ZXN0ZWQtYnk6IENoZW4tWXUgVHNhaSA8d2Vuc3RAY2hyb21pdW0ub3JnPgotLS0KCihubyBjaGFu Z2VzIHNpbmNlIHYxKQoKIGRyaXZlcnMvdGhlcm1hbC9tZWRpYXRlay9sdnRzX3RoZXJtYWwuYyB8 IDUwICsrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRp b25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RoZXJtYWwvbWVk aWF0ZWsvbHZ0c190aGVybWFsLmMgYi9kcml2ZXJzL3RoZXJtYWwvbWVkaWF0ZWsvbHZ0c190aGVy bWFsLmMKaW5kZXggMjk4OGYyMDE2MzNhLi5mN2Q5OThhNDVlYTAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvdGhlcm1hbC9tZWRpYXRlay9sdnRzX3RoZXJtYWwuYworKysgYi9kcml2ZXJzL3RoZXJtYWwv bWVkaWF0ZWsvbHZ0c190aGVybWFsLmMKQEAgLTkyMiwyNCArOTIyLDYgQEAgc3RhdGljIGludCBs dnRzX2N0cmxfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGx2dHNfY3RybCAq bHZ0c19jdHJsKQogCQkJTFZUU19IV19GSUxURVIgPDwgMyB8IExWVFNfSFdfRklMVEVSOwogCXdy aXRlbCh2YWx1ZSwgTFZUU19NU1JDVEwwKGx2dHNfY3RybC0+YmFzZSkpOwogCi0JLyoKLQkgKiBM VlRTX01TUkNUTDEgOiBNZWFzdXJlbWVudCBjb250cm9sCi0JICoKLQkgKiBCaXRzOgotCSAqCi0J ICogOTogSWdub3JlIE1TUkNUTDAgY29uZmlnIGFuZCBkbyBpbW1lZGlhdGUgbWVhc3VyZW1lbnQg b24gc2Vuc29yMwotCSAqIDY6IElnbm9yZSBNU1JDVEwwIGNvbmZpZyBhbmQgZG8gaW1tZWRpYXRl IG1lYXN1cmVtZW50IG9uIHNlbnNvcjIKLQkgKiA1OiBJZ25vcmUgTVNSQ1RMMCBjb25maWcgYW5k IGRvIGltbWVkaWF0ZSBtZWFzdXJlbWVudCBvbiBzZW5zb3IxCi0JICogNDogSWdub3JlIE1TUkNU TDAgY29uZmlnIGFuZCBkbyBpbW1lZGlhdGUgbWVhc3VyZW1lbnQgb24gc2Vuc29yMAotCSAqCi0J ICogVGhhdCBjb25maWd1cmF0aW9uIHdpbGwgaWdub3JlIHRoZSBmaWx0ZXJpbmcgYW5kIHRoZSBk ZWxheXMKLQkgKiBpbnRyb2R1Y2VkIGJlbG93IGluIE1PTkNUTDEgYW5kIE1PTkNUTDIKLQkgKi8K LQlpZiAobHZ0c19jdHJsLT5tb2RlID09IExWVFNfTVNSX0lNTUVESUFURV9NT0RFKSB7Ci0JCXZh bHVlID0gQklUKDkpIHwgQklUKDYpIHwgQklUKDUpIHwgQklUKDQpOwotCQl3cml0ZWwodmFsdWUs IExWVFNfTVNSQ1RMMShsdnRzX2N0cmwtPmJhc2UpKTsKLQl9Ci0KIAkvKgogCSAqIExWVFNfTU9O Q1RMMSA6IFBlcmlvZCB1bml0IGFuZCBncm91cCBpbnRlcnZhbCBjb25maWd1cmF0aW9uCiAJICoK QEAgLTEwMDQsNiArOTg2LDggQEAgc3RhdGljIGludCBsdnRzX2N0cmxfc3RhcnQoc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3QgbHZ0c19jdHJsICpsdnRzX2N0cmwpCiAJc3RydWN0IGx2dHNfc2Vu c29yICpsdnRzX3NlbnNvcnMgPSBsdnRzX2N0cmwtPnNlbnNvcnM7CiAJc3RydWN0IHRoZXJtYWxf em9uZV9kZXZpY2UgKnR6OwogCXUzMiBzZW5zb3JfbWFwID0gMDsKKwl1MzIgc2Vuc29yX21hcF9i aXRzW11bNF0gPSB7e0JJVCg0KSwgQklUKDUpLCBCSVQoNiksIEJJVCg5KX0sCisJCQkJICAgIHtC SVQoMCksIEJJVCgxKSwgQklUKDIpLCBCSVQoMyl9fTsKIAlpbnQgaTsKIAogCWZvciAoaSA9IDA7 IGkgPCBsdnRzX2N0cmwtPm51bV9sdnRzX3NlbnNvcjsgaSsrKSB7CkBAIC0xMDQwLDIwICsxMDI0 LDM4IEBAIHN0YXRpYyBpbnQgbHZ0c19jdHJsX3N0YXJ0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IGx2dHNfY3RybCAqbHZ0c19jdHJsKQogCQkgKiBtYXAsIHNvIHdlIGNhbiBlbmFibGUgdGhl IHRlbXBlcmF0dXJlIG1vbml0b3JpbmcgaW4KIAkJICogdGhlIGhhcmR3YXJlIHRoZXJtYWwgY29u dHJvbGxlci4KIAkJICovCi0JCXNlbnNvcl9tYXAgfD0gQklUKGkpOworCQlzZW5zb3JfbWFwIHw9 IHNlbnNvcl9tYXBfYml0c1tsdnRzX2N0cmwtPm1vZGVdW2ldOwogCX0KIAogCS8qCi0JICogQml0 czoKLQkgKiAgICAgIDk6IFNpbmdsZSBwb2ludCBhY2Nlc3MgZmxvdwotCSAqICAgIDAtMzogRW5h YmxlIHNlbnNpbmcgcG9pbnQgMC0zCi0JICoKIAkgKiBUaGUgaW5pdGlhbGl6YXRpb24gb2YgdGhl IHRoZXJtYWwgem9uZXMgZ2l2ZSB1cwogCSAqIHdoaWNoIHNlbnNvciBwb2ludCB0byBlbmFibGUu IElmIGFueSB0aGVybWFsIHpvbmUKIAkgKiB3YXMgbm90IGRlc2NyaWJlZCBpbiB0aGUgZGV2aWNl IHRyZWUsIGl0IHdvbid0IGJlCiAJICogZW5hYmxlZCBoZXJlIGluIHRoZSBzZW5zb3IgbWFwLgog CSAqLwotCXdyaXRlbChzZW5zb3JfbWFwIHwgQklUKDkpLCBMVlRTX01PTkNUTDAobHZ0c19jdHJs LT5iYXNlKSk7CisJaWYgKGx2dHNfY3RybC0+bW9kZSA9PSBMVlRTX01TUl9JTU1FRElBVEVfTU9E RSkgeworCQkvKgorCQkgKiBMVlRTX01TUkNUTDEgOiBNZWFzdXJlbWVudCBjb250cm9sCisJCSAq CisJCSAqIEJpdHM6CisJCSAqCisJCSAqIDk6IElnbm9yZSBNU1JDVEwwIGNvbmZpZyBhbmQgZG8g aW1tZWRpYXRlIG1lYXN1cmVtZW50IG9uIHNlbnNvcjMKKwkJICogNjogSWdub3JlIE1TUkNUTDAg Y29uZmlnIGFuZCBkbyBpbW1lZGlhdGUgbWVhc3VyZW1lbnQgb24gc2Vuc29yMgorCQkgKiA1OiBJ Z25vcmUgTVNSQ1RMMCBjb25maWcgYW5kIGRvIGltbWVkaWF0ZSBtZWFzdXJlbWVudCBvbiBzZW5z b3IxCisJCSAqIDQ6IElnbm9yZSBNU1JDVEwwIGNvbmZpZyBhbmQgZG8gaW1tZWRpYXRlIG1lYXN1 cmVtZW50IG9uIHNlbnNvcjAKKwkJICoKKwkJICogVGhhdCBjb25maWd1cmF0aW9uIHdpbGwgaWdu b3JlIHRoZSBmaWx0ZXJpbmcgYW5kIHRoZSBkZWxheXMKKwkJICogaW50cm9kdWNlZCBpbiBNT05D VEwxIGFuZCBNT05DVEwyCisJCSAqLworCQl3cml0ZWwoc2Vuc29yX21hcCwgTFZUU19NU1JDVEwx KGx2dHNfY3RybC0+YmFzZSkpOworCX0gZWxzZSB7CisJCS8qCisJCSAqIEJpdHM6CisJCSAqICAg ICAgOTogU2luZ2xlIHBvaW50IGFjY2VzcyBmbG93CisJCSAqICAgIDAtMzogRW5hYmxlIHNlbnNp bmcgcG9pbnQgMC0zCisJCSAqLworCQl3cml0ZWwoc2Vuc29yX21hcCB8IEJJVCg5KSwgTFZUU19N T05DVEwwKGx2dHNfY3RybC0+YmFzZSkpOworCX0KIAogCXJldHVybiAwOwogfQotLSAKMi40MC4x CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgt YXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJt LWtlcm5lbAo=