mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
drm/omap: HDMI: support double-pixel pixel clock
We need double-pixel mode (pixel repetition) for interlace modes. This patch adds the necessary support to HDMI to double the pixel clock when double-pixel mode is used. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
2535895895
commit
67d8ffdd68
2 changed files with 12 additions and 2 deletions
|
@ -168,6 +168,7 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
|
||||||
struct omap_overlay_manager *mgr = hdmi.output.manager;
|
struct omap_overlay_manager *mgr = hdmi.output.manager;
|
||||||
struct hdmi_wp_data *wp = &hdmi.wp;
|
struct hdmi_wp_data *wp = &hdmi.wp;
|
||||||
struct dss_pll_clock_info hdmi_cinfo = { 0 };
|
struct dss_pll_clock_info hdmi_cinfo = { 0 };
|
||||||
|
unsigned pc;
|
||||||
|
|
||||||
r = hdmi_power_on_core(dssdev);
|
r = hdmi_power_on_core(dssdev);
|
||||||
if (r)
|
if (r)
|
||||||
|
@ -181,7 +182,11 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
|
||||||
|
|
||||||
DSSDBG("hdmi_power_on x_res= %d y_res = %d\n", p->x_res, p->y_res);
|
DSSDBG("hdmi_power_on x_res= %d y_res = %d\n", p->x_res, p->y_res);
|
||||||
|
|
||||||
hdmi_pll_compute(&hdmi.pll, p->pixelclock, &hdmi_cinfo);
|
pc = p->pixelclock;
|
||||||
|
if (p->double_pixel)
|
||||||
|
pc *= 2;
|
||||||
|
|
||||||
|
hdmi_pll_compute(&hdmi.pll, pc, &hdmi_cinfo);
|
||||||
|
|
||||||
r = dss_pll_enable(&hdmi.pll.pll);
|
r = dss_pll_enable(&hdmi.pll.pll);
|
||||||
if (r) {
|
if (r) {
|
||||||
|
|
|
@ -184,6 +184,7 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
|
||||||
struct omap_video_timings *p;
|
struct omap_video_timings *p;
|
||||||
struct omap_overlay_manager *mgr = hdmi.output.manager;
|
struct omap_overlay_manager *mgr = hdmi.output.manager;
|
||||||
struct dss_pll_clock_info hdmi_cinfo = { 0 };
|
struct dss_pll_clock_info hdmi_cinfo = { 0 };
|
||||||
|
unsigned pc;
|
||||||
|
|
||||||
r = hdmi_power_on_core(dssdev);
|
r = hdmi_power_on_core(dssdev);
|
||||||
if (r)
|
if (r)
|
||||||
|
@ -193,7 +194,11 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
|
||||||
|
|
||||||
DSSDBG("hdmi_power_on x_res= %d y_res = %d\n", p->x_res, p->y_res);
|
DSSDBG("hdmi_power_on x_res= %d y_res = %d\n", p->x_res, p->y_res);
|
||||||
|
|
||||||
hdmi_pll_compute(&hdmi.pll, p->pixelclock, &hdmi_cinfo);
|
pc = p->pixelclock;
|
||||||
|
if (p->double_pixel)
|
||||||
|
pc *= 2;
|
||||||
|
|
||||||
|
hdmi_pll_compute(&hdmi.pll, pc, &hdmi_cinfo);
|
||||||
|
|
||||||
/* disable and clear irqs */
|
/* disable and clear irqs */
|
||||||
hdmi_wp_clear_irqenable(&hdmi.wp, 0xffffffff);
|
hdmi_wp_clear_irqenable(&hdmi.wp, 0xffffffff);
|
||||||
|
|
Loading…
Add table
Reference in a new issue