summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Zabel <p.zabel@pengutronix.de>2016-08-24 12:40:18 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2016-08-25 08:28:40 +0200
commitda03ce9c18fca87ae2f443202d70bb42cab6a222 (patch)
tree39d1522464dcbe1480e26cae435e86b3c155be20
parent1be6d321efbd4113488dae300cbb3e1f30582a9f (diff)
downloadbarebox-da03ce9c18fca87ae2f443202d70bb42cab6a222.tar.gz
barebox-da03ce9c18fca87ae2f443202d70bb42cab6a222.tar.xz
video: add VPL ioctl to get bus format
The i.MX specific DI_MODE VPL ioctl already allows to query the encoder input bus format. This patch also allows non-i.MX specific encoder drivers to report their input bus format. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/video/imx-ipu-v3/ipufb.c8
-rw-r--r--include/video/vpl.h1
2 files changed, 7 insertions, 2 deletions
diff --git a/drivers/video/imx-ipu-v3/ipufb.c b/drivers/video/imx-ipu-v3/ipufb.c
index cfafa22c7c..63024b546d 100644
--- a/drivers/video/imx-ipu-v3/ipufb.c
+++ b/drivers/video/imx-ipu-v3/ipufb.c
@@ -109,7 +109,7 @@ int ipu_crtc_mode_set(struct ipufb_info *fbi,
int ret;
struct ipu_di_signal_cfg sig_cfg = {};
struct ipu_di_mode di_mode = {};
- u32 bus_format;
+ u32 bus_format = 0;
dev_info(fbi->dev, "%s: mode->xres: %d\n", __func__,
mode->xres);
@@ -117,7 +117,11 @@ int ipu_crtc_mode_set(struct ipufb_info *fbi,
mode->yres);
vpl_ioctl(&fbi->vpl, 2 + fbi->dino, IMX_IPU_VPL_DI_MODE, &di_mode);
- bus_format = di_mode.bus_format ?: fbi->bus_format;
+ vpl_ioctl(&fbi->vpl, 2 + fbi->dino, VPL_GET_BUS_FORMAT, &bus_format);
+ if (bus_format)
+ di_mode.di_clkflags = IPU_DI_CLKMODE_NON_FRACTIONAL;
+ else
+ bus_format = di_mode.bus_format ?: fbi->bus_format;
if (mode->sync & FB_SYNC_HOR_HIGH_ACT)
sig_cfg.Hsync_pol = 1;
diff --git a/include/video/vpl.h b/include/video/vpl.h
index 846007f4f5..6ae7b0f3e0 100644
--- a/include/video/vpl.h
+++ b/include/video/vpl.h
@@ -8,6 +8,7 @@
#define VPL_ENABLE 0x67660003
#define VPL_DISABLE 0x67660004
#define VPL_GET_VIDEOMODES 0x67660005
+#define VPL_GET_BUS_FORMAT 0x67660006
struct vpl {
int (*ioctl)(struct vpl *, unsigned int port,