From: Abel Vesa <abel.vesa@linaro.org>
To: Bjorn Andersson <bjorn.andersson@linaro.org>,
Andy Gross <agross@kernel.org>,
Konrad Dybcio <konrad.dybcio@somainline.org>,
Mike Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>
Cc: linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Abel Vesa <abel.vesa@linaro.org>
Subject: [RFC 5/9] clk: qcom: branch: Add macros to collapse definition
Date: Tue, 26 Jul 2022 17:22:59 +0300 [thread overview]
Message-ID: <20220726142303.4126434-6-abel.vesa@linaro.org> (raw)
In-Reply-To: <20220726142303.4126434-1-abel.vesa@linaro.org>
Add macros for a visually more compact branch clocks definition,
one for the common branch and one for branch_aon. They differ
from ops point of view, like their name suggest. There are also
three different macros to define the clk.hw.init depending on the
number and type of parent passed on as argument. Also, the macros
added here are only the ones used by gcc-sdm845 driver.
More will be added later on.
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
---
drivers/clk/qcom/clk-branch.h | 82 +++++++++++++++++++++++++++++++++++
1 file changed, 82 insertions(+)
diff --git a/drivers/clk/qcom/clk-branch.h b/drivers/clk/qcom/clk-branch.h
index 17a58119165e..a12ffebf0e5f 100644
--- a/drivers/clk/qcom/clk-branch.h
+++ b/drivers/clk/qcom/clk-branch.h
@@ -37,6 +37,88 @@ struct clk_branch {
struct clk_regmap clkr;
};
+#define INIT_QCOM_CC_CLKR_HW_2(_name, _flags, _ops, _fw_name) \
+ { \
+ .name = #_name, \
+ .parent_data = &(const struct clk_parent_data) { \
+ .fw_name = _fw_name, \
+ .name = _fw_name, \
+ }, \
+ .num_parents = 1, \
+ .flags = _flags, \
+ .ops = _ops, \
+ }
+
+#define INIT_QCOM_CC_CLKR_HW_1(_name, _flags, _ops, _parent_hw) \
+ { \
+ .name = #_name, \
+ .parent_data = &(const struct clk_parent_data) { \
+ .hw = _parent_hw, \
+ }, \
+ .num_parents = 1, \
+ .flags = _flags, \
+ .ops = _ops, \
+ }
+
+#define INIT_QCOM_CC_CLKR_HW_0(_name, _flags, _ops, ...) \
+ { \
+ .name = #_name, \
+ .flags = _flags, \
+ .ops = _ops, \
+ }
+
+#define INIT_QCOM_CC_CLKR(_num_parents, _enable_reg, _enable_mask, \
+ _name, _flags, _ops, ...) \
+ { \
+ .enable_reg = _enable_reg, \
+ .enable_mask = _enable_mask, \
+ .hw.init = &(struct clk_init_data) \
+ INIT_QCOM_CC_CLKR_HW_##_num_parents(_name, \
+ _flags, \
+ _ops, __VA_ARGS__), \
+ }
+
+#define __DEFINE_QCOM_CC_CLK_BRANCH(_halt_check, _name, _num_parents, \
+ _halt_reg, \
+ _hwcg_reg, _hwcg_bit, \
+ _enable_reg, _enable_mask, \
+ _flags, _ops, ...) \
+ static struct clk_branch _name = { \
+ .halt_reg = _halt_reg, \
+ .halt_check = BRANCH_##_halt_check, \
+ .hwcg_reg = _hwcg_reg, \
+ .hwcg_bit = _hwcg_bit, \
+ .clkr = INIT_QCOM_CC_CLKR(_num_parents, _enable_reg, \
+ _enable_mask, \
+ _name, _flags, \
+ _ops, __VA_ARGS__), \
+ }
+
+#define DEFINE_QCOM_CC_CLK_BRANCH(_halt_check, _name, _num_parents, \
+ _halt_reg, \
+ _hwcg_reg, _hwcg_bit, \
+ _enable_reg, _enable_mask, \
+ _flags, ...) \
+ __DEFINE_QCOM_CC_CLK_BRANCH(_halt_check, _name, _num_parents, \
+ _halt_reg, \
+ _hwcg_reg, _hwcg_bit, \
+ _enable_reg, _enable_mask, \
+ _flags, \
+ &clk_branch2_ops, __VA_ARGS__)
+
+#define DEFINE_QCOM_CC_CLK_BRANCH_AON(_halt_check, _name, _num_parents, \
+ _halt_reg, \
+ _hwcg_reg, _hwcg_bit, \
+ _enable_reg, _enable_mask, \
+ _flags, ...) \
+ __DEFINE_QCOM_CC_CLK_BRANCH(_halt_check, _name, _num_parents, \
+ _halt_reg, \
+ _hwcg_reg, _hwcg_bit, \
+ _enable_reg, _enable_mask, \
+ _flags, \
+ &clk_branch2_aon_ops, \
+ __VA_ARGS__)
+
extern const struct clk_ops clk_branch_ops;
extern const struct clk_ops clk_branch2_ops;
extern const struct clk_ops clk_branch_simple_ops;
--
2.34.3
next prev parent reply other threads:[~2022-07-26 14:23 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-26 14:22 [RFC 0/9] clk: qcom: gcc-sdm845: Swicth from expanded definitions to compact macros Abel Vesa
2022-07-26 14:22 ` [RFC 1/9] clk: qcom: qcc-sdm845: Collapse gdsc structs into macros Abel Vesa
2022-07-26 16:36 ` Dmitry Baryshkov
2022-08-09 20:25 ` Bjorn Andersson
2022-08-10 7:45 ` Abel Vesa
2022-07-26 14:22 ` [RFC 2/9] clk: qcom: gcc-sdm845: Switch from parent_hws to parent_data Abel Vesa
2022-07-26 14:22 ` [RFC 3/9] clk: qcom: rcg: Add macros to collapse definition Abel Vesa
2022-07-26 16:39 ` Dmitry Baryshkov
2022-07-26 14:22 ` [RFC 4/9] clk: qcom: alpha-pll: " Abel Vesa
2022-07-26 14:22 ` Abel Vesa [this message]
2022-07-26 14:23 ` [RFC 6/9] clk: qcom: common: Add macro wrapper for all clock types Abel Vesa
2022-07-26 16:48 ` Dmitry Baryshkov
2022-07-26 14:23 ` [RFC 7/9] clk: qcom: gcc-sdm845: Switch to macros to collapse branch clocks definitions Abel Vesa
2022-07-26 14:23 ` [RFC 8/9] clk: qcom: gcc-sdm845: Switch to macros to collapse rcg2 " Abel Vesa
2022-07-26 16:47 ` Dmitry Baryshkov
2022-07-26 14:23 ` [RFC 9/9] clk: qcom: gcc-sdm845: Switch to macros to collapse alpha-pll " Abel Vesa
2022-07-26 19:16 ` [RFC 0/9] clk: qcom: gcc-sdm845: Swicth from expanded definitions to compact macros Konrad Dybcio
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220726142303.4126434-6-abel.vesa@linaro.org \
--to=abel.vesa@linaro.org \
--cc=agross@kernel.org \
--cc=bjorn.andersson@linaro.org \
--cc=konrad.dybcio@somainline.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=sboyd@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox