Clock problems in i.MX27 Visstrim M10 (linux-3.5-rc5).
javier Martin
javier.martin at vista-silicon.com
Wed Jul 4 04:30:40 EDT 2012
On 4 July 2012 09:48, javier Martin <javier.martin at vista-silicon.com> wrote:
> Hi,
>
> On 3 July 2012 15:13, Fabio Estevam <festevam at gmail.com> wrote:
>> Hi Javier,
>>
>> On Tue, Jul 3, 2012 at 8:09 AM, javier Martin
>> <javier.martin at vista-silicon.com> wrote:
>>> Hi,
>>> I've found the following problems in linux-3.5-rc5
>>> (6887a4131da3adaab011613776d865f4bcfb5678) in our Visstrim M10 board:
>>
>> Could you please try the two attached patches?
>>
>> They should fix the dma and mx2-camera issues.
>>
>> I will try to look at the ssi problem, but my mx27pdk board still does
>> not have audio supported.
>>
>> Regards,
>>
>
> thanks for the patches. The first one solves the issue with the audio.
> Now I can do an aplay properly too.
>
> However, second patch for the mx2-camera seems that it's not right
> yet. I get a timeout here:
>
> static int mx27_camera_emma_prp_reset(struct mx2_camera_dev *pcdev)
> {
> u32 cntl;
> int count = 0;
>
> cntl = readl(pcdev->base_emma + PRP_CNTL);
> writel(PRP_CNTL_SWRST, pcdev->base_emma + PRP_CNTL);
> while (count++ < 100) {
> if (!(readl(pcdev->base_emma + PRP_CNTL) & PRP_CNTL_SWRST))
> return 0;
> barrier();
> udelay(1);
> }
>
> return -ETIMEDOUT;
> }
>
> Keeping this in mind I infer that probably emma clocks have not been
> properly enabled.
>
The problem is that in 'clk-imx27.c' the clocks for the emma are
defined as follows:
clk_register_clkdev(clk[emma_ahb_gate], "ahb", "imx-emma");
clk_register_clkdev(clk[emma_ipg_gate], "ipg", "imx-emma");
However, in the patch you submitted they are requested as shown:
pcdev->clk_emma_ipg = devm_clk_get(&pdev->dev, "ipg");
if (IS_ERR(pcdev->clk_emma_ipg)) {
err = PTR_ERR(pcdev->clk_emma_ipg);
goto exit_kfree;
}
pcdev->clk_emma_ahb = devm_clk_get(&pdev->dev, "ahb");
if (IS_ERR(pcdev->clk_emma_ahb)) {
err = PTR_ERR(pcdev->clk_emma_ahb);
goto exit_kfree;
}
Which means the dev_id used is "mx2-camera.0" instead of "imx-emma".
We cannot change the name in 'clk-imx27.c' to "mx2-camera.0" since
there is another device "mx2_emmaprp.c" which uses these clocks,
unless two different names can be associated with the same clock.
The other option, which is dirty but works, is using the following to
request clocks:
pcdev->clk_emma_ipg = clk_get_sys("imx-emma", "ipg");
if (IS_ERR(pcdev->clk_emma_ipg)) {
err = PTR_ERR(pcdev->clk_emma_ipg);
goto exit_kfree;
}
pcdev->clk_emma_ahb = clk_get_sys("imx-emma", "ahb");
if (IS_ERR(pcdev->clk_emma_ahb)) {
err = PTR_ERR(pcdev->clk_emma_ahb);
goto exit_kfree;
}
What do you think?
Regards.
--
Javier Martin
Vista Silicon S.L.
CDTUC - FASE C - Oficina S-345
Avda de los Castros s/n
39005- Santander. Cantabria. Spain
+34 942 25 32 60
www.vista-silicon.com
More information about the linux-arm-kernel
mailing list