From patchwork Fri Jan 15 12:50:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Elder X-Patchwork-Id: 363597 Delivered-To: patch@linaro.org Received: by 2002:a02:ccad:0:0:0:0:0 with SMTP id t13csp265778jap; Fri, 15 Jan 2021 04:54:28 -0800 (PST) X-Google-Smtp-Source: ABdhPJytGYbg2jw3VVopqvVbWxC2DaM9NZkjbkFNWo5Kdf2DsQQr0kp0Qo+ZLxxh+120QPH7nZy4 X-Received: by 2002:a17:906:16cc:: with SMTP id t12mr8834695ejd.476.1610715268238; Fri, 15 Jan 2021 04:54:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610715268; cv=none; d=google.com; s=arc-20160816; b=qAxqkOP2dKgselG33zidtemqaksXwErnQ+C6Ut/S7oNW23C9bgiz4LsqdyMRXVvA/C xCsUFdlsQGhn1uhdsu3voERaAtpmbI72mo70o+OSJgXLRGIqMVh4QyW9REdxC1KOIDLq TIjNar4wTRffIJ+bJkWaHuMMkrGb85poBcpDQWaLxyL/4k4o9QMHxzNYV1KDgNi8QO7L immgrBNxgPwpXG8+f8U4SpisFJG6tqbbo2GnivCxDKB1apm2UPeYFaQquo7rcnnVMJR7 rxoqSQVCpFIJd/vKnRbh8JigxIUlhZqsPl1aC2gu4nqB8qrfD4k521H71F6dYgU/5n+2 vjrA== 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 :dkim-signature; bh=KhAlEdXMThb5bBjxNUO0atbOyb0X5NmtnPbjigJcPX0=; b=QMNFmwzKUEH4Uat1jrGpWXGci5Pga2WAkD04HPgFiX/uzojT4jf427BcIgZGBfNjBS uXZLS6BK0DiP6mcmbA0s6lSmKA0wjEMhTmmMNmZNc34+GU6VlTSdpm3OrhwiMKhrHVAh BS662YrsMCTALcqnUAX0zKdb7XXlna7qi4q+wyMhEikqX0B394Wq1Qu8wvoviVQAbOQJ 1oTFwZ1k2B684BBZf6vfIrXSE867IPE5sPY6wMfnYCjEEwCGrsIRMIQ2hYxb9kkJ8HMX B9BQXDmJUwHE7mXymE01Yy1flP5QSTPBx3Mzb6ETLDRXXbhQSwHSOdl36VxUtpuF2ga+ a71g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=XcbVNYnF; spf=pass (google.com: domain of netdev-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a5si3624718ejr.334.2021.01.15.04.54.27; Fri, 15 Jan 2021 04:54:28 -0800 (PST) Received-SPF: pass (google.com: domain of netdev-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=XcbVNYnF; spf=pass (google.com: domain of netdev-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733217AbhAOMxP (ORCPT + 7 others); Fri, 15 Jan 2021 07:53:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43124 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388434AbhAOMwQ (ORCPT ); Fri, 15 Jan 2021 07:52:16 -0500 Received: from mail-io1-xd2f.google.com (mail-io1-xd2f.google.com [IPv6:2607:f8b0:4864:20::d2f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 667A6C061757 for ; Fri, 15 Jan 2021 04:51:00 -0800 (PST) Received: by mail-io1-xd2f.google.com with SMTP id y19so17882636iov.2 for ; Fri, 15 Jan 2021 04:51:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KhAlEdXMThb5bBjxNUO0atbOyb0X5NmtnPbjigJcPX0=; b=XcbVNYnFm0Q9tvSFgVmPHnqvdtAxNA22pBZ5BXkb2H+gC5jMUcWwpP5qeY4iklbQHf CTt4VBlYHS+mu7cVqsu4OU71L3kgcUfIdcjpeF9/X3L0P/qHpETRfcH8j87OewHV5o0t m8Va+Ma8b+yJTHUt42VHWxho9bcQoPeVHVcawWx+uxC9R2fewQgolehSuDVaedVa4Cik VNU2InwbKumw0SsC9Bc6je3etvuCZLxXyY90SWPA+qhEbKhfL3pNOlGRg7qTaHkUr0T2 bdDm+fbT1+MYYpXrQsy7auKMO4DyIN8hVJAsaF1FMGxAKQs9GQEvX7tXI0/x3FSTiteR APEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KhAlEdXMThb5bBjxNUO0atbOyb0X5NmtnPbjigJcPX0=; b=EU9CVHu+7TJeh6pfCzDTT+KRfMDczsgicoSgrFN3xYMmnGght5gFLzar7+hM9mTubw Q6Kvo6LtyphZn7vZRHDbUl6ek2Ok7qdS9ZBw3yEXV3fGkcf5qyktVbhIuL1w9THiCguq EtElfybQ53LjaImkAkpUNtDwxemvF9wN5wLJBAB0XWsqbu8usHM8E9tqBt6PThLpLrJf kQFmcpXiVqf/Npdnd5C7ulYbrFkhezlWme+nJAsJohugEqy7PtIAz6eqsT4ZUZATqlIx UXUD6dgCko5ODAut0ibMWI17jyYNx/7dRbe9gN/aZhfC5VlZenSG//w0xGycpysizonz 8CSw== X-Gm-Message-State: AOAM531W4gTS8rs4Iss+aqSq+GBXy9OKlcvTvF3o4617AQGzH86fhOHR dUySt9lRfad3uSgCsnD6EWpaHQ== X-Received: by 2002:a92:c006:: with SMTP id q6mr10812282ild.115.1610715059855; Fri, 15 Jan 2021 04:50:59 -0800 (PST) Received: from beast.localdomain (c-73-185-129-58.hsd1.mn.comcast.net. [73.185.129.58]) by smtp.gmail.com with ESMTPSA id f13sm3952450iog.18.2021.01.15.04.50.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Jan 2021 04:50:59 -0800 (PST) From: Alex Elder To: davem@davemloft.net, kuba@kernel.org Cc: evgreen@chromium.org, bjorn.andersson@linaro.org, cpratapa@codeaurora.org, subashab@codeaurora.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 6/7] net: ipa: clean up interconnect initialization Date: Fri, 15 Jan 2021 06:50:49 -0600 Message-Id: <20210115125050.20555-7-elder@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210115125050.20555-1-elder@linaro.org> References: <20210115125050.20555-1-elder@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Pass an the address of an IPA interconnect structure and its configuration data to ipa_interconnect_init_one() and have that function initialize all the structure's fields. Change the function to simply return an error code. Introduce ipa_interconnect_exit_one() to encapsulate the cleanup of an IPA interconnect structure. Signed-off-by: Alex Elder --- drivers/net/ipa/ipa_clock.c | 83 +++++++++++++++++++++---------------- 1 file changed, 47 insertions(+), 36 deletions(-) -- 2.20.1 diff --git a/drivers/net/ipa/ipa_clock.c b/drivers/net/ipa/ipa_clock.c index 07069dbc6d033..fbe42106fc2a8 100644 --- a/drivers/net/ipa/ipa_clock.c +++ b/drivers/net/ipa/ipa_clock.c @@ -56,17 +56,33 @@ struct ipa_clock { struct ipa_interconnect interconnect[IPA_INTERCONNECT_COUNT]; }; -static struct icc_path * -ipa_interconnect_init_one(struct device *dev, const char *name) +static int ipa_interconnect_init_one(struct device *dev, + struct ipa_interconnect *interconnect, + const struct ipa_interconnect_data *data) { struct icc_path *path; - path = of_icc_get(dev, name); - if (IS_ERR(path)) - dev_err(dev, "error %d getting %s interconnect\n", - (int)PTR_ERR(path), name); + path = of_icc_get(dev, data->name); + if (IS_ERR(path)) { + int ret = PTR_ERR(path); - return path; + dev_err(dev, "error %d getting %s interconnect\n", ret, + data->name); + + return ret; + } + + interconnect->path = path; + interconnect->average_bandwidth = data->average_bandwidth; + interconnect->peak_bandwidth = data->peak_bandwidth; + + return 0; +} + +static void ipa_interconnect_exit_one(struct ipa_interconnect *interconnect) +{ + icc_put(interconnect->path); + memset(interconnect, 0, sizeof(*interconnect)); } /* Initialize interconnects required for IPA operation */ @@ -74,51 +90,46 @@ static int ipa_interconnect_init(struct ipa_clock *clock, struct device *dev, const struct ipa_interconnect_data *data) { struct ipa_interconnect *interconnect; - struct icc_path *path; + int ret; - path = ipa_interconnect_init_one(dev, data->name); - if (IS_ERR(path)) - goto err_return; interconnect = &clock->interconnect[IPA_INTERCONNECT_MEMORY]; - interconnect->path = path; - interconnect->average_bandwidth = data->average_bandwidth; - interconnect->peak_bandwidth = data->peak_bandwidth; - data++; + ret = ipa_interconnect_init_one(dev, interconnect, data++); + if (ret) + return ret; - path = ipa_interconnect_init_one(dev, data->name); - if (IS_ERR(path)) + interconnect = &clock->interconnect[IPA_INTERCONNECT_IMEM]; + ret = ipa_interconnect_init_one(dev, interconnect, data++); + if (ret) goto err_memory_path_put; - interconnect = &clock->interconnect[IPA_INTERCONNECT_IMEM]; - interconnect->path = path; - interconnect->average_bandwidth = data->average_bandwidth; - interconnect->peak_bandwidth = data->peak_bandwidth; - data++; - path = ipa_interconnect_init_one(dev, data->name); - if (IS_ERR(path)) + interconnect = &clock->interconnect[IPA_INTERCONNECT_IMEM]; + ret = ipa_interconnect_init_one(dev, interconnect, data++); + if (ret) goto err_imem_path_put; - interconnect = &clock->interconnect[IPA_INTERCONNECT_CONFIG]; - interconnect->path = path; - interconnect->average_bandwidth = data->average_bandwidth; - interconnect->peak_bandwidth = data->peak_bandwidth; - data++; return 0; err_imem_path_put: - icc_put(clock->interconnect[IPA_INTERCONNECT_IMEM].path); + interconnect = &clock->interconnect[IPA_INTERCONNECT_IMEM]; + ipa_interconnect_exit_one(interconnect); err_memory_path_put: - icc_put(clock->interconnect[IPA_INTERCONNECT_MEMORY].path); -err_return: - return PTR_ERR(path); + interconnect = &clock->interconnect[IPA_INTERCONNECT_MEMORY]; + ipa_interconnect_exit_one(interconnect); + + return ret; } /* Inverse of ipa_interconnect_init() */ static void ipa_interconnect_exit(struct ipa_clock *clock) { - icc_put(clock->interconnect[IPA_INTERCONNECT_CONFIG].path); - icc_put(clock->interconnect[IPA_INTERCONNECT_IMEM].path); - icc_put(clock->interconnect[IPA_INTERCONNECT_MEMORY].path); + struct ipa_interconnect *interconnect; + + interconnect = &clock->interconnect[IPA_INTERCONNECT_CONFIG]; + ipa_interconnect_exit_one(interconnect); + interconnect = &clock->interconnect[IPA_INTERCONNECT_IMEM]; + ipa_interconnect_exit_one(interconnect); + interconnect = &clock->interconnect[IPA_INTERCONNECT_MEMORY]; + ipa_interconnect_exit_one(interconnect); } /* Currently we only use one bandwidth level, so just "enable" interconnects */