From patchwork Mon Apr 15 16:04:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suzuki K Poulose X-Patchwork-Id: 162226 Delivered-To: patch@linaro.org Received: by 2002:a02:c6d8:0:0:0:0:0 with SMTP id r24csp3107286jan; Mon, 15 Apr 2019 09:07:41 -0700 (PDT) X-Google-Smtp-Source: APXvYqzjBIikLTGpC3CnYsaDne//YnmdMAdW8y1fZAsI9l0vYxWHYdGCcgVa5I4VY7KDIdkcrPxM X-Received: by 2002:aa7:8a92:: with SMTP id a18mr77356006pfc.218.1555344461787; Mon, 15 Apr 2019 09:07:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555344461; cv=none; d=google.com; s=arc-20160816; b=D5xfSxtFP+SFego9YbBq3zhi2TcE7C62qiGwo+uOEazA/uznHl/mURTnGvYN3j9uES 9p0pZSQ5IvxmoRPM4IFRh2KfVnQlPflEKNC+XYF5VJA1Njd3Pzq49yq/65KCU7Zxk0gi ajkT3eMx/ao9SYht7CK93B214pBa3H+Mbvynm8lmJ/ZlG1yr3U1al9QV7R5qs30QJVKY HneDot/56P0/7GIysZtRUsLezUOjrbmM7O9me2jOC5Rzkon/wlUKOd7oNSwFA5ecA05G B5CFMa1+5qDJo0Sx+C8vIfXeUiupkG6X6CluW8TtGRblwip/RhmdRwpnzj1gu6KDiNAP kUcw== 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=414eQZsJ77Z2tzyFUkhQQCqxRqawI5Xu1zmqOoIbDBU=; b=Ft+nTl+K9EsLaffICI6joKmnAt45I+SKGJ/ZsuP2yYKCLp6nr/McPzjVpTjq6PaxF9 iKaf4AH7CXNLE8IhTLUN7FP1p9F1dcGZ2Uf3aW9GciLxnoxFcEcw2Sk6wT5/hLHH3E8L M5ZHZFM8AKh4PSUxsA3Apzg54MiVWxzYvou4GcOZsQOwMHMrpePrEpCfSQ6M2R1H6Pvl 86wOcrRjRKdL1nCTWgcNCeyYGE1Q2EEz1dTg6X8hMcGXspQe9J80wFOuFyjzpXvhwAqQ oO9AD0xwhPf+yW3vkemluA6ug9QINTlqMxJ/cHPQGhcdFlAGBhWWewHe6dnruBHKxLoR /Skg== 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 s5si17623919pfm.234.2019.04.15.09.07.41; Mon, 15 Apr 2019 09:07:41 -0700 (PDT) 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 S1727877AbfDOQHk (ORCPT + 30 others); Mon, 15 Apr 2019 12:07:40 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:37990 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728047AbfDOQGa (ORCPT ); Mon, 15 Apr 2019 12:06:30 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 709461A25; Mon, 15 Apr 2019 09:06:30 -0700 (PDT) Received: from en101.cambridge.arm.com (en101.cambridge.arm.com [10.1.196.93]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id EA0573F68F; Mon, 15 Apr 2019 09:06:28 -0700 (PDT) From: Suzuki K Poulose To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, coresight@lists.linaro.org, mathieu.poirier@linaro.org, mike.leach@linaro.org, rjw@rjwysocki.net, robert.walker@arm.com, Suzuki K Poulose Subject: [PATCH v2 26/36] coresight: Add support for releasing platform specific data Date: Mon, 15 Apr 2019 17:04:09 +0100 Message-Id: <1555344260-12375-27-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1555344260-12375-1-git-send-email-suzuki.poulose@arm.com> References: <1555344260-12375-1-git-send-email-suzuki.poulose@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a helper to clean up the platform specific data provided by the firmware. This will be later used for dropping the necessary references when we switch to the fwnode handles for tracking connections. Cc: Mathieu Poirier Signed-off-by: Suzuki K Poulose --- drivers/hwtracing/coresight/coresight-platform.c | 12 +++++++++--- drivers/hwtracing/coresight/coresight-priv.h | 4 ++++ drivers/hwtracing/coresight/coresight.c | 3 +++ 3 files changed, 16 insertions(+), 3 deletions(-) -- 2.7.4 diff --git a/drivers/hwtracing/coresight/coresight-platform.c b/drivers/hwtracing/coresight/coresight-platform.c index 0415fff..a408b01 100644 --- a/drivers/hwtracing/coresight/coresight-platform.c +++ b/drivers/hwtracing/coresight/coresight-platform.c @@ -17,6 +17,7 @@ #include #include +#include "coresight-priv.h" /* * coresight_alloc_conns: Allocate connections record for each output * port from the device. @@ -304,7 +305,7 @@ EXPORT_SYMBOL_GPL(coresight_get_cpu); struct coresight_platform_data * coresight_get_platform_data(struct device *dev) { - struct coresight_platform_data *pdata; + struct coresight_platform_data *pdata, *ret = NULL; struct fwnode_handle *fwnode = dev_fwnode(dev); if (IS_ERR_OR_NULL(fwnode)) @@ -315,8 +316,13 @@ coresight_get_platform_data(struct device *dev) return ERR_PTR(-ENOMEM); if (is_of_node(fwnode)) - return of_get_coresight_platform_data(dev, pdata); + ret = of_get_coresight_platform_data(dev, pdata); - return ERR_PTR(-ENOENT); + if (!IS_ERR_OR_NULL(ret)) + return pdata; + + /* Cleanup the connection information */ + coresight_release_platform_data(pdata); + return ret; } EXPORT_SYMBOL_GPL(coresight_get_platform_data); diff --git a/drivers/hwtracing/coresight/coresight-priv.h b/drivers/hwtracing/coresight/coresight-priv.h index e0684d0..c216421 100644 --- a/drivers/hwtracing/coresight/coresight-priv.h +++ b/drivers/hwtracing/coresight/coresight-priv.h @@ -200,4 +200,8 @@ static inline void *coresight_get_uci_data(const struct amba_id *id) return 0; } +static inline void +coresight_release_platform_data(struct coresight_platform_data *pdata) +{} + #endif diff --git a/drivers/hwtracing/coresight/coresight.c b/drivers/hwtracing/coresight/coresight.c index f6c5244..82fb411 100644 --- a/drivers/hwtracing/coresight/coresight.c +++ b/drivers/hwtracing/coresight/coresight.c @@ -1248,6 +1248,8 @@ struct coresight_device *coresight_register(struct coresight_desc *desc) err_free_csdev: kfree(csdev); err_out: + /* Cleanup the connection information */ + coresight_release_platform_data(desc->pdata); return ERR_PTR(ret); } EXPORT_SYMBOL_GPL(coresight_register); @@ -1257,6 +1259,7 @@ void coresight_unregister(struct coresight_device *csdev) etm_perf_del_symlink_sink(csdev); /* Remove references of that device in the topology */ coresight_remove_conns(csdev); + coresight_release_platform_data(csdev->pdata); device_unregister(&csdev->dev); } EXPORT_SYMBOL_GPL(coresight_unregister);