summaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-05-06 12:58:37 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-05-09 17:41:45 +0200
commitf864768cf968c8a560d3525beeece77afd77da5c (patch)
tree566d5d19b9ae725d43365921d8aee96397c65478 /drivers/video
parent104219616fbf1717eb2af9358c7673e62dce35bf (diff)
downloadbarebox-f864768cf968c8a560d3525beeece77afd77da5c.tar.gz
barebox-f864768cf968c8a560d3525beeece77afd77da5c.tar.xz
video: i.MX IPUv3: Implement i.MX5 IPU reset support
Needed to make the IPU driver work on i.MX5 Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/imx-ipu-v3/ipu-common.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/video/imx-ipu-v3/ipu-common.c b/drivers/video/imx-ipu-v3/ipu-common.c
index 5f3b0bb66d..c60236343a 100644
--- a/drivers/video/imx-ipu-v3/ipu-common.c
+++ b/drivers/video/imx-ipu-v3/ipu-common.c
@@ -22,6 +22,8 @@
#include <asm/mmu.h>
#include <mach/generic.h>
#include <mach/imx6-regs.h>
+#include <mach/imx53-regs.h>
+#include <mach/imx51-regs.h>
#include "imx-ipu-v3.h"
#include "ipu-prv.h"
@@ -529,6 +531,31 @@ static int imx6_ipu_reset(struct ipu_soc *ipu)
}
+static int imx5_ipu_reset(void __iomem *src_base)
+{
+ uint32_t val;
+ int ret;
+
+ val = ipureadl(src_base);
+ val |= (1 << 3);
+ ipuwritel("reset", val, src_base);
+
+ ret = wait_on_timeout(100 * MSECOND, !(readl(src_base) & (1 << 3)));
+
+ return ret;
+
+}
+
+static int imx51_ipu_reset(struct ipu_soc *ipu)
+{
+ return imx5_ipu_reset((void *)MX51_SRC_BASE_ADDR);
+}
+
+static int imx53_ipu_reset(struct ipu_soc *ipu)
+{
+ return imx5_ipu_reset((void *)MX53_SRC_BASE_ADDR);
+}
+
struct ipu_devtype {
const char *name;
unsigned long cm_ofs;
@@ -554,6 +581,7 @@ static struct ipu_devtype ipu_type_imx51 = {
.dc_tmpl_ofs = 0x1f080000,
.vdi_ofs = 0x1e068000,
.type = IPUV3EX,
+ .reset = imx51_ipu_reset,
};
static struct ipu_devtype ipu_type_imx53 = {
@@ -567,6 +595,7 @@ static struct ipu_devtype ipu_type_imx53 = {
.dc_tmpl_ofs = 0x07080000,
.vdi_ofs = 0x06068000,
.type = IPUV3M,
+ .reset = imx53_ipu_reset,
};
static struct ipu_devtype ipu_type_imx6q = {