2015-11-19 03:32:44

by Wu, Songjun

[permalink] [raw]
Subject: [PATCH] ASoC: Atmel: ClassD: Set GCK's parent clock

Set GCK's parent clock as audio clock, make
sure the GCK's parent clock is audio clock.

Signed-off-by: Songjun Wu <[email protected]>
---

sound/soc/atmel/atmel-classd.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/sound/soc/atmel/atmel-classd.c b/sound/soc/atmel/atmel-classd.c
index 8276675..2f5190b 100644
--- a/sound/soc/atmel/atmel-classd.c
+++ b/sound/soc/atmel/atmel-classd.c
@@ -588,6 +588,12 @@ static int atmel_classd_probe(struct platform_device *pdev)
return ret;
}

+ ret = clk_set_parent(dd->gclk, dd->aclk);
+ if (ret) {
+ dev_err(dev, "failed to set GCK parent clock: %d\n", ret);
+ return ret;
+ }
+
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) {
dev_err(dev, "no memory resource\n");
--
1.7.9.5


2015-11-20 18:09:17

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] ASoC: Atmel: ClassD: Set GCK's parent clock

On Thu, Nov 19, 2015 at 11:26:30AM +0800, Songjun Wu wrote:
> Set GCK's parent clock as audio clock, make
> sure the GCK's parent clock is audio clock.

> + ret = clk_set_parent(dd->gclk, dd->aclk);
> + if (ret) {
> + dev_err(dev, "failed to set GCK parent clock: %d\n", ret);
> + return ret;
> + }

Why are we doing this in the driver? This should be done by whatever
creates the clock tree, not by the driver that uses the clocks - that
way if some future SoC has a different clock tree the driver will
continue to work.


Attachments:
(No filename) (526.00 B)
signature.asc (473.00 B)
Download all attachments

2015-11-23 03:02:14

by Wu, Songjun

[permalink] [raw]
Subject: Re: [PATCH] ASoC: Atmel: ClassD: Set GCK's parent clock



On 11/21/2015 02:08, Mark Brown wrote:
> On Thu, Nov 19, 2015 at 11:26:30AM +0800, Songjun Wu wrote:
>> Set GCK's parent clock as audio clock, make
>> sure the GCK's parent clock is audio clock.
>
>> + ret = clk_set_parent(dd->gclk, dd->aclk);
>> + if (ret) {
>> + dev_err(dev, "failed to set GCK parent clock: %d\n", ret);
>> + return ret;
>> + }
>
> Why are we doing this in the driver? This should be done by whatever
> creates the clock tree, not by the driver that uses the clocks - that
> way if some future SoC has a different clock tree the driver will
> continue to work.
>

You are right. The GCK's parent clock should be assigned in device tree,
not in the driver. The DT binding for classD should be modified to set
the GCK's parent clock as audio clock.
Thank you.