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; }
/* attach crtc properties */ static void xilinx_drm_crtc_attach_property(struct drm_crtc *base_crtc) { struct xilinx_drm_crtc *crtc = to_xilinx_crtc(base_crtc); int num_planes; num_planes = xilinx_drm_plane_get_num_planes(crtc->plane_manager); if (num_planes <= 1) return; crtc->zpos_prop = drm_property_create_range(base_crtc->dev, 0, "zpos", 0, num_planes - 1); if (crtc->zpos_prop) { crtc->default_zpos = xilinx_drm_plane_get_default_zpos(crtc->priv_plane); drm_object_attach_property(&base_crtc->base, crtc->zpos_prop, crtc->default_zpos); xilinx_drm_plane_set_zpos(crtc->priv_plane, crtc->default_zpos); } crtc->default_alpha = xilinx_drm_plane_get_max_alpha(crtc->priv_plane); crtc->alpha_prop = drm_property_create_range(base_crtc->dev, 0, "alpha", 0, crtc->default_alpha); if (crtc->alpha_prop) { drm_object_attach_property(&base_crtc->base, crtc->alpha_prop, crtc->default_alpha); xilinx_drm_plane_set_alpha(crtc->priv_plane, crtc->default_alpha); } }
/* create plane properties */ static void xilinx_drm_plane_create_property(struct xilinx_drm_plane_manager *manager) { if (!manager->osd) return; manager->zpos_prop = drm_property_create_range(manager->drm, 0, "zpos", 0, manager->num_planes - 1); manager->alpha_prop = drm_property_create_range(manager->drm, 0, "alpha", 0, manager->default_alpha); }
/* create plane properties */ static void xilinx_drm_plane_create_property(struct xilinx_drm_plane_manager *manager) { if (manager->osd) manager->zpos_prop = drm_property_create_range(manager->drm, 0, "zpos", 0, manager->num_planes - 1); if (manager->osd || manager->dp_sub) { manager->alpha_prop = drm_property_create_range(manager->drm, 0, "alpha", 0, manager->default_alpha); manager->alpha_enable_prop = drm_property_create_bool(manager->drm, 0, "global alpha enable"); } }
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_range(dev, 0, "scale", 0, 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; }
static int qxl_mode_create_hotplug_mode_update_property(struct qxl_device *qdev) { if (qdev->hotplug_mode_update_property) return 0; qdev->hotplug_mode_update_property = drm_property_create_range(qdev->ddev, DRM_MODE_PROP_IMMUTABLE, "hotplug_mode_update", 0, 1); return 0; }
static int omap_modeset_init_properties(struct drm_device *dev) { struct omap_drm_private *priv = dev->dev_private; unsigned int num_planes = priv->dispc_ops->get_num_ovls(); priv->zorder_prop = drm_property_create_range(dev, 0, "zorder", 0, num_planes - 1); if (!priv->zorder_prop) return -ENOMEM; return 0; }
void intel_attach_panel_gamma_property(struct drm_connector *connector) { struct drm_device *dev = connector->dev; struct drm_i915_private *dev_priv = dev->dev_private; struct drm_property *prop; prop = dev_priv->panel_gamma_property; if (prop == NULL) { prop = drm_property_create_range(dev, 0, "Panel gamma", 100, 550); if (prop == NULL) return; dev_priv->panel_gamma_property = prop; } drm_object_attach_property(&connector->base, prop, 100); }
/* helper to install properties which are common to planes and crtcs */ void omap_plane_install_properties(struct drm_plane *plane, struct drm_mode_object *obj) { struct drm_device *dev = plane->dev; struct omap_drm_private *priv = dev->dev_private; struct drm_property *prop; if (priv->has_dmm) { prop = priv->rotation_prop; if (!prop) { const struct drm_prop_enum_list props[] = { { DRM_ROTATE_0, "rotate-0" }, { DRM_ROTATE_90, "rotate-90" }, { DRM_ROTATE_180, "rotate-180" }, { DRM_ROTATE_270, "rotate-270" }, { DRM_REFLECT_X, "reflect-x" }, { DRM_REFLECT_Y, "reflect-y" }, }; prop = drm_property_create_bitmask(dev, 0, "rotation", props, ARRAY_SIZE(props)); if (prop == NULL) return; priv->rotation_prop = prop; } drm_object_attach_property(obj, prop, 0); } prop = priv->zorder_prop; if (!prop) { prop = drm_property_create_range(dev, 0, "zorder", 0, 3); if (prop == NULL) return; priv->zorder_prop = prop; } drm_object_attach_property(obj, prop, 0); }