From patchwork Tue Apr 7 23:50:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Anderson X-Patchwork-Id: 11479125 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9F74C1744 for ; Tue, 7 Apr 2020 23:51:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 74FB7207FF for ; Tue, 7 Apr 2020 23:51:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="fikP9pwn" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726513AbgDGXvA (ORCPT ); Tue, 7 Apr 2020 19:51:00 -0400 Received: from mail-pl1-f193.google.com ([209.85.214.193]:41705 "EHLO mail-pl1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726510AbgDGXvA (ORCPT ); Tue, 7 Apr 2020 19:51:00 -0400 Received: by mail-pl1-f193.google.com with SMTP id d24so1832778pll.8 for ; Tue, 07 Apr 2020 16:50:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WC7KT0pNRGqubghsLpqhU2AyP/TQtFiX3YW33bK8+tI=; b=fikP9pwnOKADqBxBp6Df8qFyXJbZ76/yDzRTxlPbEVuwcFBa9Ei7Jr/I/5rNnBOk15 9pdZBMzxFK3BfIz15xQFFhvyhaCBXDxtfrn0QjK8ffDM8t52m1JiTPdYSxR7Fh8CF45X aVVfCxai+xqCiTD5zYRJkfkB7ZtqR7kj3Emns= 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=WC7KT0pNRGqubghsLpqhU2AyP/TQtFiX3YW33bK8+tI=; b=azYwlWYhYyfro5uZ5AWbXrCEo4u/h5MFYkXZABwyg4zljfY2eH/aWcfHWWJBhkOsEU qqVpWTYyM3xlvAyEuNP0DD7AQyuzFX0EJLXhJVnF13RkCBtZRcVEPsnOMxZiR3VqRXik FoosO0lpXCmhGxJIBRyz6Zb99rL8Co0rKjSvVJS9M7c1G3XyHSI9QD+zytkGG8cOrVAr vkD6h7+smwg8Lb50hbWWOVAglRd+6rjMmobswdwOdMLB5iepds0SnaC3pQTm2Px7MRt9 msu0FCN2rPg41g6/jVUZSWPPiCiBfOT8PZsRirHkdpTfOn5abJ+gfPjJixANVjpcQ3GP N/9A== X-Gm-Message-State: AGi0PuZxOST72ZXU++QFJ0wVS6Kip2NTbn1UwbFxM0FWdOgC6Ou6tAe3 LAik8GcSpXQ+khrv6y4ziQ03jg== X-Google-Smtp-Source: APiQypIrWS1flrwcKiadKIyXre2kng3sWUWISf/o7P+SWHRdrX2RTHhTJrRyakO4f92FAblSxbF7xQ== X-Received: by 2002:a17:902:b183:: with SMTP id s3mr4638431plr.33.1586303459290; Tue, 07 Apr 2020 16:50:59 -0700 (PDT) Received: from tictac2.mtv.corp.google.com ([2620:15c:202:1:24fa:e766:52c9:e3b2]) by smtp.gmail.com with ESMTPSA id s27sm14467165pgn.90.2020.04.07.16.50.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2020 16:50:58 -0700 (PDT) From: Douglas Anderson To: Andy Gross , Bjorn Andersson , Maulik Shah Cc: mka@chromium.org, Lina Iyer , Rajendra Nayak , swboyd@chromium.org, evgreen@chromium.org, Douglas Anderson , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 03/10] drivers: qcom: rpmh-rsc: Fold tcs_ctrl_write() into its single caller Date: Tue, 7 Apr 2020 16:50:17 -0700 Message-Id: <20200407164915.v3.3.Ie88ce5ccfc0c6055903ccca5286ae28ed3b85ed3@changeid> X-Mailer: git-send-email 2.26.0.292.g33ef6b2f38-goog In-Reply-To: <20200407235024.260460-1-dianders@chromium.org> References: <20200407235024.260460-1-dianders@chromium.org> MIME-Version: 1.0 Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org I was trying to write documentation for the functions in rpmh-rsc and I got to tcs_ctrl_write(). The documentation for the function would have been: "This is the core of rpmh_rsc_write_ctrl_data(); all the caller does is error-check and then call this". Having the error checks in a separate function doesn't help for anything since: - There are no other callers that need to bypass the error checks. - It's less documenting. When I read tcs_ctrl_write() I kept wondering if I need to handle cases other than ACTIVE_ONLY or cases with more commands than could fit in a TCS. This is obvious when the error checks and code are together. - The function just isn't that long, so there's no problem understanding the combined function. Things were even more confusing because the two functions names didn't make obvious (at least to me) their relationship. Simplify by folding one function into the other. Signed-off-by: Douglas Anderson Reviewed-by: Maulik Shah Tested-by: Maulik Shah --- Changes in v3: None Changes in v2: None drivers/soc/qcom/rpmh-rsc.c | 39 ++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/drivers/soc/qcom/rpmh-rsc.c b/drivers/soc/qcom/rpmh-rsc.c index 46455b1d93f1..e361b2331993 100644 --- a/drivers/soc/qcom/rpmh-rsc.c +++ b/drivers/soc/qcom/rpmh-rsc.c @@ -587,27 +587,6 @@ static int find_slots(struct tcs_group *tcs, const struct tcs_request *msg, return 0; } -static int tcs_ctrl_write(struct rsc_drv *drv, const struct tcs_request *msg) -{ - struct tcs_group *tcs; - int tcs_id = 0, cmd_id = 0; - unsigned long flags; - int ret; - - tcs = get_tcs_for_msg(drv, msg); - if (IS_ERR(tcs)) - return PTR_ERR(tcs); - - spin_lock_irqsave(&tcs->lock, flags); - /* find the TCS id and the command in the TCS to write to */ - ret = find_slots(tcs, msg, &tcs_id, &cmd_id); - if (!ret) - __tcs_buffer_write(drv, tcs_id, cmd_id, msg); - spin_unlock_irqrestore(&tcs->lock, flags); - - return ret; -} - /** * rpmh_rsc_write_ctrl_data: Write request to the controller * @@ -618,6 +597,11 @@ static int tcs_ctrl_write(struct rsc_drv *drv, const struct tcs_request *msg) */ int rpmh_rsc_write_ctrl_data(struct rsc_drv *drv, const struct tcs_request *msg) { + struct tcs_group *tcs; + int tcs_id = 0, cmd_id = 0; + unsigned long flags; + int ret; + if (!msg || !msg->cmds || !msg->num_cmds || msg->num_cmds > MAX_RPMH_PAYLOAD) { pr_err("Payload error\n"); @@ -628,7 +612,18 @@ int rpmh_rsc_write_ctrl_data(struct rsc_drv *drv, const struct tcs_request *msg) if (msg->state == RPMH_ACTIVE_ONLY_STATE) return -EINVAL; - return tcs_ctrl_write(drv, msg); + tcs = get_tcs_for_msg(drv, msg); + if (IS_ERR(tcs)) + return PTR_ERR(tcs); + + spin_lock_irqsave(&tcs->lock, flags); + /* find the TCS id and the command in the TCS to write to */ + ret = find_slots(tcs, msg, &tcs_id, &cmd_id); + if (!ret) + __tcs_buffer_write(drv, tcs_id, cmd_id, msg); + spin_unlock_irqrestore(&tcs->lock, flags); + + return ret; } /**