]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00160547 vpu: Add vpu_reset function in arch/arm for i.mx6q
authorSammy He <r62914@freescale.com>
Fri, 21 Oct 2011 16:45:25 +0000 (00:45 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:33:17 +0000 (08:33 +0200)
Add vpu hardware reset function for i.mx6q platform.

Signed-off-by: Sammy He <r62914@freescale.com>
arch/arm/plat-mxc/devices/platform-imx_vpu.c

index b4edb91c12edcd317238f74c9d3fc969d01b57b8..ed30bc7882b88ba46e82517d7c629eea837b1fa9 100755 (executable)
@@ -110,9 +110,30 @@ const struct imx_vpu_data imx53_vpu_data __initconst =
 #endif
 
 #ifdef CONFIG_SOC_IMX6Q
+void mx6q_vpu_reset(void)
+{
+       u32 reg;
+       void __iomem *src_base;
+
+       src_base = ioremap(SRC_BASE_ADDR, PAGE_SIZE);
+
+       /* mask interrupt due to vpu passed reset */
+       reg = __raw_readl(src_base + 0x18);
+       reg |= 0x02;
+        __raw_writel(reg, src_base + 0x18);
+
+       reg = __raw_readl(src_base);
+       reg |= 0x5;    /* warm reset vpu */
+       __raw_writel(reg, src_base);
+       while (__raw_readl(src_base) & 0x04)
+               ;
+
+       iounmap(src_base);
+}
+
 const struct imx_vpu_data imx6q_vpu_data __initconst =
                        imx6_vpu_data_entry_single(MX6Q,
-                       true, 0x21000, NULL, NULL);
+                       true, 0x21000, mx6q_vpu_reset, NULL);
 #endif
 
 struct platform_device *__init imx_add_vpu(