Message ID | 3a3c198707a69297abc05d2a7fef97857e7fab5a.1520327262.git.ryder.lee@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Quoting Ryder Lee (2018-03-06 01:09:27) > @@ -150,12 +151,15 @@ static int clk_mt7622_audiosys_init(struct platform_device *pdev) > clk_data); > > r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); > - if (r) > + if (r) { > dev_err(&pdev->dev, > "could not register clock provider: %s: %d\n", > pdev->name, r); > > - return r; > + return r; > + } > + > + return devm_of_platform_populate(&pdev->dev); And now we fail to remove the clk provider when this fails. > } > > static const struct of_device_id of_match_clk_mt7622_aud[] = { > -- > 1.9.1 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
diff --git a/drivers/clk/mediatek/clk-mt7622-aud.c b/drivers/clk/mediatek/clk-mt7622-aud.c index 13f752d..0a1109f 100644 --- a/drivers/clk/mediatek/clk-mt7622-aud.c +++ b/drivers/clk/mediatek/clk-mt7622-aud.c @@ -142,6 +142,7 @@ static int clk_mt7622_audiosys_init(struct platform_device *pdev) { struct clk_onecell_data *clk_data; struct device_node *node = pdev->dev.of_node; + int r; clk_data = mtk_alloc_clk_data(CLK_AUDIO_NR_CLK); @@ -150,12 +151,15 @@ static int clk_mt7622_audiosys_init(struct platform_device *pdev) clk_data); r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); - if (r) + if (r) { dev_err(&pdev->dev, "could not register clock provider: %s: %d\n", pdev->name, r); - return r; + return r; + } + + return devm_of_platform_populate(&pdev->dev); } static const struct of_device_id of_match_clk_mt7622_aud[] = {
Add devm_of_platform_populate() to populate devices which are children of the root node. Signed-off-by: Ryder Lee <ryder.lee@mediatek.com> --- drivers/clk/mediatek/clk-mt7622-aud.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)