Message ID | 20220605165703.1565234-3-michael@amarulasolutions.com |
---|---|
State | New |
Headers | show |
Series |
|
Related | show |
Hi Michael, On 6/5/22 19:57, Michael Trimarchi wrote: > If the clock is used to generate the osc_32k, we need to mark > as critical. clock-critical has no binding description at the moment > but it's defined in linux kernel > > bd71847: pmic@4b { > ... > rohm,reset-snvs-powered; > > #clock-cells = <0>; > clock-critical = <1>; > clocks = <&osc_32k 0>; > clock-output-names = "clk-32k-out"; > ... > } > > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> > --- > drivers/clk/clk-bd718x7.c | 4 ++++ //snip > @@ -100,6 +101,9 @@ static int bd71837_clk_probe(struct platform_device *pdev) > > parent_clk = of_clk_get_parent_name(parent->of_node, 0); > > + of_clk_detect_critical(dev->of_node, 0, &flags); Purely judging the kerneldoc for of_clk_detect_critical - you may have hard time getting this accepted. I think you're working on a very valid problem though. Maybe you could see if you could align your effort with Marek? https://lore.kernel.org/all/20220517235919.200375-1-marex@denx.de/T/#m52d6d0831bf43d5f293e35cb27f3021f278d0564 Best Regards -- Matti
Hi On Mon, Jun 6, 2022 at 7:26 AM Matti Vaittinen <mazziesaccount@gmail.com> wrote: > > Hi Michael, > > On 6/5/22 19:57, Michael Trimarchi wrote: > > If the clock is used to generate the osc_32k, we need to mark > > as critical. clock-critical has no binding description at the moment > > but it's defined in linux kernel > > > > bd71847: pmic@4b { > > ... > > rohm,reset-snvs-powered; > > > > #clock-cells = <0>; > > clock-critical = <1>; > > clocks = <&osc_32k 0>; > > clock-output-names = "clk-32k-out"; > > ... > > } > > > > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> > > --- > > drivers/clk/clk-bd718x7.c | 4 ++++ > > //snip > > > @@ -100,6 +101,9 @@ static int bd71837_clk_probe(struct platform_device *pdev) > > > > parent_clk = of_clk_get_parent_name(parent->of_node, 0); > > > > + of_clk_detect_critical(dev->of_node, 0, &flags); > > Purely judging the kerneldoc for of_clk_detect_critical - you may have > hard time getting this accepted. > This is the reason for RFC. I have already seen the usage of this in ainline/master:drivers/clk/st/clk-flexgen.c: of_clk_detect_critical(np, i, &flex_flags); mainline/master:drivers/clk/st/clkgen-fsyn.c: of_clk_detect_critical(np, fschan, &flags); mainline/master:drivers/clk/st/clkgen-pll.c: of_clk_detect_critical(np, 0, &pll_flags); mainline/master:drivers/clk/st/clkgen-pll.c: of_clk_detect_critical(np, odf, &odf_flags); > I think you're working on a very valid problem though. Maybe you could > see if you could align your effort with Marek? > > https://lore.kernel.org/all/20220517235919.200375-1-marex@denx.de/T/#m52d6d0831bf43d5f293e35cb27f3021f278d0564 > I have seen the Marek patcheset now. I don't know if they works anyway for a clock that is a part of MFD controller Michael > Best Regards > -- Matti > > -- > Matti Vaittinen > Linux kernel developer at ROHM Semiconductors > Oulu Finland > > ~~ When things go utterly wrong vim users can always type :help! ~~ > > Discuss - Estimate - Plan - Report and finally accomplish this: > void do_work(int time) __attribute__ ((const));
Hi Stephen On Mon, Jun 6, 2022 at 7:26 AM Matti Vaittinen <mazziesaccount@gmail.com> wrote: > > Hi Michael, > > On 6/5/22 19:57, Michael Trimarchi wrote: > > If the clock is used to generate the osc_32k, we need to mark > > as critical. clock-critical has no binding description at the moment > > but it's defined in linux kernel > > > > bd71847: pmic@4b { > > ... > > rohm,reset-snvs-powered; > > > > #clock-cells = <0>; > > clock-critical = <1>; > > clocks = <&osc_32k 0>; > > clock-output-names = "clk-32k-out"; > > ... > > } > > > > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> > > --- > > drivers/clk/clk-bd718x7.c | 4 ++++ > > //snip > > > @@ -100,6 +101,9 @@ static int bd71837_clk_probe(struct platform_device *pdev) > > > > parent_clk = of_clk_get_parent_name(parent->of_node, 0); > > > > + of_clk_detect_critical(dev->of_node, 0, &flags); > > Purely judging the kerneldoc for of_clk_detect_critical - you may have > hard time getting this accepted. > > I think you're working on a very valid problem though. Maybe you could > see if you could align your effort with Marek? > > https://lore.kernel.org/all/20220517235919.200375-1-marex@denx.de/T/#m52d6d0831bf43d5f293e35cb27f3021f278d0564 > Old thread but same problem. Is there any way to make this acceptable? any suggestion? Michael > Best Regards > -- Matti > > -- > Matti Vaittinen > Linux kernel developer at ROHM Semiconductors > Oulu Finland > > ~~ When things go utterly wrong vim users can always type :help! ~~ > > Discuss - Estimate - Plan - Report and finally accomplish this: > void do_work(int time) __attribute__ ((const));
diff --git a/drivers/clk/clk-bd718x7.c b/drivers/clk/clk-bd718x7.c index 04cc0beb67df..5088379ec2b7 100644 --- a/drivers/clk/clk-bd718x7.c +++ b/drivers/clk/clk-bd718x7.c @@ -83,6 +83,7 @@ static int bd71837_clk_probe(struct platform_device *pdev) const char *parent_clk; struct device *dev = &pdev->dev; struct device *parent = pdev->dev.parent; + unsigned long flags; struct clk_init_data init = { .name = "bd718xx-32k-out", .ops = &bd71837_clk_ops, @@ -100,6 +101,9 @@ static int bd71837_clk_probe(struct platform_device *pdev) parent_clk = of_clk_get_parent_name(parent->of_node, 0); + of_clk_detect_critical(dev->of_node, 0, &flags); + init.flags = flags; + init.parent_names = &parent_clk; if (!parent_clk) { dev_err(dev, "No parent clk found\n");
If the clock is used to generate the osc_32k, we need to mark as critical. clock-critical has no binding description at the moment but it's defined in linux kernel bd71847: pmic@4b { ... rohm,reset-snvs-powered; #clock-cells = <0>; clock-critical = <1>; clocks = <&osc_32k 0>; clock-output-names = "clk-32k-out"; ... } Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> --- drivers/clk/clk-bd718x7.c | 4 ++++ 1 file changed, 4 insertions(+)