Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp5205817pxb; Tue, 5 Oct 2021 20:55:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwEYV10GNDK2Xz5CQZgu65x/tX0dZVOZiRdQ6EZHahAsUL5cAG4F/dAW2aWcKI1qwbvcMvJ X-Received: by 2002:a17:90b:3e8e:: with SMTP id rj14mr3836788pjb.170.1633492500724; Tue, 05 Oct 2021 20:55:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633492500; cv=none; d=google.com; s=arc-20160816; b=MsMvaTEVgSGeNKBKxe3YKO4/ezB8kpOQhDV0WWCL7YAivD+ZQWLYyrzrUMwCxQaoYp UN5sq53BzlIYA0OpBuCM6PnPiDEgGooWN03HiOGnM5vJLmLU0OpTIEnptu/aEtUuVKwf Wt46pLtsOo5C8MgE2nqtXzYMZvReO00uk7tNVY2fjt6xwjoO6S3khJPNx8kAbg4EAs6r Eh4YvvTltqZ5x8vLisapJGaa68g2iPX6yGfgDStdjvcxwHgeBDY8BqZY7NQr72MT4RNL I6m55s39DDB6RgY+rjVGlsmrjtmqzVb/znHh/U/rCHvmU2WH8KZJueNFUPeN996L3BAC G8CA== 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=xiLuOKz2kvk1cz4G50uNXXciKxmoQzaWMMylpBwCLy8=; b=tiwNtr7c9Y76Spxii1HPyp92PoAnydL1uWN2iSxz5YeKwGSTZ5ReoLRYeOKVXMARYj LeG+le20omHeOyDYQjLd2pwZU4/inyLWZUc1YbPqMQ2pmoELNoovhnZZL4Zm/7Q6Qf2D cRzeBgdxIHPV8lWLfnTl3jMiE99FxEwtR4vdpISyTAQsjtRCpaXp6pfbi+CRlPaj2npj DxVT1DU3jjErCyXwFizmQguGKZcJ9Xw8NzSAYbIarDDZcCmJjt7VngS9/rjH8UM97gkg 05D9/hg6Wm3HFAlAmAzgba4Lr/RN+x3vJYhRHEWOZakv96KfjLciTrYUdYmOiTbToWOz Cp5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=polX0w89; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-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 n9si4429076pjf.11.2021.10.05.20.54.51; Tue, 05 Oct 2021 20:55:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-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=polX0w89; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-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 S237425AbhJFD4N (ORCPT + 75 others); Tue, 5 Oct 2021 23:56:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32962 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237346AbhJFD4J (ORCPT ); Tue, 5 Oct 2021 23:56:09 -0400 Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com [IPv6:2a00:1450:4864:20::130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5938FC061760 for ; Tue, 5 Oct 2021 20:54:17 -0700 (PDT) Received: by mail-lf1-x130.google.com with SMTP id x27so4575274lfu.5 for ; Tue, 05 Oct 2021 20:54:17 -0700 (PDT) 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=xiLuOKz2kvk1cz4G50uNXXciKxmoQzaWMMylpBwCLy8=; b=polX0w89CVBCN2mcuowNKfbRPyuzDIzwQxcUMvp3pSgIs1y7JVQpWtngRvq+waMU7b YNbLlO3w4Xb2/8f6XEubs/qJUOtQznrQBL7S2ecUcLV70S99fUjf2ZLGhnphtztogFJD w2ISSBLMGCOuMxGu1HjknOvyTtLj1b6S+cTqqBQr2EFtcwZaBnukHF8D0cMZM0tnx0nI uCV3MQ398im1coHH4Usy3IV2fXVi0Fbt1Xaj7AZyBH+aVkmKGsxd3nbtmF9TFr7DYgvV K4jnBP31CLG9cegrjQl9fWMYbNN4TUdiby8W9Rl0yr8BmdtlXAb9MIJWsfalRQ0iUxqQ XBfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=xiLuOKz2kvk1cz4G50uNXXciKxmoQzaWMMylpBwCLy8=; b=QW2D544Gb/Hwn+O8hpayde3NfwMUiZALDcN7VkVRgkLr9YZWWDip12kIOTNu1JdHGJ ggHDiZMUO1sI60SX07XBFBsLRGOIrbNj+xXxJxmBUdWsV5fsQhlKaFuRvrIVlatpZHMf J1ycypGRm/ETtuTz1HDkxXDZqRScpATZaSAhIla00qRxTCOSnhez55NCzE4uQQ6+Vhc6 lVbJJ0qddEeoSZM8VRmDJBOewfdBA59vCUa5wgWrXsIwErvGFCZyjtkaYa9ia4cEZfIb Dl0XExIRw/h38ZXnR/NRhT8bJfzZxSLFpYo15eRJ/z621c9ZmIj3/9sLCjlgzJoq4mJK 67jw== X-Gm-Message-State: AOAM531l4is+7NVOQNBRPqSyiTqq5XlmdlOAbrI9Qrx1y9I3fphNnEeI os0Zkwe8Lz6nogCwaYv0KZMDQQ== X-Received: by 2002:ac2:4e0d:: with SMTP id e13mr7012924lfr.560.1633492455635; Tue, 05 Oct 2021 20:54:15 -0700 (PDT) Received: from eriador.lan ([37.153.55.125]) by smtp.gmail.com with ESMTPSA id s4sm2142967lfd.103.2021.10.05.20.54.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Oct 2021 20:54:15 -0700 (PDT) From: Dmitry Baryshkov To: Andy Gross , Bjorn Andersson , Ulf Hansson , Marcel Holtmann , Johan Hedberg , Luiz Augusto von Dentz , Kalle Valo , "David S. Miller" , Jakub Kicinski , Stanimir Varbanov Cc: linux-arm-msm@vger.kernel.org, linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-bluetooth@vger.kernel.org, ath10k@lists.infradead.org, linux-wireless@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v1 05/15] pwrseq: implement onecell helper Date: Wed, 6 Oct 2021 06:53:57 +0300 Message-Id: <20211006035407.1147909-6-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211006035407.1147909-1-dmitry.baryshkov@linaro.org> References: <20211006035407.1147909-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Provide of_pwrseq_xlate_onecell() - a helper easing implementation of power sequencers using one cell to determine pwrseq instance to return. Signed-off-by: Dmitry Baryshkov --- drivers/power/pwrseq/core.c | 26 ++++++++++++++++++++++++++ include/linux/pwrseq/driver.h | 12 ++++++++++++ 2 files changed, 38 insertions(+) diff --git a/drivers/power/pwrseq/core.c b/drivers/power/pwrseq/core.c index 0aaba4e79a44..3dffa52f65ee 100644 --- a/drivers/power/pwrseq/core.c +++ b/drivers/power/pwrseq/core.c @@ -449,6 +449,32 @@ struct pwrseq_provider *__devm_of_pwrseq_provider_register(struct device *dev, } EXPORT_SYMBOL_GPL(__devm_of_pwrseq_provider_register); +/** + * of_pwrseq_xlate_single() - returns the pwrseq instance from pwrseq provider using single index + * @data: the pwrseq provider data, struct pwrseq_onecell_data + * @args: of_phandle_args containing single integer index + * + * Intended to be used by pwrseq provider for the common case where + * #pwrseq-cells is 1. It will return corresponding pwrseq instance. + */ +struct pwrseq *of_pwrseq_xlate_onecell(void *data, struct of_phandle_args *args) +{ + struct pwrseq_onecell_data *pwrseq_data = data; + unsigned int idx; + + if (args->args_count != 1) + return ERR_PTR(-EINVAL); + + idx = args->args[0]; + if (idx >= pwrseq_data->num) { + pr_err("%s: invalid index %u\n", __func__, idx); + return ERR_PTR(-EINVAL); + } + + return pwrseq_data->pwrseqs[idx]; +} +EXPORT_SYMBOL_GPL(of_pwrseq_xlate_onecell); + static int __init pwrseq_core_init(void) { return class_register(&pwrseq_class); diff --git a/include/linux/pwrseq/driver.h b/include/linux/pwrseq/driver.h index 0ca1d0311ab6..8d46940981bf 100644 --- a/include/linux/pwrseq/driver.h +++ b/include/linux/pwrseq/driver.h @@ -157,4 +157,16 @@ static inline struct pwrseq *of_pwrseq_xlate_single(void *data, return data; } +/** + * struct pwrseq_onecell_data - pwrseq data for of_pwrseq_xlate_onecell + * @num: amount of instances in @owrseqs + * @pwrseqs: array of pwrseq instances + */ +struct pwrseq_onecell_data { + unsigned int num; + struct pwrseq *pwrseqs[]; +}; + +struct pwrseq *of_pwrseq_xlate_onecell(void *data, struct of_phandle_args *args); + #endif /* __LINUX_PWRSEQ_DRIVER_H__ */ -- 2.33.0