static int create_writeback_properties(struct drm_device *dev) { struct drm_property *prop; if (!dev->mode_config.writeback_fb_id_property) { prop = drm_property_create_object(dev, DRM_MODE_PROP_ATOMIC, "WRITEBACK_FB_ID", DRM_MODE_OBJECT_FB); if (!prop) return -ENOMEM; dev->mode_config.writeback_fb_id_property = prop; } if (!dev->mode_config.writeback_pixel_formats_property) { prop = drm_property_create(dev, DRM_MODE_PROP_BLOB | DRM_MODE_PROP_ATOMIC | DRM_MODE_PROP_IMMUTABLE, "WRITEBACK_PIXEL_FORMATS", 0); if (!prop) return -ENOMEM; dev->mode_config.writeback_pixel_formats_property = prop; } if (!dev->mode_config.writeback_out_fence_ptr_property) { prop = drm_property_create_range(dev, DRM_MODE_PROP_ATOMIC, "WRITEBACK_OUT_FENCE_PTR", 0, U64_MAX); if (!prop) return -ENOMEM; dev->mode_config.writeback_out_fence_ptr_property = prop; } return 0; }
static int ch7006_encoder_create_resources(struct drm_encoder *encoder, struct drm_connector *connector) { struct ch7006_priv *priv = to_ch7006_priv(encoder); struct drm_device *dev = encoder->dev; struct drm_mode_config *conf = &dev->mode_config; drm_mode_create_tv_properties(dev, NUM_TV_NORMS, ch7006_tv_norm_names); priv->scale_property = drm_property_create(dev, DRM_MODE_PROP_RANGE, "scale", 2); priv->scale_property->values[0] = 0; priv->scale_property->values[1] = 2; drm_connector_attach_property(connector, conf->tv_select_subconnector_property, priv->select_subconnector); drm_connector_attach_property(connector, conf->tv_subconnector_property, priv->subconnector); drm_connector_attach_property(connector, conf->tv_left_margin_property, priv->hmargin); drm_connector_attach_property(connector, conf->tv_bottom_margin_property, priv->vmargin); drm_connector_attach_property(connector, conf->tv_mode_property, priv->norm); drm_connector_attach_property(connector, conf->tv_brightness_property, priv->brightness); drm_connector_attach_property(connector, conf->tv_contrast_property, priv->contrast); drm_connector_attach_property(connector, conf->tv_flicker_reduction_property, priv->flicker); drm_connector_attach_property(connector, priv->scale_property, priv->scale); return 0; }
void cdv_intel_attach_force_audio_property(struct drm_connector *connector) { struct drm_device *dev = connector->dev; struct drm_psb_private *dev_priv = dev->dev_private; struct drm_property *prop; int i; prop = dev_priv->force_audio_property; if (prop == NULL) { prop = drm_property_create(dev, DRM_MODE_PROP_ENUM, "audio", ARRAY_SIZE(force_audio_names)); if (prop == NULL) return; for (i = 0; i < ARRAY_SIZE(force_audio_names); i++) drm_property_add_enum(prop, i, i-1, force_audio_names[i]); dev_priv->force_audio_property = prop; } drm_object_attach_property(&connector->base, prop, 0); }