drm/i915: Extract intel_tv_add_properties()
Pull all the TV connector property setup into its own neat function. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220912111814.17466-8-ville.syrjala@linux.intel.com Reviewed-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
parent
6f7dd8e7d9
commit
d7e4a25745
|
@ -1880,6 +1880,48 @@ static const struct drm_encoder_funcs intel_tv_enc_funcs = {
|
|||
.destroy = intel_encoder_destroy,
|
||||
};
|
||||
|
||||
static void intel_tv_add_properties(struct drm_connector *connector)
|
||||
{
|
||||
struct drm_i915_private *i915 = to_i915(connector->dev);
|
||||
struct drm_connector_state *conn_state = connector->state;
|
||||
const char *tv_format_names[ARRAY_SIZE(tv_modes)];
|
||||
int i;
|
||||
|
||||
/* BIOS margin values */
|
||||
conn_state->tv.margins.left = 54;
|
||||
conn_state->tv.margins.top = 36;
|
||||
conn_state->tv.margins.right = 46;
|
||||
conn_state->tv.margins.bottom = 37;
|
||||
|
||||
conn_state->tv.mode = 0;
|
||||
|
||||
/* Create TV properties then attach current values */
|
||||
for (i = 0; i < ARRAY_SIZE(tv_modes); i++) {
|
||||
/* 1080p50/1080p60 not supported on gen3 */
|
||||
if (DISPLAY_VER(i915) == 3 && tv_modes[i].oversample == 1)
|
||||
break;
|
||||
|
||||
tv_format_names[i] = tv_modes[i].name;
|
||||
}
|
||||
drm_mode_create_tv_properties(&i915->drm, i, tv_format_names);
|
||||
|
||||
drm_object_attach_property(&connector->base,
|
||||
i915->drm.mode_config.tv_mode_property,
|
||||
conn_state->tv.mode);
|
||||
drm_object_attach_property(&connector->base,
|
||||
i915->drm.mode_config.tv_left_margin_property,
|
||||
conn_state->tv.margins.left);
|
||||
drm_object_attach_property(&connector->base,
|
||||
i915->drm.mode_config.tv_top_margin_property,
|
||||
conn_state->tv.margins.top);
|
||||
drm_object_attach_property(&connector->base,
|
||||
i915->drm.mode_config.tv_right_margin_property,
|
||||
conn_state->tv.margins.right);
|
||||
drm_object_attach_property(&connector->base,
|
||||
i915->drm.mode_config.tv_bottom_margin_property,
|
||||
conn_state->tv.margins.bottom);
|
||||
}
|
||||
|
||||
void
|
||||
intel_tv_init(struct drm_i915_private *dev_priv)
|
||||
{
|
||||
|
@ -1889,9 +1931,6 @@ intel_tv_init(struct drm_i915_private *dev_priv)
|
|||
struct intel_encoder *intel_encoder;
|
||||
struct intel_connector *intel_connector;
|
||||
u32 tv_dac_on, tv_dac_off, save_tv_dac;
|
||||
const char *tv_format_names[ARRAY_SIZE(tv_modes)];
|
||||
int i, initial_mode = 0;
|
||||
struct drm_connector_state *state;
|
||||
|
||||
if ((intel_de_read(dev_priv, TV_CTL) & TV_FUSE_STATE_MASK) == TV_FUSE_STATE_DISABLED)
|
||||
return;
|
||||
|
@ -1937,7 +1976,6 @@ intel_tv_init(struct drm_i915_private *dev_priv)
|
|||
|
||||
intel_encoder = &intel_tv->base;
|
||||
connector = &intel_connector->base;
|
||||
state = connector->state;
|
||||
|
||||
/*
|
||||
* The documentation, for the older chipsets at least, recommend
|
||||
|
@ -1974,41 +2012,9 @@ intel_tv_init(struct drm_i915_private *dev_priv)
|
|||
intel_encoder->cloneable = 0;
|
||||
intel_tv->type = DRM_MODE_CONNECTOR_Unknown;
|
||||
|
||||
/* BIOS margin values */
|
||||
state->tv.margins.left = 54;
|
||||
state->tv.margins.top = 36;
|
||||
state->tv.margins.right = 46;
|
||||
state->tv.margins.bottom = 37;
|
||||
|
||||
state->tv.mode = initial_mode;
|
||||
|
||||
drm_connector_helper_add(connector, &intel_tv_connector_helper_funcs);
|
||||
connector->interlace_allowed = false;
|
||||
connector->doublescan_allowed = false;
|
||||
|
||||
/* Create TV properties then attach current values */
|
||||
for (i = 0; i < ARRAY_SIZE(tv_modes); i++) {
|
||||
/* 1080p50/1080p60 not supported on gen3 */
|
||||
if (DISPLAY_VER(dev_priv) == 3 &&
|
||||
tv_modes[i].oversample == 1)
|
||||
break;
|
||||
|
||||
tv_format_names[i] = tv_modes[i].name;
|
||||
}
|
||||
drm_mode_create_tv_properties(dev, i, tv_format_names);
|
||||
|
||||
drm_object_attach_property(&connector->base, dev->mode_config.tv_mode_property,
|
||||
state->tv.mode);
|
||||
drm_object_attach_property(&connector->base,
|
||||
dev->mode_config.tv_left_margin_property,
|
||||
state->tv.margins.left);
|
||||
drm_object_attach_property(&connector->base,
|
||||
dev->mode_config.tv_top_margin_property,
|
||||
state->tv.margins.top);
|
||||
drm_object_attach_property(&connector->base,
|
||||
dev->mode_config.tv_right_margin_property,
|
||||
state->tv.margins.right);
|
||||
drm_object_attach_property(&connector->base,
|
||||
dev->mode_config.tv_bottom_margin_property,
|
||||
state->tv.margins.bottom);
|
||||
intel_tv_add_properties(connector);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue