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.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS 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 AD0B0C433E0 for ; Mon, 8 Jun 2020 18:45:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 85C212078B for ; Mon, 8 Jun 2020 18:45:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="XaqIR5YY" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725944AbgFHSpM (ORCPT ); Mon, 8 Jun 2020 14:45:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53622 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725280AbgFHSpL (ORCPT ); Mon, 8 Jun 2020 14:45:11 -0400 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5FA4DC08C5C2 for ; Mon, 8 Jun 2020 11:45:11 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id y17so18535321wrn.11 for ; Mon, 08 Jun 2020 11:45:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=ySspVCbCwHhpHyThSAZlpsL4E+rejtUqHxn7Z7vlWxo=; b=XaqIR5YYixt9BOP0z0KEUXloA92HRuoRKrairYtC9RkYMC9IpeWZNFhdtm3Ew0S0ik 23GSnPKbcQ0iLuaO471GEgonjcDLwGaP8Kz5RZsF4qDAQJYhxfHq+SDj1wQnRnQsuPdk cRlIG+/OaEkp5nBrighVcnPHmVE9LKqgwSYhcc/FBr6yOKQxY1fsLjRZLIKWqRlMxgFK FBCq5icjXeGFENyFVicmG3XnbNL2HRcP8U3PYSH+QTyH+qDr5UGNuKjp33ymGS9uNwRR NsYdveDqU59LDwexizMe7iEdZ45qmTF7FMjUFX8k1NOHb97L6aRezBMZUufezBduirpN Wctw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=ySspVCbCwHhpHyThSAZlpsL4E+rejtUqHxn7Z7vlWxo=; b=rh71SngVvmn/qxL0JZ5yIiPZRdQ7vp7pYUO6iiQ7J3UpDD/1Mzm4FuVmvKLC1mMorx 7onDPCFSQCNynTS24FbIRdc5J8e4ofYunYGxX2W9yQM7/nuKpLkX8U7EtEHMdy6DImi2 DGbpX7y6YW+eLp+7kilsazD251CWw11UzJUV36WvjDvzgffUVzXe/E4nLoWFV7DJmfKj f9TFgGLG8oBsx8vOhg40QEiFmKxbSDB17lwYP+Enasr7xuteVZCeFnujyWzs54OMSTK/ FjYS/Q9/od9YkKc+2M0dXmUrNKAb7RvkghxerTbELa7neYGdGd1J/QVEsW4JBfWUgQYv Z6ZA== X-Gm-Message-State: AOAM5307SFB3viRCv9lAv7AwG7gFwrWndbj9h8iJ1lfdHrNJy9hQeB9d to0otansGw1j0n5LyfcGbbxBLQ== X-Google-Smtp-Source: ABdhPJwJkROAZGlSnvebAmkphxhPvdl6ye0SyhN4iF5a2R8kuYku/y1mSAp6OBUwhp5UgMqFn2jP+w== X-Received: by 2002:adf:d851:: with SMTP id k17mr216774wrl.30.1591641910077; Mon, 08 Jun 2020 11:45:10 -0700 (PDT) Received: from dell ([95.147.198.92]) by smtp.gmail.com with ESMTPSA id u12sm576259wrq.90.2020.06.08.11.45.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2020 11:45:09 -0700 (PDT) Date: Mon, 8 Jun 2020 19:45:07 +0100 From: Lee Jones To: Michael Walle Cc: Andy Shevchenko , Linus Walleij , Bartosz Golaszewski , Rob Herring , Jean Delvare , Guenter Roeck , Thierry Reding , Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= , Wim Van Sebroeck , Shawn Guo , Li Yang , Thomas Gleixner , Jason Cooper , Marc Zyngier , Mark Brown , Greg Kroah-Hartman , linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hwmon@vger.kernel.org, linux-pwm@vger.kernel.org, linux-watchdog@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v3 03/16] mfd: mfd-core: match device tree node against reg property Message-ID: <20200608184507.GC4106@dell> References: <20200423174543.17161-1-michael@walle.cc> <20200423174543.17161-4-michael@walle.cc> <67e90dafd67c285158c2c6f67f92edb7@walle.cc> <20200515102848.GH271301@dell> <159e68b4ce53630ef906b2fcbca925bd@walle.cc> <20200608142413.GA4106@dell> <7566ef30fea9740f427f392aabde0eac@walle.cc> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <7566ef30fea9740f427f392aabde0eac@walle.cc> Sender: linux-hwmon-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-hwmon@vger.kernel.org On Mon, 08 Jun 2020, Michael Walle wrote: > Am 2020-06-08 16:24, schrieb Lee Jones: > > On Mon, 25 May 2020, Michael Walle wrote: > > > Am 2020-05-15 12:28, schrieb Lee Jones: > > > > On Thu, 30 Apr 2020, Michael Walle wrote: > > > > > > > > > Hi Lee, > > > > > > > > > > Am 2020-04-23 19:45, schrieb Michael Walle: > > > > > > There might be multiple children with the device tree compatible, for > > > > > > example if a MFD has multiple instances of the same function. In this > > > > > > case only the first is matched and the other children get a wrong > > > > > > of_node reference. > > > > > > Add a new option to match also against the unit address of the child > > > > > > node. Additonally, a new helper OF_MFD_CELL_REG is added. > > > > [...] > > > > > > > > diff --git a/include/linux/mfd/core.h b/include/linux/mfd/core.h > > > > > > index d01d1299e49d..c2c0ad6b14f3 100644 > > > > > > --- a/include/linux/mfd/core.h > > > > > > +++ b/include/linux/mfd/core.h > > > > > > @@ -13,8 +13,11 @@ > > > > > > #include > > > > > > > > > > > > #define MFD_RES_SIZE(arr) (sizeof(arr) / sizeof(struct resource)) > > > > > > +#define MFD_OF_REG_VALID BIT(31) > > > > > > > > What about 64bit platforms? > > > > > > The idea was to have this as a logical number. I.e. for now you may > > > only > > > have one subdevice per unique compatible string. In fact, if you > > > have a > > > look at the ab8500.c, there are multiple "stericsson,ab8500-pwm" > > > subdevices. But there is only one DT node for all three of it. I guess > > > this works as long as you don't use phandles to reference the pwm node > > > in the device tree. Or you don't want to use device tree properties > > > per subdevice (for example the "timeout-sec" of a watchdog device). > > > > This is not a good example, as the "stericsson,ab8500-pwm" is > > legitimate. Here we are registering 3 potential devices, but only > > instantiating 1 of them. > > Mh? > > static const struct mfd_cell ab8500_devs[] = { > .. > OF_MFD_CELL("ab8500-pwm", > NULL, NULL, 0, 1, "stericsson,ab8500-pwm"), > OF_MFD_CELL("ab8500-pwm", > NULL, NULL, 0, 2, "stericsson,ab8500-pwm"), > OF_MFD_CELL("ab8500-pwm", > NULL, NULL, 0, 3, "stericsson,ab8500-pwm"), > .. > } > > And in pwm-ab8500.c there are three offsets based on the pdev->id. > > Am I missing something here? Scrap what I said above. For some reason I had of_platform_populate() in my head. This will register and enumerate 3 devices. -- Lee Jones [李琼斯] Senior Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lee Jones Subject: Re: [PATCH v3 03/16] mfd: mfd-core: match device tree node against reg property Date: Mon, 8 Jun 2020 19:45:07 +0100 Message-ID: <20200608184507.GC4106@dell> References: <20200423174543.17161-1-michael@walle.cc> <20200423174543.17161-4-michael@walle.cc> <67e90dafd67c285158c2c6f67f92edb7@walle.cc> <20200515102848.GH271301@dell> <159e68b4ce53630ef906b2fcbca925bd@walle.cc> <20200608142413.GA4106@dell> <7566ef30fea9740f427f392aabde0eac@walle.cc> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Content-Disposition: inline In-Reply-To: <7566ef30fea9740f427f392aabde0eac-QKn5cuLxLXY@public.gmane.org> Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Michael Walle Cc: Andy Shevchenko , Linus Walleij , Bartosz Golaszewski , Rob Herring , Jean Delvare , Guenter Roeck , Thierry Reding , Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= , Wim Van Sebroeck , Shawn Guo , Li Yang , Thomas Gleixner , Jason Cooper , Marc Zyngier , Mark Brown , Greg Kroah-Hartman , linux-gpio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-hwmon-u79uwXL29TaqPxH82wqD4g@public.gmane.org List-Id: linux-pwm@vger.kernel.org On Mon, 08 Jun 2020, Michael Walle wrote: > Am 2020-06-08 16:24, schrieb Lee Jones: > > On Mon, 25 May 2020, Michael Walle wrote: > > > Am 2020-05-15 12:28, schrieb Lee Jones: > > > > On Thu, 30 Apr 2020, Michael Walle wrote: > > > > > > > > > Hi Lee, > > > > > > > > > > Am 2020-04-23 19:45, schrieb Michael Walle: > > > > > > There might be multiple children with the device tree compatible, for > > > > > > example if a MFD has multiple instances of the same function. In this > > > > > > case only the first is matched and the other children get a wrong > > > > > > of_node reference. > > > > > > Add a new option to match also against the unit address of the child > > > > > > node. Additonally, a new helper OF_MFD_CELL_REG is added. > > > > [...] > > > > > > > > diff --git a/include/linux/mfd/core.h b/include/linux/mfd/core.h > > > > > > index d01d1299e49d..c2c0ad6b14f3 100644 > > > > > > --- a/include/linux/mfd/core.h > > > > > > +++ b/include/linux/mfd/core.h > > > > > > @@ -13,8 +13,11 @@ > > > > > > #include > > > > > > > > > > > > #define MFD_RES_SIZE(arr) (sizeof(arr) / sizeof(struct resource)) > > > > > > +#define MFD_OF_REG_VALID BIT(31) > > > > > > > > What about 64bit platforms? > > > > > > The idea was to have this as a logical number. I.e. for now you may > > > only > > > have one subdevice per unique compatible string. In fact, if you > > > have a > > > look at the ab8500.c, there are multiple "stericsson,ab8500-pwm" > > > subdevices. But there is only one DT node for all three of it. I guess > > > this works as long as you don't use phandles to reference the pwm node > > > in the device tree. Or you don't want to use device tree properties > > > per subdevice (for example the "timeout-sec" of a watchdog device). > > > > This is not a good example, as the "stericsson,ab8500-pwm" is > > legitimate. Here we are registering 3 potential devices, but only > > instantiating 1 of them. > > Mh? > > static const struct mfd_cell ab8500_devs[] = { > .. > OF_MFD_CELL("ab8500-pwm", > NULL, NULL, 0, 1, "stericsson,ab8500-pwm"), > OF_MFD_CELL("ab8500-pwm", > NULL, NULL, 0, 2, "stericsson,ab8500-pwm"), > OF_MFD_CELL("ab8500-pwm", > NULL, NULL, 0, 3, "stericsson,ab8500-pwm"), > .. > } > > And in pwm-ab8500.c there are three offsets based on the pdev->id. > > Am I missing something here? Scrap what I said above. For some reason I had of_platform_populate() in my head. This will register and enumerate 3 devices. -- Lee Jones [李琼斯] Senior Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog 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.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS 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 A7DDAC433DF for ; Mon, 8 Jun 2020 18:45:22 +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 7826C2078B for ; Mon, 8 Jun 2020 18:45:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="TILcJKJJ"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="XaqIR5YY" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7826C2078B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org 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:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=xSQCAjJNSfc5o2IWKTDJEJj5r1Ji8BrD63srHnuUKro=; b=TILcJKJJS7CC5A 3sPT/BYndcYS1D4YQQ78xS4vteZXjHM6pcryUUkKjqdwQGO2pisvjtsctFNgOsw/mCnt2/QTS/bQV 83QBCGzLsEu5B+0W/xPBFqrsluzaXcwiEDXTy8Mdp/G3PZetbmKzwgoDrTi5sLiIELLRQJKvHtiVB UtRxY8tp88R4VdPE4cEF3UJqQ5goIAJD/AO9QRjkY+bA9hW/XKGIwFTQo33YuIFDjSmyH0tv4RfAQ usnqBBTUGQSxLHmdENMdwE2N/jpu21jeD2ydNMN5aED7L/9Py4W/T6iwQxz6kvBhkO4S5NYNPSrMy uX8q+8hM0BBsbD7qeQ2w==; 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 1jiMln-0003H3-6C; Mon, 08 Jun 2020 18:45:15 +0000 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jiMlj-00038a-TS for linux-arm-kernel@lists.infradead.org; Mon, 08 Jun 2020 18:45:13 +0000 Received: by mail-wr1-x443.google.com with SMTP id t18so18570856wru.6 for ; Mon, 08 Jun 2020 11:45:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=ySspVCbCwHhpHyThSAZlpsL4E+rejtUqHxn7Z7vlWxo=; b=XaqIR5YYixt9BOP0z0KEUXloA92HRuoRKrairYtC9RkYMC9IpeWZNFhdtm3Ew0S0ik 23GSnPKbcQ0iLuaO471GEgonjcDLwGaP8Kz5RZsF4qDAQJYhxfHq+SDj1wQnRnQsuPdk cRlIG+/OaEkp5nBrighVcnPHmVE9LKqgwSYhcc/FBr6yOKQxY1fsLjRZLIKWqRlMxgFK FBCq5icjXeGFENyFVicmG3XnbNL2HRcP8U3PYSH+QTyH+qDr5UGNuKjp33ymGS9uNwRR NsYdveDqU59LDwexizMe7iEdZ45qmTF7FMjUFX8k1NOHb97L6aRezBMZUufezBduirpN Wctw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=ySspVCbCwHhpHyThSAZlpsL4E+rejtUqHxn7Z7vlWxo=; b=egALLvifUmi1x6Jzwde4hZv8fc0NmalpxaIE8v10OwxG+Bqq86gSdxT5rAe52c2OSp fc4J1r6CtAJlxN/3FT6Pwmcn1aYdfL6qYXMzyggfbnlnlVXWYc/tq6vWjt6hSOVytSTN QtiQoBhGfs+ZT74w5X3w+pT+H2YUTTUHd8t7ioqnwOD9vlCaT3iauAlsAGtXIvUJ1juQ sDPZLV+UxwmJ85gEtqLrIXOWb+W2NAkMtg6xwZP+NIsNDPdmaMXLDCkgrN+piX9/SIzQ 7hIXZLGvhv4oi/tAVkYDFBFdowkMidwnfuhHkZypHPnRzG8kC3JDapS5ha3PAU9FMVFG iHjg== X-Gm-Message-State: AOAM533vhm8LRTNHIIeTQJA6LhcLbgozJ3VHSmS7YemDRuFAUqYOquSN ZaiBIfCqEM7Nu8Mwf98ywTZxBg== X-Google-Smtp-Source: ABdhPJwJkROAZGlSnvebAmkphxhPvdl6ye0SyhN4iF5a2R8kuYku/y1mSAp6OBUwhp5UgMqFn2jP+w== X-Received: by 2002:adf:d851:: with SMTP id k17mr216774wrl.30.1591641910077; Mon, 08 Jun 2020 11:45:10 -0700 (PDT) Received: from dell ([95.147.198.92]) by smtp.gmail.com with ESMTPSA id u12sm576259wrq.90.2020.06.08.11.45.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2020 11:45:09 -0700 (PDT) Date: Mon, 8 Jun 2020 19:45:07 +0100 From: Lee Jones To: Michael Walle Subject: Re: [PATCH v3 03/16] mfd: mfd-core: match device tree node against reg property Message-ID: <20200608184507.GC4106@dell> References: <20200423174543.17161-1-michael@walle.cc> <20200423174543.17161-4-michael@walle.cc> <67e90dafd67c285158c2c6f67f92edb7@walle.cc> <20200515102848.GH271301@dell> <159e68b4ce53630ef906b2fcbca925bd@walle.cc> <20200608142413.GA4106@dell> <7566ef30fea9740f427f392aabde0eac@walle.cc> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <7566ef30fea9740f427f392aabde0eac@walle.cc> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200608_114511_952066_C99C27A3 X-CRM114-Status: GOOD ( 25.19 ) 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, Linus Walleij , Thierry Reding , linux-watchdog@vger.kernel.org, Andy Shevchenko , Marc Zyngier , Bartosz Golaszewski , Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= , Guenter Roeck , devicetree@vger.kernel.org, Jean Delvare , Jason Cooper , linux-gpio@vger.kernel.org, Rob Herring , Thomas Gleixner , Wim Van Sebroeck , linux-arm-kernel@lists.infradead.org, linux-hwmon@vger.kernel.org, Greg Kroah-Hartman , linux-kernel@vger.kernel.org, Li Yang , Mark Brown , Shawn Guo 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 T24gTW9uLCAwOCBKdW4gMjAyMCwgTWljaGFlbCBXYWxsZSB3cm90ZToKCj4gQW0gMjAyMC0wNi0w OCAxNjoyNCwgc2NocmllYiBMZWUgSm9uZXM6Cj4gPiBPbiBNb24sIDI1IE1heSAyMDIwLCBNaWNo YWVsIFdhbGxlIHdyb3RlOgo+ID4gPiBBbSAyMDIwLTA1LTE1IDEyOjI4LCBzY2hyaWViIExlZSBK b25lczoKPiA+ID4gPiBPbiBUaHUsIDMwIEFwciAyMDIwLCBNaWNoYWVsIFdhbGxlIHdyb3RlOgo+ ID4gPiA+Cj4gPiA+ID4gPiBIaSBMZWUsCj4gPiA+ID4gPgo+ID4gPiA+ID4gQW0gMjAyMC0wNC0y MyAxOTo0NSwgc2NocmllYiBNaWNoYWVsIFdhbGxlOgo+ID4gPiA+ID4gPiBUaGVyZSBtaWdodCBi ZSBtdWx0aXBsZSBjaGlsZHJlbiB3aXRoIHRoZSBkZXZpY2UgdHJlZSBjb21wYXRpYmxlLCBmb3IK PiA+ID4gPiA+ID4gZXhhbXBsZSBpZiBhIE1GRCBoYXMgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRo ZSBzYW1lIGZ1bmN0aW9uLiBJbiB0aGlzCj4gPiA+ID4gPiA+IGNhc2Ugb25seSB0aGUgZmlyc3Qg aXMgbWF0Y2hlZCBhbmQgdGhlIG90aGVyIGNoaWxkcmVuIGdldCBhIHdyb25nCj4gPiA+ID4gPiA+ IG9mX25vZGUgcmVmZXJlbmNlLgo+ID4gPiA+ID4gPiBBZGQgYSBuZXcgb3B0aW9uIHRvIG1hdGNo IGFsc28gYWdhaW5zdCB0aGUgdW5pdCBhZGRyZXNzIG9mIHRoZSBjaGlsZAo+ID4gPiA+ID4gPiBu b2RlLiBBZGRpdG9uYWxseSwgYSBuZXcgaGVscGVyIE9GX01GRF9DRUxMX1JFRyBpcyBhZGRlZC4K PiA+IAo+ID4gWy4uLl0KPiA+IAo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9tZmQvY29yZS5oIGIvaW5jbHVkZS9saW51eC9tZmQvY29yZS5oCj4gPiA+ID4gPiA+IGluZGV4 IGQwMWQxMjk5ZTQ5ZC4uYzJjMGFkNmIxNGYzIDEwMDY0NAo+ID4gPiA+ID4gPiAtLS0gYS9pbmNs dWRlL2xpbnV4L21mZC9jb3JlLmgKPiA+ID4gPiA+ID4gKysrIGIvaW5jbHVkZS9saW51eC9tZmQv Y29yZS5oCj4gPiA+ID4gPiA+IEBAIC0xMyw4ICsxMywxMSBAQAo+ID4gPiA+ID4gPiAgI2luY2x1 ZGUgPGxpbnV4L3BsYXRhb3JtX2RldmljZS5oPgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgI2Rl ZmluZSBNRkRfUkVTX1NJWkUoYXJyKSAoc2l6ZW9mKGFycikgLyBzaXplb2Yoc3RydWN0IHJlc291 cmNlKSkKPiA+ID4gPiA+ID4gKyNkZWZpbmUgTUZEX09GX1JFR19WQUxJRAlCSVQoMzEpCj4gPiA+ ID4KPiA+ID4gPiBXaGF0IGFib3V0IDY0Yml0IHBsYXRmb3Jtcz8KPiA+ID4gCj4gPiA+IFRoZSBp ZGVhIHdhcyB0byBoYXZlIHRoaXMgYXMgYSBsb2dpY2FsIG51bWJlci4gSS5lLiBmb3Igbm93IHlv dSBtYXkKPiA+ID4gb25seQo+ID4gPiBoYXZlIG9uZSBzdWJkZXZpY2UgcGVyIHVuaXF1ZSBjb21w YXRpYmxlIHN0cmluZy4gSW4gZmFjdCwgaWYgeW91Cj4gPiA+IGhhdmUgYQo+ID4gPiBsb29rIGF0 IHRoZSBhYjg1MDAuYywgdGhlcmUgYXJlIG11bHRpcGxlICJzdGVyaWNzc29uLGFiODUwMC1wd20i Cj4gPiA+IHN1YmRldmljZXMuIEJ1dCB0aGVyZSBpcyBvbmx5IG9uZSBEVCBub2RlIGZvciBhbGwg dGhyZWUgb2YgaXQuIEkgZ3Vlc3MKPiA+ID4gdGhpcyB3b3JrcyBhcyBsb25nIGFzIHlvdSBkb24n dCB1c2UgcGhhbmRsZXMgdG8gcmVmZXJlbmNlIHRoZSBwd20gbm9kZQo+ID4gPiBpbiB0aGUgZGV2 aWNlIHRyZWUuIE9yIHlvdSBkb24ndCB3YW50IHRvIHVzZSBkZXZpY2UgdHJlZSBwcm9wZXJ0aWVz Cj4gPiA+IHBlciBzdWJkZXZpY2UgKGZvciBleGFtcGxlIHRoZSAidGltZW91dC1zZWMiIG9mIGEg d2F0Y2hkb2cgZGV2aWNlKS4KPiA+IAo+ID4gVGhpcyBpcyBub3QgYSBnb29kIGV4YW1wbGUsIGFz IHRoZSAic3Rlcmljc3NvbixhYjg1MDAtcHdtIiBpcwo+ID4gbGVnaXRpbWF0ZS4gIEhlcmUgd2Ug YXJlIHJlZ2lzdGVyaW5nIDMgcG90ZW50aWFsIGRldmljZXMsIGJ1dCBvbmx5Cj4gPiBpbnN0YW50 aWF0aW5nIDEgb2YgdGhlbS4KPiAKPiBNaD8KPiAKPiBzdGF0aWMgY29uc3Qgc3RydWN0IG1mZF9j ZWxsIGFiODUwMF9kZXZzW10gPSB7Cj4gLi4KPiAgICAgICAgT0ZfTUZEX0NFTEwoImFiODUwMC1w d20iLAo+ICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgMCwgMSwgInN0ZXJpY3Nzb24s YWI4NTAwLXB3bSIpLAo+ICAgICAgICAgT0ZfTUZEX0NFTEwoImFiODUwMC1wd20iLAo+ICAgICAg ICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgMCwgMiwgInN0ZXJpY3Nzb24sYWI4NTAwLXB3bSIp LAo+ICAgICAgICAgT0ZfTUZEX0NFTEwoImFiODUwMC1wd20iLAo+ICAgICAgICAgICAgICAgICAg ICAgTlVMTCwgTlVMTCwgMCwgMywgInN0ZXJpY3Nzb24sYWI4NTAwLXB3bSIpLAo+IC4uCj4gfQo+ IAo+IEFuZCBpbiBwd20tYWI4NTAwLmMgdGhlcmUgYXJlIHRocmVlIG9mZnNldHMgYmFzZWQgb24g dGhlIHBkZXYtPmlkLgo+IAo+IEFtIEkgbWlzc2luZyBzb21ldGhpbmcgaGVyZT8KClNjcmFwIHdo YXQgSSBzYWlkIGFib3ZlLgoKRm9yIHNvbWUgcmVhc29uIEkgaGFkIG9mX3BsYXRmb3JtX3BvcHVs YXRlKCkgaW4gbXkgaGVhZC4KClRoaXMgd2lsbCByZWdpc3RlciBhbmQgZW51bWVyYXRlIDMgZGV2 aWNlcy4KCi0tIApMZWUgSm9uZXMgW+adjueQvOaWr10KU2VuaW9yIFRlY2huaWNhbCBMZWFkIC0g RGV2ZWxvcGVyIFNlcnZpY2VzCkxpbmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZv ciBBcm0gU29DcwpGb2xsb3cgTGluYXJvOiBGYWNlYm9vayB8IFR3aXR0ZXIgfCBCbG9nCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2Vy bmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVs Cg==