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=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 9C107C2D0E4 for ; Tue, 24 Nov 2020 10:57:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 557FE20888 for ; Tue, 24 Nov 2020 10:57:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="PgYI9bLG" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732346AbgKXK5f (ORCPT ); Tue, 24 Nov 2020 05:57:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38448 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725786AbgKXK5e (ORCPT ); Tue, 24 Nov 2020 05:57:34 -0500 Received: from mail-ua1-x942.google.com (mail-ua1-x942.google.com [IPv6:2607:f8b0:4864:20::942]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 59E68C0613D6 for ; Tue, 24 Nov 2020 02:57:34 -0800 (PST) Received: by mail-ua1-x942.google.com with SMTP id v9so6672067uar.11 for ; Tue, 24 Nov 2020 02:57:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=FL1+WADFoaMQ5GZAcE0+T1+hOZlcOs3eYXrVX1e9GnM=; b=PgYI9bLGM8AkKqHJmJkmf7K2DQ8IXlJ92aGmTdFqd5sw/DHTZ47Ty1Xs0l+SRYxJuc /ukmzPAhGTqf1pXKjXv4ykl/3jiwTZS5NYMzIlfG6Jjn07qCvctk5PGoTOpNIs7UMjac jQbqyTc6Z5E2QyzBl2v3sPaL1Rdxv34fkXzLtwvFzSWbh8H4Y0Mz+fAoV4SEAfn3TwHq hVExA92A+ck2p0UkBSyQ12qDjc/gm55eL3x9KPtjEmS1FZghbbz5g0QN72lsNt3qWUal nv1NISKqVhtRMxYl4+P4OHjnGVVrbx6am2V9WhVP0e6W9kJoteQOpXVZW3YRaZxl0vum IVzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=FL1+WADFoaMQ5GZAcE0+T1+hOZlcOs3eYXrVX1e9GnM=; b=Th2gKi8pLr+Y6ktEpmwd9vdzMJ/8bDJNBthBAW6m6IAoTdxuyeta6gCjZBkfmjp2Zz g8xD+z7mNrHj1wPdyxwQihnXEtN5F5GTtmJw0GLAbaSY199U9pi5GSHb6XiYH17j+0oZ kSGVXzc2RvaFNo8wiq25rlhSQC9EdZZ/DCohw3CD6OPyr3yd2p8LMzkUf0icA7OD7RdL 1b1g250uxeY4bqif4EJ5w9Oe4mhZfj9znWYFHH3/Q7kcfr5bImVQzhx4jji7pc7AdggT Gl9B+4O2a9LoFTpTc2PrVTkMNvW/vX6U62/DH9pyZcZu5S0AeEQFNjKXgEwRCAYG1Xz2 fiKw== X-Gm-Message-State: AOAM533YQjwu2X6QaKWokAMO63JmUhiBHFyxGUdNyXi8B17dIL3FhUTd FtAcc8adpcPXaH/8xdk7/kYqY47V9BS2ZMm+Cd0D1w== X-Google-Smtp-Source: ABdhPJx/FU3R0DczPWrp4WPXg+JfvAsXKmAjw/F7dEOJjQY9UYzMjeiLb1It0R9+u2MqvSzQKyarkOZ0YxpqpQQQG84= X-Received: by 2002:ab0:23d5:: with SMTP id c21mr2225910uan.129.1606215453575; Tue, 24 Nov 2020 02:57:33 -0800 (PST) MIME-Version: 1.0 References: <20201124103242.2971199-1-u.kleine-koenig@pengutronix.de> <20201124103242.2971199-4-u.kleine-koenig@pengutronix.de> In-Reply-To: <20201124103242.2971199-4-u.kleine-koenig@pengutronix.de> From: Ulf Hansson Date: Tue, 24 Nov 2020 11:56:57 +0100 Message-ID: Subject: Re: [PATCH 4/4] amba: Make use of bus_type functions To: =?UTF-8?Q?Uwe_Kleine=2DK=C3=B6nig?= Cc: Russell King , Greg Kroah-Hartman , Arnd Bergmann , Linus Walleij , Rob Herring , Sascha Hauer , Linux ARM , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 24 Nov 2020 at 11:33, Uwe Kleine-K=C3=B6nig wrote: > > Instead of assigning the needed functions for each driver separately do i= t > only once in amba_bustype. Move the definition of the functions to their > proper place among the other callbacks used there. > > This prepares getting rid of these callbacks in struct device_driver. > > Signed-off-by: Uwe Kleine-K=C3=B6nig Reviewed-by: Ulf Hansson > --- > drivers/amba/bus.c | 154 ++++++++++++++++++++++----------------------- > 1 file changed, 77 insertions(+), 77 deletions(-) > > diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c > index 48b5d4b4e889..2f3799ac3edb 100644 > --- a/drivers/amba/bus.c > +++ b/drivers/amba/bus.c > @@ -174,6 +174,80 @@ static int amba_uevent(struct device *dev, struct ko= bj_uevent_env *env) > return retval; > } > > +/* > + * These are the device model conversion veneers; they convert the > + * device model structures to our more specific structures. > + */ > +static int amba_probe(struct device *dev) > +{ > + struct amba_device *pcdev =3D to_amba_device(dev); > + struct amba_driver *pcdrv =3D to_amba_driver(dev->driver); > + const struct amba_id *id =3D amba_lookup(pcdrv->id_table, pcdev); > + int ret; > + > + do { > + ret =3D of_clk_set_defaults(dev->of_node, false); > + if (ret < 0) > + break; > + > + ret =3D dev_pm_domain_attach(dev, true); > + if (ret) > + break; > + > + ret =3D amba_get_enable_pclk(pcdev); > + if (ret) { > + dev_pm_domain_detach(dev, true); > + break; > + } > + > + pm_runtime_get_noresume(dev); > + pm_runtime_set_active(dev); > + pm_runtime_enable(dev); > + > + ret =3D pcdrv->probe(pcdev, id); > + if (ret =3D=3D 0) > + break; > + > + pm_runtime_disable(dev); > + pm_runtime_set_suspended(dev); > + pm_runtime_put_noidle(dev); > + > + amba_put_disable_pclk(pcdev); > + dev_pm_domain_detach(dev, true); > + } while (0); > + > + return ret; > +} > + > +static int amba_remove(struct device *dev) > +{ > + struct amba_device *pcdev =3D to_amba_device(dev); > + struct amba_driver *drv =3D to_amba_driver(dev->driver); > + > + pm_runtime_get_sync(dev); > + if (drv->remove) > + drv->remove(pcdev); > + pm_runtime_put_noidle(dev); > + > + /* Undo the runtime PM settings in amba_probe() */ > + pm_runtime_disable(dev); > + pm_runtime_set_suspended(dev); > + pm_runtime_put_noidle(dev); > + > + amba_put_disable_pclk(pcdev); > + dev_pm_domain_detach(dev, true); > + > + return 0; > +} > + > +static void amba_shutdown(struct device *dev) > +{ > + struct amba_driver *drv =3D to_amba_driver(dev->driver); > + > + if (drv->shutdown) > + drv->shutdown(to_amba_device(dev)); > +} > + > #ifdef CONFIG_PM > /* > * Hooks to provide runtime PM of the pclk (bus clock). It is safe to > @@ -239,6 +313,9 @@ struct bus_type amba_bustype =3D { > .dev_groups =3D amba_dev_groups, > .match =3D amba_match, > .uevent =3D amba_uevent, > + .probe =3D amba_probe, > + .remove =3D amba_remove, > + .shutdown =3D amba_shutdown, > .dma_configure =3D platform_dma_configure, > .pm =3D &amba_pm, > }; > @@ -251,80 +328,6 @@ static int __init amba_init(void) > > postcore_initcall(amba_init); > > -/* > - * These are the device model conversion veneers; they convert the > - * device model structures to our more specific structures. > - */ > -static int amba_probe(struct device *dev) > -{ > - struct amba_device *pcdev =3D to_amba_device(dev); > - struct amba_driver *pcdrv =3D to_amba_driver(dev->driver); > - const struct amba_id *id =3D amba_lookup(pcdrv->id_table, pcdev); > - int ret; > - > - do { > - ret =3D of_clk_set_defaults(dev->of_node, false); > - if (ret < 0) > - break; > - > - ret =3D dev_pm_domain_attach(dev, true); > - if (ret) > - break; > - > - ret =3D amba_get_enable_pclk(pcdev); > - if (ret) { > - dev_pm_domain_detach(dev, true); > - break; > - } > - > - pm_runtime_get_noresume(dev); > - pm_runtime_set_active(dev); > - pm_runtime_enable(dev); > - > - ret =3D pcdrv->probe(pcdev, id); > - if (ret =3D=3D 0) > - break; > - > - pm_runtime_disable(dev); > - pm_runtime_set_suspended(dev); > - pm_runtime_put_noidle(dev); > - > - amba_put_disable_pclk(pcdev); > - dev_pm_domain_detach(dev, true); > - } while (0); > - > - return ret; > -} > - > -static int amba_remove(struct device *dev) > -{ > - struct amba_device *pcdev =3D to_amba_device(dev); > - struct amba_driver *drv =3D to_amba_driver(dev->driver); > - > - pm_runtime_get_sync(dev); > - if (drv->remove) > - drv->remove(pcdev); > - pm_runtime_put_noidle(dev); > - > - /* Undo the runtime PM settings in amba_probe() */ > - pm_runtime_disable(dev); > - pm_runtime_set_suspended(dev); > - pm_runtime_put_noidle(dev); > - > - amba_put_disable_pclk(pcdev); > - dev_pm_domain_detach(dev, true); > - > - return 0; > -} > - > -static void amba_shutdown(struct device *dev) > -{ > - struct amba_driver *drv =3D to_amba_driver(dev->driver); > - > - if (drv->shutdown) > - drv->shutdown(to_amba_device(dev)); > -} > - > /** > * amba_driver_register - register an AMBA device driver > * @drv: amba device driver structure > @@ -339,9 +342,6 @@ int amba_driver_register(struct amba_driver *drv) > return -EINVAL; > > drv->drv.bus =3D &amba_bustype; > - drv->drv.probe =3D amba_probe; > - drv->drv.remove =3D amba_remove; > - drv->drv.shutdown =3D amba_shutdown; > > return driver_register(&drv->drv); > } > -- > 2.29.2 > 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=-13.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 ADFD9C2D0E4 for ; Tue, 24 Nov 2020 10:58:24 +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 144CF20663 for ; Tue, 24 Nov 2020 10:58:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="uQQa1cGy"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="PgYI9bLG" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 144CF20663 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: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=YzSgL4G5LUDY7DUpa/sxoDpzxTrltmP6+CT1nusP+Ng=; b=uQQa1cGy2YxNT5csAcCw2wXJT ZCTf2yyMWXPNW3OJ0PEd7aE39ymzaV5+jDfWtSHEuTQaEx2f2SLu5JR5CZVCXWjMLjuiHrTpb/qrs ek34o1eH3rN+uUuP+l8QDQuKgrnfgoFLegqj1PNcUP6gkQE79lOm7DwW92FrTUzMt3i9NuMNwcyjE BoVTEuYecKe/oO6OBrncdFXup9605AEmyKUphgwdMLl4bzNLdEfzyjsGCdLmWaCV418+7eWPvdV7X GkPS/KJ3x/m5/NQtOvbtfvj4OFJXIEp7HldBBthNfSwmbEcy0o9PYY9sj7mrEE92hYJHNMHpYFBjm DG2WMT/Yg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1khW1A-00050J-47; Tue, 24 Nov 2020 10:57:52 +0000 Received: from mail-ua1-x944.google.com ([2607:f8b0:4864:20::944]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1khW0t-0004vX-Hh for linux-arm-kernel@lists.infradead.org; Tue, 24 Nov 2020 10:57:36 +0000 Received: by mail-ua1-x944.google.com with SMTP id q68so6687357uaq.3 for ; Tue, 24 Nov 2020 02:57:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=FL1+WADFoaMQ5GZAcE0+T1+hOZlcOs3eYXrVX1e9GnM=; b=PgYI9bLGM8AkKqHJmJkmf7K2DQ8IXlJ92aGmTdFqd5sw/DHTZ47Ty1Xs0l+SRYxJuc /ukmzPAhGTqf1pXKjXv4ykl/3jiwTZS5NYMzIlfG6Jjn07qCvctk5PGoTOpNIs7UMjac jQbqyTc6Z5E2QyzBl2v3sPaL1Rdxv34fkXzLtwvFzSWbh8H4Y0Mz+fAoV4SEAfn3TwHq hVExA92A+ck2p0UkBSyQ12qDjc/gm55eL3x9KPtjEmS1FZghbbz5g0QN72lsNt3qWUal nv1NISKqVhtRMxYl4+P4OHjnGVVrbx6am2V9WhVP0e6W9kJoteQOpXVZW3YRaZxl0vum IVzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=FL1+WADFoaMQ5GZAcE0+T1+hOZlcOs3eYXrVX1e9GnM=; b=Jv+cR3cnriyAki+G6P3hMsoe4lR1lCWibhOfXjAnk9SaU82jtlq0ArQAU6a/+dw4pU UOHmcR92frea7GdNtCwd+e7g5j7grnrh0ZW8sh3DQKkMMLlwAD2uJf85btUdhXwmZFWg 9JgB9jRR7TwDrTjyMnZ0JxkDQgwiObXPukTXkk3kEuQWRA9Hx7se2zTdFOX7JkSYwd34 Y3cRffeM3iCqwyorB9z/g71b3icpEGm71s2pFP2FiaC6HL682BEafMaFDeOnKRhemSm5 jGJw3SGwLzsKL7pCj4KLbx73tG34H9CLCNRjAz/lCLCn39XUhfTZQRZZb8CbkVc3lg+1 0DQQ== X-Gm-Message-State: AOAM533hpkxl/iIx/2pIYtgXrJ1LQkA5Awv0bm4KV7c2M60+qjwuO2M9 Dyp/X1JdzmHOfDuHEMsVcwXkBqZJVBqpI6MT/o55u9yH1vnwXw== X-Google-Smtp-Source: ABdhPJx/FU3R0DczPWrp4WPXg+JfvAsXKmAjw/F7dEOJjQY9UYzMjeiLb1It0R9+u2MqvSzQKyarkOZ0YxpqpQQQG84= X-Received: by 2002:ab0:23d5:: with SMTP id c21mr2225910uan.129.1606215453575; Tue, 24 Nov 2020 02:57:33 -0800 (PST) MIME-Version: 1.0 References: <20201124103242.2971199-1-u.kleine-koenig@pengutronix.de> <20201124103242.2971199-4-u.kleine-koenig@pengutronix.de> In-Reply-To: <20201124103242.2971199-4-u.kleine-koenig@pengutronix.de> From: Ulf Hansson Date: Tue, 24 Nov 2020 11:56:57 +0100 Message-ID: Subject: Re: [PATCH 4/4] amba: Make use of bus_type functions To: =?UTF-8?Q?Uwe_Kleine=2DK=C3=B6nig?= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201124_055735_667673_D6A06F0E X-CRM114-Status: GOOD ( 27.44 ) 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: Rob Herring , Arnd Bergmann , Greg Kroah-Hartman , Linus Walleij , Russell King , Linux Kernel Mailing List , Sascha Hauer , Linux ARM 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 T24gVHVlLCAyNCBOb3YgMjAyMCBhdCAxMTozMywgVXdlIEtsZWluZS1Lw7ZuaWcKPHUua2xlaW5l LWtvZW5pZ0BwZW5ndXRyb25peC5kZT4gd3JvdGU6Cj4KPiBJbnN0ZWFkIG9mIGFzc2lnbmluZyB0 aGUgbmVlZGVkIGZ1bmN0aW9ucyBmb3IgZWFjaCBkcml2ZXIgc2VwYXJhdGVseSBkbyBpdAo+IG9u bHkgb25jZSBpbiBhbWJhX2J1c3R5cGUuIE1vdmUgdGhlIGRlZmluaXRpb24gb2YgdGhlIGZ1bmN0 aW9ucyB0byB0aGVpcgo+IHByb3BlciBwbGFjZSBhbW9uZyB0aGUgb3RoZXIgY2FsbGJhY2tzIHVz ZWQgdGhlcmUuCj4KPiBUaGlzIHByZXBhcmVzIGdldHRpbmcgcmlkIG9mIHRoZXNlIGNhbGxiYWNr cyBpbiBzdHJ1Y3QgZGV2aWNlX2RyaXZlci4KPgo+IFNpZ25lZC1vZmYtYnk6IFV3ZSBLbGVpbmUt S8O2bmlnIDx1LmtsZWluZS1rb2VuaWdAcGVuZ3V0cm9uaXguZGU+CgpSZXZpZXdlZC1ieTogVWxm IEhhbnNzb24gPHVsZi5oYW5zc29uQGxpbmFyby5vcmc+Cgo+IC0tLQo+ICBkcml2ZXJzL2FtYmEv YnVzLmMgfCAxNTQgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cj4gIDEgZmlsZSBjaGFuZ2VkLCA3NyBpbnNlcnRpb25zKCspLCA3NyBkZWxldGlvbnMoLSkKPgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FtYmEvYnVzLmMgYi9kcml2ZXJzL2FtYmEvYnVzLmMKPiBp bmRleCA0OGI1ZDRiNGU4ODkuLjJmMzc5OWFjM2VkYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2Ft YmEvYnVzLmMKPiArKysgYi9kcml2ZXJzL2FtYmEvYnVzLmMKPiBAQCAtMTc0LDYgKzE3NCw4MCBA QCBzdGF0aWMgaW50IGFtYmFfdWV2ZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtvYmpf dWV2ZW50X2VudiAqZW52KQo+ICAgICAgICAgcmV0dXJuIHJldHZhbDsKPiAgfQo+Cj4gKy8qCj4g KyAqIFRoZXNlIGFyZSB0aGUgZGV2aWNlIG1vZGVsIGNvbnZlcnNpb24gdmVuZWVyczsgdGhleSBj b252ZXJ0IHRoZQo+ICsgKiBkZXZpY2UgbW9kZWwgc3RydWN0dXJlcyB0byBvdXIgbW9yZSBzcGVj aWZpYyBzdHJ1Y3R1cmVzLgo+ICsgKi8KPiArc3RhdGljIGludCBhbWJhX3Byb2JlKHN0cnVjdCBk ZXZpY2UgKmRldikKPiArewo+ICsgICAgICAgc3RydWN0IGFtYmFfZGV2aWNlICpwY2RldiA9IHRv X2FtYmFfZGV2aWNlKGRldik7Cj4gKyAgICAgICBzdHJ1Y3QgYW1iYV9kcml2ZXIgKnBjZHJ2ID0g dG9fYW1iYV9kcml2ZXIoZGV2LT5kcml2ZXIpOwo+ICsgICAgICAgY29uc3Qgc3RydWN0IGFtYmFf aWQgKmlkID0gYW1iYV9sb29rdXAocGNkcnYtPmlkX3RhYmxlLCBwY2Rldik7Cj4gKyAgICAgICBp bnQgcmV0Owo+ICsKPiArICAgICAgIGRvIHsKPiArICAgICAgICAgICAgICAgcmV0ID0gb2ZfY2xr X3NldF9kZWZhdWx0cyhkZXYtPm9mX25vZGUsIGZhbHNlKTsKPiArICAgICAgICAgICAgICAgaWYg KHJldCA8IDApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgICAg ICAgICAgICByZXQgPSBkZXZfcG1fZG9tYWluX2F0dGFjaChkZXYsIHRydWUpOwo+ICsgICAgICAg ICAgICAgICBpZiAocmV0KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsKPiAr ICAgICAgICAgICAgICAgcmV0ID0gYW1iYV9nZXRfZW5hYmxlX3BjbGsocGNkZXYpOwo+ICsgICAg ICAgICAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X3BtX2Rv bWFpbl9kZXRhY2goZGV2LCB0cnVlKTsKPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK PiArICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgcG1fcnVudGltZV9nZXRf bm9yZXN1bWUoZGV2KTsKPiArICAgICAgICAgICAgICAgcG1fcnVudGltZV9zZXRfYWN0aXZlKGRl dik7Cj4gKyAgICAgICAgICAgICAgIHBtX3J1bnRpbWVfZW5hYmxlKGRldik7Cj4gKwo+ICsgICAg ICAgICAgICAgICByZXQgPSBwY2Rydi0+cHJvYmUocGNkZXYsIGlkKTsKPiArICAgICAgICAgICAg ICAgaWYgKHJldCA9PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsKPiAr ICAgICAgICAgICAgICAgcG1fcnVudGltZV9kaXNhYmxlKGRldik7Cj4gKyAgICAgICAgICAgICAg IHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZChkZXYpOwo+ICsgICAgICAgICAgICAgICBwbV9ydW50 aW1lX3B1dF9ub2lkbGUoZGV2KTsKPiArCj4gKyAgICAgICAgICAgICAgIGFtYmFfcHV0X2Rpc2Fi bGVfcGNsayhwY2Rldik7Cj4gKyAgICAgICAgICAgICAgIGRldl9wbV9kb21haW5fZGV0YWNoKGRl diwgdHJ1ZSk7Cj4gKyAgICAgICB9IHdoaWxlICgwKTsKPiArCj4gKyAgICAgICByZXR1cm4gcmV0 Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGFtYmFfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikK PiArewo+ICsgICAgICAgc3RydWN0IGFtYmFfZGV2aWNlICpwY2RldiA9IHRvX2FtYmFfZGV2aWNl KGRldik7Cj4gKyAgICAgICBzdHJ1Y3QgYW1iYV9kcml2ZXIgKmRydiA9IHRvX2FtYmFfZHJpdmVy KGRldi0+ZHJpdmVyKTsKPiArCj4gKyAgICAgICBwbV9ydW50aW1lX2dldF9zeW5jKGRldik7Cj4g KyAgICAgICBpZiAoZHJ2LT5yZW1vdmUpCj4gKyAgICAgICAgICAgICAgIGRydi0+cmVtb3ZlKHBj ZGV2KTsKPiArICAgICAgIHBtX3J1bnRpbWVfcHV0X25vaWRsZShkZXYpOwo+ICsKPiArICAgICAg IC8qIFVuZG8gdGhlIHJ1bnRpbWUgUE0gc2V0dGluZ3MgaW4gYW1iYV9wcm9iZSgpICovCj4gKyAg ICAgICBwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTsKPiArICAgICAgIHBtX3J1bnRpbWVfc2V0X3N1 c3BlbmRlZChkZXYpOwo+ICsgICAgICAgcG1fcnVudGltZV9wdXRfbm9pZGxlKGRldik7Cj4gKwo+ ICsgICAgICAgYW1iYV9wdXRfZGlzYWJsZV9wY2xrKHBjZGV2KTsKPiArICAgICAgIGRldl9wbV9k b21haW5fZGV0YWNoKGRldiwgdHJ1ZSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIGFtYmFfc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4g KyAgICAgICBzdHJ1Y3QgYW1iYV9kcml2ZXIgKmRydiA9IHRvX2FtYmFfZHJpdmVyKGRldi0+ZHJp dmVyKTsKPiArCj4gKyAgICAgICBpZiAoZHJ2LT5zaHV0ZG93bikKPiArICAgICAgICAgICAgICAg ZHJ2LT5zaHV0ZG93bih0b19hbWJhX2RldmljZShkZXYpKTsKPiArfQo+ICsKPiAgI2lmZGVmIENP TkZJR19QTQo+ICAvKgo+ICAgKiBIb29rcyB0byBwcm92aWRlIHJ1bnRpbWUgUE0gb2YgdGhlIHBj bGsgKGJ1cyBjbG9jaykuICBJdCBpcyBzYWZlIHRvCj4gQEAgLTIzOSw2ICszMTMsOSBAQCBzdHJ1 Y3QgYnVzX3R5cGUgYW1iYV9idXN0eXBlID0gewo+ICAgICAgICAgLmRldl9ncm91cHMgICAgID0g YW1iYV9kZXZfZ3JvdXBzLAo+ICAgICAgICAgLm1hdGNoICAgICAgICAgID0gYW1iYV9tYXRjaCwK PiAgICAgICAgIC51ZXZlbnQgICAgICAgICA9IGFtYmFfdWV2ZW50LAo+ICsgICAgICAgLnByb2Jl ICAgICAgICAgID0gYW1iYV9wcm9iZSwKPiArICAgICAgIC5yZW1vdmUgICAgICAgICA9IGFtYmFf cmVtb3ZlLAo+ICsgICAgICAgLnNodXRkb3duICAgICAgID0gYW1iYV9zaHV0ZG93biwKPiAgICAg ICAgIC5kbWFfY29uZmlndXJlICA9IHBsYXRmb3JtX2RtYV9jb25maWd1cmUsCj4gICAgICAgICAu cG0gICAgICAgICAgICAgPSAmYW1iYV9wbSwKPiAgfTsKPiBAQCAtMjUxLDgwICszMjgsNiBAQCBz dGF0aWMgaW50IF9faW5pdCBhbWJhX2luaXQodm9pZCkKPgo+ICBwb3N0Y29yZV9pbml0Y2FsbChh bWJhX2luaXQpOwo+Cj4gLS8qCj4gLSAqIFRoZXNlIGFyZSB0aGUgZGV2aWNlIG1vZGVsIGNvbnZl cnNpb24gdmVuZWVyczsgdGhleSBjb252ZXJ0IHRoZQo+IC0gKiBkZXZpY2UgbW9kZWwgc3RydWN0 dXJlcyB0byBvdXIgbW9yZSBzcGVjaWZpYyBzdHJ1Y3R1cmVzLgo+IC0gKi8KPiAtc3RhdGljIGlu dCBhbWJhX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKPiAtewo+IC0gICAgICAgc3RydWN0IGFt YmFfZGV2aWNlICpwY2RldiA9IHRvX2FtYmFfZGV2aWNlKGRldik7Cj4gLSAgICAgICBzdHJ1Y3Qg YW1iYV9kcml2ZXIgKnBjZHJ2ID0gdG9fYW1iYV9kcml2ZXIoZGV2LT5kcml2ZXIpOwo+IC0gICAg ICAgY29uc3Qgc3RydWN0IGFtYmFfaWQgKmlkID0gYW1iYV9sb29rdXAocGNkcnYtPmlkX3RhYmxl LCBwY2Rldik7Cj4gLSAgICAgICBpbnQgcmV0Owo+IC0KPiAtICAgICAgIGRvIHsKPiAtICAgICAg ICAgICAgICAgcmV0ID0gb2ZfY2xrX3NldF9kZWZhdWx0cyhkZXYtPm9mX25vZGUsIGZhbHNlKTsK PiAtICAgICAgICAgICAgICAgaWYgKHJldCA8IDApCj4gLSAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7Cj4gLQo+IC0gICAgICAgICAgICAgICByZXQgPSBkZXZfcG1fZG9tYWluX2F0dGFjaChk ZXYsIHRydWUpOwo+IC0gICAgICAgICAgICAgICBpZiAocmV0KQo+IC0gICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOwo+IC0KPiAtICAgICAgICAgICAgICAgcmV0ID0gYW1iYV9nZXRfZW5hYmxl X3BjbGsocGNkZXYpOwo+IC0gICAgICAgICAgICAgICBpZiAocmV0KSB7Cj4gLSAgICAgICAgICAg ICAgICAgICAgICAgZGV2X3BtX2RvbWFpbl9kZXRhY2goZGV2LCB0cnVlKTsKPiAtICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAgICAgICAgICAgfQo+IC0KPiAtICAgICAgICAg ICAgICAgcG1fcnVudGltZV9nZXRfbm9yZXN1bWUoZGV2KTsKPiAtICAgICAgICAgICAgICAgcG1f cnVudGltZV9zZXRfYWN0aXZlKGRldik7Cj4gLSAgICAgICAgICAgICAgIHBtX3J1bnRpbWVfZW5h YmxlKGRldik7Cj4gLQo+IC0gICAgICAgICAgICAgICByZXQgPSBwY2Rydi0+cHJvYmUocGNkZXYs IGlkKTsKPiAtICAgICAgICAgICAgICAgaWYgKHJldCA9PSAwKQo+IC0gICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOwo+IC0KPiAtICAgICAgICAgICAgICAgcG1fcnVudGltZV9kaXNhYmxlKGRl dik7Cj4gLSAgICAgICAgICAgICAgIHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZChkZXYpOwo+IC0g ICAgICAgICAgICAgICBwbV9ydW50aW1lX3B1dF9ub2lkbGUoZGV2KTsKPiAtCj4gLSAgICAgICAg ICAgICAgIGFtYmFfcHV0X2Rpc2FibGVfcGNsayhwY2Rldik7Cj4gLSAgICAgICAgICAgICAgIGRl dl9wbV9kb21haW5fZGV0YWNoKGRldiwgdHJ1ZSk7Cj4gLSAgICAgICB9IHdoaWxlICgwKTsKPiAt Cj4gLSAgICAgICByZXR1cm4gcmV0Owo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IGFtYmFfcmVtb3Zl KHN0cnVjdCBkZXZpY2UgKmRldikKPiAtewo+IC0gICAgICAgc3RydWN0IGFtYmFfZGV2aWNlICpw Y2RldiA9IHRvX2FtYmFfZGV2aWNlKGRldik7Cj4gLSAgICAgICBzdHJ1Y3QgYW1iYV9kcml2ZXIg KmRydiA9IHRvX2FtYmFfZHJpdmVyKGRldi0+ZHJpdmVyKTsKPiAtCj4gLSAgICAgICBwbV9ydW50 aW1lX2dldF9zeW5jKGRldik7Cj4gLSAgICAgICBpZiAoZHJ2LT5yZW1vdmUpCj4gLSAgICAgICAg ICAgICAgIGRydi0+cmVtb3ZlKHBjZGV2KTsKPiAtICAgICAgIHBtX3J1bnRpbWVfcHV0X25vaWRs ZShkZXYpOwo+IC0KPiAtICAgICAgIC8qIFVuZG8gdGhlIHJ1bnRpbWUgUE0gc2V0dGluZ3MgaW4g YW1iYV9wcm9iZSgpICovCj4gLSAgICAgICBwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTsKPiAtICAg ICAgIHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZChkZXYpOwo+IC0gICAgICAgcG1fcnVudGltZV9w dXRfbm9pZGxlKGRldik7Cj4gLQo+IC0gICAgICAgYW1iYV9wdXRfZGlzYWJsZV9wY2xrKHBjZGV2 KTsKPiAtICAgICAgIGRldl9wbV9kb21haW5fZGV0YWNoKGRldiwgdHJ1ZSk7Cj4gLQo+IC0gICAg ICAgcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGFtYmFfc2h1dGRvd24oc3RydWN0 IGRldmljZSAqZGV2KQo+IC17Cj4gLSAgICAgICBzdHJ1Y3QgYW1iYV9kcml2ZXIgKmRydiA9IHRv X2FtYmFfZHJpdmVyKGRldi0+ZHJpdmVyKTsKPiAtCj4gLSAgICAgICBpZiAoZHJ2LT5zaHV0ZG93 bikKPiAtICAgICAgICAgICAgICAgZHJ2LT5zaHV0ZG93bih0b19hbWJhX2RldmljZShkZXYpKTsK PiAtfQo+IC0KPiAgLyoqCj4gICAqICAgICBhbWJhX2RyaXZlcl9yZWdpc3RlciAtIHJlZ2lzdGVy IGFuIEFNQkEgZGV2aWNlIGRyaXZlcgo+ICAgKiAgICAgQGRydjogYW1iYSBkZXZpY2UgZHJpdmVy IHN0cnVjdHVyZQo+IEBAIC0zMzksOSArMzQyLDYgQEAgaW50IGFtYmFfZHJpdmVyX3JlZ2lzdGVy KHN0cnVjdCBhbWJhX2RyaXZlciAqZHJ2KQo+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKPgo+ICAgICAgICAgZHJ2LT5kcnYuYnVzID0gJmFtYmFfYnVzdHlwZTsKPiAtICAgICAgIGRy di0+ZHJ2LnByb2JlID0gYW1iYV9wcm9iZTsKPiAtICAgICAgIGRydi0+ZHJ2LnJlbW92ZSA9IGFt YmFfcmVtb3ZlOwo+IC0gICAgICAgZHJ2LT5kcnYuc2h1dGRvd24gPSBhbWJhX3NodXRkb3duOwo+ Cj4gICAgICAgICByZXR1cm4gZHJpdmVyX3JlZ2lzdGVyKCZkcnYtPmRydik7Cj4gIH0KPiAtLQo+ IDIuMjkuMgo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hcm0ta2VybmVsCg==