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=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 0B6B6C6379D for ; Tue, 24 Nov 2020 10:33:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B707620708 for ; Tue, 24 Nov 2020 10:33:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732112AbgKXKdJ (ORCPT ); Tue, 24 Nov 2020 05:33:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34652 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732104AbgKXKdI (ORCPT ); Tue, 24 Nov 2020 05:33:08 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 33D78C0613D6 for ; Tue, 24 Nov 2020 02:33:08 -0800 (PST) Received: from pty.hi.pengutronix.de ([2001:67c:670:100:1d::c5]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1khVd6-0005CW-Ks; Tue, 24 Nov 2020 11:33:00 +0100 Received: from ukl by pty.hi.pengutronix.de with local (Exim 4.89) (envelope-from ) id 1khVd6-0001Ag-8s; Tue, 24 Nov 2020 11:33:00 +0100 From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: Russell King , Greg Kroah-Hartman , Arnd Bergmann , Linus Walleij Cc: Ulf Hansson , Rob Herring , kernel@pengutronix.de, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/4] amba: Make use of bus_type functions Date: Tue, 24 Nov 2020 11:32:42 +0100 Message-Id: <20201124103242.2971199-4-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201124103242.2971199-1-u.kleine-koenig@pengutronix.de> References: <20201124103242.2971199-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c5 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Instead of assigning the needed functions for each driver separately do it 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önig --- 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 kobj_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 = to_amba_device(dev); + struct amba_driver *pcdrv = to_amba_driver(dev->driver); + const struct amba_id *id = amba_lookup(pcdrv->id_table, pcdev); + int ret; + + do { + ret = of_clk_set_defaults(dev->of_node, false); + if (ret < 0) + break; + + ret = dev_pm_domain_attach(dev, true); + if (ret) + break; + + ret = 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 = pcdrv->probe(pcdev, id); + if (ret == 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 = to_amba_device(dev); + struct amba_driver *drv = 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 = 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 = { .dev_groups = amba_dev_groups, .match = amba_match, .uevent = amba_uevent, + .probe = amba_probe, + .remove = amba_remove, + .shutdown = amba_shutdown, .dma_configure = platform_dma_configure, .pm = &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 = to_amba_device(dev); - struct amba_driver *pcdrv = to_amba_driver(dev->driver); - const struct amba_id *id = amba_lookup(pcdrv->id_table, pcdev); - int ret; - - do { - ret = of_clk_set_defaults(dev->of_node, false); - if (ret < 0) - break; - - ret = dev_pm_domain_attach(dev, true); - if (ret) - break; - - ret = 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 = pcdrv->probe(pcdev, id); - if (ret == 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 = to_amba_device(dev); - struct amba_driver *drv = 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 = 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 = &amba_bustype; - drv->drv.probe = amba_probe; - drv->drv.remove = amba_remove; - drv->drv.shutdown = 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=-16.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, USER_AGENT_GIT 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 C7C75C2D0E4 for ; Tue, 24 Nov 2020 10:34:43 +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 484CB206F9 for ; Tue, 24 Nov 2020 10:34:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Ls1sUiK+" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 484CB206F9 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de 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:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=c0O+ys91I/HbjCj0zwBpj7wLBFWmwHWkADsZ74FviuQ=; b=Ls1sUiK+8cg5xzNx8OgpmFM3N upE9+cAymG+L4qSU5YKojF7vkTImZc62Q78V+u0rgRvWmJb2k8R2NVkC17OUKpw1sZPXPu6h0/2MF zeuhrMd153UCSQLnb/4VNWsUgALciRkcm2X1AXrV0ZSsa8mYvzUqs2a8MQolj40sb9X6CchTQ+TCF zcWDGU3vg9ln6Hru5/ldQ5cwJUspUosGScyZSzAtfydYocbAQAmlynu4h2hmM49k1FPWssiN8fovC aj+wWDKMPGvAat8pz1oU+tNAjdOwREIvHxqBLJbkJDwFGvOJP5RbJIYuLcKJ9B/DFZQpEg9qL8InC 0LKSJCkXA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1khVdW-0000YK-9y; Tue, 24 Nov 2020 10:33:26 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1khVdB-0000T2-Uh for linux-arm-kernel@lists.infradead.org; Tue, 24 Nov 2020 10:33:06 +0000 Received: from pty.hi.pengutronix.de ([2001:67c:670:100:1d::c5]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1khVd6-0005CW-Ks; Tue, 24 Nov 2020 11:33:00 +0100 Received: from ukl by pty.hi.pengutronix.de with local (Exim 4.89) (envelope-from ) id 1khVd6-0001Ag-8s; Tue, 24 Nov 2020 11:33:00 +0100 From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: Russell King , Greg Kroah-Hartman , Arnd Bergmann , Linus Walleij Subject: [PATCH 4/4] amba: Make use of bus_type functions Date: Tue, 24 Nov 2020 11:32:42 +0100 Message-Id: <20201124103242.2971199-4-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201124103242.2971199-1-u.kleine-koenig@pengutronix.de> References: <20201124103242.2971199-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c5 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201124_053306_032648_AA83316F X-CRM114-Status: GOOD ( 23.51 ) 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 , Ulf Hansson , linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de, linux-kernel@vger.kernel.org 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 SW5zdGVhZCBvZiBhc3NpZ25pbmcgdGhlIG5lZWRlZCBmdW5jdGlvbnMgZm9yIGVhY2ggZHJpdmVy IHNlcGFyYXRlbHkgZG8gaXQKb25seSBvbmNlIGluIGFtYmFfYnVzdHlwZS4gTW92ZSB0aGUgZGVm aW5pdGlvbiBvZiB0aGUgZnVuY3Rpb25zIHRvIHRoZWlyCnByb3BlciBwbGFjZSBhbW9uZyB0aGUg b3RoZXIgY2FsbGJhY2tzIHVzZWQgdGhlcmUuCgpUaGlzIHByZXBhcmVzIGdldHRpbmcgcmlkIG9m IHRoZXNlIGNhbGxiYWNrcyBpbiBzdHJ1Y3QgZGV2aWNlX2RyaXZlci4KClNpZ25lZC1vZmYtYnk6 IFV3ZSBLbGVpbmUtS8O2bmlnIDx1LmtsZWluZS1rb2VuaWdAcGVuZ3V0cm9uaXguZGU+Ci0tLQog ZHJpdmVycy9hbWJhL2J1cy5jIHwgMTU0ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc3IGluc2VydGlvbnMoKyksIDc3IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW1iYS9idXMuYyBiL2RyaXZlcnMvYW1iYS9i dXMuYwppbmRleCA0OGI1ZDRiNGU4ODkuLjJmMzc5OWFjM2VkYiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9hbWJhL2J1cy5jCisrKyBiL2RyaXZlcnMvYW1iYS9idXMuYwpAQCAtMTc0LDYgKzE3NCw4MCBA QCBzdGF0aWMgaW50IGFtYmFfdWV2ZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtvYmpf dWV2ZW50X2VudiAqZW52KQogCXJldHVybiByZXR2YWw7CiB9CiAKKy8qCisgKiBUaGVzZSBhcmUg dGhlIGRldmljZSBtb2RlbCBjb252ZXJzaW9uIHZlbmVlcnM7IHRoZXkgY29udmVydCB0aGUKKyAq IGRldmljZSBtb2RlbCBzdHJ1Y3R1cmVzIHRvIG91ciBtb3JlIHNwZWNpZmljIHN0cnVjdHVyZXMu CisgKi8KK3N0YXRpYyBpbnQgYW1iYV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3Ry dWN0IGFtYmFfZGV2aWNlICpwY2RldiA9IHRvX2FtYmFfZGV2aWNlKGRldik7CisJc3RydWN0IGFt YmFfZHJpdmVyICpwY2RydiA9IHRvX2FtYmFfZHJpdmVyKGRldi0+ZHJpdmVyKTsKKwljb25zdCBz dHJ1Y3QgYW1iYV9pZCAqaWQgPSBhbWJhX2xvb2t1cChwY2Rydi0+aWRfdGFibGUsIHBjZGV2KTsK KwlpbnQgcmV0OworCisJZG8geworCQlyZXQgPSBvZl9jbGtfc2V0X2RlZmF1bHRzKGRldi0+b2Zf bm9kZSwgZmFsc2UpOworCQlpZiAocmV0IDwgMCkKKwkJCWJyZWFrOworCisJCXJldCA9IGRldl9w bV9kb21haW5fYXR0YWNoKGRldiwgdHJ1ZSk7CisJCWlmIChyZXQpCisJCQlicmVhazsKKworCQly ZXQgPSBhbWJhX2dldF9lbmFibGVfcGNsayhwY2Rldik7CisJCWlmIChyZXQpIHsKKwkJCWRldl9w bV9kb21haW5fZGV0YWNoKGRldiwgdHJ1ZSk7CisJCQlicmVhazsKKwkJfQorCisJCXBtX3J1bnRp bWVfZ2V0X25vcmVzdW1lKGRldik7CisJCXBtX3J1bnRpbWVfc2V0X2FjdGl2ZShkZXYpOworCQlw bV9ydW50aW1lX2VuYWJsZShkZXYpOworCisJCXJldCA9IHBjZHJ2LT5wcm9iZShwY2RldiwgaWQp OworCQlpZiAocmV0ID09IDApCisJCQlicmVhazsKKworCQlwbV9ydW50aW1lX2Rpc2FibGUoZGV2 KTsKKwkJcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7CisJCXBtX3J1bnRpbWVfcHV0X25v aWRsZShkZXYpOworCisJCWFtYmFfcHV0X2Rpc2FibGVfcGNsayhwY2Rldik7CisJCWRldl9wbV9k b21haW5fZGV0YWNoKGRldiwgdHJ1ZSk7CisJfSB3aGlsZSAoMCk7CisKKwlyZXR1cm4gcmV0Owor fQorCitzdGF0aWMgaW50IGFtYmFfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1 Y3QgYW1iYV9kZXZpY2UgKnBjZGV2ID0gdG9fYW1iYV9kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgYW1i YV9kcml2ZXIgKmRydiA9IHRvX2FtYmFfZHJpdmVyKGRldi0+ZHJpdmVyKTsKKworCXBtX3J1bnRp bWVfZ2V0X3N5bmMoZGV2KTsKKwlpZiAoZHJ2LT5yZW1vdmUpCisJCWRydi0+cmVtb3ZlKHBjZGV2 KTsKKwlwbV9ydW50aW1lX3B1dF9ub2lkbGUoZGV2KTsKKworCS8qIFVuZG8gdGhlIHJ1bnRpbWUg UE0gc2V0dGluZ3MgaW4gYW1iYV9wcm9iZSgpICovCisJcG1fcnVudGltZV9kaXNhYmxlKGRldik7 CisJcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7CisJcG1fcnVudGltZV9wdXRfbm9pZGxl KGRldik7CisKKwlhbWJhX3B1dF9kaXNhYmxlX3BjbGsocGNkZXYpOworCWRldl9wbV9kb21haW5f ZGV0YWNoKGRldiwgdHJ1ZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgYW1iYV9z aHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGFtYmFfZHJpdmVyICpkcnYg PSB0b19hbWJhX2RyaXZlcihkZXYtPmRyaXZlcik7CisKKwlpZiAoZHJ2LT5zaHV0ZG93bikKKwkJ ZHJ2LT5zaHV0ZG93bih0b19hbWJhX2RldmljZShkZXYpKTsKK30KKwogI2lmZGVmIENPTkZJR19Q TQogLyoKICAqIEhvb2tzIHRvIHByb3ZpZGUgcnVudGltZSBQTSBvZiB0aGUgcGNsayAoYnVzIGNs b2NrKS4gIEl0IGlzIHNhZmUgdG8KQEAgLTIzOSw2ICszMTMsOSBAQCBzdHJ1Y3QgYnVzX3R5cGUg YW1iYV9idXN0eXBlID0gewogCS5kZXZfZ3JvdXBzCT0gYW1iYV9kZXZfZ3JvdXBzLAogCS5tYXRj aAkJPSBhbWJhX21hdGNoLAogCS51ZXZlbnQJCT0gYW1iYV91ZXZlbnQsCisJLnByb2JlCQk9IGFt YmFfcHJvYmUsCisJLnJlbW92ZQkJPSBhbWJhX3JlbW92ZSwKKwkuc2h1dGRvd24JPSBhbWJhX3No dXRkb3duLAogCS5kbWFfY29uZmlndXJlCT0gcGxhdGZvcm1fZG1hX2NvbmZpZ3VyZSwKIAkucG0J CT0gJmFtYmFfcG0sCiB9OwpAQCAtMjUxLDgwICszMjgsNiBAQCBzdGF0aWMgaW50IF9faW5pdCBh bWJhX2luaXQodm9pZCkKIAogcG9zdGNvcmVfaW5pdGNhbGwoYW1iYV9pbml0KTsKIAotLyoKLSAq IFRoZXNlIGFyZSB0aGUgZGV2aWNlIG1vZGVsIGNvbnZlcnNpb24gdmVuZWVyczsgdGhleSBjb252 ZXJ0IHRoZQotICogZGV2aWNlIG1vZGVsIHN0cnVjdHVyZXMgdG8gb3VyIG1vcmUgc3BlY2lmaWMg c3RydWN0dXJlcy4KLSAqLwotc3RhdGljIGludCBhbWJhX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRl dikKLXsKLQlzdHJ1Y3QgYW1iYV9kZXZpY2UgKnBjZGV2ID0gdG9fYW1iYV9kZXZpY2UoZGV2KTsK LQlzdHJ1Y3QgYW1iYV9kcml2ZXIgKnBjZHJ2ID0gdG9fYW1iYV9kcml2ZXIoZGV2LT5kcml2ZXIp OwotCWNvbnN0IHN0cnVjdCBhbWJhX2lkICppZCA9IGFtYmFfbG9va3VwKHBjZHJ2LT5pZF90YWJs ZSwgcGNkZXYpOwotCWludCByZXQ7Ci0KLQlkbyB7Ci0JCXJldCA9IG9mX2Nsa19zZXRfZGVmYXVs dHMoZGV2LT5vZl9ub2RlLCBmYWxzZSk7Ci0JCWlmIChyZXQgPCAwKQotCQkJYnJlYWs7Ci0KLQkJ cmV0ID0gZGV2X3BtX2RvbWFpbl9hdHRhY2goZGV2LCB0cnVlKTsKLQkJaWYgKHJldCkKLQkJCWJy ZWFrOwotCi0JCXJldCA9IGFtYmFfZ2V0X2VuYWJsZV9wY2xrKHBjZGV2KTsKLQkJaWYgKHJldCkg ewotCQkJZGV2X3BtX2RvbWFpbl9kZXRhY2goZGV2LCB0cnVlKTsKLQkJCWJyZWFrOwotCQl9Ci0K LQkJcG1fcnVudGltZV9nZXRfbm9yZXN1bWUoZGV2KTsKLQkJcG1fcnVudGltZV9zZXRfYWN0aXZl KGRldik7Ci0JCXBtX3J1bnRpbWVfZW5hYmxlKGRldik7Ci0KLQkJcmV0ID0gcGNkcnYtPnByb2Jl KHBjZGV2LCBpZCk7Ci0JCWlmIChyZXQgPT0gMCkKLQkJCWJyZWFrOwotCi0JCXBtX3J1bnRpbWVf ZGlzYWJsZShkZXYpOwotCQlwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoZGV2KTsKLQkJcG1fcnVu dGltZV9wdXRfbm9pZGxlKGRldik7Ci0KLQkJYW1iYV9wdXRfZGlzYWJsZV9wY2xrKHBjZGV2KTsK LQkJZGV2X3BtX2RvbWFpbl9kZXRhY2goZGV2LCB0cnVlKTsKLQl9IHdoaWxlICgwKTsKLQotCXJl dHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgYW1iYV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2 KQotewotCXN0cnVjdCBhbWJhX2RldmljZSAqcGNkZXYgPSB0b19hbWJhX2RldmljZShkZXYpOwot CXN0cnVjdCBhbWJhX2RyaXZlciAqZHJ2ID0gdG9fYW1iYV9kcml2ZXIoZGV2LT5kcml2ZXIpOwot Ci0JcG1fcnVudGltZV9nZXRfc3luYyhkZXYpOwotCWlmIChkcnYtPnJlbW92ZSkKLQkJZHJ2LT5y ZW1vdmUocGNkZXYpOwotCXBtX3J1bnRpbWVfcHV0X25vaWRsZShkZXYpOwotCi0JLyogVW5kbyB0 aGUgcnVudGltZSBQTSBzZXR0aW5ncyBpbiBhbWJhX3Byb2JlKCkgKi8KLQlwbV9ydW50aW1lX2Rp c2FibGUoZGV2KTsKLQlwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoZGV2KTsKLQlwbV9ydW50aW1l X3B1dF9ub2lkbGUoZGV2KTsKLQotCWFtYmFfcHV0X2Rpc2FibGVfcGNsayhwY2Rldik7Ci0JZGV2 X3BtX2RvbWFpbl9kZXRhY2goZGV2LCB0cnVlKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMg dm9pZCBhbWJhX3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldikKLXsKLQlzdHJ1Y3QgYW1iYV9k cml2ZXIgKmRydiA9IHRvX2FtYmFfZHJpdmVyKGRldi0+ZHJpdmVyKTsKLQotCWlmIChkcnYtPnNo dXRkb3duKQotCQlkcnYtPnNodXRkb3duKHRvX2FtYmFfZGV2aWNlKGRldikpOwotfQotCiAvKioK ICAqCWFtYmFfZHJpdmVyX3JlZ2lzdGVyIC0gcmVnaXN0ZXIgYW4gQU1CQSBkZXZpY2UgZHJpdmVy CiAgKglAZHJ2OiBhbWJhIGRldmljZSBkcml2ZXIgc3RydWN0dXJlCkBAIC0zMzksOSArMzQyLDYg QEAgaW50IGFtYmFfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBhbWJhX2RyaXZlciAqZHJ2KQogCQly ZXR1cm4gLUVJTlZBTDsKIAogCWRydi0+ZHJ2LmJ1cyA9ICZhbWJhX2J1c3R5cGU7Ci0JZHJ2LT5k cnYucHJvYmUgPSBhbWJhX3Byb2JlOwotCWRydi0+ZHJ2LnJlbW92ZSA9IGFtYmFfcmVtb3ZlOwot CWRydi0+ZHJ2LnNodXRkb3duID0gYW1iYV9zaHV0ZG93bjsKIAogCXJldHVybiBkcml2ZXJfcmVn aXN0ZXIoJmRydi0+ZHJ2KTsKIH0KLS0gCjIuMjkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0Cmxp bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK