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=-14.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable 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 528A4C433E6 for ; Sat, 30 Jan 2021 20:32:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0DAF964E17 for ; Sat, 30 Jan 2021 20:32:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230036AbhA3UcR (ORCPT ); Sat, 30 Jan 2021 15:32:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58592 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229990AbhA3UcP (ORCPT ); Sat, 30 Jan 2021 15:32:15 -0500 Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com [IPv6:2a00:1450:4864:20::12e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69DE7C061573; Sat, 30 Jan 2021 12:31:35 -0800 (PST) Received: by mail-lf1-x12e.google.com with SMTP id h7so17393977lfc.6; Sat, 30 Jan 2021 12:31:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=KVwPoYz7xF78gp1Ueiaj+rkpwN7GCQBoc9c1s+DZAHM=; b=Dkt3hitp7hGfRD4WW0EW4kVOyNTkl7lxF5idLvph+oAhOAWtwXOHbSEZaCZoyYHfJl vvk0wjUHljOV2Mcq9s/Bj4UAmJ+Eaj2VfMfp0wmfneE3YriHvQcrbhhlZEwQm12jFvyi bEJseHM9w08VFDqyxi8clE2/guMsZ9oCw8QPV4FhNMEmM81z9NcU6+j8ZFzQOaM9xHjW mgWvPOXsTR1OTAolDbgslo6Rd5MoPtUs5aTrlbui3e+WICG+/8dEJzDPWkDU5sLtneqY QDhMCMcH6GYzOrSiEJdUShP8uAl9HSvEwdsJwZUy42GE87fazBCItZf6Mkk4XHANrl9g +cTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=KVwPoYz7xF78gp1Ueiaj+rkpwN7GCQBoc9c1s+DZAHM=; b=LPtjp88CUnzghjiaX1Cs09jfi6hVUs20fXPoe39NLBhnO6tLxcH84hQ2LAvF8A8Gqi Eh0yhnLGwvALdNPfqYMV86Pfjd2sngJpAGcV4GrCE2+vrCwh/EAZ0MoRhPZUlodJxd6Q sXsIVGj5CcqOM/NrCZXMZlwkkLKMTjccttC4IMqzH9n8+zXZnU7gzc6O80bkeHxrlhTy AmQPt/Wd3PWEpGwBpiR14ywWwGWKRAC1QaBg9ZkpAHljO+h6AIhKVo0+H4iXSDeCrvap 7PQZeD0lgAcqoxeMy5ljXmjZtYYKu6W/vKM6drnNiQCcdkTh8N+GoUamMJwD1OSl6G5r fLiQ== X-Gm-Message-State: AOAM530+pDgNgQHam5MjKycahF+ewClE5KfKi2IQVo35LdkAv90QVVAF GZ9oQm/pSGeRUbiQ/cv4G1Y= X-Google-Smtp-Source: ABdhPJxJQNwWiYhQq6jCt57t2YFO9gqlde5T0oVGCv0vaJYtNHMZ6jIXMk5XwGFMtydomBK9Kx9Erw== X-Received: by 2002:a05:6512:745:: with SMTP id c5mr5009700lfs.489.1612038693911; Sat, 30 Jan 2021 12:31:33 -0800 (PST) Received: from [192.168.0.131] ([194.183.54.57]) by smtp.gmail.com with ESMTPSA id z5sm601049ljo.118.2021.01.30.12.31.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 30 Jan 2021 12:31:33 -0800 (PST) Subject: Re: [PATCH v2 0/4] Add support for QCOM SPMI Flash LEDs To: =?UTF-8?B?TsOtY29sYXMgRi4gUi4gQS4gUHJhZG8=?= , Pavel Machek , Dan Murphy , Bjorn Andersson , Andy Gross , Rob Herring Cc: linux-leds@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, Brian Masney , Luca Weiss , Russell King , Georgi Djakov , linux-kernel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, lkcamp@lists.libreplanetbr.org, andrealmeid@collabora.com References: <20210126140240.1517044-1-nfraprado@protonmail.com> From: Jacek Anaszewski Message-ID: <8323f365-e07e-6206-86f2-126690553d09@gmail.com> Date: Sat, 30 Jan 2021 21:31:26 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: <20210126140240.1517044-1-nfraprado@protonmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Hi Nicolas. On 1/26/21 3:03 PM, NĂ­colas F. R. A. Prado wrote: > Hi, > > this patch series adds support for Qualcomm's SPMI Flash LEDs present in the > PM8941 PMIC. It is used as part of MSM8974 based devices, like the Nexus 5 > (hammerhead), as a camera flash or as a lantern when in torch mode. > > Patch 1 adds the dt-bindings for the driver, together with a header for the > values of some properties. > > Patch 2 adds the driver, which was ported from downstream [1], and is now using > the flash LED class framework. > > Patch 3 enables the driver as a module in qcom_defconfig, and also enables > CONFIG_LEDS_CLASS_FLASH since it is required by the driver. > > Patch 4 adds the device tree nodes configuring the driver in the pm8941 dtsi. > > After the feedback I received from the v1 RFC patch (thank you Jacek and > Bjorn!), I implemented the flash LED class framework, renamed the driver to > qcom-spmi-flash and added the dt-bindings. I also did a whole lot of cleanup. > > Some caveats: > - I still didn't implement get_strobe() and get_fault() for the flash LEDs, > because I'm still not sure how to do it. get_strobe() in particular I'm not > even sure if is possible, since after the flash turns off automatically after > the timeout, I don't see any change in the SPMI registers. So I'm unsure how > one would get the current strobe state. strobe_get is optional - you can leave it uninitialized if there is no obvious way to get strobe status. Regarding faults - I see you have FLASH_FAULT_DETECT but have no information on its impact whatsoever. Usually devices report the faults by settings some register bits and then we can map those errors to LED flash framework generic errors. > - I have yet to add the V4L2 flash wrapper for the flash LEDs. I still didn't do > it because I wasn't sure if it was needed, so wanted to double check. But > being a camera flash it seems that would be useful. Also, it would be great if > someone could point me how I would go about testing the flash usage through > V4L2. You need a V4L2 media device driver with which this driver would register a V4L2 flash LED sub-device. Such a device is usually implemented for platform ISP devices. Provided it is present in the mainline you would have to associate this driver DT node with the media device DT node. Then you can test the V4L2 Flash control with v4l2-ctl or yavta user space tools. Let's skip the V4L2 support for now - it can be added later, if needed. > Another thing worth mentioning: for v1 the dt nodes were added in hammerhead's > dts (just to simplify testing), but I have now moved them to pm8941's dtsi, > since it was like that in downstream. So if folks using devices based on > PM8941/MSM8974 other than the Nexus 5 could test it, that would be great, since > I have only tested on the Nexus 5. > > v1 RFC: https://lore.kernel.org/lkml/20201106165737.1029106-1-nfraprado@protonmail.com/ > > [1] https://github.com/AICP/kernel_lge_hammerhead/blob/n7.1/drivers/leds/leds-qpnp.c > > NĂ­colas F. R. A. Prado (4): > dt-bindings: leds: Add binding for qcom-spmi-flash > leds: Add driver for QCOM SPMI Flash LEDs > ARM: qcom_defconfig: Enable QCOM SPMI Flash LEDs > ARM: dts: qcom: pm8941: Add nodes for QCOM SPMI Flash LEDs > > .../bindings/leds/leds-qcom-spmi-flash.yaml | 94 ++ > arch/arm/boot/dts/qcom-pm8941.dtsi | 38 + > arch/arm/configs/qcom_defconfig | 2 + > drivers/leds/Kconfig | 8 + > drivers/leds/Makefile | 1 + > drivers/leds/leds-qcom-spmi-flash.c | 1153 +++++++++++++++++ > .../dt-bindings/leds/leds-qcom-spmi-flash.h | 15 + > 7 files changed, 1311 insertions(+) > create mode 100644 Documentation/devicetree/bindings/leds/leds-qcom-spmi-flash.yaml > create mode 100644 drivers/leds/leds-qcom-spmi-flash.c > create mode 100644 include/dt-bindings/leds/leds-qcom-spmi-flash.h > -- Best regards, Jacek Anaszewski 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=-12.2 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham 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 E62DFC433E0 for ; Sat, 30 Jan 2021 20:33:36 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 A571764DED for ; Sat, 30 Jan 2021 20:33:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A571764DED 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+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=merlin.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=7aJ7y3kBVLVU2ikIpvSuNjPZUaJ9+In7Nu2w11CeeIw=; b=Mu2GX7IUwJONiADtsHD0noTIJ yxtMkoycSVEly5tGdpZYoTjpKCtK3REyn2Zf0mV7BKCjeTfBa69NcAWLb8sGUAS+MWe5XafBElMMq DEC0YmOcl/obyj+qvPLNrMdMJF98Vl/jDx2WvqA88B+ZceyXODyWPA+kbdlnOGcuC8Z1bFDXVucat 9PcZeWa7iUjSagyW9geGTU7jrrI3v1Bsm5ZZUqu2Hy+ztDwRwBP68G0TKWLWHgBoDykPDa/45K2fj Il4bqDCLEwq9hYPVorAa6/1vl1UmOxGvE4WGDCcPWNXefIBA7bzd7r0d4coZvebWUnIW9C2G9mbEp hKEJCSZhQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l5wuD-0006aA-0X; Sat, 30 Jan 2021 20:31:41 +0000 Received: from mail-lf1-x12b.google.com ([2a00:1450:4864:20::12b]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l5wu8-0006Zc-Sl for linux-arm-kernel@lists.infradead.org; Sat, 30 Jan 2021 20:31:38 +0000 Received: by mail-lf1-x12b.google.com with SMTP id a12so17410485lfb.1 for ; Sat, 30 Jan 2021 12:31:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=KVwPoYz7xF78gp1Ueiaj+rkpwN7GCQBoc9c1s+DZAHM=; b=Dkt3hitp7hGfRD4WW0EW4kVOyNTkl7lxF5idLvph+oAhOAWtwXOHbSEZaCZoyYHfJl vvk0wjUHljOV2Mcq9s/Bj4UAmJ+Eaj2VfMfp0wmfneE3YriHvQcrbhhlZEwQm12jFvyi bEJseHM9w08VFDqyxi8clE2/guMsZ9oCw8QPV4FhNMEmM81z9NcU6+j8ZFzQOaM9xHjW mgWvPOXsTR1OTAolDbgslo6Rd5MoPtUs5aTrlbui3e+WICG+/8dEJzDPWkDU5sLtneqY QDhMCMcH6GYzOrSiEJdUShP8uAl9HSvEwdsJwZUy42GE87fazBCItZf6Mkk4XHANrl9g +cTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=KVwPoYz7xF78gp1Ueiaj+rkpwN7GCQBoc9c1s+DZAHM=; b=e4RN8HMa7LSHHUnLl3CKy1ZEeQobkROK9KqM6ovkhc8oFgWi1wMK4groRPDMAdpVWb HU1wuRu8Hb0d18vHZwc/fHYyCdsK0VcwFUWRso0XEUG9y46oGPIvbycI/y4f5vjT521Q qAWiMAVAGg9sLHk02w62IDwlawp2v71HAVshkaS9NS0gH8xnQqSAVOAuYU1Z9AFJn5MA 54Wq2wdCpakZ6rI7GW0YJu8UFdWLDnck0HxAtZYPTVkhSjryIbMdQ8tf3cXJ37+7427X RUU1ACVtrrGckGbroJwETMxKSJhagut+uXs1kAtsTT+dA0eTIEnDU9kP7BSbCHaGEH9e bV/A== X-Gm-Message-State: AOAM530t7aGSjcd+Hrx1EqjULlnbvS6SJwoO0HQzoHmMzSVzdhaN43fm PpwxRzZmifhd7HQBTd+WSKo= X-Google-Smtp-Source: ABdhPJxJQNwWiYhQq6jCt57t2YFO9gqlde5T0oVGCv0vaJYtNHMZ6jIXMk5XwGFMtydomBK9Kx9Erw== X-Received: by 2002:a05:6512:745:: with SMTP id c5mr5009700lfs.489.1612038693911; Sat, 30 Jan 2021 12:31:33 -0800 (PST) Received: from [192.168.0.131] ([194.183.54.57]) by smtp.gmail.com with ESMTPSA id z5sm601049ljo.118.2021.01.30.12.31.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 30 Jan 2021 12:31:33 -0800 (PST) Subject: Re: [PATCH v2 0/4] Add support for QCOM SPMI Flash LEDs To: =?UTF-8?B?TsOtY29sYXMgRi4gUi4gQS4gUHJhZG8=?= , Pavel Machek , Dan Murphy , Bjorn Andersson , Andy Gross , Rob Herring References: <20210126140240.1517044-1-nfraprado@protonmail.com> From: Jacek Anaszewski Message-ID: <8323f365-e07e-6206-86f2-126690553d09@gmail.com> Date: Sat, 30 Jan 2021 21:31:26 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: <20210126140240.1517044-1-nfraprado@protonmail.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210130_153137_049087_2D5DF2C0 X-CRM114-Status: GOOD ( 38.72 ) 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: devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Russell King , linux-kernel@vger.kernel.org, Luca Weiss , lkcamp@lists.libreplanetbr.org, linux-leds@vger.kernel.org, andrealmeid@collabora.com, Georgi Djakov , linux-arm-kernel@lists.infradead.org, Brian Masney Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgTmljb2xhcy4KCk9uIDEvMjYvMjEgMzowMyBQTSwgTsOtY29sYXMgRi4gUi4gQS4gUHJhZG8g d3JvdGU6Cj4gSGksCj4gCj4gdGhpcyBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IGZvciBRdWFs Y29tbSdzIFNQTUkgRmxhc2ggTEVEcyBwcmVzZW50IGluIHRoZQo+IFBNODk0MSBQTUlDLiBJdCBp cyB1c2VkIGFzIHBhcnQgb2YgTVNNODk3NCBiYXNlZCBkZXZpY2VzLCBsaWtlIHRoZSBOZXh1cyA1 Cj4gKGhhbW1lcmhlYWQpLCBhcyBhIGNhbWVyYSBmbGFzaCBvciBhcyBhIGxhbnRlcm4gd2hlbiBp biB0b3JjaCBtb2RlLgo+IAo+IFBhdGNoIDEgYWRkcyB0aGUgZHQtYmluZGluZ3MgZm9yIHRoZSBk cml2ZXIsIHRvZ2V0aGVyIHdpdGggYSBoZWFkZXIgZm9yIHRoZQo+IHZhbHVlcyBvZiBzb21lIHBy b3BlcnRpZXMuCj4gCj4gUGF0Y2ggMiBhZGRzIHRoZSBkcml2ZXIsIHdoaWNoIHdhcyBwb3J0ZWQg ZnJvbSBkb3duc3RyZWFtIFsxXSwgYW5kIGlzIG5vdyB1c2luZwo+IHRoZSBmbGFzaCBMRUQgY2xh c3MgZnJhbWV3b3JrLgo+IAo+IFBhdGNoIDMgZW5hYmxlcyB0aGUgZHJpdmVyIGFzIGEgbW9kdWxl IGluIHFjb21fZGVmY29uZmlnLCBhbmQgYWxzbyBlbmFibGVzCj4gQ09ORklHX0xFRFNfQ0xBU1Nf RkxBU0ggc2luY2UgaXQgaXMgcmVxdWlyZWQgYnkgdGhlIGRyaXZlci4KPiAKPiBQYXRjaCA0IGFk ZHMgdGhlIGRldmljZSB0cmVlIG5vZGVzIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaW4gdGhlIHBt ODk0MSBkdHNpLgo+IAo+IEFmdGVyIHRoZSBmZWVkYmFjayBJIHJlY2VpdmVkIGZyb20gdGhlIHYx IFJGQyBwYXRjaCAodGhhbmsgeW91IEphY2VrIGFuZAo+IEJqb3JuISksIEkgaW1wbGVtZW50ZWQg dGhlIGZsYXNoIExFRCBjbGFzcyBmcmFtZXdvcmssIHJlbmFtZWQgdGhlIGRyaXZlciB0bwo+IHFj b20tc3BtaS1mbGFzaCBhbmQgYWRkZWQgdGhlIGR0LWJpbmRpbmdzLiBJIGFsc28gZGlkIGEgd2hv bGUgbG90IG9mIGNsZWFudXAuCj4gCj4gU29tZSBjYXZlYXRzOgo+IC0gSSBzdGlsbCBkaWRuJ3Qg aW1wbGVtZW50IGdldF9zdHJvYmUoKSBhbmQgZ2V0X2ZhdWx0KCkgZm9yIHRoZSBmbGFzaCBMRURz LAo+ICAgIGJlY2F1c2UgSSdtIHN0aWxsIG5vdCBzdXJlIGhvdyB0byBkbyBpdC4gZ2V0X3N0cm9i ZSgpIGluIHBhcnRpY3VsYXIgSSdtIG5vdAo+ICAgIGV2ZW4gc3VyZSBpZiBpcyBwb3NzaWJsZSwg c2luY2UgYWZ0ZXIgdGhlIGZsYXNoIHR1cm5zIG9mZiBhdXRvbWF0aWNhbGx5IGFmdGVyCj4gICAg dGhlIHRpbWVvdXQsIEkgZG9uJ3Qgc2VlIGFueSBjaGFuZ2UgaW4gdGhlIFNQTUkgcmVnaXN0ZXJz LiBTbyBJJ20gdW5zdXJlIGhvdwo+ICAgIG9uZSB3b3VsZCBnZXQgdGhlIGN1cnJlbnQgc3Ryb2Jl IHN0YXRlLgoKc3Ryb2JlX2dldCBpcyBvcHRpb25hbCAtIHlvdSBjYW4gbGVhdmUgaXQgdW5pbml0 aWFsaXplZCBpZiB0aGVyZSBpcyBubwpvYnZpb3VzIHdheSB0byBnZXQgc3Ryb2JlIHN0YXR1cy4K ClJlZ2FyZGluZyBmYXVsdHMgLSBJIHNlZSB5b3UgaGF2ZSBGTEFTSF9GQVVMVF9ERVRFQ1QgYnV0 IGhhdmUgbm8KaW5mb3JtYXRpb24gb24gaXRzIGltcGFjdCB3aGF0c29ldmVyLiBVc3VhbGx5IGRl dmljZXMgcmVwb3J0IHRoZSBmYXVsdHMKYnkgc2V0dGluZ3Mgc29tZSByZWdpc3RlciBiaXRzIGFu ZCB0aGVuIHdlIGNhbiBtYXAgdGhvc2UgZXJyb3JzIHRvCkxFRCBmbGFzaCBmcmFtZXdvcmsgZ2Vu ZXJpYyBlcnJvcnMuCgo+IC0gSSBoYXZlIHlldCB0byBhZGQgdGhlIFY0TDIgZmxhc2ggd3JhcHBl ciBmb3IgdGhlIGZsYXNoIExFRHMuIEkgc3RpbGwgZGlkbid0IGRvCj4gICAgaXQgYmVjYXVzZSBJ IHdhc24ndCBzdXJlIGlmIGl0IHdhcyBuZWVkZWQsIHNvIHdhbnRlZCB0byBkb3VibGUgY2hlY2su IEJ1dAo+ICAgIGJlaW5nIGEgY2FtZXJhIGZsYXNoIGl0IHNlZW1zIHRoYXQgd291bGQgYmUgdXNl ZnVsLiBBbHNvLCBpdCB3b3VsZCBiZSBncmVhdCBpZgo+ICAgIHNvbWVvbmUgY291bGQgcG9pbnQg bWUgaG93IEkgd291bGQgZ28gYWJvdXQgdGVzdGluZyB0aGUgZmxhc2ggdXNhZ2UgdGhyb3VnaAo+ ICAgIFY0TDIuCgpZb3UgbmVlZCBhIFY0TDIgbWVkaWEgZGV2aWNlIGRyaXZlciB3aXRoIHdoaWNo IHRoaXMgZHJpdmVyIHdvdWxkCnJlZ2lzdGVyIGEgVjRMMiBmbGFzaCBMRUQgc3ViLWRldmljZS4g U3VjaCBhIGRldmljZSBpcyB1c3VhbGx5CmltcGxlbWVudGVkIGZvciBwbGF0Zm9ybSBJU1AgZGV2 aWNlcy4gUHJvdmlkZWQgaXQgaXMgcHJlc2VudCBpbiB0aGUKbWFpbmxpbmUgeW91IHdvdWxkIGhh dmUgdG8gYXNzb2NpYXRlIHRoaXMgZHJpdmVyIERUIG5vZGUgd2l0aCB0aGUKbWVkaWEgZGV2aWNl IERUIG5vZGUuIFRoZW4geW91IGNhbiB0ZXN0IHRoZSBWNEwyIEZsYXNoIGNvbnRyb2wgd2l0aAp2 NGwyLWN0bCBvciB5YXZ0YSB1c2VyIHNwYWNlIHRvb2xzLgoKTGV0J3Mgc2tpcCB0aGUgVjRMMiBz dXBwb3J0IGZvciBub3cgLSBpdCBjYW4gYmUgYWRkZWQgbGF0ZXIsIGlmIG5lZWRlZC4KCj4gQW5v dGhlciB0aGluZyB3b3J0aCBtZW50aW9uaW5nOiBmb3IgdjEgdGhlIGR0IG5vZGVzIHdlcmUgYWRk ZWQgaW4gaGFtbWVyaGVhZCdzCj4gZHRzIChqdXN0IHRvIHNpbXBsaWZ5IHRlc3RpbmcpLCBidXQg SSBoYXZlIG5vdyBtb3ZlZCB0aGVtIHRvIHBtODk0MSdzIGR0c2ksCj4gc2luY2UgaXQgd2FzIGxp a2UgdGhhdCBpbiBkb3duc3RyZWFtLiBTbyBpZiBmb2xrcyB1c2luZyBkZXZpY2VzIGJhc2VkIG9u Cj4gUE04OTQxL01TTTg5NzQgb3RoZXIgdGhhbiB0aGUgTmV4dXMgNSBjb3VsZCB0ZXN0IGl0LCB0 aGF0IHdvdWxkIGJlIGdyZWF0LCBzaW5jZQo+IEkgaGF2ZSBvbmx5IHRlc3RlZCBvbiB0aGUgTmV4 dXMgNS4KPiAKPiB2MSBSRkM6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMDExMDYx NjU3MzcuMTAyOTEwNi0xLW5mcmFwcmFkb0Bwcm90b25tYWlsLmNvbS8KPiAKPiBbMV0gaHR0cHM6 Ly9naXRodWIuY29tL0FJQ1Ava2VybmVsX2xnZV9oYW1tZXJoZWFkL2Jsb2IvbjcuMS9kcml2ZXJz L2xlZHMvbGVkcy1xcG5wLmMKPiAKPiBOw61jb2xhcyBGLiBSLiBBLiBQcmFkbyAoNCk6Cj4gICAg ZHQtYmluZGluZ3M6IGxlZHM6IEFkZCBiaW5kaW5nIGZvciBxY29tLXNwbWktZmxhc2gKPiAgICBs ZWRzOiBBZGQgZHJpdmVyIGZvciBRQ09NIFNQTUkgRmxhc2ggTEVEcwo+ICAgIEFSTTogcWNvbV9k ZWZjb25maWc6IEVuYWJsZSBRQ09NIFNQTUkgRmxhc2ggTEVEcwo+ICAgIEFSTTogZHRzOiBxY29t OiBwbTg5NDE6IEFkZCBub2RlcyBmb3IgUUNPTSBTUE1JIEZsYXNoIExFRHMKPiAKPiAgIC4uLi9i aW5kaW5ncy9sZWRzL2xlZHMtcWNvbS1zcG1pLWZsYXNoLnlhbWwgICB8ICAgOTQgKysKPiAgIGFy Y2gvYXJtL2Jvb3QvZHRzL3Fjb20tcG04OTQxLmR0c2kgICAgICAgICAgICB8ICAgMzggKwo+ICAg YXJjaC9hcm0vY29uZmlncy9xY29tX2RlZmNvbmZpZyAgICAgICAgICAgICAgIHwgICAgMiArCj4g ICBkcml2ZXJzL2xlZHMvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA4ICsK PiAgIGRyaXZlcnMvbGVkcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEg Kwo+ICAgZHJpdmVycy9sZWRzL2xlZHMtcWNvbS1zcG1pLWZsYXNoLmMgICAgICAgICAgIHwgMTE1 MyArKysrKysrKysrKysrKysrKwo+ICAgLi4uL2R0LWJpbmRpbmdzL2xlZHMvbGVkcy1xY29tLXNw bWktZmxhc2guaCAgIHwgICAxNSArCj4gICA3IGZpbGVzIGNoYW5nZWQsIDEzMTEgaW5zZXJ0aW9u cygrKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k aW5ncy9sZWRzL2xlZHMtcWNvbS1zcG1pLWZsYXNoLnlhbWwKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2xlZHMvbGVkcy1xY29tLXNwbWktZmxhc2guYwo+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IGluY2x1ZGUvZHQtYmluZGluZ3MvbGVkcy9sZWRzLXFjb20tc3BtaS1mbGFzaC5oCj4gCgot LSAKQmVzdCByZWdhcmRzLApKYWNlayBBbmFzemV3c2tpCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==