Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp3015914pxv; Mon, 12 Jul 2021 07:22:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwtDtPCVuD6ZjNzdC/lKZ6cuUW1Lrp640ikTVYcVKld/v2qsRSMWbJfcPNxQvhAC9tqC+td X-Received: by 2002:a92:da8d:: with SMTP id u13mr24181325iln.180.1626099736374; Mon, 12 Jul 2021 07:22:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626099736; cv=none; d=google.com; s=arc-20160816; b=qIeW8YYqiq6jkVis5ev7DYNYmIMIeohk1QVH6KwzlMQD4DoHJEh79Z7e0H1jHAEeiO 1HSPpIHD2geVIBed/mtDpij2gzsyYDotdKP9gNMg1fPCQcPhRYapSulHl8iwPGgfv3e3 tV+uMWv3rKhGz66H0OdE9yQiOodz0rl5R2r8/9zFRU1hNyv20i9Jr6vODIgwYQsRAMTL 7fOF1NYVvOdCxb24r2oBfa9IB4Ce9XjUDpD1GhFoedi4iHf46XucbuTP7BQX9h5k2tw9 j8pt/6sbsJHPrz+Zm9jDexT8Hw153YH+Ipsa0MeiGIGCh0iLI3vi4vBsy+UPdzulpfqf zkSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=9spD+w2n7rg1cvG/M5aAXh3BW13V4wk07SNe26VJ8qA=; b=J8A079t/SINGc+Ik9BP9ziikUuyRwUBStPdNICyRNjKJQp1u5TDBnN2jQDg+7fX7Y/ Z4yEN99vmsBDEq0EOt8Ld7Kmq7ZeBHXbPFEH5e31m9yB/wW3gi0tQijTrPQlbqvJNJ8i hCoYbN/4V0T1fgoVvnYx581dz+xWGwI69aRmMIsvb/P+nV7WUTtc4IJIUyqB8OWMzu/c Rb4mvAI6TZkbEyIdqFEi47mmXM4o79oj4hk/j0y1nh7IBCWPHcEn5isvUGtzFaePeJHf ISxzzTvUFBOujjtGsHHNZiL3gZ+hLYWdYOE7gbmx6XT5XaYceSzdSu9ZcE3+wCQviTtW 4ZXg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l13si16636056ilh.147.2021.07.12.07.22.04; Mon, 12 Jul 2021 07:22:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235161AbhGLOWm (ORCPT + 99 others); Mon, 12 Jul 2021 10:22:42 -0400 Received: from foss.arm.com ([217.140.110.172]:56158 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235139AbhGLOWl (ORCPT ); Mon, 12 Jul 2021 10:22:41 -0400 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 C6C331FB; Mon, 12 Jul 2021 07:19:52 -0700 (PDT) Received: from e120937-lin.home (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C51B43F774; Mon, 12 Jul 2021 07:19:48 -0700 (PDT) From: Cristian Marussi To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, virtualization@lists.linux-foundation.org, virtio-dev@lists.oasis-open.org Cc: sudeep.holla@arm.com, james.quinlan@broadcom.com, Jonathan.Cameron@Huawei.com, f.fainelli@gmail.com, etienne.carriere@linaro.org, vincent.guittot@linaro.org, souvik.chakravarty@arm.com, cristian.marussi@arm.com, igor.skalkin@opensynergy.com, peter.hilber@opensynergy.com, alex.bennee@linaro.org, jean-philippe@linaro.org, mikhail.golubev@opensynergy.com, anton.yakovlev@opensynergy.com, Vasyl.Vavrychuk@opensynergy.com, Andriy.Tryshnivskyy@opensynergy.com Subject: [PATCH v6 15/17] firmware: arm_scmi: Add optional link_supplier() transport op Date: Mon, 12 Jul 2021 15:18:31 +0100 Message-Id: <20210712141833.6628-16-cristian.marussi@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210712141833.6628-1-cristian.marussi@arm.com> References: <20210712141833.6628-1-cristian.marussi@arm.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Peter Hilber Some transports are also effectively registered with other kernel subsystem in order to be properly probed and initialized; as a consequence such kind of transports, and their related devices, might still not have been probed and initialized at the time the main SCMI core driver is probed. Add an optional .link_supplier() transport operation which can be used by the core SCMI stack to dynamically check if the transport is ready and dynamically link its device to the platform instance device. Signed-off-by: Peter Hilber [ Cristian: reworded commit message ] Signed-off-by: Cristian Marussi --- v5 --> v6 - reworded commit message --- drivers/firmware/arm_scmi/common.h | 2 ++ drivers/firmware/arm_scmi/driver.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h index 7a1e84dc191b..e6403ebe59ca 100644 --- a/drivers/firmware/arm_scmi/common.h +++ b/drivers/firmware/arm_scmi/common.h @@ -331,6 +331,7 @@ struct scmi_chan_info { /** * struct scmi_transport_ops - Structure representing a SCMI transport ops * + * @link_supplier: Optional callback to add link to a supplier device * @chan_available: Callback to check if channel is available or not * @chan_setup: Callback to allocate and setup a channel * @chan_free: Callback to free a channel @@ -345,6 +346,7 @@ struct scmi_chan_info { * @poll_done: Callback to poll transfer status */ struct scmi_transport_ops { + int (*link_supplier)(struct device *dev); bool (*chan_available)(struct device *dev, int idx); int (*chan_setup)(struct scmi_chan_info *cinfo, struct device *dev, bool tx); diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c index 24039be7599d..1be86ab40be3 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -1810,6 +1810,12 @@ static int scmi_probe(struct platform_device *pdev) handle->devm_protocol_get = scmi_devm_protocol_get; handle->devm_protocol_put = scmi_devm_protocol_put; + if (desc->ops->link_supplier) { + ret = desc->ops->link_supplier(dev); + if (ret) + return ret; + } + ret = scmi_txrx_setup(info, dev, SCMI_PROTOCOL_BASE); if (ret) return ret; -- 2.17.1