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=-8.3 required=3.0 tests=BAYES_00, BODY_QUOTE_MALF_MSGID,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 674A8C433DF for ; Tue, 28 Jul 2020 08:15:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 42C0022B4B for ; Tue, 28 Jul 2020 08:15:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="xlfx3Hvu" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727929AbgG1IPM (ORCPT ); Tue, 28 Jul 2020 04:15:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34186 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727856AbgG1IPM (ORCPT ); Tue, 28 Jul 2020 04:15:12 -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 D4345C0619D2 for ; Tue, 28 Jul 2020 01:15:11 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id f7so17380619wrw.1 for ; Tue, 28 Jul 2020 01:15: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=HvwG2XGS6BDybxzaDD/+TuGAKBON3irqrqJCB9747RQ=; b=xlfx3HvuSB0z5GqSk3Qy6MOhKencPFggfCX8hujwu/RDWI/B7jZFJe06PSK7DC1Ssx dEepVkCzLe6s8V+lH6GirW/mRTJKmhk6c2/3CEefSxa1CHXXvTMtYWGTVsITPhwpBdyC WJNtfWmkqvyaKoi3YA6pcFiJ07zI7lOAij4CpBfYTMN9v0amx/QgmB2ZMmTx7ka9M8Ul XWsw7ELJwLkLs8POxJOA5yZjZHraPZpoR1/5p8Kq+dIS1ikdFR6g4ru3FNnb8WZf9m2m 9boRgLly3U5/fL5YqILefz1/moUHuZkSfLiE4f8IvsC3wdMHg1ixjCMqK+NfGRm/FPu4 aoLw== 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=HvwG2XGS6BDybxzaDD/+TuGAKBON3irqrqJCB9747RQ=; b=RFdkF6LMb7ioiTd/IOD5xCcTT8ziY+MlSX1lBEW7TjW8iqiF4p0v0cJF5V3Qk1GMFc ADR98J6yHABGaysnVCR3a6d8slslcYr+yej80T82Xsn4OUAeWVsfB3TRmZWMZAFveE41 XBq7FqXje7FxrUQedKhlBVngFX1X0RyYxvFEUnpbGTp+HQkmEDMmPC+PfLx75vmHC4Ye LLMCHPdt2VQSBJ5NvFd/HxZBJH9k+PlnCPKFPN+fXtfTWYo++jo1iuoS/P+yHblG9Dh1 uuyZ8ATOetvo9g4FddnnyiEIQmozTSh3o3GIZoHZrp4fk0J+IkMl22H6TqEHoD4xwKc8 +TxQ== X-Gm-Message-State: AOAM530jX6ltpRK0zd1uKiyWBh8NLlbfd0iVD5GsUAS+HmFpWr1HlQUH qYaiK7OkoeXmTIv8KsO1XckMjg== X-Google-Smtp-Source: ABdhPJyEBmzjP5p5bqlnkhXS1LyF2jze2TsaWelEULtD2Qvk55SkGf3FY3CVzhFz57n6yU7y/EsR2A== X-Received: by 2002:adf:eccc:: with SMTP id s12mr26590888wro.157.1595924108740; Tue, 28 Jul 2020 01:15:08 -0700 (PDT) Received: from dell ([2.27.167.73]) by smtp.gmail.com with ESMTPSA id p6sm2982576wmg.0.2020.07.28.01.15.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Jul 2020 01:15:08 -0700 (PDT) Date: Tue, 28 Jul 2020 09:15:06 +0100 From: Lee Jones To: Michael Walle Cc: 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, 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 , Andy Shevchenko , Catalin Marinas , Will Deacon , Pavel Machek Subject: Re: [PATCH v6 01/13] mfd: add simple regmap based I2C driver Message-ID: <20200728081506.GA2419169@dell> References: <20200725231834.25642-1-michael@walle.cc> <20200725231834.25642-2-michael@walle.cc> <20200728071949.GE1850026@dell> <23a9ecf5fe4f15b9b20a91cc292aca80@walle.cc> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <23a9ecf5fe4f15b9b20a91cc292aca80@walle.cc> Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org On Tue, 28 Jul 2020, Michael Walle wrote: > Am 2020-07-28 09:19, schrieb Lee Jones: > > On Sun, 26 Jul 2020, Michael Walle wrote: > > > > > There are I2C devices which contain several different functions but > > > doesn't require any special access functions. For these kind of > > > drivers > > > an I2C regmap should be enough. > > > > > > Create an I2C driver which creates an I2C regmap and enumerates its > > > children. If a device wants to use this as its MFD core driver, it has > > > to add an individual compatible string. It may provide its own regmap > > > configuration. > > > > > > Subdevices can use dev_get_regmap() on the parent to get their regmap > > > instance. > > > > > > Signed-off-by: Michael Walle > > > --- > > > Changes since v5: > > > - removed "select MFD_CORE" in Kconfig > > > - removed help text in Kconfig, we assume that the users of this > > > > That's the opposite of what I asked for. > > What is the use to describe the symbol, if it is not user selectable? > I'm not aware this is done anywhere in the kernel, am I missing > something? You mean in menuconfig? I find 'help's helpful even outside of menuconfig. Surely I'm not the only one who reads them 'raw'? > > > driver will have a "select MFD_SIMPLE_MFD_I2C". Instead added > > > a small description to the driver itself. > > > - removed "struct simple_mfd_i2c_config" and use regmap_config > > > directly > > > - changed builtin_i2c_driver() to module_i2c_driver(), added > > > MODULE_ boilerplate > > > - cleaned up the included files > > > > > > Changes since v4: > > > - new patch. Lee, please bear with me. I didn't want to delay the > > > new version (where a lot of remarks on the other patches were > > > addressed) even more, just because we haven't figured out how > > > to deal with the MFD part. So for now, I've included this one. > > > > > > drivers/mfd/Kconfig | 5 ++++ > > > drivers/mfd/Makefile | 1 + > > > drivers/mfd/simple-mfd-i2c.c | 55 > > > ++++++++++++++++++++++++++++++++++++ > > > 3 files changed, 61 insertions(+) > > > create mode 100644 drivers/mfd/simple-mfd-i2c.c > > > > > > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig > > > index 33df0837ab41..c08539c7a166 100644 > > > --- a/drivers/mfd/Kconfig > > > +++ b/drivers/mfd/Kconfig > > > @@ -1162,6 +1162,11 @@ config MFD_SI476X_CORE > > > To compile this driver as a module, choose M here: the > > > module will be called si476x-core. > > > > > > +config MFD_SIMPLE_MFD_I2C > > > + tristate > > > + depends on I2C > > > + select REGMAP_I2C > > > > Please provide a full help. > > See above. > > > > > > config MFD_SM501 > > > tristate "Silicon Motion SM501" > > > depends on HAS_DMA > > > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile > > > index a60e5f835283..78d24a3e7c9e 100644 > > > --- a/drivers/mfd/Makefile > > > +++ b/drivers/mfd/Makefile > > > @@ -264,3 +264,4 @@ obj-$(CONFIG_MFD_STMFX) += stmfx.o > > > obj-$(CONFIG_MFD_KHADAS_MCU) += khadas-mcu.o > > > > > > obj-$(CONFIG_SGI_MFD_IOC3) += ioc3.o > > > +obj-$(CONFIG_MFD_SIMPLE_MFD_I2C) += simple-mfd-i2c.o > > > diff --git a/drivers/mfd/simple-mfd-i2c.c > > > b/drivers/mfd/simple-mfd-i2c.c > > > new file mode 100644 > > > index 000000000000..45090ddad104 > > > --- /dev/null > > > +++ b/drivers/mfd/simple-mfd-i2c.c > > > @@ -0,0 +1,55 @@ > > > +// SPDX-License-Identifier: GPL-2.0-only > > > +/* > > > + * A very simple I2C MFD driver > > > > Simple MFD - I2C > > ok. > > > > + * The driver enumerates its children and registers a common > > > regmap. Use > > > + * dev_get_regmap(pdev->dev.parent, NULL) in the child nodes to > > > fetch that > > > + * regmap instance. > > > > This driver creates a single register map with the intention for it to > > be shared by all sub-devices. Children can use their parent's device > > structure (dev.parent) in order reference it. > > Should this be appended or should it replace my paragraph? If its the > latter, > the "enumeration of the children" is missing. If you want to keep that part, try: This driver creates a single register map with the intention for it to be shared by all sub-devices. Children can use their parent's device structure (dev.parent) in order reference it. Once the register map has been successfully initialised, any sub-devices represented by child nodes in Device Tree will be subsequently registered. > > > + * In the future this driver might be extended to support also > > > other interfaces > > > + * like SPI etc. > > > > Remove this please. > > Why would you remove information about the intention of this driver? If > someone > looks for a place to implement its SPI/I3C/Slimbus MFD driver this might > come > in handy. By all means put something similar in the commit log, but it has no place in the driver itself. Besides, if we were to add support for SPI, it is likely to be a completely separate/unrelated driver. -- 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=-8.2 required=3.0 tests=BAYES_00, BODY_QUOTE_MALF_MSGID,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 3EEB5C433DF for ; Tue, 28 Jul 2020 08:16:29 +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 F1EEF20672 for ; Tue, 28 Jul 2020 08:16:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="2MWh95vK"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="xlfx3Hvu" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F1EEF20672 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+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-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=ejui5vdYE67ROeTWS6SEIXQhdmWriEQ/Jj9FK/g1WRs=; b=2MWh95vK3snmrs89BWUaWdu7P gyO84Z2TLjUez3ak/NKAqor7AzGVuEyyp/kR8e84Pggcp2hNhdtKlPJwtJ4Vnbvn+z0b9rnoSdQ1b ioqeE3PGB/PLv17GoTmkhcxw+oEutiVEK2lof82B2wZnUk5flu8Ch5iU4qtfM2jfoAu6ALoYWW1Eg MVgZq32lPWGle57r8tnYh4OKDWf4llkp5tkHWqeNyW0zw8VXzi9iKik9j6Oz8oq54aCRKUS1YI/Cg zB0WhZ4EjDzNwCgUT0zld6Jjs6ZpZ5AWH18ZHUQ5LoBxCVBBd7EtUNYWHFhVSXfG/ydXFAjD77mQd w/PDJJLaQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k0KlW-0003YT-Hk; Tue, 28 Jul 2020 08:15:14 +0000 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k0KlT-0003Xi-Eu for linux-arm-kernel@lists.infradead.org; Tue, 28 Jul 2020 08:15:12 +0000 Received: by mail-wr1-x441.google.com with SMTP id b6so17353974wrs.11 for ; Tue, 28 Jul 2020 01:15: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=HvwG2XGS6BDybxzaDD/+TuGAKBON3irqrqJCB9747RQ=; b=xlfx3HvuSB0z5GqSk3Qy6MOhKencPFggfCX8hujwu/RDWI/B7jZFJe06PSK7DC1Ssx dEepVkCzLe6s8V+lH6GirW/mRTJKmhk6c2/3CEefSxa1CHXXvTMtYWGTVsITPhwpBdyC WJNtfWmkqvyaKoi3YA6pcFiJ07zI7lOAij4CpBfYTMN9v0amx/QgmB2ZMmTx7ka9M8Ul XWsw7ELJwLkLs8POxJOA5yZjZHraPZpoR1/5p8Kq+dIS1ikdFR6g4ru3FNnb8WZf9m2m 9boRgLly3U5/fL5YqILefz1/moUHuZkSfLiE4f8IvsC3wdMHg1ixjCMqK+NfGRm/FPu4 aoLw== 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=HvwG2XGS6BDybxzaDD/+TuGAKBON3irqrqJCB9747RQ=; b=LRgxh1tHump+eKPR4to4b/StVtegA+8RKBuFR5VPdVVSDRyR7PcecUNzOC7VYFab8L YGD8BN6gl84n3JCi2VGT0tOlAYax/jhTdQWv/4yGzdaJl6wqv+f7Psaszv/laXq/THZp eoov1CoJCS6MFQaiftqTezJdSPrI+xJnpgo8n4f3+Vu9AUmk5lkIOzrOH/IDf7vIii1O Y5rfGoA+E7aTJMYzONK5TegLcvqex4WgqdIniZicUD/rzDt3Ofc7CjBKnagsVLvpN/z4 Io781bDVm0dHoBy5CA+RTt8RSYPIMQyAlr+3wruSpAtnBpxrZmhk04mqnb5w8wKkCf5A YtCw== X-Gm-Message-State: AOAM532nIXWm8/N8I8tC/wyWbMrxBGIn9J1bmQw8Vr96ZGbW7YC7U4JV t8lu1Klw3mj++F5F7FbTMZ8Ijw== X-Google-Smtp-Source: ABdhPJyEBmzjP5p5bqlnkhXS1LyF2jze2TsaWelEULtD2Qvk55SkGf3FY3CVzhFz57n6yU7y/EsR2A== X-Received: by 2002:adf:eccc:: with SMTP id s12mr26590888wro.157.1595924108740; Tue, 28 Jul 2020 01:15:08 -0700 (PDT) Received: from dell ([2.27.167.73]) by smtp.gmail.com with ESMTPSA id p6sm2982576wmg.0.2020.07.28.01.15.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Jul 2020 01:15:08 -0700 (PDT) Date: Tue, 28 Jul 2020 09:15:06 +0100 From: Lee Jones To: Michael Walle Subject: Re: [PATCH v6 01/13] mfd: add simple regmap based I2C driver Message-ID: <20200728081506.GA2419169@dell> References: <20200725231834.25642-1-michael@walle.cc> <20200725231834.25642-2-michael@walle.cc> <20200728071949.GE1850026@dell> <23a9ecf5fe4f15b9b20a91cc292aca80@walle.cc> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <23a9ecf5fe4f15b9b20a91cc292aca80@walle.cc> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200728_041511_514306_7CB1019E X-CRM114-Status: GOOD ( 46.90 ) 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, Catalin Marinas , Linus Walleij , Thierry Reding , Pavel Machek , Will Deacon , Jason Cooper , Andy Shevchenko , Marc Zyngier , Bartosz Golaszewski , Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= , Guenter Roeck , linux-pwm@vger.kernel.org, Jean Delvare , linux-watchdog@vger.kernel.org, linux-gpio@vger.kernel.org, Mark Brown , 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 , Rob Herring , Shawn Guo Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlLCAyOCBKdWwgMjAyMCwgTWljaGFlbCBXYWxsZSB3cm90ZToKCj4gQW0gMjAyMC0wNy0y OCAwOToxOSwgc2NocmllYiBMZWUgSm9uZXM6Cj4gPiBPbiBTdW4sIDI2IEp1bCAyMDIwLCBNaWNo YWVsIFdhbGxlIHdyb3RlOgo+ID4gCj4gPiA+IFRoZXJlIGFyZSBJMkMgZGV2aWNlcyB3aGljaCBj b250YWluIHNldmVyYWwgZGlmZmVyZW50IGZ1bmN0aW9ucyBidXQKPiA+ID4gZG9lc24ndCByZXF1 aXJlIGFueSBzcGVjaWFsIGFjY2VzcyBmdW5jdGlvbnMuIEZvciB0aGVzZSBraW5kIG9mCj4gPiA+ IGRyaXZlcnMKPiA+ID4gYW4gSTJDIHJlZ21hcCBzaG91bGQgYmUgZW5vdWdoLgo+ID4gPiAKPiA+ ID4gQ3JlYXRlIGFuIEkyQyBkcml2ZXIgd2hpY2ggY3JlYXRlcyBhbiBJMkMgcmVnbWFwIGFuZCBl bnVtZXJhdGVzIGl0cwo+ID4gPiBjaGlsZHJlbi4gSWYgYSBkZXZpY2Ugd2FudHMgdG8gdXNlIHRo aXMgYXMgaXRzIE1GRCBjb3JlIGRyaXZlciwgaXQgaGFzCj4gPiA+IHRvIGFkZCBhbiBpbmRpdmlk dWFsIGNvbXBhdGlibGUgc3RyaW5nLiBJdCBtYXkgcHJvdmlkZSBpdHMgb3duIHJlZ21hcAo+ID4g PiBjb25maWd1cmF0aW9uLgo+ID4gPiAKPiA+ID4gU3ViZGV2aWNlcyBjYW4gdXNlIGRldl9nZXRf cmVnbWFwKCkgb24gdGhlIHBhcmVudCB0byBnZXQgdGhlaXIgcmVnbWFwCj4gPiA+IGluc3RhbmNl Lgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogTWljaGFlbCBXYWxsZSA8bWljaGFlbEB3YWxs ZS5jYz4KPiA+ID4gLS0tCj4gPiA+IENoYW5nZXMgc2luY2UgdjU6Cj4gPiA+ICAtIHJlbW92ZWQg InNlbGVjdCBNRkRfQ09SRSIgaW4gS2NvbmZpZwo+ID4gPiAgLSByZW1vdmVkIGhlbHAgdGV4dCBp biBLY29uZmlnLCB3ZSBhc3N1bWUgdGhhdCB0aGUgdXNlcnMgb2YgdGhpcwo+ID4gCj4gPiBUaGF0 J3MgdGhlIG9wcG9zaXRlIG9mIHdoYXQgSSBhc2tlZCBmb3IuCj4gCj4gV2hhdCBpcyB0aGUgdXNl IHRvIGRlc2NyaWJlIHRoZSBzeW1ib2wsIGlmIGl0IGlzIG5vdCB1c2VyIHNlbGVjdGFibGU/Cj4g SSdtIG5vdCBhd2FyZSB0aGlzIGlzIGRvbmUgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCwgYW0gSSBt aXNzaW5nCj4gc29tZXRoaW5nPwoKWW91IG1lYW4gaW4gbWVudWNvbmZpZz8KCkkgZmluZCAnaGVs cCdzIGhlbHBmdWwgZXZlbiBvdXRzaWRlIG9mIG1lbnVjb25maWcuCgpTdXJlbHkgSSdtIG5vdCB0 aGUgb25seSBvbmUgd2hvIHJlYWRzIHRoZW0gJ3Jhdyc/Cgo+ID4gPiAgICBkcml2ZXIgd2lsbCBo YXZlIGEgInNlbGVjdCBNRkRfU0lNUExFX01GRF9JMkMiLiBJbnN0ZWFkIGFkZGVkCj4gPiA+ICAg IGEgc21hbGwgZGVzY3JpcHRpb24gdG8gdGhlIGRyaXZlciBpdHNlbGYuCj4gPiA+ICAtIHJlbW92 ZWQgInN0cnVjdCBzaW1wbGVfbWZkX2kyY19jb25maWciIGFuZCB1c2UgcmVnbWFwX2NvbmZpZwo+ ID4gPiAgICBkaXJlY3RseQo+ID4gPiAgLSBjaGFuZ2VkIGJ1aWx0aW5faTJjX2RyaXZlcigpIHRv IG1vZHVsZV9pMmNfZHJpdmVyKCksIGFkZGVkCj4gPiA+ICAgIE1PRFVMRV8gYm9pbGVycGxhdGUK PiA+ID4gIC0gY2xlYW5lZCB1cCB0aGUgaW5jbHVkZWQgZmlsZXMKPiA+ID4gCj4gPiA+IENoYW5n ZXMgc2luY2UgdjQ6Cj4gPiA+ICAtIG5ldyBwYXRjaC4gTGVlLCBwbGVhc2UgYmVhciB3aXRoIG1l LiBJIGRpZG4ndCB3YW50IHRvIGRlbGF5IHRoZQo+ID4gPiAgICBuZXcgdmVyc2lvbiAod2hlcmUg YSBsb3Qgb2YgcmVtYXJrcyBvbiB0aGUgb3RoZXIgcGF0Y2hlcyB3ZXJlCj4gPiA+ICAgIGFkZHJl c3NlZCkgZXZlbiBtb3JlLCBqdXN0IGJlY2F1c2Ugd2UgaGF2ZW4ndCBmaWd1cmVkIG91dCBob3cK PiA+ID4gICAgdG8gZGVhbCB3aXRoIHRoZSBNRkQgcGFydC4gU28gZm9yIG5vdywgSSd2ZSBpbmNs dWRlZCB0aGlzIG9uZS4KPiA+ID4gCj4gPiA+ICBkcml2ZXJzL21mZC9LY29uZmlnICAgICAgICAg IHwgIDUgKysrKwo+ID4gPiAgZHJpdmVycy9tZmQvTWFrZWZpbGUgICAgICAgICB8ICAxICsKPiA+ ID4gIGRyaXZlcnMvbWZkL3NpbXBsZS1tZmQtaTJjLmMgfCA1NQo+ID4gPiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0 aW9ucygrKQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWZkL3NpbXBsZS1tZmQt aTJjLmMKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9LY29uZmlnIGIvZHJp dmVycy9tZmQvS2NvbmZpZwo+ID4gPiBpbmRleCAzM2RmMDgzN2FiNDEuLmMwODUzOWM3YTE2NiAx MDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9tZmQvS2NvbmZpZwo+ID4gPiArKysgYi9kcml2ZXJz L21mZC9LY29uZmlnCj4gPiA+IEBAIC0xMTYyLDYgKzExNjIsMTEgQEAgY29uZmlnIE1GRF9TSTQ3 NlhfQ09SRQo+ID4gPiAgCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hv b3NlIE0gaGVyZTogdGhlCj4gPiA+ICAJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2k0NzZ4LWNv cmUuCj4gPiA+IAo+ID4gPiArY29uZmlnIE1GRF9TSU1QTEVfTUZEX0kyQwo+ID4gPiArCXRyaXN0 YXRlCj4gPiA+ICsJZGVwZW5kcyBvbiBJMkMKPiA+ID4gKwlzZWxlY3QgUkVHTUFQX0kyQwo+ID4g Cj4gPiBQbGVhc2UgcHJvdmlkZSBhIGZ1bGwgaGVscC4KPiAKPiBTZWUgYWJvdmUuCj4gCj4gPiAK PiA+ID4gIGNvbmZpZyBNRkRfU001MDEKPiA+ID4gIAl0cmlzdGF0ZSAiU2lsaWNvbiBNb3Rpb24g U001MDEiCj4gPiA+ICAJZGVwZW5kcyBvbiBIQVNfRE1BCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL21mZC9NYWtlZmlsZSBiL2RyaXZlcnMvbWZkL01ha2VmaWxlCj4gPiA+IGluZGV4IGE2MGU1 ZjgzNTI4My4uNzhkMjRhM2U3YzllIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL21mZC9NYWtl ZmlsZQo+ID4gPiArKysgYi9kcml2ZXJzL21mZC9NYWtlZmlsZQo+ID4gPiBAQCAtMjY0LDMgKzI2 NCw0IEBAIG9iai0kKENPTkZJR19NRkRfU1RNRlgpIAkrPSBzdG1meC5vCj4gPiA+ICBvYmotJChD T05GSUdfTUZEX0tIQURBU19NQ1UpIAkrPSBraGFkYXMtbWN1Lm8KPiA+ID4gCj4gPiA+ICBvYmot JChDT05GSUdfU0dJX01GRF9JT0MzKQkrPSBpb2MzLm8KPiA+ID4gK29iai0kKENPTkZJR19NRkRf U0lNUExFX01GRF9JMkMpCSs9IHNpbXBsZS1tZmQtaTJjLm8KPiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWZkL3NpbXBsZS1tZmQtaTJjLmMKPiA+ID4gYi9kcml2ZXJzL21mZC9zaW1wbGUtbWZk LWkyYy5jCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAwMDAw MC4uNDUwOTBkZGFkMTA0Cj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gKysrIGIvZHJpdmVycy9t ZmQvc2ltcGxlLW1mZC1pMmMuYwo+ID4gPiBAQCAtMCwwICsxLDU1IEBACj4gPiA+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Cj4gPiA+ICsvKgo+ID4gPiArICogQSB2 ZXJ5IHNpbXBsZSBJMkMgTUZEIGRyaXZlcgo+ID4gCj4gPiBTaW1wbGUgTUZEIC0gSTJDCj4gCj4g b2suCj4gCj4gPiA+ICsgKiBUaGUgZHJpdmVyIGVudW1lcmF0ZXMgaXRzIGNoaWxkcmVuIGFuZCBy ZWdpc3RlcnMgYSBjb21tb24KPiA+ID4gcmVnbWFwLiBVc2UKPiA+ID4gKyAqIGRldl9nZXRfcmVn bWFwKHBkZXYtPmRldi5wYXJlbnQsIE5VTEwpIGluIHRoZSBjaGlsZCBub2RlcyB0bwo+ID4gPiBm ZXRjaCB0aGF0Cj4gPiA+ICsgKiByZWdtYXAgaW5zdGFuY2UuCj4gPiAKPiA+IFRoaXMgZHJpdmVy IGNyZWF0ZXMgYSBzaW5nbGUgcmVnaXN0ZXIgbWFwIHdpdGggdGhlIGludGVudGlvbiBmb3IgaXQg dG8KPiA+IGJlIHNoYXJlZCBieSBhbGwgc3ViLWRldmljZXMuICBDaGlsZHJlbiBjYW4gdXNlIHRo ZWlyIHBhcmVudCdzIGRldmljZQo+ID4gc3RydWN0dXJlIChkZXYucGFyZW50KSBpbiBvcmRlciBy ZWZlcmVuY2UgaXQuCj4gCj4gU2hvdWxkIHRoaXMgYmUgYXBwZW5kZWQgb3Igc2hvdWxkIGl0IHJl cGxhY2UgbXkgcGFyYWdyYXBoPyBJZiBpdHMgdGhlCj4gbGF0dGVyLAo+IHRoZSAiZW51bWVyYXRp b24gb2YgdGhlIGNoaWxkcmVuIiBpcyBtaXNzaW5nLgoKSWYgeW91IHdhbnQgdG8ga2VlcCB0aGF0 IHBhcnQsIHRyeToKClRoaXMgZHJpdmVyIGNyZWF0ZXMgYSBzaW5nbGUgcmVnaXN0ZXIgbWFwIHdp dGggdGhlIGludGVudGlvbiBmb3IgaXQgdG8KYmUgc2hhcmVkIGJ5IGFsbCBzdWItZGV2aWNlcy4g IENoaWxkcmVuIGNhbiB1c2UgdGhlaXIgcGFyZW50J3MgZGV2aWNlCnN0cnVjdHVyZSAoZGV2LnBh cmVudCkgaW4gb3JkZXIgcmVmZXJlbmNlIGl0LgoKT25jZSB0aGUgcmVnaXN0ZXIgbWFwIGhhcyBi ZWVuIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXNlZCwgYW55CnN1Yi1kZXZpY2VzIHJlcHJlc2VudGVk IGJ5IGNoaWxkIG5vZGVzIGluIERldmljZSBUcmVlIHdpbGwgYmUKc3Vic2VxdWVudGx5IHJlZ2lz dGVyZWQuCgo+ID4gPiArICogSW4gdGhlIGZ1dHVyZSB0aGlzIGRyaXZlciBtaWdodCBiZSBleHRl bmRlZCB0byBzdXBwb3J0IGFsc28KPiA+ID4gb3RoZXIgaW50ZXJmYWNlcwo+ID4gPiArICogbGlr ZSBTUEkgZXRjLgo+ID4gCj4gPiBSZW1vdmUgdGhpcyBwbGVhc2UuCj4gCj4gV2h5IHdvdWxkIHlv dSByZW1vdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGludGVudGlvbiBvZiB0aGlzIGRyaXZlcj8g SWYKPiBzb21lb25lCj4gbG9va3MgZm9yIGEgcGxhY2UgdG8gaW1wbGVtZW50IGl0cyBTUEkvSTND L1NsaW1idXMgTUZEIGRyaXZlciB0aGlzIG1pZ2h0Cj4gY29tZQo+IGluIGhhbmR5LgoKQnkgYWxs IG1lYW5zIHB1dCBzb21ldGhpbmcgc2ltaWxhciBpbiB0aGUgY29tbWl0IGxvZywgYnV0IGl0IGhh cyBubwpwbGFjZSBpbiB0aGUgZHJpdmVyIGl0c2VsZi4gIEJlc2lkZXMsIGlmIHdlIHdlcmUgdG8g YWRkIHN1cHBvcnQgZm9yClNQSSwgaXQgaXMgbGlrZWx5IHRvIGJlIGEgY29tcGxldGVseSBzZXBh cmF0ZS91bnJlbGF0ZWQgZHJpdmVyLgoKLS0gCkxlZSBKb25lcyBb5p2O55C85pavXQpTZW5pb3Ig VGVjaG5pY2FsIExlYWQgLSBEZXZlbG9wZXIgU2VydmljZXMKTGluYXJvLm9yZyDilIIgT3BlbiBz b3VyY2Ugc29mdHdhcmUgZm9yIEFybSBTb0NzCkZvbGxvdyBMaW5hcm86IEZhY2Vib29rIHwgVHdp dHRlciB8IEJsb2cKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LWFybS1rZXJuZWwK