From patchwork Mon Jul 16 17:13:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nishanth Menon X-Patchwork-Id: 142069 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp2664109ljj; Mon, 16 Jul 2018 10:14:35 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfon7a/ChjpkN/oZWqLTyYCS6UuU0rXCjKpbETHXZegU3DqJa61z1RcwDHRJkEbk6jKKNnb X-Received: by 2002:a17:902:3e3:: with SMTP id d90-v6mr17411116pld.12.1531761274961; Mon, 16 Jul 2018 10:14:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531761274; cv=none; d=google.com; s=arc-20160816; b=D+dpHhtkfqTMXx+clh9a77m3Be0ze4th5lTs26RH2iVucUtWAP2/hjTCjxY5huXx8r J8zgBQXtb3jIJBnnrwnwdi7GcS1t9ubNPaXnviiTCzNArbrFqylwqSSNgcGlGgXSivYz 37xBqlwmwM3ZYzGIvkqVqfGtx9GAXrwNH+wnV4zJDiu156hE44L4JJgZWM0LkUd5+MLI xJHGOViSwBk9swNGgdjc/pAIS5CjeM5Ol2sWdsAlYRJ1LnCGfN4StUeyS62cI3toC6ap vvHjuqfdW7eoHcK35oFppEktt6epLZ6g56qghWUuN2izsq4a0m8Sh884xtRPYsrdPpBu 3i2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=XBPG/0avftPD3D/awrUxrBmXJkoWYaZRytrvPSMARxE=; b=jzfaTC4RSRdduB+4Lxu7EdQC8zpLD+5UkagR2nwJNwCLAbD+Q5PsyLyBpkv58F63Sw VNMFxc6fdwFz+YQRt6X0ne1mKZw4kSnT0nSb7A47U3pxdoPKkjyvmXoAtQLvj5+M2v9B bosMubuRpHDOh7I/ccgwQMivN7+8Nh6l4rxx1OlOd5/uXf9TzDzHA3zzvoAq+xDuTO1Z oPOujrfwuBSSOUJkqpjf+HSaM6CyemZ2PDm8fiyKfRpIPzF4Xt27lFn7alW0z/PLjvp4 v59NHPiEF0nSgaLGyReTszxEMolbFc4+iTMErhxky2Ww1QSVId9U9oLebpGFZPFLkJCP Kq3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@ti.com header.s=ti-com-17Q1 header.b=q75or7bH; spf=pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h16-v6si31683015pli.14.2018.07.16.10.14.34; Mon, 16 Jul 2018 10:14:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@ti.com header.s=ti-com-17Q1 header.b=q75or7bH; spf=pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727652AbeGPRmx (ORCPT + 5 others); Mon, 16 Jul 2018 13:42:53 -0400 Received: from fllv0015.ext.ti.com ([198.47.19.141]:37482 "EHLO fllv0015.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727411AbeGPRmx (ORCPT ); Mon, 16 Jul 2018 13:42:53 -0400 Received: from dlelxv90.itg.ti.com ([172.17.2.17]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id w6GHDXfk012022; Mon, 16 Jul 2018 12:13:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1531761213; bh=yNiU62+LUUJjJ8oHNHDm+GTgqiqakLC7jsxAqpeTzxg=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=q75or7bHcJa6B0yrNXPVcyn9NMVU4QYvBL9JkzsWXaVst4JUvjMmtTglKi/GTuzkB qs20Sxgc4o+WpBC7kJS63snMI/qMXOdaSso8kePVQcBiP0jeBiuggLo9UW0nFKbl7O G07RUx5JtXfI1EpV0V9ZYOPHe4zpy3YA9YfBcLxE= Received: from DLEE100.ent.ti.com (dlee100.ent.ti.com [157.170.170.30]) by dlelxv90.itg.ti.com (8.14.3/8.13.8) with ESMTP id w6GHDXKL006593; Mon, 16 Jul 2018 12:13:33 -0500 Received: from DLEE103.ent.ti.com (157.170.170.33) by DLEE100.ent.ti.com (157.170.170.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1466.3; Mon, 16 Jul 2018 12:13:32 -0500 Received: from dflp32.itg.ti.com (10.64.6.15) by DLEE103.ent.ti.com (157.170.170.33) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1466.3 via Frontend Transport; Mon, 16 Jul 2018 12:13:32 -0500 Received: from localhost (ileax41-snat.itg.ti.com [10.172.224.153]) by dflp32.itg.ti.com (8.14.3/8.13.8) with ESMTP id w6GHDWdR002791; Mon, 16 Jul 2018 12:13:32 -0500 From: Nishanth Menon To: Mark Rutland , Rob Herring , Santosh Shilimkar , Tero Kristo CC: Nishanth Menon , , , , Subject: [PATCH V2 2/2] firmware: ti_sci: Provide host-id as an optional dt parameter Date: Mon, 16 Jul 2018 12:13:28 -0500 Message-ID: <20180716171328.11674-3-nm@ti.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180716171328.11674-1-nm@ti.com> References: <20180716171328.11674-1-nm@ti.com> MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Texas Instrument's System Control Interface (TISCI) permits the ability for Operating Systems to running in virtual machines to be able to independently communicate with the firmware without the need going through an hypervisor. The "host-id" in effect is the hardware representation of the host (example: VMs locked to a core) as identified to the System Controller. Provide support as an optional parameter implementation and use the compatible data as default if one is not provided by device tree. Signed-off-by: Nishanth Menon --- Changes since V1: * None V1: https://patchwork.kernel.org/patch/10475309/ RFC: https://patchwork.kernel.org/patch/10447715/ drivers/firmware/ti_sci.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) -- 2.15.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/firmware/ti_sci.c b/drivers/firmware/ti_sci.c index 7fa744793bc5..69ed1464175c 100644 --- a/drivers/firmware/ti_sci.c +++ b/drivers/firmware/ti_sci.c @@ -66,14 +66,14 @@ struct ti_sci_xfers_info { /** * struct ti_sci_desc - Description of SoC integration - * @host_id: Host identifier representing the compute entity + * @default_host_id: Host identifier representing the compute entity * @max_rx_timeout_ms: Timeout for communication with SoC (in Milliseconds) * @max_msgs: Maximum number of messages that can be pending * simultaneously in the system * @max_msg_size: Maximum size of data per message that can be handled. */ struct ti_sci_desc { - u8 host_id; + u8 default_host_id; int max_rx_timeout_ms; int max_msgs; int max_msg_size; @@ -94,6 +94,7 @@ struct ti_sci_desc { * @chan_rx: Receive mailbox channel * @minfo: Message info * @node: list head + * @host_id: Host ID * @users: Number of users of this instance */ struct ti_sci_info { @@ -110,6 +111,7 @@ struct ti_sci_info { struct mbox_chan *chan_rx; struct ti_sci_xfers_info minfo; struct list_head node; + u8 host_id; /* protected by ti_sci_list_mutex */ int users; @@ -370,7 +372,7 @@ static struct ti_sci_xfer *ti_sci_get_one_xfer(struct ti_sci_info *info, hdr->seq = xfer_id; hdr->type = msg_type; - hdr->host = info->desc->host_id; + hdr->host = info->host_id; hdr->flags = msg_flags; return xfer; @@ -1793,7 +1795,7 @@ static int tisci_reboot_handler(struct notifier_block *nb, unsigned long mode, /* Description for K2G */ static const struct ti_sci_desc ti_sci_pmmc_k2g_desc = { - .host_id = 2, + .default_host_id = 2, /* Conservative duration */ .max_rx_timeout_ms = 1000, /* Limited by MBOX_TX_QUEUE_LEN. K2G can handle upto 128 messages! */ @@ -1819,6 +1821,7 @@ static int ti_sci_probe(struct platform_device *pdev) int ret = -EINVAL; int i; int reboot = 0; + u32 h_id; of_id = of_match_device(ti_sci_of_match, dev); if (!of_id) { @@ -1833,6 +1836,19 @@ static int ti_sci_probe(struct platform_device *pdev) info->dev = dev; info->desc = desc; + ret = of_property_read_u32(dev->of_node, "ti,host-id", &h_id); + /* if the property is not present in DT, use a default from desc */ + if (ret < 0) { + info->host_id = info->desc->default_host_id; + } else { + if (!h_id) { + dev_warn(dev, "Host ID 0 is reserved for firmware\n"); + info->host_id = info->desc->default_host_id; + } else { + info->host_id = h_id; + } + } + reboot = of_property_read_bool(dev->of_node, "ti,system-reboot-controller"); INIT_LIST_HEAD(&info->node);