diff options
Diffstat (limited to 'drivers/gpu/drm/omapdrm/dss/venc.c')
| -rw-r--r-- | drivers/gpu/drm/omapdrm/dss/venc.c | 93 | 
1 files changed, 43 insertions, 50 deletions
diff --git a/drivers/gpu/drm/omapdrm/dss/venc.c b/drivers/gpu/drm/omapdrm/dss/venc.c index 6eedf2118708..d74f7fcc2e46 100644 --- a/drivers/gpu/drm/omapdrm/dss/venc.c +++ b/drivers/gpu/drm/omapdrm/dss/venc.c @@ -262,47 +262,41 @@ static const struct venc_config venc_config_pal_bdghi = {  	.fid_ext_start_y__fid_ext_offset_y	= 0x01380005,  }; -const struct omap_video_timings omap_dss_pal_timings = { -	.x_res		= 720, -	.y_res		= 574, +const struct videomode omap_dss_pal_vm = { +	.hactive	= 720, +	.vactive	= 574,  	.pixelclock	= 13500000, -	.hsw		= 64, -	.hfp		= 12, -	.hbp		= 68, -	.vsw		= 5, -	.vfp		= 5, -	.vbp		= 41, +	.hsync_len	= 64, +	.hfront_porch	= 12, +	.hback_porch	= 68, +	.vsync_len	= 5, +	.vfront_porch	= 5, +	.vback_porch	= 41, -	.interlace	= true, - -	.hsync_level = OMAPDSS_SIG_ACTIVE_LOW, -	.vsync_level = OMAPDSS_SIG_ACTIVE_LOW, -	.data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE, -	.de_level = OMAPDSS_SIG_ACTIVE_HIGH, -	.sync_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE, +	.flags		= DISPLAY_FLAGS_INTERLACED | DISPLAY_FLAGS_HSYNC_LOW | +			  DISPLAY_FLAGS_VSYNC_LOW | DISPLAY_FLAGS_DE_HIGH | +			  DISPLAY_FLAGS_PIXDATA_POSEDGE | +			  DISPLAY_FLAGS_SYNC_NEGEDGE,  }; -EXPORT_SYMBOL(omap_dss_pal_timings); +EXPORT_SYMBOL(omap_dss_pal_vm); -const struct omap_video_timings omap_dss_ntsc_timings = { -	.x_res		= 720, -	.y_res		= 482, +const struct videomode omap_dss_ntsc_vm = { +	.hactive	= 720, +	.vactive	= 482,  	.pixelclock	= 13500000, -	.hsw		= 64, -	.hfp		= 16, -	.hbp		= 58, -	.vsw		= 6, -	.vfp		= 6, -	.vbp		= 31, - -	.interlace	= true, +	.hsync_len	= 64, +	.hfront_porch	= 16, +	.hback_porch	= 58, +	.vsync_len	= 6, +	.vfront_porch	= 6, +	.vback_porch	= 31, -	.hsync_level = OMAPDSS_SIG_ACTIVE_LOW, -	.vsync_level = OMAPDSS_SIG_ACTIVE_LOW, -	.data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE, -	.de_level = OMAPDSS_SIG_ACTIVE_HIGH, -	.sync_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE, +	.flags		= DISPLAY_FLAGS_INTERLACED | DISPLAY_FLAGS_HSYNC_LOW | +			  DISPLAY_FLAGS_VSYNC_LOW | DISPLAY_FLAGS_DE_HIGH | +			  DISPLAY_FLAGS_PIXDATA_POSEDGE | +			  DISPLAY_FLAGS_SYNC_NEGEDGE,  }; -EXPORT_SYMBOL(omap_dss_ntsc_timings); +EXPORT_SYMBOL(omap_dss_ntsc_vm);  static struct {  	struct platform_device *pdev; @@ -313,7 +307,7 @@ static struct {  	struct clk	*tv_dac_clk; -	struct omap_video_timings timings; +	struct videomode vm;  	enum omap_dss_venc_type type;  	bool invert_polarity; @@ -427,13 +421,12 @@ static void venc_runtime_put(void)  	WARN_ON(r < 0 && r != -ENOSYS);  } -static const struct venc_config *venc_timings_to_config( -		struct omap_video_timings *timings) +static const struct venc_config *venc_timings_to_config(struct videomode *vm)  { -	if (memcmp(&omap_dss_pal_timings, timings, sizeof(*timings)) == 0) +	if (memcmp(&omap_dss_pal_vm, vm, sizeof(*vm)) == 0)  		return &venc_config_pal_trm; -	if (memcmp(&omap_dss_ntsc_timings, timings, sizeof(*timings)) == 0) +	if (memcmp(&omap_dss_ntsc_vm, vm, sizeof(*vm)) == 0)  		return &venc_config_ntsc_trm;  	BUG(); @@ -451,7 +444,7 @@ static int venc_power_on(struct omap_dss_device *dssdev)  		goto err0;  	venc_reset(); -	venc_write_config(venc_timings_to_config(&venc.timings)); +	venc_write_config(venc_timings_to_config(&venc.vm));  	dss_set_venc_output(venc.type);  	dss_set_dac_pwrdn_bgz(1); @@ -468,7 +461,7 @@ static int venc_power_on(struct omap_dss_device *dssdev)  	venc_write_reg(VENC_OUTPUT_CONTROL, l); -	dss_mgr_set_timings(channel, &venc.timings); +	dss_mgr_set_timings(channel, &venc.vm);  	r = regulator_enable(venc.vdda_dac_reg);  	if (r) @@ -546,17 +539,17 @@ static void venc_display_disable(struct omap_dss_device *dssdev)  }  static void venc_set_timings(struct omap_dss_device *dssdev, -		struct omap_video_timings *timings) +			     struct videomode *vm)  {  	DSSDBG("venc_set_timings\n");  	mutex_lock(&venc.venc_lock);  	/* Reset WSS data when the TV standard changes. */ -	if (memcmp(&venc.timings, timings, sizeof(*timings))) +	if (memcmp(&venc.vm, vm, sizeof(*vm)))  		venc.wss_data = 0; -	venc.timings = *timings; +	venc.vm = *vm;  	dispc_set_tv_pclk(13500000); @@ -564,25 +557,25 @@ static void venc_set_timings(struct omap_dss_device *dssdev,  }  static int venc_check_timings(struct omap_dss_device *dssdev, -		struct omap_video_timings *timings) +			      struct videomode *vm)  {  	DSSDBG("venc_check_timings\n"); -	if (memcmp(&omap_dss_pal_timings, timings, sizeof(*timings)) == 0) +	if (memcmp(&omap_dss_pal_vm, vm, sizeof(*vm)) == 0)  		return 0; -	if (memcmp(&omap_dss_ntsc_timings, timings, sizeof(*timings)) == 0) +	if (memcmp(&omap_dss_ntsc_vm, vm, sizeof(*vm)) == 0)  		return 0;  	return -EINVAL;  }  static void venc_get_timings(struct omap_dss_device *dssdev, -		struct omap_video_timings *timings) +			     struct videomode *vm)  {  	mutex_lock(&venc.venc_lock); -	*timings = venc.timings; +	*vm = venc.vm;  	mutex_unlock(&venc.venc_lock);  } @@ -602,7 +595,7 @@ static int venc_set_wss(struct omap_dss_device *dssdev, u32 wss)  	mutex_lock(&venc.venc_lock); -	config = venc_timings_to_config(&venc.timings); +	config = venc_timings_to_config(&venc.vm);  	/* Invert due to VENC_L21_WC_CTL:INV=1 */  	venc.wss_data = (wss ^ 0xfffff) << 8;  | 
