Clock problems in i.MX27 Visstrim M10 (linux-3.5-rc5).
From: javier Martin <hidden>
Date: 2012-07-04 08:30:40
On 4 July 2012 09:48, javier Martin [off-list ref] wrote:
Hi, On 3 July 2012 15:13, Fabio Estevam [off-list ref] wrote:quoted
Hi Javier, On Tue, Jul 3, 2012 at 8:09 AM, javier Martin [off-list ref] wrote:quoted
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