diff options
Diffstat (limited to 'drivers/gpu/drm/imx/ipuv3-crtc.c')
| -rw-r--r-- | drivers/gpu/drm/imx/ipuv3-crtc.c | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/drivers/gpu/drm/imx/ipuv3-crtc.c b/drivers/gpu/drm/imx/ipuv3-crtc.c index b2c30b8d9816..fc040417e1e8 100644 --- a/drivers/gpu/drm/imx/ipuv3-crtc.c +++ b/drivers/gpu/drm/imx/ipuv3-crtc.c @@ -66,6 +66,7 @@ struct ipu_crtc {  	struct ipu_flip_work	*flip_work;  	int			irq;  	u32			bus_format; +	u32			bus_flags;  	int			di_hsync_pin;  	int			di_vsync_pin;  }; @@ -271,8 +272,10 @@ static int ipu_crtc_mode_set(struct drm_crtc *crtc,  	else  		sig_cfg.clkflags = 0; -	sig_cfg.enable_pol = 1; -	sig_cfg.clk_pol = 0; +	sig_cfg.enable_pol = !(ipu_crtc->bus_flags & DRM_BUS_FLAG_DE_LOW); +	/* Default to driving pixel data on negative clock edges */ +	sig_cfg.clk_pol = !!(ipu_crtc->bus_flags & +			     DRM_BUS_FLAG_PIXDATA_POSEDGE);  	sig_cfg.bus_format = ipu_crtc->bus_format;  	sig_cfg.v_to_h_sync = 0;  	sig_cfg.hsync_pin = ipu_crtc->di_hsync_pin; @@ -396,11 +399,12 @@ static void ipu_disable_vblank(struct drm_crtc *crtc)  }  static int ipu_set_interface_pix_fmt(struct drm_crtc *crtc, -		u32 bus_format, int hsync_pin, int vsync_pin) +		u32 bus_format, int hsync_pin, int vsync_pin, u32 bus_flags)  {  	struct ipu_crtc *ipu_crtc = to_ipu_crtc(crtc);  	ipu_crtc->bus_format = bus_format; +	ipu_crtc->bus_flags = bus_flags;  	ipu_crtc->di_hsync_pin = hsync_pin;  	ipu_crtc->di_vsync_pin = vsync_pin; | 
