Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp804079pxb; Thu, 5 Nov 2020 13:30:13 -0800 (PST) X-Google-Smtp-Source: ABdhPJxUrtuhNgziK2H7zndFjc+Ts5cFiz2PWpP+yoU7DN4CsUZzDUuMhYSdgmA5IqTzGa1BjluY X-Received: by 2002:a17:906:3a55:: with SMTP id a21mr4276286ejf.357.1604611813722; Thu, 05 Nov 2020 13:30:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1604611813; cv=none; d=google.com; s=arc-20160816; b=FvMlZSgtvBMBtque/R+btPI2is8nNuKUgCy+b526hbZ0u670WRYWV1S8qxBzwiiJs6 Dpfnxii2MD4xW5uPo2XIvYwAGi7A9M0Wq7V/W8RmrXbys4JfMdKd3z3sen3b/vHZrVm8 U6hj2QGSZV0NEYmhI/VtGwqjEB3ltZZVRfWZESTlrXwZiaF64p0ZfhFEXX6TWouSmHho G3/0zz9SAXtUoO+sr2JW8NRp5S0fxSJmuJTx9WpSSvCWBgHUND8dKq6dpQDKarfVOaxi 1PL7uuaEK8qJFy9C5FeZRtOmh61tBmCXF55TuwqHV4Y0nTeaRLvAwG6k8d6rN7Q888nI z/1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=OUJnFPqweA+qMMP5fwCMuVb4sP1gqnIx0Rz7E2e9/WE=; b=wxumnjAu3MO/sdSjJGeo3HLQIs0Tl+YoZwjJNJuS4rP7pbevfbUQ72p1ZEDc2FOHrV X0J1UIy2HFik+0lCYzIwlQD4sRHsHmz216YQgKuSP9OjR4cAXmRGcS7o9HmfQAxIDG44 0u/9NpbUmZgnMbNyTIiki5AH6aoyfKm5Y2TyFlnSxHqnXZ5UL5lnXRMsvfpNotuF58vD /FresXFHFKRRiFefrsqISWGqLrd64gHQhQ9QmN5cTeXPWhxrH/tmOluToeRq0hCgodw0 QvxnE5Inl7o3DM9LJG0UWivaYMCAv5gLiwvgt1s6/re0+IHtJn8OQO6PmumDqjkkABK7 OYKA== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q26si2071285ejb.105.2020.11.05.13.29.50; Thu, 05 Nov 2020 13:30:13 -0800 (PST) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732335AbgKEV2R (ORCPT + 99 others); Thu, 5 Nov 2020 16:28:17 -0500 Received: from plasma4.jpberlin.de ([80.241.57.33]:34347 "EHLO plasma4.jpberlin.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729783AbgKEV2N (ORCPT ); Thu, 5 Nov 2020 16:28:13 -0500 X-Greylist: delayed 385 seconds by postgrey-1.27 at vger.kernel.org; Thu, 05 Nov 2020 16:28:12 EST Received: from spamfilter04.heinlein-hosting.de (spamfilter04.heinlein-hosting.de [80.241.56.122]) by plasma.jpberlin.de (Postfix) with ESMTP id 98E0BAB79F; Thu, 5 Nov 2020 22:21:50 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de Received: from plasma.jpberlin.de ([80.241.56.68]) by spamfilter04.heinlein-hosting.de (spamfilter04.heinlein-hosting.de [80.241.56.122]) (amavisd-new, port 10030) with ESMTP id A_FVSXef25dI; Thu, 5 Nov 2020 22:21:49 +0100 (CET) Received: from webmail.opensynergy.com (unknown [217.66.60.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "*.opensynergy.com", Issuer "Starfield Secure Certificate Authority - G2" (not verified)) (Authenticated sender: opensynergy@jpberlin.de) by plasma.jpberlin.de (Postfix) with ESMTPSA id 7B9BEAB8ED; Thu, 5 Nov 2020 22:21:49 +0100 (CET) From: Peter Hilber To: , CC: Peter Hilber , Rob Herring , , , , , , , , Subject: [RFC PATCH v2 07/10] firmware: arm_scmi: Add per-device transport private info Date: Thu, 5 Nov 2020 22:21:13 +0100 Message-ID: <20201105212116.411422-8-peter.hilber@opensynergy.com> In-Reply-To: <20201105212116.411422-1-peter.hilber@opensynergy.com> References: <20201105212116.411422-1-peter.hilber@opensynergy.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-ClientProxiedBy: SR-MAIL-01.open-synergy.com (10.26.10.21) To SR-MAIL-01.open-synergy.com (10.26.10.21) X-MBO-SPAM-Probability: X-Rspamd-Score: -3.39 / 15.00 / 15.00 X-Rspamd-Queue-Id: 98E0BAB79F X-Rspamd-UID: dd361e Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The scmi-virtio transport will link a supplier device to the arm-scmi device in the link_supplier() op. The transport should then save a pointer to the linked device. To enable this, add a transport private info to the scmi_info. (The scmi_info is already reachable through the arm-scmi device driver_data.) Signed-off-by: Peter Hilber --- drivers/firmware/arm_scmi/common.h | 2 ++ drivers/firmware/arm_scmi/driver.c | 35 ++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h index 2f55ac71555a..ec9fd7fce3c7 100644 --- a/drivers/firmware/arm_scmi/common.h +++ b/drivers/firmware/arm_scmi/common.h @@ -262,6 +262,8 @@ extern const struct scmi_desc scmi_mailbox_desc; extern const struct scmi_desc scmi_smc_desc; #endif +int scmi_set_transport_info(struct device *dev, void *transport_info); +void *scmi_get_transport_info(struct device *dev); void scmi_rx_callback(struct scmi_chan_info *cinfo, u32 msg_hdr); void scmi_free_channel(struct scmi_chan_info *cinfo, struct idr *idr, int id); diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c index dedc9b3f3e97..244141e45e88 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -84,6 +84,7 @@ struct scmi_xfers_info { * @rx_idr: IDR object to map protocol id to Rx channel info pointer * @protocols_imp: List of protocols implemented, currently maximum of * MAX_PROTOCOLS_IMP elements allocated by the base protocol + * @transport_info: Transport private info * @node: List head * @users: Number of users of this instance */ @@ -97,6 +98,7 @@ struct scmi_info { struct idr tx_idr; struct idr rx_idr; u8 *protocols_imp; + void *transport_info; struct list_head node; int users; }; @@ -315,6 +317,39 @@ void scmi_rx_callback(struct scmi_chan_info *cinfo, u32 msg_hdr) } } +/** + * scmi_set_transport_info() - Set transport private info + * + * @dev: SCMI instance device + * @transport_info: transport private info + * + * Return: 0 on success, otherwise error. + */ +int scmi_set_transport_info(struct device *dev, void *transport_info) +{ + struct scmi_info *info = dev_get_drvdata(dev); + + if (!info) + return -EBADR; + + info->transport_info = transport_info; + return 0; +} + +/** + * scmi_get_transport_info() - Get transport private info + * + * @dev: SCMI instance device + * + * Return: transport private info on success, otherwise NULL. + */ +void *scmi_get_transport_info(struct device *dev) +{ + struct scmi_info *info = dev_get_drvdata(dev); + + return info ? info->transport_info : NULL; +} + /** * scmi_xfer_put() - Release a transmit message * -- 2.25.1