From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= Subject: [PATCH v8 0/6] Add support for H6 PWM Date: Thu, 21 Nov 2019 20:58:56 +0100 Message-ID: <20191121195902.6906-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 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/20191121195902.6906-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.6 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 98DACC43215 for ; Thu, 21 Nov 2019 19:59:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 728FE2068D for ; Thu, 21 Nov 2019 19:59:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dyoMamB9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727080AbfKUT7M (ORCPT ); Thu, 21 Nov 2019 14:59:12 -0500 Received: from mail-wm1-f68.google.com ([209.85.128.68]:34369 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726379AbfKUT7M (ORCPT ); Thu, 21 Nov 2019 14:59:12 -0500 Received: by mail-wm1-f68.google.com with SMTP id j18so8540092wmk.1; Thu, 21 Nov 2019 11:59:10 -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=QEHAUzD9B/6AoeSWvZc7hvkK4ObltWVKU4PeW75EXHE=; b=dyoMamB9KK7VtbcqWyXyjklzKJdIjCkkQpwvWp0yExtoeLYWENnSnOdSn7VlI6AUyL ewvhFxnmzz12sBDFGACCusAMTa1Urm1YdMOcpLgOV4JsmO7r+ur98dyVpFebrVfuGlih Ijf36Sa4DH96Ua46PCr2093urnpq7fZnEROIizpMCurjKu4OnHt8JSsStdBvO8kaqFTE jx4LAiPnT1bYzHn/YLMZ30SrB+A9jUtJl7P9F9SpdX4KmYaaz+0o9z86km1uycgGwxsJ Y9BJsfvLWmTNUrCdw3jwVT8lDnZiNse2gP3DzGx1Rte/nEYR6fXAVs0WiolaLVe5c8TP NDPw== 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=QEHAUzD9B/6AoeSWvZc7hvkK4ObltWVKU4PeW75EXHE=; b=DXvJplHnsCNxnZCqJE/wVDQMc/AUmC10tKKneblB4O7Ep86YR2gA0I25+Pv4yOWHdY bQj6eMFl0DhOjV0VHcQdD/YkAtyRF9EsbXEIpne68euFtKlrU91CWz5eG3C6yTm4XPd8 spC1pH9yDRam6GeSjfCQZps6o05s3GVypgc+G5+w/l9uI5Z4x5oP/Wjk5Nkn8Cia288q Doh+c0dx7aPsOutil9Igx/EfuT9zMQ6E0V/KdhWBSZRziQbWg9jfH4TXuTJtWCdtzW+N HGa9W113lMPr1qmq22Iy3UuKUlrlx5Lv75D0osOEqtEw+fzJ78HvGFBOX5uNUDKOr9gP YZxQ== X-Gm-Message-State: APjAAAUSZfLFmX/oqV0mlqAjUSE0bPNu8PfHVnhTIpnj0EEM6yOgYcWi ZzG060WmOC6Xbwo1s2jKcA8= X-Google-Smtp-Source: APXvYqwf6osdAeqnz19E7fQNOOeiKMEOfYyQ/BPJ4UDiWPrxD5qp/ZuY3M+bkrrRNeUWprmULBS34Q== X-Received: by 2002:a05:600c:2919:: with SMTP id i25mr12050283wmd.158.1574366349212; Thu, 21 Nov 2019 11:59:09 -0800 (PST) Received: from localhost.localdomain ([2a01:e0a:1f1:d0f0::4e2b:d7ca]) by smtp.gmail.com with ESMTPSA id l4sm747124wme.4.2019.11.21.11.59.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Nov 2019 11:59:08 -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 v8 0/6] Add support for H6 PWM Date: Thu, 21 Nov 2019 20:58:56 +0100 Message-Id: <20191121195902.6906-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 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 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 0E024C432C0 for ; Thu, 21 Nov 2019 19:59:15 +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 CADF62068D for ; Thu, 21 Nov 2019 19:59:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="d3WrIA98"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dyoMamB9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CADF62068D 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=g78KPIcUZmuiqLdcx0KGZVX6nZhtbbI5Bc55BPPxTN4=; b=d3WrIA98ME3CHg O7l161dOholASQar5A+iagcO/tty87T+oCjP5pZFQ+/zksj08S6Zqc/Mg2F5K/PxHihHFXOqnOkZP VfLITj6f+AdUuS6wFA9mwDLEf0qsnFzwWomgxTlGu6Xj/vZUNF55q0F/CfDunY/8ZLxVp3VV/CSZ9 R8khJI1vx0zcgw6eZDU47wvYCVm+ECXTb6lTzKjaxSyh/Xbzywt4v73fDieJXUrl6NhIWVcEj8Yyt onQ42cHYzSYOTV1dsI3ag/X350pODB7wYiyOx3+QZ8Ax4Tr/v4gakyCDz4SdX+SHyxmiMAJ4jrKZk TMMoN30ukOpItf3rRC2w==; 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 1iXsbi-0001Bo-1W; Thu, 21 Nov 2019 19:59:14 +0000 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iXsbf-0001Aw-4R for linux-arm-kernel@lists.infradead.org; Thu, 21 Nov 2019 19:59:12 +0000 Received: by mail-wm1-x341.google.com with SMTP id u18so5118819wmc.3 for ; Thu, 21 Nov 2019 11:59:10 -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=QEHAUzD9B/6AoeSWvZc7hvkK4ObltWVKU4PeW75EXHE=; b=dyoMamB9KK7VtbcqWyXyjklzKJdIjCkkQpwvWp0yExtoeLYWENnSnOdSn7VlI6AUyL ewvhFxnmzz12sBDFGACCusAMTa1Urm1YdMOcpLgOV4JsmO7r+ur98dyVpFebrVfuGlih Ijf36Sa4DH96Ua46PCr2093urnpq7fZnEROIizpMCurjKu4OnHt8JSsStdBvO8kaqFTE jx4LAiPnT1bYzHn/YLMZ30SrB+A9jUtJl7P9F9SpdX4KmYaaz+0o9z86km1uycgGwxsJ Y9BJsfvLWmTNUrCdw3jwVT8lDnZiNse2gP3DzGx1Rte/nEYR6fXAVs0WiolaLVe5c8TP NDPw== 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=QEHAUzD9B/6AoeSWvZc7hvkK4ObltWVKU4PeW75EXHE=; b=MTOaRxWLmS1gwAfjFrvHIzk8+iHExySAEUHvzA8cENv45ZrnPzdV9+6g7VhbW3x7PT teinre6Q/oI5vlLpxTP/mFyYq30rBxo3hjORccybs0znpD7ss05F7o5oi6b+N4/suLY6 hcnNbL53s5TmILuwqnYbcGc60C5ykVkPsnB1hVDC0G8F5xPEZFNI2Y8xzxJo/5ilv1FO tbE7ZlV7p3ovufpzXDxT4iLIybpqHT7lhkLzrgu5+plKzIN5+8zb/Jwqpx1WWcKJ/PGX hJ/pR7l0RtEF4A2KIe02jS2mUCrUYbT7qxe1H5WfSxec3TbVCTTpQaosLfw22Ufh8K4D XR+g== X-Gm-Message-State: APjAAAVBbhrB9LU+I4KVgvyQYJgwkrf5RwjZ8uj19iILWwKJMVLeoTga OzZYKqPMLnvZi45rHN9zSSA= X-Google-Smtp-Source: APXvYqwf6osdAeqnz19E7fQNOOeiKMEOfYyQ/BPJ4UDiWPrxD5qp/ZuY3M+bkrrRNeUWprmULBS34Q== X-Received: by 2002:a05:600c:2919:: with SMTP id i25mr12050283wmd.158.1574366349212; Thu, 21 Nov 2019 11:59:09 -0800 (PST) Received: from localhost.localdomain ([2a01:e0a:1f1:d0f0::4e2b:d7ca]) by smtp.gmail.com with ESMTPSA id l4sm747124wme.4.2019.11.21.11.59.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Nov 2019 11:59:08 -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 v8 0/6] Add support for H6 PWM Date: Thu, 21 Nov 2019 20:58:56 +0100 Message-Id: <20191121195902.6906-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-20191121_115911_180339_B89FDE1B X-CRM114-Status: GOOD ( 18.11 ) 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 czovL3BhdGNod29yay5rZXJuZWwub3JnL2NvdmVyLzExMDYxNzM3LwoKQ2hhbmdlcyBpbiB2ODoK IC0gRGlzcGxheSBlcnJvciByZXR1cm4gY29kZQogLSBzcGxpdCBjb21taXQKIC0gYnlwYXNzIGlz IGZhbHNlIGlmIHVuc3VwcG9ydGVkCiAtIHJldHVybiBpbnN0ZWFkIG9mIGdvdG8KCkNoYW5nZXMg aW4gdjc6CiAtIEZpeCBpbmRlbnQgaW4gWWFtbCBiaW5kaW5ncwoKQ2hhbmdlcyBpbiB2NjoKIC0g VXBkYXRlIGdpdCBjb21taXQgbG9nCiAtIERpc3Rpbmd1aXNoIGVycm9yIG1lc3NhZ2UKCkNoYW5n ZXMgaW4gdjU6CiAtIE1vdmUgYnlwYXNzIGNhbGN1bGF0aW9uIHRvIHB3bV9jYWxjdWxhdGUKIC0g U3BsaXQgbW9kX2Nsb2NrIGZhbGxiYWNrIGZyb20gYnVzX2NsayBwcm9iZSAgIAogLSBVcGRhdGUg Y29tbWVudAogLSBNb3ZlIG15IFNvQiBhZnRlciBhY2tlZC1ieS9yZXZpZXdlZC1ieQoKQ2hhbmdl cyBpbiB2NDoKIC0gaXRlbSBkZXNjcmlwdGlvbiBpbiBjb3JyZWN0IG9yZGVyIGFuZCBhZGQgYSBi bGFuayBsaW5lCiAtIHVzZSAlcGUgZm9yIHByaW50aW5nIFBUUl9FUlIKIC0gZG9uJ3QgcHJpbnQg ZXJyb3Igd2hlbiBpdCdzIGFuIEVQUk9CRV9ERUZFUgogLSBjaGFuZ2Ugb3V0cHV0IGNsb2NrIGJ5 cGFzcyBmb3JtdWxhIHRvIG1hdGNoIFBXTSBwb2xpY3kKCkNoYW5nZXMgaW4gdjM6CiAtIERvY3Vt ZW50YXRpb24gdXBkYXRlIHRvIGFsbG93IG9uZSBjbG9jayB3aXRob3V0IG5hbWUKIC0gQ2hhbmdl IHJlc2V0IG9wdGlvbmFsIHRvIHNoYXJlZAogLSBJZiByZXNldCBwcm9iZSBmYWlsZWQgcmV0dXJu IGFuIGVycm9yCiAtIFJlbW92ZSBvbGQgY2xvY2sgcHJvYmUKIC0gVXBkYXRlIGJ5cGFzcyBlbmFi bGVkIGZvcm11bGEKCkNoYW5nZXMgaW4gdjI6CiAtIFJlbW92ZSBhbGxPZiBpbiBEb2N1bWVudGF0 aW9uCiAtIEFkZCBINiBleGFtcGxlIGluIERvY3VtZW50YXRpb24KIC0gQ2hhbmdlIGNsb2NrIG5h bWUgZnJvbSAicHdtIiB0byAibW9kIgogLSBDaGFuZ2UgcmVzZXQgcXVpcmsgdG8gb3B0aW9uYWwg cHJvYmUKIC0gQ2hhbmdlIGJ1c19jbG9jayBxdWlyayB0byBvcHRpb25hbCBwcm9iZQogLSBBZGQg bGltaXRhdGlvbiBjb21tZW50IGFib3V0IG1vZF9jbGtfb3V0cHV0CiAtIEFkZCBxdWlyayBmb3Ig bW9kX2Nsa19vdXRwdXQKIC0gQ2hhbmdlIGJ5cGFzcyBmb3JtdWxhCgpDbMOpbWVudCBQw6lyb24g KDIpOgogIHB3bTogc3VuNGk6IFByZWZlciAibW9kIiBjbG9jayB0byB1bm5hbWVkCiAgcHdtOiBz dW40aTogQWx3YXlzIGNhbGN1bGF0ZSBwYXJhbXMgd2hlbiBhcHBseWluZyBuZXcgcGFyYW1ldGVy cwoKSmVybmVqIFNrcmFiZWMgKDQpOgogIHB3bTogc3VuNGk6IEFkZCBhbiBvcHRpb25hbCBwcm9i ZSBmb3IgcmVzZXQgbGluZQogIHB3bTogc3VuNGk6IEFkZCBhbiBvcHRpb25hbCBwcm9iZSBmb3Ig YnVzIGNsb2NrCiAgcHdtOiBzdW40aTogQWRkIHN1cHBvcnQgdG8gb3V0cHV0IHNvdXJjZSBjbG9j ayBkaXJlY3RseQogIHB3bTogc3VuNGk6IEFkZCBzdXBwb3J0IGZvciBINiBQV00KCiBkcml2ZXJz L3B3bS9wd20tc3VuNGkuYyB8IDE4NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTU2IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygt KQoKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK