Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

reset: mediatek: Add MT2701 reset driver

In infrasys and perifsys, there are many reset
control bits for kinds of modules. These bits are
used as actual reset controllers to be registered
into kernel's generic reset controller framework.

Signed-off-by: Shunli Wang <shunli.wang@mediatek.com>
Signed-off-by: James Liao <jamesjj.liao@mediatek.com>
Signed-off-by: Erin Lo <erin.lo@mediatek.com>
Tested-by: John Crispin <blogic@openwrt.org>
Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>

authored by

Shunli Wang and committed by
Stephen Boyd
8c1ee96a e9862118

+16 -4
+6 -2
drivers/clk/mediatek/clk-mt2701-hif.c
··· 58 58 clk_data); 59 59 60 60 r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); 61 - if (r) 61 + if (r) { 62 62 dev_err(&pdev->dev, 63 63 "could not register clock provider: %s: %d\n", 64 64 pdev->name, r); 65 + return r; 66 + } 65 67 66 - return r; 68 + mtk_register_reset_controller(node, 1, 0x34); 69 + 70 + return 0; 67 71 } 68 72 69 73 static struct platform_driver clk_mt2701_hif_drv = {
+10 -2
drivers/clk/mediatek/clk-mt2701.c
··· 787 787 infra_clk_data); 788 788 789 789 r = of_clk_add_provider(node, of_clk_src_onecell_get, infra_clk_data); 790 + if (r) 791 + return r; 790 792 791 - return r; 793 + mtk_register_reset_controller(node, 2, 0x30); 794 + 795 + return 0; 792 796 } 793 797 794 798 static const struct mtk_gate_regs peri0_cg_regs = { ··· 910 906 &mt2701_clk_lock, clk_data); 911 907 912 908 r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); 909 + if (r) 910 + return r; 913 911 914 - return r; 912 + mtk_register_reset_controller(node, 2, 0x0); 913 + 914 + return 0; 915 915 } 916 916 917 917 #define MT8590_PLL_FMAX (2000 * MHZ)