Messages in this thread | | | Date | Thu, 21 Apr 2022 11:07:42 +0200 | Subject | Re: [PATCH V2 09/12] clk: mediatek: reset: Add support for input offset and bit from DT | From | AngeloGioacchino Del Regno <> |
| |
Il 20/04/22 15:05, Rex-BC Chen ha scritto: > To use the clock reset function easier, we implement the of_xlate. > This function is only adopted in version MTK_SET_CLR because of > the method of id calculation. > > There is no impact for original use. If the argument number is not > larger than 1, it will return original id. > > With this implementation if we want to set offset 0x120 and bit 16, > we can just write something like "resets = <&infra_rst 0x120 16>;". > > Signed-off-by: Rex-BC Chen <rex-bc.chen@mediatek.com> > --- > drivers/clk/mediatek/reset.c | 24 ++++++++++++++++++++++++ > drivers/clk/mediatek/reset.h | 1 + > 2 files changed, 25 insertions(+) > > diff --git a/drivers/clk/mediatek/reset.c b/drivers/clk/mediatek/reset.c > index 1173111af3ab..dbe812062bf5 100644 > --- a/drivers/clk/mediatek/reset.c > +++ b/drivers/clk/mediatek/reset.c > @@ -59,6 +59,20 @@ static const struct reset_control_ops mtk_reset_ops_set_clr = { > .reset = mtk_reset_set_clr, > }; > > +static int reset_xlate(struct reset_controller_dev *rcdev, > + const struct of_phandle_args *reset_spec) > +{ > + unsigned int offset, bit; > + > + if (reset_spec->args_count <= 1) > + return reset_spec->args[0]; > + > + offset = reset_spec->args[0]; > + bit = reset_spec->args[1]; > + > + return (offset >> 4) * 32 + bit; > +} > + > static const struct reset_control_ops *rst_op[MTK_RST_MAX] = { > [MTK_RST_SIMPLE] = &reset_simple_ops, > [MTK_RST_SET_CLR] = &mtk_reset_ops_set_clr, > @@ -98,6 +112,11 @@ int mtk_clk_register_rst_ctrl(struct device_node *np, > data->rcdev.ops = rst_op[desc->version]; > data->rcdev.of_node = np; > > + if (desc->version == MTK_RST_SET_CLR) {
...following my previous advice to use switch(version), this would fit in just fine :-)
Everything else looks ok.
Cheers, Angelo
| |