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 6F334C433F5 for ; Sat, 19 Mar 2022 16:31:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243667AbiCSQdK (ORCPT ); Sat, 19 Mar 2022 12:33:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37398 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243665AbiCSQdI (ORCPT ); Sat, 19 Mar 2022 12:33:08 -0400 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7AD5A23F9C9 for ; Sat, 19 Mar 2022 09:31:47 -0700 (PDT) Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 838D42A3B; Sat, 19 Mar 2022 17:31:35 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1647707496; bh=DgRyLyC84z9xb+1Wn+4aphEWvW/8cvmGvq0UZRzEwH8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VCHmxvkepmZtEyhaR+je82lUY6iXW41E+38eRoHqTPAo5HkyCm0ZmNMJs2PPaqPGe zJBKafIS5qhk/2eVk9lDbqQbf5J/9E5OyYUHTwc9JDPnsvzSahukG4xzRvS+F0tdCV xSIP/Jle//V7ZbJW8xP8mmZZ2+NIIWgiS9QqDpdE= From: Laurent Pinchart To: linux-media@vger.kernel.org Cc: Dafna Hirschfeld , Heiko Stuebner , Paul Elder , Tomasz Figa , linux-rockchip@lists.infradead.org Subject: [PATCH v3 14/17] media: rkisp1: debug: Collect input status by sampling ISP_FLAGS_SHD Date: Sat, 19 Mar 2022 18:30:57 +0200 Message-Id: <20220319163100.3083-15-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220319163100.3083-1-laurent.pinchart@ideasonboard.com> References: <20220319163100.3083-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org The ISP_FLAGS_SHD register exposes the ISP parallel input signals (data and synchronization) in real time. This can help debugging when the device doesn't output any image. Sample the register 10000 times with a 1µs delay and expose the result through debugfs. Signed-off-by: Laurent Pinchart Signed-off-by: Paul Elder --- .../platform/rockchip/rkisp1/rkisp1-debug.c | 54 +++++++++++++++++++ .../platform/rockchip/rkisp1/rkisp1-regs.h | 9 ++++ 2 files changed, 63 insertions(+) diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c index 64b33774cbdf..da3ed0ab697a 100644 --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c @@ -9,9 +9,61 @@ */ #include +#include #include +#include +#include #include "rkisp1-common.h" +#include "rkisp1-regs.h" + +#define RKISP1_DEBUG_DATA_COUNT_BINS 32 +#define RKISP1_DEBUG_DATA_COUNT_STEP (4096 / RKISP1_DEBUG_DATA_COUNT_BINS) + +static int rkisp1_debug_input_status_show(struct seq_file *m, void *p) +{ + struct rkisp1_device *rkisp1 = m->private; + u16 data_count[RKISP1_DEBUG_DATA_COUNT_BINS] = { }; + unsigned int hsync_count = 0; + unsigned int vsync_count = 0; + unsigned int i; + u32 data; + u32 val; + int ret; + + ret = pm_runtime_get_if_in_use(rkisp1->dev); + if (ret) + return ret; + + /* Sample the ISP input port status 10000 times with a 1µs interval. */ + for (i = 0; i < 10000; ++i) { + val = rkisp1_read(rkisp1, RKISP1_CIF_ISP_FLAGS_SHD); + + data = (val & RKISP1_CIF_ISP_FLAGS_SHD_S_DATA_MASK) + >> RKISP1_CIF_ISP_FLAGS_SHD_S_DATA_SHIFT; + data_count[data / RKISP1_DEBUG_DATA_COUNT_STEP]++; + + if (val & RKISP1_CIF_ISP_FLAGS_SHD_S_HSYNC) + hsync_count++; + if (val & RKISP1_CIF_ISP_FLAGS_SHD_S_VSYNC) + vsync_count++; + + udelay(1); + } + + pm_runtime_put(rkisp1->dev); + + seq_printf(m, "vsync: %u, hsync: %u\n", vsync_count, hsync_count); + seq_puts(m, "data:\n"); + for (i = 0; i < ARRAY_SIZE(data_count); ++i) + seq_printf(m, "- [%04u:%04u]: %u\n", + i * RKISP1_DEBUG_DATA_COUNT_STEP, + (i + 1) * RKISP1_DEBUG_DATA_COUNT_STEP - 1, + data_count[i]); + + return 0; +} +DEFINE_SHOW_ATTRIBUTE(rkisp1_debug_input_status); void rkisp1_debug_init(struct rkisp1_device *rkisp1) { @@ -42,6 +94,8 @@ void rkisp1_debug_init(struct rkisp1_device *rkisp1) &debug->frame_drop[RKISP1_MAINPATH]); debugfs_create_ulong("sp_frame_drop", 0444, debug->debugfs_dir, &debug->frame_drop[RKISP1_SELFPATH]); + debugfs_create_file("input_status", 0444, debug->debugfs_dir, rkisp1, + &rkisp1_debug_input_status_fops); } void rkisp1_debug_cleanup(struct rkisp1_device *rkisp1) diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-regs.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-regs.h index 083d92ada73f..447c5f241d69 100644 --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-regs.h +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-regs.h @@ -454,6 +454,15 @@ #define RKISP1_CIF_ISP_DEMOSAIC_BYPASS BIT(10) #define RKISP1_CIF_ISP_DEMOSAIC_TH(x) ((x) & 0xFF) +/* ISP_FLAGS_SHD */ +#define RKISP1_CIF_ISP_FLAGS_SHD_ISP_ENABLE_SHD BIT(0) +#define RKISP1_CIF_ISP_FLAGS_SHD_ISP_ENABLE_INFORM_SHD BIT(1) +#define RKISP1_CIF_ISP_FLAGS_SHD_INFORM_FIELD BIT(2) +#define RKISP1_CIF_ISP_FLAGS_SHD_S_DATA_MASK GENMASK(27, 16) +#define RKISP1_CIF_ISP_FLAGS_SHD_S_DATA_SHIFT 16 +#define RKISP1_CIF_ISP_FLAGS_SHD_S_VSYNC BIT(30) +#define RKISP1_CIF_ISP_FLAGS_SHD_S_HSYNC BIT(31) + /* AWB */ /* ISP_AWB_PROP */ #define RKISP1_CIF_ISP_AWB_YMAX_CMP_EN BIT(2) -- Regards, Laurent Pinchart 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 2D6ECC433FE for ; Sat, 19 Mar 2022 16:31:56 +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=SF7Qz6cbuZ8dIR4CdJfPfr4v1zGQgtiXRtnWd2umR/w=; b=w+gfe6cFS6ubfd N4CwjXxfHIf8jNQS9udGOdQJCjviSFp4bUdG9Ltc0a3ih0HBpG2dSuyYPzthAJK0CHgRR1afz1CWO rFL5yAjGniSxAWG9bu5jj/QkAsmR9KfKiQSrP5eFwdqUU2yx8aVznGBBxOSsEsmi0XfVxAcNVz8l0 D45uNem44jVJBVIh8rT1Ul4SVxFP04rvFYseFiTy3SwxfsP5nqeWB63+6F6VheBYZlkmSxIEPo3yP /OeyjVUHfsilOZW4B87yHJ9WRwBVnnb6EHywCRQaz+pMuFEzwro6lLcJu6TjjL9in8XfhyLLZVp26 zExTroo9fFpZ1f3OICSg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nVbzc-00434N-Um; Sat, 19 Mar 2022 16:31:52 +0000 Received: from perceval.ideasonboard.com ([213.167.242.64]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nVbzN-0042nO-Dc for linux-rockchip@lists.infradead.org; Sat, 19 Mar 2022 16:31:40 +0000 Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 838D42A3B; Sat, 19 Mar 2022 17:31:35 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1647707496; bh=DgRyLyC84z9xb+1Wn+4aphEWvW/8cvmGvq0UZRzEwH8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VCHmxvkepmZtEyhaR+je82lUY6iXW41E+38eRoHqTPAo5HkyCm0ZmNMJs2PPaqPGe zJBKafIS5qhk/2eVk9lDbqQbf5J/9E5OyYUHTwc9JDPnsvzSahukG4xzRvS+F0tdCV xSIP/Jle//V7ZbJW8xP8mmZZ2+NIIWgiS9QqDpdE= From: Laurent Pinchart To: linux-media@vger.kernel.org Cc: Dafna Hirschfeld , Heiko Stuebner , Paul Elder , Tomasz Figa , linux-rockchip@lists.infradead.org Subject: [PATCH v3 14/17] media: rkisp1: debug: Collect input status by sampling ISP_FLAGS_SHD Date: Sat, 19 Mar 2022 18:30:57 +0200 Message-Id: <20220319163100.3083-15-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220319163100.3083-1-laurent.pinchart@ideasonboard.com> References: <20220319163100.3083-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220319_093137_678402_0C55568D X-CRM114-Status: GOOD ( 14.70 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org VGhlIElTUF9GTEFHU19TSEQgcmVnaXN0ZXIgZXhwb3NlcyB0aGUgSVNQIHBhcmFsbGVsIGlucHV0 IHNpZ25hbHMgKGRhdGEKYW5kIHN5bmNocm9uaXphdGlvbikgaW4gcmVhbCB0aW1lLiBUaGlzIGNh biBoZWxwIGRlYnVnZ2luZyB3aGVuIHRoZQpkZXZpY2UgZG9lc24ndCBvdXRwdXQgYW55IGltYWdl LiBTYW1wbGUgdGhlIHJlZ2lzdGVyIDEwMDAwIHRpbWVzIHdpdGggYQoxwrVzIGRlbGF5IGFuZCBl eHBvc2UgdGhlIHJlc3VsdCB0aHJvdWdoIGRlYnVnZnMuCgpTaWduZWQtb2ZmLWJ5OiBMYXVyZW50 IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+ClNpZ25lZC1vZmYt Ynk6IFBhdWwgRWxkZXIgPHBhdWwuZWxkZXJAaWRlYXNvbmJvYXJkLmNvbT4KLS0tCiAuLi4vcGxh dGZvcm0vcm9ja2NoaXAvcmtpc3AxL3JraXNwMS1kZWJ1Zy5jICAgfCA1NCArKysrKysrKysrKysr KysrKysrCiAuLi4vcGxhdGZvcm0vcm9ja2NoaXAvcmtpc3AxL3JraXNwMS1yZWdzLmggICAgfCAg OSArKysrCiAyIGZpbGVzIGNoYW5nZWQsIDYzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL3JvY2tjaGlwL3JraXNwMS9ya2lzcDEtZGVidWcuYyBiL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vcm9ja2NoaXAvcmtpc3AxL3JraXNwMS1kZWJ1Zy5jCmluZGV4 IDY0YjMzNzc0Y2JkZi4uZGEzZWQwYWI2OTdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL3JvY2tjaGlwL3JraXNwMS9ya2lzcDEtZGVidWcuYworKysgYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL3JvY2tjaGlwL3JraXNwMS9ya2lzcDEtZGVidWcuYwpAQCAtOSw5ICs5LDYxIEBA CiAgKi8KIAogI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxh eS5oPgogI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRp bWUuaD4KKyNpbmNsdWRlIDxsaW51eC9zZXFfZmlsZS5oPgogCiAjaW5jbHVkZSAicmtpc3AxLWNv bW1vbi5oIgorI2luY2x1ZGUgInJraXNwMS1yZWdzLmgiCisKKyNkZWZpbmUgUktJU1AxX0RFQlVH X0RBVEFfQ09VTlRfQklOUwkzMgorI2RlZmluZSBSS0lTUDFfREVCVUdfREFUQV9DT1VOVF9TVEVQ CSg0MDk2IC8gUktJU1AxX0RFQlVHX0RBVEFfQ09VTlRfQklOUykKKworc3RhdGljIGludCBya2lz cDFfZGVidWdfaW5wdXRfc3RhdHVzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpwKQor eworCXN0cnVjdCBya2lzcDFfZGV2aWNlICpya2lzcDEgPSBtLT5wcml2YXRlOworCXUxNiBkYXRh X2NvdW50W1JLSVNQMV9ERUJVR19EQVRBX0NPVU5UX0JJTlNdID0geyB9OworCXVuc2lnbmVkIGlu dCBoc3luY19jb3VudCA9IDA7CisJdW5zaWduZWQgaW50IHZzeW5jX2NvdW50ID0gMDsKKwl1bnNp Z25lZCBpbnQgaTsKKwl1MzIgZGF0YTsKKwl1MzIgdmFsOworCWludCByZXQ7CisKKwlyZXQgPSBw bV9ydW50aW1lX2dldF9pZl9pbl91c2Uocmtpc3AxLT5kZXYpOworCWlmIChyZXQpCisJCXJldHVy biByZXQ7CisKKwkvKiBTYW1wbGUgdGhlIElTUCBpbnB1dCBwb3J0IHN0YXR1cyAxMDAwMCB0aW1l cyB3aXRoIGEgMcK1cyBpbnRlcnZhbC4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgMTAwMDA7ICsraSkg eworCQl2YWwgPSBya2lzcDFfcmVhZChya2lzcDEsIFJLSVNQMV9DSUZfSVNQX0ZMQUdTX1NIRCk7 CisKKwkJZGF0YSA9ICh2YWwgJiBSS0lTUDFfQ0lGX0lTUF9GTEFHU19TSERfU19EQVRBX01BU0sp CisJCSAgICAgPj4gUktJU1AxX0NJRl9JU1BfRkxBR1NfU0hEX1NfREFUQV9TSElGVDsKKwkJZGF0 YV9jb3VudFtkYXRhIC8gUktJU1AxX0RFQlVHX0RBVEFfQ09VTlRfU1RFUF0rKzsKKworCQlpZiAo dmFsICYgUktJU1AxX0NJRl9JU1BfRkxBR1NfU0hEX1NfSFNZTkMpCisJCQloc3luY19jb3VudCsr OworCQlpZiAodmFsICYgUktJU1AxX0NJRl9JU1BfRkxBR1NfU0hEX1NfVlNZTkMpCisJCQl2c3lu Y19jb3VudCsrOworCisJCXVkZWxheSgxKTsKKwl9CisKKwlwbV9ydW50aW1lX3B1dChya2lzcDEt PmRldik7CisKKwlzZXFfcHJpbnRmKG0sICJ2c3luYzogJXUsIGhzeW5jOiAldVxuIiwgdnN5bmNf Y291bnQsIGhzeW5jX2NvdW50KTsKKwlzZXFfcHV0cyhtLCAiZGF0YTpcbiIpOworCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKGRhdGFfY291bnQpOyArK2kpCisJCXNlcV9wcmludGYobSwgIi0g WyUwNHU6JTA0dV06ICV1XG4iLAorCQkJICAgaSAqIFJLSVNQMV9ERUJVR19EQVRBX0NPVU5UX1NU RVAsCisJCQkgICAoaSArIDEpICogUktJU1AxX0RFQlVHX0RBVEFfQ09VTlRfU1RFUCAtIDEsCisJ CQkgICBkYXRhX2NvdW50W2ldKTsKKworCXJldHVybiAwOworfQorREVGSU5FX1NIT1dfQVRUUklC VVRFKHJraXNwMV9kZWJ1Z19pbnB1dF9zdGF0dXMpOwogCiB2b2lkIHJraXNwMV9kZWJ1Z19pbml0 KHN0cnVjdCBya2lzcDFfZGV2aWNlICpya2lzcDEpCiB7CkBAIC00Miw2ICs5NCw4IEBAIHZvaWQg cmtpc3AxX2RlYnVnX2luaXQoc3RydWN0IHJraXNwMV9kZXZpY2UgKnJraXNwMSkKIAkJCSAgICAg JmRlYnVnLT5mcmFtZV9kcm9wW1JLSVNQMV9NQUlOUEFUSF0pOwogCWRlYnVnZnNfY3JlYXRlX3Vs b25nKCJzcF9mcmFtZV9kcm9wIiwgMDQ0NCwgZGVidWctPmRlYnVnZnNfZGlyLAogCQkJICAgICAm ZGVidWctPmZyYW1lX2Ryb3BbUktJU1AxX1NFTEZQQVRIXSk7CisJZGVidWdmc19jcmVhdGVfZmls ZSgiaW5wdXRfc3RhdHVzIiwgMDQ0NCwgZGVidWctPmRlYnVnZnNfZGlyLCBya2lzcDEsCisJCQkg ICAgJnJraXNwMV9kZWJ1Z19pbnB1dF9zdGF0dXNfZm9wcyk7CiB9CiAKIHZvaWQgcmtpc3AxX2Rl YnVnX2NsZWFudXAoc3RydWN0IHJraXNwMV9kZXZpY2UgKnJraXNwMSkKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vcm9ja2NoaXAvcmtpc3AxL3JraXNwMS1yZWdzLmggYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL3JvY2tjaGlwL3JraXNwMS9ya2lzcDEtcmVncy5oCmluZGV4IDA4 M2Q5MmFkYTczZi4uNDQ3YzVmMjQxZDY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL3JvY2tjaGlwL3JraXNwMS9ya2lzcDEtcmVncy5oCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vcm9ja2NoaXAvcmtpc3AxL3JraXNwMS1yZWdzLmgKQEAgLTQ1NCw2ICs0NTQsMTUgQEAK ICNkZWZpbmUgUktJU1AxX0NJRl9JU1BfREVNT1NBSUNfQllQQVNTCQkJQklUKDEwKQogI2RlZmlu ZSBSS0lTUDFfQ0lGX0lTUF9ERU1PU0FJQ19USCh4KQkJCSgoeCkgJiAweEZGKQogCisvKiBJU1Bf RkxBR1NfU0hEICovCisjZGVmaW5lIFJLSVNQMV9DSUZfSVNQX0ZMQUdTX1NIRF9JU1BfRU5BQkxF X1NIRAkJQklUKDApCisjZGVmaW5lIFJLSVNQMV9DSUZfSVNQX0ZMQUdTX1NIRF9JU1BfRU5BQkxF X0lORk9STV9TSEQJQklUKDEpCisjZGVmaW5lIFJLSVNQMV9DSUZfSVNQX0ZMQUdTX1NIRF9JTkZP Uk1fRklFTEQJCUJJVCgyKQorI2RlZmluZSBSS0lTUDFfQ0lGX0lTUF9GTEFHU19TSERfU19EQVRB X01BU0sJCUdFTk1BU0soMjcsIDE2KQorI2RlZmluZSBSS0lTUDFfQ0lGX0lTUF9GTEFHU19TSERf U19EQVRBX1NISUZUCQkxNgorI2RlZmluZSBSS0lTUDFfQ0lGX0lTUF9GTEFHU19TSERfU19WU1lO QwkJQklUKDMwKQorI2RlZmluZSBSS0lTUDFfQ0lGX0lTUF9GTEFHU19TSERfU19IU1lOQwkJQklU KDMxKQorCiAvKiBBV0IgKi8KIC8qIElTUF9BV0JfUFJPUCAqLwogI2RlZmluZSBSS0lTUDFfQ0lG X0lTUF9BV0JfWU1BWF9DTVBfRU4JCQlCSVQoMikKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNo YXJ0CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGlu dXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yb2Nr Y2hpcAo=