Re: [PATCH v4 1/4] clk: qcom: branch: Add clk_branch2_mdio_ops

From: Bjorn Andersson
Date: Thu Aug 17 2023 - 23:27:19 EST


On Tue, Aug 15, 2023 at 04:52:02PM +0800, Luo Jie wrote:
> Add the clk_branch2_mdio_ops for supporting clock controller
> where the hardware register is accessed by MDIO bus, and the
> spin clock can't be used because of sleep during the MDIO

spin clock?

I believe you're trying to say that the underlying access to the MDIO
bus can not be done in non-sleepable context and we can therefor not use
enable/disable to operate it?

> operation.
>
> The clock is enabled by the .prepare instead of .enable when
> the clk_branch2_mdio_ops is used.
>
> Signed-off-by: Luo Jie <quic_luoj@xxxxxxxxxxx>
> ---
> drivers/clk/qcom/clk-branch.c | 7 +++++++
> drivers/clk/qcom/clk-branch.h | 1 +
> 2 files changed, 8 insertions(+)
>
> diff --git a/drivers/clk/qcom/clk-branch.c b/drivers/clk/qcom/clk-branch.c
> index fc4735f74f0f..5e08c026ca4a 100644
> --- a/drivers/clk/qcom/clk-branch.c
> +++ b/drivers/clk/qcom/clk-branch.c
> @@ -153,3 +153,10 @@ const struct clk_ops clk_branch_simple_ops = {
> .is_enabled = clk_is_enabled_regmap,
> };
> EXPORT_SYMBOL_GPL(clk_branch_simple_ops);
> +
> +const struct clk_ops clk_branch2_mdio_ops = {
> + .prepare = clk_branch2_enable,
> + .unprepare = clk_branch2_disable,

I see none of the clocks specify halt_check, which would imply that
these two calls just turns into clk_enable_regmap() and
clk_disable_regmap().

So, isn't this then equivalent to clk_branch_simple_ops?

Regards,
Bjorn

> + .is_prepared = clk_is_enabled_regmap,
> +};
> +EXPORT_SYMBOL_GPL(clk_branch2_mdio_ops);
> diff --git a/drivers/clk/qcom/clk-branch.h b/drivers/clk/qcom/clk-branch.h
> index 0cf800b9d08d..4b006e8eec5e 100644
> --- a/drivers/clk/qcom/clk-branch.h
> +++ b/drivers/clk/qcom/clk-branch.h
> @@ -85,6 +85,7 @@ 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;
> extern const struct clk_ops clk_branch2_aon_ops;
> +extern const struct clk_ops clk_branch2_mdio_ops;
>
> #define to_clk_branch(_hw) \
> container_of(to_clk_regmap(_hw), struct clk_branch, clkr)
> --
> 2.17.1
>