summaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-05-06 12:58:54 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-05-09 17:41:45 +0200
commit5910c62a671be081995f5f30681b6881d1257258 (patch)
treebc3d421ff1ad3827bc0c5e0499b75134078ffa8d /drivers/video
parentf864768cf968c8a560d3525beeece77afd77da5c (diff)
downloadbarebox-5910c62a671be081995f5f30681b6881d1257258.tar.gz
barebox-5910c62a671be081995f5f30681b6881d1257258.tar.xz
video: i.MX IPUv3 ldb: implement i.MX53 support
Configure the clock path correctly for i.MX53. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/imx-ipu-v3/imx-ldb.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/drivers/video/imx-ipu-v3/imx-ldb.c b/drivers/video/imx-ipu-v3/imx-ldb.c
index bbdbe40339..70429eb5d8 100644
--- a/drivers/video/imx-ipu-v3/imx-ldb.c
+++ b/drivers/video/imx-ipu-v3/imx-ldb.c
@@ -190,7 +190,36 @@ static int imx6q_ldb_prepare(struct imx_ldb_channel *imx_ldb_ch, int di)
static int imx53_ldb_prepare(struct imx_ldb_channel *imx_ldb_ch, int di)
{
- return -ENOSYS;
+ struct clk *diclk, *ldbclk;
+ struct imx_ldb *ldb = imx_ldb_ch->ldb;
+ int ret, dino;
+ char *clkname;
+
+ dino = di & 0x1;
+
+ clkname = asprintf("ipu_di%d_sel", dino);
+ diclk = clk_lookup(clkname);
+ free(clkname);
+ if (IS_ERR(diclk)) {
+ dev_err(ldb->dev, "failed to get di clk: %s\n", strerror(PTR_ERR(diclk)));
+ return PTR_ERR(diclk);
+ }
+
+ clkname = asprintf("ldb_di%d_div", imx_ldb_ch->chno);
+ ldbclk = clk_lookup(clkname);
+ free(clkname);
+ if (IS_ERR(ldbclk)) {
+ dev_err(ldb->dev, "failed to get ldb clk: %s\n", strerror(PTR_ERR(ldbclk)));
+ return PTR_ERR(ldbclk);
+ }
+
+ ret = clk_set_parent(diclk, ldbclk);
+ if (ret) {
+ dev_err(ldb->dev, "failed to set display clock parent: %s\n", strerror(-ret));
+ return ret;
+ }
+
+ return 0;
}
static struct imx_ldb_data imx_ldb_data_imx6q = {