Message ID | 20220519071610.423372-1-wenst@chromium.org (mailing list archive) |
---|---|
Headers | show |
Series | clk: mediatek: Move to struct clk_hw provider APIs | expand |
Quoting Chen-Yu Tsai (2022-05-19 00:16:08) > As part of the effort to improve the MediaTek clk drivers, the next step > is to switch from the old 'struct clk' clk prodivder APIs to the new > 'struct clk_hw' ones. > > Instead of adding new APIs to the MediaTek clk driver library mirroring > the existing ones, moving all drivers to the new APIs, and then removing > the old ones, just migrate everything at the same time. This involves > replacing 'struct clk' with 'struct clk_hw', and 'struct clk_onecell_data' > with 'struct clk_hw_onecell_data', and fixing up all usages. > > For now, the clk_register() and co. usage is retained, with __clk_get_hw() > and (struct clk_hw *)->clk used to bridge the difference between the APIs. > These will be replaced in subsequent patches. > > Fix up mtk_{alloc,free}_clk_data to use 'struct clk_hw' by hand. Fix up > all other affected call sites with the following coccinelle script. > > // Replace type > @@ > @@ > - struct clk_onecell_data > + struct clk_hw_onecell_data > > // Replace of_clk_add_provider() & of_clk_src_simple_get() > @@ > expression NP, DATA; > symbol of_clk_src_onecell_get; > @@ > - of_clk_add_provider( > + of_clk_add_hw_provider( > NP, > - of_clk_src_onecell_get, > + of_clk_hw_onecell_get, > DATA > ) > > // Fix register/unregister > @@ > identifier CD; > expression E; > identifier fn =~ "unregister"; > @@ > fn(..., > - CD->clks[E] > + CD->hws[E]->clk > ,... > ); > > // Fix calls to clk_prepare_enable() > @@ > identifier CD; > expression E; > @@ > clk_prepare_enable( > - CD->clks[E] > + CD->hws[E]->clk > ); > > // Fix pointer assignment > @@ > identifier CD; > identifier CLK; > expression E; > @@ > - CD->clks[E] > + CD->hws[E] > = > ( > - CLK > + __clk_get_hw(CLK) > | > ERR_PTR(...) > ) > ; > > // Fix pointer usage > @@ > identifier CD; > expression E; > @@ > - CD->clks[E] > + CD->hws[E] > > // Fix mtk_clk_pll_get_base() > @@ > symbol clk, hw, data; > @@ > mtk_clk_pll_get_base( > - struct clk *clk, > + struct clk_hw *hw, > const struct mtk_pll_data *data > ) { > - struct clk_hw *hw = __clk_get_hw(clk); > ... > } > > // Fix mtk_clk_pll_get_base() usage > @@ > identifier CD; > expression E; > @@ > mtk_clk_pll_get_base( > - CD->clks[E] > + CD->hws[E]->clk > ,... > ); > > Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> > Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > Reviewed-by: Miles Chen <miles.chen@mediatek.com> > Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > Tested-by: Miles Chen <miles.chen@mediatek.com> > --- Applied to clk-next