tv_mode
video_levels = tv_mode->composite_levels;
color_conversion = tv_mode->composite_color;
burst_ena = tv_mode->burst_ena;
if (tv_mode->burst_ena)
video_levels = tv_mode->svideo_levels;
color_conversion = tv_mode->svideo_color;
burst_ena = tv_mode->burst_ena;
tv_ctl |= tv_mode->oversample;
if (tv_mode->progressive)
if (tv_mode->trilevel_sync)
if (tv_mode->pal_burst)
if (tv_mode->dda1_inc)
if (tv_mode->dda2_inc)
if (tv_mode->dda3_inc)
scctl1 |= tv_mode->sc_reset;
scctl1 |= tv_mode->dda1_inc << TV_SCDDA1_INC_SHIFT;
scctl2 = tv_mode->dda2_size << TV_SCDDA2_SIZE_SHIFT |
tv_mode->dda2_inc << TV_SCDDA2_INC_SHIFT;
scctl3 = tv_mode->dda3_size << TV_SCDDA3_SIZE_SHIFT |
tv_mode->dda3_inc << TV_SCDDA3_INC_SHIFT;
set_tv_mode_timings(dev_priv, tv_mode, burst_ena);
xsize = tv_mode->hblank_start - tv_mode->hblank_end;
if (tv_mode->progressive)
ysize = tv_mode->nbr_end + 1;
ysize = 2*tv_mode->nbr_end + 1;
I915_WRITE(TV_H_LUMA(i), tv_mode->filter_table[j++]);
I915_WRITE(TV_H_CHROMA(i), tv_mode->filter_table[j++]);
I915_WRITE(TV_V_LUMA(i), tv_mode->filter_table[j++]);
I915_WRITE(TV_V_CHROMA(i), tv_mode->filter_table[j++]);
const struct tv_mode *tv_mode = intel_tv_mode_find(connector->state);
tv_mode->component_only)
tv_mode = tv_modes + i;
tv_mode->component_only)
intel_tv_choose_preferred_modes(const struct tv_mode *tv_mode,
if (tv_mode->nbr_end < 480 && mode_ptr->vdisplay == 480)
else if (tv_mode->nbr_end > 480) {
if (tv_mode->progressive == true && tv_mode->nbr_end < 720) {
const struct tv_mode *tv_mode = intel_tv_mode_find(connector->state);
if (tv_mode->max_srcw && input->w > tv_mode->max_srcw)
if (input->w > 1024 && (!tv_mode->progressive
&& !tv_mode->component_only))
tmp = mul_u32_u32(tv_mode->refresh, mode_ptr->vtotal);
intel_tv_choose_preferred_modes(tv_mode, mode_ptr);
static const struct tv_mode tv_modes[] = {
static const struct tv_mode *intel_tv_mode_find(const struct drm_connector_state *conn_state)
const struct tv_mode *tv_mode = intel_tv_mode_find(connector->state);
if (tv_mode && abs(tv_mode->refresh - drm_mode_vrefresh(mode) * 1000)
const struct tv_mode *tv_mode = intel_tv_mode_find(conn_state);
if (!tv_mode)
adjusted_mode->crtc_clock = tv_mode->clock;
const struct tv_mode *tv_mode,
hctl1 = (tv_mode->hsync_end << TV_HSYNC_END_SHIFT) |
(tv_mode->htotal << TV_HTOTAL_SHIFT);
hctl2 = (tv_mode->hburst_start << 16) |
(tv_mode->hburst_len << TV_HBURST_LEN_SHIFT);
hctl3 = (tv_mode->hblank_start << TV_HBLANK_START_SHIFT) |
(tv_mode->hblank_end << TV_HBLANK_END_SHIFT);
vctl1 = (tv_mode->nbr_end << TV_NBR_END_SHIFT) |
(tv_mode->vi_end_f1 << TV_VI_END_F1_SHIFT) |
(tv_mode->vi_end_f2 << TV_VI_END_F2_SHIFT);
vctl2 = (tv_mode->vsync_len << TV_VSYNC_LEN_SHIFT) |
(tv_mode->vsync_start_f1 << TV_VSYNC_START_F1_SHIFT) |
(tv_mode->vsync_start_f2 << TV_VSYNC_START_F2_SHIFT);
vctl3 = (tv_mode->veq_len << TV_VEQ_LEN_SHIFT) |
(tv_mode->veq_start_f1 << TV_VEQ_START_F1_SHIFT) |
(tv_mode->veq_start_f2 << TV_VEQ_START_F2_SHIFT);
if (tv_mode->veq_ena)
vctl4 = (tv_mode->vburst_start_f1 << TV_VBURST_START_F1_SHIFT) |
(tv_mode->vburst_end_f1 << TV_VBURST_END_F1_SHIFT);
vctl5 = (tv_mode->vburst_start_f2 << TV_VBURST_START_F2_SHIFT) |
(tv_mode->vburst_end_f2 << TV_VBURST_END_F2_SHIFT);
vctl6 = (tv_mode->vburst_start_f3 << TV_VBURST_START_F3_SHIFT) |
(tv_mode->vburst_end_f3 << TV_VBURST_END_F3_SHIFT);
vctl7 = (tv_mode->vburst_start_f4 << TV_VBURST_START_F4_SHIFT) |
(tv_mode->vburst_end_f4 << TV_VBURST_END_F4_SHIFT);
const struct tv_mode *tv_mode = intel_tv_mode_find(conn_state);
if (!tv_mode)
struct drm_display_mode *tv_mode;
tv_mode = drm_cvt_mode(dev, 800, 600, 60, false, false, false);
tv_mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
drm_mode_probed_add(connector, tv_mode);