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 X-Spam-Level: X-Spam-Status: No, score=-3.7 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC9A9C432C0 for ; Sun, 24 Nov 2019 17:30:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 97E53207FD for ; Sun, 24 Nov 2019 17:30:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="vND+AQHe" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726851AbfKXRaB (ORCPT ); Sun, 24 Nov 2019 12:30:01 -0500 Received: from mail-wr1-f67.google.com ([209.85.221.67]:34043 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726784AbfKXRaB (ORCPT ); Sun, 24 Nov 2019 12:30:01 -0500 Received: by mail-wr1-f67.google.com with SMTP id t2so14725908wrr.1; Sun, 24 Nov 2019 09:29:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=uGgPipfEFZWFwRwOJjgrASaTd0TQYkmoA4Tjo4oBFUc=; b=vND+AQHeVrhINFZ4UDVHu58t/f+qBqUvbP7TqVB3/0goOOJCe8I2oR7GT1/p+RN5/E WxN2vQ9j0KfPfEYNuAPQT+kTxt6FE2XTlFQJLoH+FYwMyzX7bffYruhqjklwBb+arxjw KIW7ED5yJnXpGr5l3MX8b9v7xm4I4iwMtm1tw24mY4FoIk2ezPzNJ8s65Kz8iHRBcflm QbD/DCVmTfkob2TTDwsGfi4dBcoq7TOi2vwYgu1aO5sp1OaHiz15B62BK/PMVugLz15K zHo/qk/WgWPiG3Yc10JGL153B/mda+vShSnfzFKOOer5XG0NPWcq4+trXvs8yP/6UfmY jc5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=uGgPipfEFZWFwRwOJjgrASaTd0TQYkmoA4Tjo4oBFUc=; b=UNl5T52rE61L6C2zRUmczgO5wlSNSw6JxWtliHkmfW/WVUgtCajaRIafbzFFRfpQNB yLDe7ycu05A0SrxH4EmXLf7/a7RDr66QWFUn38uYYylY+QNBthcm1Tq7IcFRATbxUhzC fE5X9/Wo8wE0tCG2fn89oG6DoWiM0xITGzK+QDMA66Jzdbw3mrJuWNVz0xOqepWBzebL necMO382KU1EmIoY9Z+PTMcqPyQcOX7o10aTc7vNXG8JxKM8JFSITvAs6s3zgHYNRNNF LngAOvpENbsik0bTD6Xo4fbxpybCpzqOf0Ss+aNw7O8DBPYC2hBayC5dgy+gwoQT1AzO h2Tw== X-Gm-Message-State: APjAAAXnh02LVYlBX4MqIS824Ed1erLxJ221lPHI3f9iwQlsyTrPBiOA Jz4pQ1pWHXzSr7Zo8+dWfVU= X-Google-Smtp-Source: APXvYqzCaeqjuWWepuHVZDNLDDp3b8VLbgpBzaodvuX34Rg653xyvG74z8MdFcuL0oOfDoO2AS4FHQ== X-Received: by 2002:a5d:5484:: with SMTP id h4mr25794215wrv.136.1574616598780; Sun, 24 Nov 2019 09:29:58 -0800 (PST) Received: from localhost.localdomain ([2a01:e0a:1f1:d0f0::4e2b:d7ca]) by smtp.gmail.com with ESMTPSA id n13sm5537275wmi.25.2019.11.24.09.29.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Nov 2019 09:29:57 -0800 (PST) From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= To: Thierry Reding , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Maxime Ripard , Chen-Yu Tsai , Philipp Zabel Cc: linux-pwm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com, =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= Subject: [PATCH v9 0/6] Add support for H6 PWM Date: Sun, 24 Nov 2019 18:29:02 +0100 Message-Id: <20191124172908.10804-1-peron.clem@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, This is a rework of Jernej's previous work[1] taking account all the previous remarks. Bindings is still strict but probe in the driver are now optionnals. If someone could confirm that the PWM is not broken, as my board doesn't output it. Thanks, Clément Jernej's cover: Allwinner H6 SoC has PWM core which is basically the same as that found in A20, it's just depends on additional bus clock and reset line. This series adds support for it and extends PWM driver functionality in a way that it's now possible to bypass whole core and output PWM source clock directly as a PWM signal. This functionality is needed by AC200 chip, which is bundled in same physical package as H6 SoC, to serve as a clock source of 24 MHz. AC200 clock input pin is bonded internally to the second PWM channel. I would be grateful if anyone can test this patch series for any kind of regression on other SoCs. [1]: https://patchwork.kernel.org/cover/11061737/ Changes in v9: - print error code in error message - no capital letter to keep coherency Changes in v8: - Display error return code - split commit - bypass is false if unsupported - return instead of goto Changes in v7: - Fix indent in Yaml bindings Changes in v6: - Update git commit log - Distinguish error message Changes in v5: - Move bypass calculation to pwm_calculate - Split mod_clock fallback from bus_clk probe - Update comment - Move my SoB after acked-by/reviewed-by Changes in v4: - item description in correct order and add a blank line - use %pe for printing PTR_ERR - don't print error when it's an EPROBE_DEFER - change output clock bypass formula to match PWM policy Changes in v3: - Documentation update to allow one clock without name - Change reset optional to shared - If reset probe failed return an error - Remove old clock probe - Update bypass enabled formula Changes in v2: - Remove allOf in Documentation - Add H6 example in Documentation - Change clock name from "pwm" to "mod" - Change reset quirk to optional probe - Change bus_clock quirk to optional probe - Add limitation comment about mod_clk_output - Add quirk for mod_clk_output - Change bypass formula Clément Péron (2): pwm: sun4i: Prefer "mod" clock to unnamed pwm: sun4i: Always calculate params when applying new parameters Jernej Skrabec (4): pwm: sun4i: Add an optional probe for reset line pwm: sun4i: Add an optional probe for bus clock pwm: sun4i: Add support to output source clock directly pwm: sun4i: Add support for H6 PWM drivers/pwm/pwm-sun4i.c | 187 +++++++++++++++++++++++++++++++++------- 1 file changed, 156 insertions(+), 31 deletions(-) -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= Subject: [PATCH v9 0/6] Add support for H6 PWM Date: Sun, 24 Nov 2019 18:29:02 +0100 Message-ID: <20191124172908.10804-1-peron.clem@gmail.com> Reply-To: peron.clem-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Return-path: Sender: linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , To: Thierry Reding , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Maxime Ripard , Chen-Yu Tsai , Philipp Zabel Cc: linux-pwm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org, =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= List-Id: linux-pwm@vger.kernel.org Hi, This is a rework of Jernej's previous work[1] taking account all the previous remarks. Bindings is still strict but probe in the driver are now optionnals. If someone could confirm that the PWM is not broken, as my board doesn't output it. Thanks, Cl=C3=A9ment Jernej's cover: Allwinner H6 SoC has PWM core which is basically the same as that found in A20, it's just depends on additional bus clock and reset line. This series adds support for it and extends PWM driver functionality in a way that it's now possible to bypass whole core and output PWM source clock directly as a PWM signal. This functionality is needed by AC200 chip, which is bundled in same physical package as H6 SoC, to serve as a clock source of 24 MHz. AC200 clock input pin is bonded internally to the second PWM channel. I would be grateful if anyone can test this patch series for any kind of regression on other SoCs. [1]: https://patchwork.kernel.org/cover/11061737/ Changes in v9: - print error code in error message - no capital letter to keep coherency Changes in v8: - Display error return code - split commit - bypass is false if unsupported - return instead of goto Changes in v7: - Fix indent in Yaml bindings Changes in v6: - Update git commit log - Distinguish error message Changes in v5: - Move bypass calculation to pwm_calculate - Split mod_clock fallback from bus_clk probe =20 - Update comment - Move my SoB after acked-by/reviewed-by Changes in v4: - item description in correct order and add a blank line - use %pe for printing PTR_ERR - don't print error when it's an EPROBE_DEFER - change output clock bypass formula to match PWM policy Changes in v3: - Documentation update to allow one clock without name - Change reset optional to shared - If reset probe failed return an error - Remove old clock probe - Update bypass enabled formula Changes in v2: - Remove allOf in Documentation - Add H6 example in Documentation - Change clock name from "pwm" to "mod" - Change reset quirk to optional probe - Change bus_clock quirk to optional probe - Add limitation comment about mod_clk_output - Add quirk for mod_clk_output - Change bypass formula Cl=C3=A9ment P=C3=A9ron (2): pwm: sun4i: Prefer "mod" clock to unnamed pwm: sun4i: Always calculate params when applying new parameters Jernej Skrabec (4): pwm: sun4i: Add an optional probe for reset line pwm: sun4i: Add an optional probe for bus clock pwm: sun4i: Add support to output source clock directly pwm: sun4i: Add support for H6 PWM drivers/pwm/pwm-sun4i.c | 187 +++++++++++++++++++++++++++++++++------- 1 file changed, 156 insertions(+), 31 deletions(-) --=20 2.20.1 --=20 You received this message because you are subscribed to the Google Groups "= linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an e= mail to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web, visit https://groups.google.com/d/msgid= /linux-sunxi/20191124172908.10804-1-peron.clem%40gmail.com. 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 X-Spam-Level: X-Spam-Status: No, score=-3.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72DB1C432C3 for ; Sun, 24 Nov 2019 17:30:11 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 453702075E for ; Sun, 24 Nov 2019 17:30:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Xobyrs86"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="vND+AQHe" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 453702075E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=HytQkdBIoq5Y0yV0mZQmUsbrel1E4c+VTDsq9CG9Oek=; b=Xobyrs86Ftq7Vu 56C0IAlyffk7exR7ctSTG0UMXqkmRSTkIQYcD5iyRgp9VFSABtOFYI6vfykudoBEdKwtT6+LHlwMX 0CzqvQVFmrMsXPF91QvXx9ZexIefldTvXuF48lnmtzahlorw27dhn48ly0DdmtRpMbBNMOV7zEJU7 /nNPX2eqnfsF/DQpU6DIctVN6BerpomOMX4W8GDzwdGC/vpi6AV/+f+OXrlx7jomHg90sQHpHsaih I6zbYQzWspr2JwjVIGmKM2jTw0bqAeGlJomip8greIlCyPwdRCtXXF+KYgVTlYXAAfAeA8wLr0pPs uzs1ykZrxYlXXji9H/Eg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iYvi2-0004tZ-V3; Sun, 24 Nov 2019 17:30:06 +0000 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iYvhy-0004Zp-6I for linux-arm-kernel@lists.infradead.org; Sun, 24 Nov 2019 17:30:03 +0000 Received: by mail-wr1-x444.google.com with SMTP id b18so14667501wrj.8 for ; Sun, 24 Nov 2019 09:30:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=uGgPipfEFZWFwRwOJjgrASaTd0TQYkmoA4Tjo4oBFUc=; b=vND+AQHeVrhINFZ4UDVHu58t/f+qBqUvbP7TqVB3/0goOOJCe8I2oR7GT1/p+RN5/E WxN2vQ9j0KfPfEYNuAPQT+kTxt6FE2XTlFQJLoH+FYwMyzX7bffYruhqjklwBb+arxjw KIW7ED5yJnXpGr5l3MX8b9v7xm4I4iwMtm1tw24mY4FoIk2ezPzNJ8s65Kz8iHRBcflm QbD/DCVmTfkob2TTDwsGfi4dBcoq7TOi2vwYgu1aO5sp1OaHiz15B62BK/PMVugLz15K zHo/qk/WgWPiG3Yc10JGL153B/mda+vShSnfzFKOOer5XG0NPWcq4+trXvs8yP/6UfmY jc5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=uGgPipfEFZWFwRwOJjgrASaTd0TQYkmoA4Tjo4oBFUc=; b=Sq6qvGPZbAo6sEh+ddP1T2mtkQ9E6bCpBXkwsR87AH4nO2z8H+ACa1fL1pK4CQAcE9 j73Nlj61d9Nx1P1C/Pe9RXrHc6au5x2E2aE9Ego1j1FY0N6qtQ3tRyCmvQiy29uwkFYT ip5yKdZACHAEA0aEdd3zK8D9uV03jzyf17/3RBheT9dvs1oINpISu8IyPYjUh18QLgKZ 3o1jlAMbCxbQnQGyOiQLyrKy4qT0yvr8qnXE3FFHE9TduKYcibSpq83MBAWgRtBtVvOX 3JrCCgRgOI74HHspDLM0OAZzc/Dfj+mhD2DqMXcpUIxhimo5CCufuIenZtYZXNCxt/uE MY9A== X-Gm-Message-State: APjAAAWder7EpWlfm1vNt5IL7vh8USWommuwGRyBWBYsq1EWv57zrM5B 5vWhkoSMyiCTGEhswqGHQN8= X-Google-Smtp-Source: APXvYqzCaeqjuWWepuHVZDNLDDp3b8VLbgpBzaodvuX34Rg653xyvG74z8MdFcuL0oOfDoO2AS4FHQ== X-Received: by 2002:a5d:5484:: with SMTP id h4mr25794215wrv.136.1574616598780; Sun, 24 Nov 2019 09:29:58 -0800 (PST) Received: from localhost.localdomain ([2a01:e0a:1f1:d0f0::4e2b:d7ca]) by smtp.gmail.com with ESMTPSA id n13sm5537275wmi.25.2019.11.24.09.29.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Nov 2019 09:29:57 -0800 (PST) From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= To: Thierry Reding , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Maxime Ripard , Chen-Yu Tsai , Philipp Zabel Subject: [PATCH v9 0/6] Add support for H6 PWM Date: Sun, 24 Nov 2019 18:29:02 +0100 Message-Id: <20191124172908.10804-1-peron.clem@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191124_093002_262313_88E769F3 X-CRM114-Status: GOOD ( 17.94 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-pwm@vger.kernel.org, linux-sunxi@googlegroups.com, =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGksCgpUaGlzIGlzIGEgcmV3b3JrIG9mIEplcm5laidzIHByZXZpb3VzIHdvcmtbMV0gdGFraW5n IGFjY291bnQgYWxsIHRoZQpwcmV2aW91cyByZW1hcmtzLgoKQmluZGluZ3MgaXMgc3RpbGwgc3Ry aWN0IGJ1dCBwcm9iZSBpbiB0aGUgZHJpdmVyIGFyZSBub3cgb3B0aW9ubmFscy4KCklmIHNvbWVv bmUgY291bGQgY29uZmlybSB0aGF0IHRoZSBQV00gaXMgbm90IGJyb2tlbiwgYXMgbXkgYm9hcmQK ZG9lc24ndCBvdXRwdXQgaXQuCgpUaGFua3MsCkNsw6ltZW50CgpKZXJuZWoncyBjb3ZlcjoKQWxs d2lubmVyIEg2IFNvQyBoYXMgUFdNIGNvcmUgd2hpY2ggaXMgYmFzaWNhbGx5IHRoZSBzYW1lIGFz IHRoYXQgZm91bmQKaW4gQTIwLCBpdCdzIGp1c3QgZGVwZW5kcyBvbiBhZGRpdGlvbmFsIGJ1cyBj bG9jayBhbmQgcmVzZXQgbGluZS4KClRoaXMgc2VyaWVzIGFkZHMgc3VwcG9ydCBmb3IgaXQgYW5k IGV4dGVuZHMgUFdNIGRyaXZlciBmdW5jdGlvbmFsaXR5IGluCmEgd2F5IHRoYXQgaXQncyBub3cg cG9zc2libGUgdG8gYnlwYXNzIHdob2xlIGNvcmUgYW5kIG91dHB1dCBQV00gc291cmNlCmNsb2Nr IGRpcmVjdGx5IGFzIGEgUFdNIHNpZ25hbC4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5lZWRlZCBi eSBBQzIwMApjaGlwLCB3aGljaCBpcyBidW5kbGVkIGluIHNhbWUgcGh5c2ljYWwgcGFja2FnZSBh cyBINiBTb0MsIHRvIHNlcnZlIGFzIGEKY2xvY2sgc291cmNlIG9mIDI0IE1Iei4gQUMyMDAgY2xv Y2sgaW5wdXQgcGluIGlzIGJvbmRlZCBpbnRlcm5hbGx5IHRvCnRoZSBzZWNvbmQgUFdNIGNoYW5u ZWwuCgpJIHdvdWxkIGJlIGdyYXRlZnVsIGlmIGFueW9uZSBjYW4gdGVzdCB0aGlzIHBhdGNoIHNl cmllcyBmb3IgYW55IGtpbmQgb2YKcmVncmVzc2lvbiBvbiBvdGhlciBTb0NzLgoKWzFdOiBodHRw czovL3BhdGNod29yay5rZXJuZWwub3JnL2NvdmVyLzExMDYxNzM3LwoKQ2hhbmdlcyBpbiB2OToK IC0gcHJpbnQgZXJyb3IgY29kZSBpbiBlcnJvciBtZXNzYWdlCiAtIG5vIGNhcGl0YWwgbGV0dGVy IHRvIGtlZXAgY29oZXJlbmN5CgpDaGFuZ2VzIGluIHY4OgogLSBEaXNwbGF5IGVycm9yIHJldHVy biBjb2RlCiAtIHNwbGl0IGNvbW1pdAogLSBieXBhc3MgaXMgZmFsc2UgaWYgdW5zdXBwb3J0ZWQK IC0gcmV0dXJuIGluc3RlYWQgb2YgZ290bwoKQ2hhbmdlcyBpbiB2NzoKIC0gRml4IGluZGVudCBp biBZYW1sIGJpbmRpbmdzCgpDaGFuZ2VzIGluIHY2OgogLSBVcGRhdGUgZ2l0IGNvbW1pdCBsb2cK IC0gRGlzdGluZ3Vpc2ggZXJyb3IgbWVzc2FnZQoKQ2hhbmdlcyBpbiB2NToKIC0gTW92ZSBieXBh c3MgY2FsY3VsYXRpb24gdG8gcHdtX2NhbGN1bGF0ZQogLSBTcGxpdCBtb2RfY2xvY2sgZmFsbGJh Y2sgZnJvbSBidXNfY2xrIHByb2JlICAgCiAtIFVwZGF0ZSBjb21tZW50CiAtIE1vdmUgbXkgU29C IGFmdGVyIGFja2VkLWJ5L3Jldmlld2VkLWJ5CgpDaGFuZ2VzIGluIHY0OgogLSBpdGVtIGRlc2Ny aXB0aW9uIGluIGNvcnJlY3Qgb3JkZXIgYW5kIGFkZCBhIGJsYW5rIGxpbmUKIC0gdXNlICVwZSBm b3IgcHJpbnRpbmcgUFRSX0VSUgogLSBkb24ndCBwcmludCBlcnJvciB3aGVuIGl0J3MgYW4gRVBS T0JFX0RFRkVSCiAtIGNoYW5nZSBvdXRwdXQgY2xvY2sgYnlwYXNzIGZvcm11bGEgdG8gbWF0Y2gg UFdNIHBvbGljeQoKQ2hhbmdlcyBpbiB2MzoKIC0gRG9jdW1lbnRhdGlvbiB1cGRhdGUgdG8gYWxs b3cgb25lIGNsb2NrIHdpdGhvdXQgbmFtZQogLSBDaGFuZ2UgcmVzZXQgb3B0aW9uYWwgdG8gc2hh cmVkCiAtIElmIHJlc2V0IHByb2JlIGZhaWxlZCByZXR1cm4gYW4gZXJyb3IKIC0gUmVtb3ZlIG9s ZCBjbG9jayBwcm9iZQogLSBVcGRhdGUgYnlwYXNzIGVuYWJsZWQgZm9ybXVsYQoKQ2hhbmdlcyBp biB2MjoKIC0gUmVtb3ZlIGFsbE9mIGluIERvY3VtZW50YXRpb24KIC0gQWRkIEg2IGV4YW1wbGUg aW4gRG9jdW1lbnRhdGlvbgogLSBDaGFuZ2UgY2xvY2sgbmFtZSBmcm9tICJwd20iIHRvICJtb2Qi CiAtIENoYW5nZSByZXNldCBxdWlyayB0byBvcHRpb25hbCBwcm9iZQogLSBDaGFuZ2UgYnVzX2Ns b2NrIHF1aXJrIHRvIG9wdGlvbmFsIHByb2JlCiAtIEFkZCBsaW1pdGF0aW9uIGNvbW1lbnQgYWJv dXQgbW9kX2Nsa19vdXRwdXQKIC0gQWRkIHF1aXJrIGZvciBtb2RfY2xrX291dHB1dAogLSBDaGFu Z2UgYnlwYXNzIGZvcm11bGEKCkNsw6ltZW50IFDDqXJvbiAoMik6CiAgcHdtOiBzdW40aTogUHJl ZmVyICJtb2QiIGNsb2NrIHRvIHVubmFtZWQKICBwd206IHN1bjRpOiBBbHdheXMgY2FsY3VsYXRl IHBhcmFtcyB3aGVuIGFwcGx5aW5nIG5ldyBwYXJhbWV0ZXJzCgpKZXJuZWogU2tyYWJlYyAoNCk6 CiAgcHdtOiBzdW40aTogQWRkIGFuIG9wdGlvbmFsIHByb2JlIGZvciByZXNldCBsaW5lCiAgcHdt OiBzdW40aTogQWRkIGFuIG9wdGlvbmFsIHByb2JlIGZvciBidXMgY2xvY2sKICBwd206IHN1bjRp OiBBZGQgc3VwcG9ydCB0byBvdXRwdXQgc291cmNlIGNsb2NrIGRpcmVjdGx5CiAgcHdtOiBzdW40 aTogQWRkIHN1cHBvcnQgZm9yIEg2IFBXTQoKIGRyaXZlcnMvcHdtL3B3bS1zdW40aS5jIHwgMTg3 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAxNTYgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgotLSAKMi4yMC4xCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=