Merge tag 'imx-drm-next-2015-01-09' of git://git.pengutronix.de/git/pza/linux into drm-next
imx-drm mode fixup support, imx-hdmi bridge conversion and imx-drm cleanup - Implement mode_fixup for a DI vertical timing limitation - Use generic DRM OF helpers in DRM core - Convert imx-hdmi to dw_hdmi drm_bridge and add rockchip driver - Add DC use counter to fix multi-display support - Simplify handling of DI clock flags - A few small fixes and cleanup * tag 'imx-drm-next-2015-01-09' of git://git.pengutronix.de/git/pza/linux: (26 commits) imx-drm: core: handling of DI clock flags to ipu_crtc_mode_set() gpu: ipu-di: Switch to DIV_ROUND_CLOSEST for DI clock divider calc gpu: ipu-v3: Use videomode in struct ipu_di_signal_cfg imx-drm: encoder prepare/mode_set must use adjusted mode imx-drm: ipuv3-crtc: Implement mode_fixup drm_modes: add drm_display_mode_to_videomode gpu: ipu-di: remove some non-functional code gpu: ipu-di: Add ipu_di_adjust_videomode() drm: rockchip: export functions needed by rockchip dw_hdmi bridge driver drm: bridge/dw_hdmi: request interrupt only after initializing the mutes drm: bridge/dw_hdmi: add rockchip rk3288 support dt-bindings: Add documentation for rockchip dw hdmi drm: bridge/dw_hdmi: add function dw_hdmi_phy_enable_spare drm: bridge/dw_hdmi: clear i2cmphy_stat0 reg in hdmi_phy_wait_i2c_done drm: bridge/dw_hdmi: add mode_valid support drm: bridge/dw_hdmi: add support for multi-byte register width access dt-bindings: add document for dw_hdmi drm: imx: imx-hdmi: move imx-hdmi to bridge/dw_hdmi drm: imx: imx-hdmi: split phy configuration to platform driver drm: imx: imx-hdmi: convert imx-hdmi to drm_bridge mode ...
This commit is contained in:
@@ -615,6 +615,46 @@ void drm_display_mode_from_videomode(const struct videomode *vm,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(drm_display_mode_from_videomode);
|
||||
|
||||
/**
|
||||
* drm_display_mode_to_videomode - fill in @vm using @dmode,
|
||||
* @dmode: drm_display_mode structure to use as source
|
||||
* @vm: videomode structure to use as destination
|
||||
*
|
||||
* Fills out @vm using the display mode specified in @dmode.
|
||||
*/
|
||||
void drm_display_mode_to_videomode(const struct drm_display_mode *dmode,
|
||||
struct videomode *vm)
|
||||
{
|
||||
vm->hactive = dmode->hdisplay;
|
||||
vm->hfront_porch = dmode->hsync_start - dmode->hdisplay;
|
||||
vm->hsync_len = dmode->hsync_end - dmode->hsync_start;
|
||||
vm->hback_porch = dmode->htotal - dmode->hsync_end;
|
||||
|
||||
vm->vactive = dmode->vdisplay;
|
||||
vm->vfront_porch = dmode->vsync_start - dmode->vdisplay;
|
||||
vm->vsync_len = dmode->vsync_end - dmode->vsync_start;
|
||||
vm->vback_porch = dmode->vtotal - dmode->vsync_end;
|
||||
|
||||
vm->pixelclock = dmode->clock * 1000;
|
||||
|
||||
vm->flags = 0;
|
||||
if (dmode->flags & DRM_MODE_FLAG_PHSYNC)
|
||||
vm->flags |= DISPLAY_FLAGS_HSYNC_HIGH;
|
||||
else if (dmode->flags & DRM_MODE_FLAG_NHSYNC)
|
||||
vm->flags |= DISPLAY_FLAGS_HSYNC_LOW;
|
||||
if (dmode->flags & DRM_MODE_FLAG_PVSYNC)
|
||||
vm->flags |= DISPLAY_FLAGS_VSYNC_HIGH;
|
||||
else if (dmode->flags & DRM_MODE_FLAG_NVSYNC)
|
||||
vm->flags |= DISPLAY_FLAGS_VSYNC_LOW;
|
||||
if (dmode->flags & DRM_MODE_FLAG_INTERLACE)
|
||||
vm->flags |= DISPLAY_FLAGS_INTERLACED;
|
||||
if (dmode->flags & DRM_MODE_FLAG_DBLSCAN)
|
||||
vm->flags |= DISPLAY_FLAGS_DOUBLESCAN;
|
||||
if (dmode->flags & DRM_MODE_FLAG_DBLCLK)
|
||||
vm->flags |= DISPLAY_FLAGS_DOUBLECLK;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(drm_display_mode_to_videomode);
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
/**
|
||||
* of_get_drm_display_mode - get a drm_display_mode from devicetree
|
||||
|
Reference in New Issue
Block a user