From patchwork Wed Dec 18 11:17:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 181981 Delivered-To: patch@linaro.org Received: by 2002:a92:3001:0:0:0:0:0 with SMTP id x1csp503898ile; Wed, 18 Dec 2019 03:17:57 -0800 (PST) X-Google-Smtp-Source: APXvYqy26mzO03pEW4apYYYaT73rF0lBsyYFBO+b6Q7tTW4WsASuM/AZbMLLxGe7Lh3k/LrRkpE9 X-Received: by 2002:a05:6830:1b78:: with SMTP id d24mr1954631ote.174.1576667877839; Wed, 18 Dec 2019 03:17:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576667877; cv=none; d=google.com; s=arc-20160816; b=hbPYm00uO5oH9t6R4vxGsmBGofTw43CvMgk4VsJLES/p7j3N5y3Bd9DUtyJWEk8MF0 YgTeI/M0qE3swuQwpBM+FEmTLJMg7cDfxvmpsvlwSNT8PM4JhK/p7SCzxM8a//aEcEqX Z+t2raSql8mDX2YnvMRQ/NXKwl2IjFq6SzlahyZjU8Qy5SajD0AOK4VfHhIESeGE1Xix yQJhrkcBH6u6oPmp6iZnDCnddCtwIarvpyB3qsn3dFvdZ/kgszg2m1y7IUVtradnunXU rW8w+/rZYUd0LOr5AKTJ/gQcs5+cAndLIxmwE7j3mPm2XK4MfpYn1jR679ujStKj9rhS Gbtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=9TjBXKtn1L2SqimCijYlf2/QvdoPCpnU3yl2WvHo8Vc=; b=OYJqs/BxdxTDuS9aJHbXyP0Ac4cUuF16SjQWTkoSOJn9Zhj6iSNp+oUFKlE+cKCM/S X2Y6BYNf+VYF3B151DBLMUJYug+qG/3BRmS+MyMSHSxWJu5IbkqrgifO2743nyLZ1tzL 3N+O5Ica+rn8BNNkHmAnf+77OZeQ83v0+/DMcoY8uO6KaqoICqJRt9PP9D5yYrFd9lPy hbMv9gtKe81AWjrfNyD7EKZmGKZf2/A6tV/DCEqkmLPWfMhf/RajHH1fTggJsEiJUpv+ +rJaCQHhNMwzudzNbd87Ye1hEwJcSjElH/mZ/ri+U06+chjmlHjBEHFhkZ0ke2S/RvX+ Ax6Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t23si1219000otk.304.2019.12.18.03.17.57; Wed, 18 Dec 2019 03:17:57 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726913AbfLRLR5 (ORCPT + 27 others); Wed, 18 Dec 2019 06:17:57 -0500 Received: from foss.arm.com ([217.140.110.172]:42378 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726141AbfLRLRy (ORCPT ); Wed, 18 Dec 2019 06:17:54 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D947711B3; Wed, 18 Dec 2019 03:17:53 -0800 (PST) Received: from usa.arm.com (e107155-lin.cambridge.arm.com [10.1.196.42]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 362D23F6CF; Wed, 18 Dec 2019 03:17:53 -0800 (PST) From: Sudeep Holla To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi Subject: [PATCH v2 07/11] firmware: arm_scmi: Skip protocol initialisation for additional devices Date: Wed, 18 Dec 2019 11:17:38 +0000 Message-Id: <20191218111742.29731-8-sudeep.holla@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191218111742.29731-1-sudeep.holla@arm.com> References: <20191218111742.29731-1-sudeep.holla@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The scmi bus now supports adding multiple devices per protocol, and since scmi_protocol_init is called for each scmi device created, we must avoid allocating protocol private data and initialising the protocol itself if it is already initialised. In order to achieve the same, we can simple replace the idr pointer from protocol initialisation function to a dummy function. Suggested-by: Cristian Marussi Signed-off-by: Sudeep Holla --- drivers/firmware/arm_scmi/bus.c | 9 +++++++++ 1 file changed, 9 insertions(+) -- 2.17.1 Reviewed-by: Cristian Marussi diff --git a/drivers/firmware/arm_scmi/bus.c b/drivers/firmware/arm_scmi/bus.c index 3714e6307b05..db55c43a2cbd 100644 --- a/drivers/firmware/arm_scmi/bus.c +++ b/drivers/firmware/arm_scmi/bus.c @@ -60,6 +60,11 @@ static int scmi_protocol_init(int protocol_id, struct scmi_handle *handle) return fn(handle); } +static int scmi_protocol_dummy_init(struct scmi_handle *handle) +{ + return 0; +} + static int scmi_dev_probe(struct device *dev) { struct scmi_driver *scmi_drv = to_scmi_driver(dev->driver); @@ -78,6 +83,10 @@ static int scmi_dev_probe(struct device *dev) if (ret) return ret; + /* Skip protocol initialisation for additional devices */ + idr_replace(&scmi_protocols, &scmi_protocol_dummy_init, + scmi_dev->protocol_id); + return scmi_drv->probe(scmi_dev); }