modesetting-101: Make dpms property optional + misc cleanup.
- intel_crt seems the only one to provide it, so init it there.main
parent
4d85d5d251
commit
13943fe582
|
@ -369,8 +369,6 @@ void drm_connector_init(struct drm_device *dev,
|
||||||
|
|
||||||
drm_connector_attach_property(connector, dev->mode_config.edid_property, 0);
|
drm_connector_attach_property(connector, dev->mode_config.edid_property, 0);
|
||||||
|
|
||||||
drm_connector_attach_property(connector, dev->mode_config.dpms_property, 0);
|
|
||||||
|
|
||||||
mutex_unlock(&dev->mode_config.mutex);
|
mutex_unlock(&dev->mode_config.mutex);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(drm_connector_init);
|
EXPORT_SYMBOL(drm_connector_init);
|
||||||
|
@ -479,8 +477,6 @@ EXPORT_SYMBOL(drm_mode_destroy);
|
||||||
|
|
||||||
static int drm_mode_create_standard_connector_properties(struct drm_device *dev)
|
static int drm_mode_create_standard_connector_properties(struct drm_device *dev)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Standard properties (apply to all connectors)
|
* Standard properties (apply to all connectors)
|
||||||
*/
|
*/
|
||||||
|
@ -488,6 +484,24 @@ static int drm_mode_create_standard_connector_properties(struct drm_device *dev)
|
||||||
drm_property_create(dev, DRM_MODE_PROP_BLOB | DRM_MODE_PROP_IMMUTABLE,
|
drm_property_create(dev, DRM_MODE_PROP_BLOB | DRM_MODE_PROP_IMMUTABLE,
|
||||||
"EDID", 0);
|
"EDID", 0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* drm_mode_create_dpms_property - create dpms connector property
|
||||||
|
* @dev: DRM device
|
||||||
|
*
|
||||||
|
* Called by a driver wanting to support the dpms property.
|
||||||
|
* Caller is responsible for attaching it to the appropriate connector.
|
||||||
|
*/
|
||||||
|
bool drm_mode_create_dpms_property(struct drm_device *dev)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* already allocated */
|
||||||
|
if (dev->mode_config.dpms_property)
|
||||||
|
return 0;
|
||||||
|
|
||||||
dev->mode_config.dpms_property =
|
dev->mode_config.dpms_property =
|
||||||
drm_property_create(dev, DRM_MODE_PROP_ENUM,
|
drm_property_create(dev, DRM_MODE_PROP_ENUM,
|
||||||
"DPMS", ARRAY_SIZE(drm_dpms_enum_list));
|
"DPMS", ARRAY_SIZE(drm_dpms_enum_list));
|
||||||
|
@ -496,6 +510,7 @@ static int drm_mode_create_standard_connector_properties(struct drm_device *dev)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(drm_mode_create_dpms_property);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* drm_create_tv_properties - create TV specific connector properties
|
* drm_create_tv_properties - create TV specific connector properties
|
||||||
|
@ -508,11 +523,15 @@ static int drm_mode_create_standard_connector_properties(struct drm_device *dev)
|
||||||
* responsible for allocating a list of format names and passing them to
|
* responsible for allocating a list of format names and passing them to
|
||||||
* this routine.
|
* this routine.
|
||||||
*/
|
*/
|
||||||
bool drm_create_tv_properties(struct drm_device *dev, int num_modes,
|
bool drm_mode_create_tv_properties(struct drm_device *dev, int num_modes,
|
||||||
char *modes[])
|
char *modes[])
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
/* already allocated */
|
||||||
|
if (dev->mode_config.tv_mode_property)
|
||||||
|
return 0;
|
||||||
|
|
||||||
dev->mode_config.tv_left_margin_property =
|
dev->mode_config.tv_left_margin_property =
|
||||||
drm_property_create(dev, DRM_MODE_PROP_RANGE |
|
drm_property_create(dev, DRM_MODE_PROP_RANGE |
|
||||||
DRM_MODE_PROP_IMMUTABLE,
|
DRM_MODE_PROP_IMMUTABLE,
|
||||||
|
@ -547,7 +566,7 @@ bool drm_create_tv_properties(struct drm_device *dev, int num_modes,
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(drm_create_tv_properties);
|
EXPORT_SYMBOL(drm_mode_create_tv_properties);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* drm_mode_config_init - initialize DRM mode_configuration structure
|
* drm_mode_config_init - initialize DRM mode_configuration structure
|
||||||
|
|
|
@ -677,7 +677,8 @@ extern struct drm_property *drm_property_create(struct drm_device *dev, int flag
|
||||||
extern void drm_property_destroy(struct drm_device *dev, struct drm_property *property);
|
extern void drm_property_destroy(struct drm_device *dev, struct drm_property *property);
|
||||||
extern int drm_property_add_enum(struct drm_property *property, int index,
|
extern int drm_property_add_enum(struct drm_property *property, int index,
|
||||||
uint64_t value, const char *name);
|
uint64_t value, const char *name);
|
||||||
extern bool drm_create_tv_properties(struct drm_device *dev, int num_formats,
|
extern bool drm_mode_create_dpms_property(struct drm_device *dev);
|
||||||
|
extern bool drm_mode_create_tv_properties(struct drm_device *dev, int num_formats,
|
||||||
char *formats[]);
|
char *formats[]);
|
||||||
extern char *drm_get_encoder_name(struct drm_encoder *encoder);
|
extern char *drm_get_encoder_name(struct drm_encoder *encoder);
|
||||||
|
|
||||||
|
|
|
@ -292,5 +292,9 @@ void intel_crt_init(struct drm_device *dev)
|
||||||
drm_encoder_helper_add(&intel_output->enc, &intel_crt_helper_funcs);
|
drm_encoder_helper_add(&intel_output->enc, &intel_crt_helper_funcs);
|
||||||
drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
|
drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
|
||||||
|
|
||||||
|
/* create dpms property */
|
||||||
|
drm_mode_create_dpms_property(dev);
|
||||||
|
drm_connector_attach_property(connector, dev->mode_config.dpms_property, 0);
|
||||||
|
|
||||||
drm_sysfs_connector_add(connector);
|
drm_sysfs_connector_add(connector);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1713,7 +1713,7 @@ intel_tv_init(struct drm_device *dev)
|
||||||
goto out;
|
goto out;
|
||||||
for (i = 0; i < NUM_TV_MODES; i++)
|
for (i = 0; i < NUM_TV_MODES; i++)
|
||||||
tv_format_names[i] = tv_modes[i].name;
|
tv_format_names[i] = tv_modes[i].name;
|
||||||
drm_create_tv_properties(dev, NUM_TV_MODES, tv_format_names);
|
drm_mode_create_tv_properties(dev, NUM_TV_MODES, tv_format_names);
|
||||||
|
|
||||||
drm_connector_attach_property(connector, dev->mode_config.tv_mode_property,
|
drm_connector_attach_property(connector, dev->mode_config.tv_mode_property,
|
||||||
initial_mode);
|
initial_mode);
|
||||||
|
|
Loading…
Reference in New Issue