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=-1.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,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 EA05FC433E0 for ; Wed, 10 Jun 2020 17:16:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CAFD52072E for ; Wed, 10 Jun 2020 17:16:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1591809392; bh=VuG8GFAPexrsYOA4UE1dLrNk0LWRoaPJInTcHfEdbfo=; h=References:In-Reply-To:From:Date:Subject:To:Cc:List-ID:From; b=gde/N2WnSAnr6dgMkWBr4y8iRQutRlHwR0yCB0xr99WWBeQYp58ngQYBiI57D9kGI JXgajf/2qFF07G1JIlKEKGTHdrLFUoOCQL9TqyxsFHdO8yKKdD0JNullOVBrpHQ9eh KtYLNUjanz4N7KL1sQTL86neO1PHayeHf7TYUAQM= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728172AbgFJRQZ (ORCPT ); Wed, 10 Jun 2020 13:16:25 -0400 Received: from mail.kernel.org ([198.145.29.99]:45794 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727938AbgFJRQX (ORCPT ); Wed, 10 Jun 2020 13:16:23 -0400 Received: from mail-oi1-f171.google.com (mail-oi1-f171.google.com [209.85.167.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5855B20820; Wed, 10 Jun 2020 17:16:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1591809382; bh=VuG8GFAPexrsYOA4UE1dLrNk0LWRoaPJInTcHfEdbfo=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=cS9uw1oEysLZyc2hML43CnVBubSlpUYbM9CTxkk9RoQ715TYm/u3Dy8vLeX92YFTE IkcqPBTQ3Rx3T8JW4U0T7zi6X4B3yrCgYsmJg7KPfCl1HecKq6oGj5DwWASrzgOSPn lQWCOT18fF9z+do35e5vBc/EmNwC2ti6NMhrdwec= Received: by mail-oi1-f171.google.com with SMTP id p70so2728310oic.12; Wed, 10 Jun 2020 10:16:22 -0700 (PDT) X-Gm-Message-State: AOAM531sjSvLiUglLnibhf+Ypa7+9PxAnKP41begekUUbzwfpVISI/wb s/tFxhq730hxlIi/Rqfx4jPGr91NKtjLwreD3Q== X-Google-Smtp-Source: ABdhPJwHOABuR6AQwMm2KvAS7N8eot1RgRxtzsddB3/K6M8xY7inxghhge+De2OMnh1FR1Xql5mlTOlR1gqOEN6sorU= X-Received: by 2002:aca:d943:: with SMTP id q64mr3389865oig.147.1591809381607; Wed, 10 Jun 2020 10:16:21 -0700 (PDT) MIME-Version: 1.0 References: <7d7feb374cbf5a587dc1ce65fc3ad672@walle.cc> <20200608185651.GD4106@dell> <32231f26f7028d62aeda8fdb3364faf1@walle.cc> <20200609064735.GH4106@dell> <32287ac0488f7cbd5a7d1259c284e554@walle.cc> <20200609151941.GM4106@dell> <95e6ec9bbdf6af7a9ff9c31786f743f2@walle.cc> <20200609194505.GQ4106@dell> <3a6931248f0efcaf8efbb5425a9bd833@walle.cc> <20200610071940.GS4106@dell> In-Reply-To: <20200610071940.GS4106@dell> From: Rob Herring Date: Wed, 10 Jun 2020 11:16:10 -0600 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v4 02/11] mfd: Add support for Kontron sl28cpld management controller To: Lee Jones Cc: Michael Walle , Andy Shevchenko , Ranjani Sridharan , david.m.ertman@intel.com, shiraz.saleem@intel.com, Mark Brown , "open list:GPIO SUBSYSTEM" , devicetree , Linux Kernel Mailing List , Linux HWMON List , Linux PWM List , LINUX-WATCHDOG , linux-arm Mailing List , Linus Walleij , Bartosz Golaszewski , Jean Delvare , Guenter Roeck , Thierry Reding , =?UTF-8?Q?Uwe_Kleine=2DK=C3=B6nig?= , Wim Van Sebroeck , Shawn Guo , Li Yang , Thomas Gleixner , Jason Cooper , Marc Zyngier , Greg Kroah-Hartman , Andy Shevchenko Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-hwmon-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-hwmon@vger.kernel.org On Wed, Jun 10, 2020 at 1:19 AM Lee Jones wrote: > > On Wed, 10 Jun 2020, Michael Walle wrote: > > Am 2020-06-09 21:45, schrieb Lee Jones: > > > On Tue, 09 Jun 2020, Michael Walle wrote: > > > > > We do not need a 'simple-regmap' solution for your use-case. > > > > > > > > > > Since your device's registers are segregated, just split up the > > > > > register map and allocate each sub-device with it's own slice. > > > > > > > > I don't get it, could you make a device tree example for my > > > > use-case? (see also above) > > > > > > &i2cbus { > > > mfd-device@10 { > > > compatible =3D "simple-mfd"; > > > reg =3D <10>; > > > > > > sub-device@10 { > > > compatible =3D "vendor,sub-device"; > > > reg =3D <10>; > > > }; > > > }; > > > > > > The Regmap config would be present in each of the child devices. > > > > > > Each child device would call devm_regmap_init_i2c() in .probe(). > > > > Ah, I see. If I'm not wrong, this still means to create an i2c > > device driver with the name "simple-mfd". > > Yes, it does. TBC, while fine for a driver to bind on 'simple-mfd', a DT compatible with that alone is not fine. > > Besides that, I don't like this, because: > > - Rob already expressed its concerns with "simple-mfd" and so on. > > Where did this take place? I'd like to read up on this. > > > - you need to duplicate the config in each sub device > > You can have a share a single config. > > > - which also means you are restricting the sub devices to be > > i2c only (unless you implement and duplicate other regmap configs, > > too). For this driver, SPI and MMIO may be viable options. > > You could also have a shared implementation to choose between different > busses. I think it is really the syscon mfd driver you want to generalize to other buses. Though with a quick look at it, there's not really a whole lot to share. The regmap lookup would be the main thing. You are going to need a driver instance for each bus type. > > Thus, I'd rather implement a simple-mfd.c which implement a common > > I2C driver for now and populate its children using > > devm_of_platform_populate(). This could be extended to support other > > type of regmaps like SPI in the future. > > > > Also some MFD drivers could be moved to this, a likely candidate is > > the smsc-ece1099.c. Although I don't really understand its purpose, > > if don't have CONFIG_OF. > > > > Judging from the existing code, this simple-mfd.c wouldn't just be > > "a list of compatible" strings but also additional quirks and tweaks > > for particular devices in this list. Yes, this is why specific compatible strings are required. > Hold off on the simple-mfd.c idea, as I'm not taken by it yet and > wouldn't want you to waste your time. I have another idea which would > help. Give me a few days to put something together. > > -- > Lee Jones [=E6=9D=8E=E7=90=BC=E6=96=AF] > Senior Technical Lead - Developer Services > Linaro.org =E2=94=82 Open source software for Arm SoCs > Follow Linaro: Facebook | Twitter | Blog From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: Re: [PATCH v4 02/11] mfd: Add support for Kontron sl28cpld management controller Date: Wed, 10 Jun 2020 11:16:10 -0600 Message-ID: References: <7d7feb374cbf5a587dc1ce65fc3ad672@walle.cc> <20200608185651.GD4106@dell> <32231f26f7028d62aeda8fdb3364faf1@walle.cc> <20200609064735.GH4106@dell> <32287ac0488f7cbd5a7d1259c284e554@walle.cc> <20200609151941.GM4106@dell> <95e6ec9bbdf6af7a9ff9c31786f743f2@walle.cc> <20200609194505.GQ4106@dell> <3a6931248f0efcaf8efbb5425a9bd833@walle.cc> <20200610071940.GS4106@dell> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <20200610071940.GS4106@dell> Sender: linux-gpio-owner@vger.kernel.org To: Lee Jones Cc: Michael Walle , Andy Shevchenko , Ranjani Sridharan , david.m.ertman@intel.com, shiraz.saleem@intel.com, Mark Brown , "open list:GPIO SUBSYSTEM" , devicetree , Linux Kernel Mailing List , Linux HWMON List , Linux PWM List , LINUX-WATCHDOG , linux-arm Mailing List , Linus Walleij , Bartosz Golaszewski , Jean Delvare , Guenter Roeck , Thierry Reding List-Id: linux-pwm@vger.kernel.org On Wed, Jun 10, 2020 at 1:19 AM Lee Jones wrote: > > On Wed, 10 Jun 2020, Michael Walle wrote: > > Am 2020-06-09 21:45, schrieb Lee Jones: > > > On Tue, 09 Jun 2020, Michael Walle wrote: > > > > > We do not need a 'simple-regmap' solution for your use-case. > > > > > > > > > > Since your device's registers are segregated, just split up the > > > > > register map and allocate each sub-device with it's own slice. > > > > > > > > I don't get it, could you make a device tree example for my > > > > use-case? (see also above) > > > > > > &i2cbus { > > > mfd-device@10 { > > > compatible =3D "simple-mfd"; > > > reg =3D <10>; > > > > > > sub-device@10 { > > > compatible =3D "vendor,sub-device"; > > > reg =3D <10>; > > > }; > > > }; > > > > > > The Regmap config would be present in each of the child devices. > > > > > > Each child device would call devm_regmap_init_i2c() in .probe(). > > > > Ah, I see. If I'm not wrong, this still means to create an i2c > > device driver with the name "simple-mfd". > > Yes, it does. TBC, while fine for a driver to bind on 'simple-mfd', a DT compatible with that alone is not fine. > > Besides that, I don't like this, because: > > - Rob already expressed its concerns with "simple-mfd" and so on. > > Where did this take place? I'd like to read up on this. > > > - you need to duplicate the config in each sub device > > You can have a share a single config. > > > - which also means you are restricting the sub devices to be > > i2c only (unless you implement and duplicate other regmap configs, > > too). For this driver, SPI and MMIO may be viable options. > > You could also have a shared implementation to choose between different > busses. I think it is really the syscon mfd driver you want to generalize to other buses. Though with a quick look at it, there's not really a whole lot to share. The regmap lookup would be the main thing. You are going to need a driver instance for each bus type. > > Thus, I'd rather implement a simple-mfd.c which implement a common > > I2C driver for now and populate its children using > > devm_of_platform_populate(). This could be extended to support other > > type of regmaps like SPI in the future. > > > > Also some MFD drivers could be moved to this, a likely candidate is > > the smsc-ece1099.c. Although I don't really understand its purpose, > > if don't have CONFIG_OF. > > > > Judging from the existing code, this simple-mfd.c wouldn't just be > > "a list of compatible" strings but also additional quirks and tweaks > > for particular devices in this list. Yes, this is why specific compatible strings are required. > Hold off on the simple-mfd.c idea, as I'm not taken by it yet and > wouldn't want you to waste your time. I have another idea which would > help. Give me a few days to put something together. > > -- > Lee Jones [=E6=9D=8E=E7=90=BC=E6=96=AF] > Senior Technical Lead - Developer Services > Linaro.org =E2=94=82 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=-1.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 ABDFBC433DF for ; Wed, 10 Jun 2020 17:16:28 +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 7EAED2070B for ; Wed, 10 Jun 2020 17: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="oGRJg770"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="cS9uw1oE" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7EAED2070B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.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:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=lJrsroFv4SZo5e8LO6WTMZukGwvZHsCy9KkcJwMeOtk=; b=oGRJg7701PFwSQ +h5J+YNPcTCWPacv0kVfhZPaBJ4hCmyo/J2rY+n+rR+acjO71qsLZGgeOE64RTMdWWLoQoJTHIfE8 8uEqQCWO57ipXgmAc6F9QjER4JFB5cqFmFwF7W3Wo6p6fmPETT6Jc76XosTZz+rYhDTptJlT7bp4e G015W0amFVYmjgAUSYjccwLkbJy1c2glkLf5BXVOpcdiP5gJ4vZyGeIrZlCOCqdkBt9tk4IJPA1l5 5t1lRw/Hq7/JNb3OiZoECJazDPZ4d6gnAcln1lXnOsdwZRUGZ0sjEsBnWK8bJ2N1DXvzHa2UrjtYQ WrnRoQnxd4XRScwg8ytw==; 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 1jj4Ky-0005Xf-0V; Wed, 10 Jun 2020 17:16:28 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jj4Ku-0005XG-Bn for linux-arm-kernel@lists.infradead.org; Wed, 10 Jun 2020 17:16:25 +0000 Received: from mail-oi1-f171.google.com (mail-oi1-f171.google.com [209.85.167.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 51FD1207F9 for ; Wed, 10 Jun 2020 17:16:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1591809382; bh=VuG8GFAPexrsYOA4UE1dLrNk0LWRoaPJInTcHfEdbfo=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=cS9uw1oEysLZyc2hML43CnVBubSlpUYbM9CTxkk9RoQ715TYm/u3Dy8vLeX92YFTE IkcqPBTQ3Rx3T8JW4U0T7zi6X4B3yrCgYsmJg7KPfCl1HecKq6oGj5DwWASrzgOSPn lQWCOT18fF9z+do35e5vBc/EmNwC2ti6NMhrdwec= Received: by mail-oi1-f171.google.com with SMTP id d67so2759541oig.6 for ; Wed, 10 Jun 2020 10:16:22 -0700 (PDT) X-Gm-Message-State: AOAM533drrVTKC9nb97yW6xhXHvHDmAMzUiF41/UVcwX6/JqI0D6U/XE DrvivVN/FnhrrqiwsuLjWtucrTrMLJnsIFHrXg== X-Google-Smtp-Source: ABdhPJwHOABuR6AQwMm2KvAS7N8eot1RgRxtzsddB3/K6M8xY7inxghhge+De2OMnh1FR1Xql5mlTOlR1gqOEN6sorU= X-Received: by 2002:aca:d943:: with SMTP id q64mr3389865oig.147.1591809381607; Wed, 10 Jun 2020 10:16:21 -0700 (PDT) MIME-Version: 1.0 References: <7d7feb374cbf5a587dc1ce65fc3ad672@walle.cc> <20200608185651.GD4106@dell> <32231f26f7028d62aeda8fdb3364faf1@walle.cc> <20200609064735.GH4106@dell> <32287ac0488f7cbd5a7d1259c284e554@walle.cc> <20200609151941.GM4106@dell> <95e6ec9bbdf6af7a9ff9c31786f743f2@walle.cc> <20200609194505.GQ4106@dell> <3a6931248f0efcaf8efbb5425a9bd833@walle.cc> <20200610071940.GS4106@dell> In-Reply-To: <20200610071940.GS4106@dell> From: Rob Herring Date: Wed, 10 Jun 2020 11:16:10 -0600 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v4 02/11] mfd: Add support for Kontron sl28cpld management controller To: Lee Jones X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200610_101624_443174_7A444E3B X-CRM114-Status: GOOD ( 28.27 ) 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 List , Linus Walleij , Thierry Reding , Jason Cooper , Andy Shevchenko , Marc Zyngier , Ranjani Sridharan , Bartosz Golaszewski , Andy Shevchenko , =?UTF-8?Q?Uwe_Kleine=2DK=C3=B6nig?= , david.m.ertman@intel.com, Guenter Roeck , devicetree , Jean Delvare , LINUX-WATCHDOG , "open list:GPIO SUBSYSTEM" , Mark Brown , Thomas Gleixner , Wim Van Sebroeck , shiraz.saleem@intel.com, linux-arm Mailing List , Linux HWMON List , Greg Kroah-Hartman , Linux Kernel Mailing List , Li Yang , Michael Walle , 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 T24gV2VkLCBKdW4gMTAsIDIwMjAgYXQgMToxOSBBTSBMZWUgSm9uZXMgPGxlZS5qb25lc0BsaW5h cm8ub3JnPiB3cm90ZToKPgo+IE9uIFdlZCwgMTAgSnVuIDIwMjAsIE1pY2hhZWwgV2FsbGUgd3Jv dGU6Cj4gPiBBbSAyMDIwLTA2LTA5IDIxOjQ1LCBzY2hyaWViIExlZSBKb25lczoKPiA+ID4gT24g VHVlLCAwOSBKdW4gMjAyMCwgTWljaGFlbCBXYWxsZSB3cm90ZToKPiA+ID4gPiA+IFdlIGRvIG5v dCBuZWVkIGEgJ3NpbXBsZS1yZWdtYXAnIHNvbHV0aW9uIGZvciB5b3VyIHVzZS1jYXNlLgo+ID4g PiA+ID4KPiA+ID4gPiA+IFNpbmNlIHlvdXIgZGV2aWNlJ3MgcmVnaXN0ZXJzIGFyZSBzZWdyZWdh dGVkLCBqdXN0IHNwbGl0IHVwIHRoZQo+ID4gPiA+ID4gcmVnaXN0ZXIgbWFwIGFuZCBhbGxvY2F0 ZSBlYWNoIHN1Yi1kZXZpY2Ugd2l0aCBpdCdzIG93biBzbGljZS4KPiA+ID4gPgo+ID4gPiA+IEkg ZG9uJ3QgZ2V0IGl0LCBjb3VsZCB5b3UgbWFrZSBhIGRldmljZSB0cmVlIGV4YW1wbGUgZm9yIG15 Cj4gPiA+ID4gdXNlLWNhc2U/IChzZWUgYWxzbyBhYm92ZSkKPiA+ID4KPiA+ID4gICAgICZpMmNi dXMgewo+ID4gPiAgICAgICAgIG1mZC1kZXZpY2VAMTAgewo+ID4gPiAgICAgICAgICAgICBjb21w YXRpYmxlID0gInNpbXBsZS1tZmQiOwo+ID4gPiAgICAgICAgICAgICByZWcgPSA8MTA+Owo+ID4g Pgo+ID4gPiAgICAgICAgICAgICBzdWItZGV2aWNlQDEwIHsKPiA+ID4gICAgICAgICAgICAgICAg IGNvbXBhdGlibGUgPSAidmVuZG9yLHN1Yi1kZXZpY2UiOwo+ID4gPiAgICAgICAgICAgICAgICAg cmVnID0gPDEwPjsKPiA+ID4gICAgICAgICAgICAgfTsKPiA+ID4gICAgfTsKPiA+ID4KPiA+ID4g VGhlIFJlZ21hcCBjb25maWcgd291bGQgYmUgcHJlc2VudCBpbiBlYWNoIG9mIHRoZSBjaGlsZCBk ZXZpY2VzLgo+ID4gPgo+ID4gPiBFYWNoIGNoaWxkIGRldmljZSB3b3VsZCBjYWxsIGRldm1fcmVn bWFwX2luaXRfaTJjKCkgaW4gLnByb2JlKCkuCj4gPgo+ID4gQWgsIEkgc2VlLiBJZiBJJ20gbm90 IHdyb25nLCB0aGlzIHN0aWxsIG1lYW5zIHRvIGNyZWF0ZSBhbiBpMmMKPiA+IGRldmljZSBkcml2 ZXIgd2l0aCB0aGUgbmFtZSAic2ltcGxlLW1mZCIuCj4KPiBZZXMsIGl0IGRvZXMuCgpUQkMsIHdo aWxlIGZpbmUgZm9yIGEgZHJpdmVyIHRvIGJpbmQgb24gJ3NpbXBsZS1tZmQnLCBhIERUIGNvbXBh dGlibGUKd2l0aCB0aGF0IGFsb25lIGlzIG5vdCBmaW5lLgoKPiA+IEJlc2lkZXMgdGhhdCwgSSBk b24ndCBsaWtlIHRoaXMsIGJlY2F1c2U6Cj4gPiAgLSBSb2IgYWxyZWFkeSBleHByZXNzZWQgaXRz IGNvbmNlcm5zIHdpdGggInNpbXBsZS1tZmQiIGFuZCBzbyBvbi4KPgo+IFdoZXJlIGRpZCB0aGlz IHRha2UgcGxhY2U/ICBJJ2QgbGlrZSB0byByZWFkIHVwIG9uIHRoaXMuCj4KPiA+ICAtIHlvdSBu ZWVkIHRvIGR1cGxpY2F0ZSB0aGUgY29uZmlnIGluIGVhY2ggc3ViIGRldmljZQo+Cj4gWW91IGNh biBoYXZlIGEgc2hhcmUgYSBzaW5nbGUgY29uZmlnLgo+Cj4gPiAgLSB3aGljaCBhbHNvIG1lYW5z IHlvdSBhcmUgcmVzdHJpY3RpbmcgdGhlIHN1YiBkZXZpY2VzIHRvIGJlCj4gPiAgICBpMmMgb25s eSAodW5sZXNzIHlvdSBpbXBsZW1lbnQgYW5kIGR1cGxpY2F0ZSBvdGhlciByZWdtYXAgY29uZmln cywKPiA+ICAgIHRvbykuIEZvciB0aGlzIGRyaXZlciwgU1BJIGFuZCBNTUlPIG1heSBiZSB2aWFi bGUgb3B0aW9ucy4KPgo+IFlvdSBjb3VsZCBhbHNvIGhhdmUgYSBzaGFyZWQgaW1wbGVtZW50YXRp b24gdG8gY2hvb3NlIGJldHdlZW4gZGlmZmVyZW50Cj4gYnVzc2VzLgoKSSB0aGluayBpdCBpcyBy ZWFsbHkgdGhlIHN5c2NvbiBtZmQgZHJpdmVyIHlvdSB3YW50IHRvIGdlbmVyYWxpemUgdG8Kb3Ro ZXIgYnVzZXMuIFRob3VnaCB3aXRoIGEgcXVpY2sgbG9vayBhdCBpdCwgdGhlcmUncyBub3QgcmVh bGx5IGEKd2hvbGUgbG90IHRvIHNoYXJlLiBUaGUgcmVnbWFwIGxvb2t1cCB3b3VsZCBiZSB0aGUg bWFpbiB0aGluZy4gWW91IGFyZQpnb2luZyB0byBuZWVkIGEgZHJpdmVyIGluc3RhbmNlIGZvciBl YWNoIGJ1cyB0eXBlLgoKPiA+IFRodXMsIEknZCByYXRoZXIgaW1wbGVtZW50IGEgc2ltcGxlLW1m ZC5jIHdoaWNoIGltcGxlbWVudCBhIGNvbW1vbgo+ID4gSTJDIGRyaXZlciBmb3Igbm93IGFuZCBw b3B1bGF0ZSBpdHMgY2hpbGRyZW4gdXNpbmcKPiA+IGRldm1fb2ZfcGxhdGZvcm1fcG9wdWxhdGUo KS4gVGhpcyBjb3VsZCBiZSBleHRlbmRlZCB0byBzdXBwb3J0IG90aGVyCj4gPiB0eXBlIG9mIHJl Z21hcHMgbGlrZSBTUEkgaW4gdGhlIGZ1dHVyZS4KPiA+Cj4gPiBBbHNvIHNvbWUgTUZEIGRyaXZl cnMgY291bGQgYmUgbW92ZWQgdG8gdGhpcywgYSBsaWtlbHkgY2FuZGlkYXRlIGlzCj4gPiB0aGUg c21zYy1lY2UxMDk5LmMuIEFsdGhvdWdoIEkgZG9uJ3QgcmVhbGx5IHVuZGVyc3RhbmQgaXRzIHB1 cnBvc2UsCj4gPiBpZiBkb24ndCBoYXZlIENPTkZJR19PRi4KPiA+Cj4gPiBKdWRnaW5nIGZyb20g dGhlIGV4aXN0aW5nIGNvZGUsIHRoaXMgc2ltcGxlLW1mZC5jIHdvdWxkbid0IGp1c3QgYmUKPiA+ ICJhIGxpc3Qgb2YgY29tcGF0aWJsZSIgc3RyaW5ncyBidXQgYWxzbyBhZGRpdGlvbmFsIHF1aXJr cyBhbmQgdHdlYWtzCj4gPiBmb3IgcGFydGljdWxhciBkZXZpY2VzIGluIHRoaXMgbGlzdC4KClll cywgdGhpcyBpcyB3aHkgc3BlY2lmaWMgY29tcGF0aWJsZSBzdHJpbmdzIGFyZSByZXF1aXJlZC4K Cj4gSG9sZCBvZmYgb24gdGhlIHNpbXBsZS1tZmQuYyBpZGVhLCBhcyBJJ20gbm90IHRha2VuIGJ5 IGl0IHlldCBhbmQKPiB3b3VsZG4ndCB3YW50IHlvdSB0byB3YXN0ZSB5b3VyIHRpbWUuICBJIGhh dmUgYW5vdGhlciBpZGVhIHdoaWNoIHdvdWxkCj4gaGVscC4gIEdpdmUgbWUgYSBmZXcgZGF5cyB0 byBwdXQgc29tZXRoaW5nIHRvZ2V0aGVyLgo+Cj4gLS0KPiBMZWUgSm9uZXMgW+adjueQvOaWr10K PiBTZW5pb3IgVGVjaG5pY2FsIExlYWQgLSBEZXZlbG9wZXIgU2VydmljZXMKPiBMaW5hcm8ub3Jn IOKUgiBPcGVuIHNvdXJjZSBzb2Z0d2FyZSBmb3IgQXJtIFNvQ3MKPiBGb2xsb3cgTGluYXJvOiBG YWNlYm9vayB8IFR3aXR0ZXIgfCBCbG9nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==