mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 10:49:33 +00:00
drm: add register and unregister functions for connectors
Introduce generic functions to register and unregister connectors. This provides a common place to add and remove associated user space interfaces. Signed-off-by: Thomas Wood <thomas.wood@intel.com> Reviewed-by: David Herrmann <dh.herrmann@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
c3e25ae34f
commit
34ea3d3863
49 changed files with 110 additions and 82 deletions
|
@ -1610,7 +1610,7 @@ int max_width, max_height;</synopsis>
|
|||
The connector is then registered with a call to
|
||||
<function>drm_connector_init</function> with a pointer to the connector
|
||||
functions and a connector type, and exposed through sysfs with a call to
|
||||
<function>drm_sysfs_connector_add</function>.
|
||||
<function>drm_connector_register</function>.
|
||||
</para>
|
||||
<para>
|
||||
Supported connector types are
|
||||
|
@ -1768,7 +1768,7 @@ int max_width, max_height;</synopsis>
|
|||
(<function>drm_encoder_cleanup</function>) and connectors
|
||||
(<function>drm_connector_cleanup</function>). Furthermore, connectors
|
||||
that have been added to sysfs must be removed by a call to
|
||||
<function>drm_sysfs_connector_remove</function> before calling
|
||||
<function>drm_connector_unregister</function> before calling
|
||||
<function>drm_connector_cleanup</function>.
|
||||
</para>
|
||||
<para>
|
||||
|
@ -1813,7 +1813,7 @@ void intel_crt_init(struct drm_device *dev)
|
|||
drm_encoder_helper_add(&intel_output->enc, &intel_crt_helper_funcs);
|
||||
drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
}]]></programlisting>
|
||||
<para>
|
||||
In the example above (taken from the i915 driver), a CRTC, connector and
|
||||
|
|
|
@ -48,7 +48,7 @@ static void armada_drm_connector_destroy(struct drm_connector *conn)
|
|||
{
|
||||
struct armada_connector *dconn = drm_to_armada_conn(conn);
|
||||
|
||||
drm_sysfs_connector_remove(conn);
|
||||
drm_connector_unregister(conn);
|
||||
drm_connector_cleanup(conn);
|
||||
kfree(dconn);
|
||||
}
|
||||
|
@ -141,7 +141,7 @@ int armada_output_create(struct drm_device *dev,
|
|||
if (ret)
|
||||
goto err_conn;
|
||||
|
||||
ret = drm_sysfs_connector_add(&dconn->conn);
|
||||
ret = drm_connector_register(&dconn->conn);
|
||||
if (ret)
|
||||
goto err_sysfs;
|
||||
|
||||
|
|
|
@ -829,7 +829,7 @@ static void ast_connector_destroy(struct drm_connector *connector)
|
|||
{
|
||||
struct ast_connector *ast_connector = to_ast_connector(connector);
|
||||
ast_i2c_destroy(ast_connector->i2c);
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
kfree(connector);
|
||||
}
|
||||
|
@ -871,7 +871,7 @@ static int ast_connector_init(struct drm_device *dev)
|
|||
connector->interlace_allowed = 0;
|
||||
connector->doublescan_allowed = 0;
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
connector->polled = DRM_CONNECTOR_POLL_CONNECT;
|
||||
|
||||
|
|
|
@ -328,7 +328,7 @@ int ptn3460_init(struct drm_device *dev, struct drm_encoder *encoder,
|
|||
}
|
||||
drm_connector_helper_add(&ptn_bridge->connector,
|
||||
&ptn3460_connector_helper_funcs);
|
||||
drm_sysfs_connector_add(&ptn_bridge->connector);
|
||||
drm_connector_register(&ptn_bridge->connector);
|
||||
drm_mode_connector_attach_encoder(&ptn_bridge->connector, encoder);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -920,6 +920,34 @@ void drm_connector_cleanup(struct drm_connector *connector)
|
|||
}
|
||||
EXPORT_SYMBOL(drm_connector_cleanup);
|
||||
|
||||
/**
|
||||
* drm_connector_register - register a connector
|
||||
* @connector: the connector to register
|
||||
*
|
||||
* Register userspace interfaces for a connector
|
||||
*
|
||||
* Returns:
|
||||
* Zero on success, error code on failure.
|
||||
*/
|
||||
int drm_connector_register(struct drm_connector *connector)
|
||||
{
|
||||
return drm_sysfs_connector_add(connector);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_connector_register);
|
||||
|
||||
/**
|
||||
* drm_connector_unregister - unregister a connector
|
||||
* @connector: the connector to unregister
|
||||
*
|
||||
* Unregister userspace interfaces for a connector
|
||||
*/
|
||||
void drm_connector_unregister(struct drm_connector *connector)
|
||||
{
|
||||
drm_sysfs_connector_remove(connector);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_connector_unregister);
|
||||
|
||||
|
||||
/**
|
||||
* drm_connector_unplug_all - unregister connector userspace interfaces
|
||||
* @dev: drm device
|
||||
|
@ -934,7 +962,7 @@ void drm_connector_unplug_all(struct drm_device *dev)
|
|||
|
||||
/* taking the mode config mutex ends up in a clash with sysfs */
|
||||
list_for_each_entry(connector, &dev->mode_config.connector_list, head)
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
|
||||
}
|
||||
EXPORT_SYMBOL(drm_connector_unplug_all);
|
||||
|
|
|
@ -438,7 +438,6 @@ int drm_sysfs_connector_add(struct drm_connector *connector)
|
|||
out:
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_sysfs_connector_add);
|
||||
|
||||
/**
|
||||
* drm_sysfs_connector_remove - remove an connector device from sysfs
|
||||
|
@ -468,7 +467,6 @@ void drm_sysfs_connector_remove(struct drm_connector *connector)
|
|||
device_unregister(connector->kdev);
|
||||
connector->kdev = NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_sysfs_connector_remove);
|
||||
|
||||
/**
|
||||
* drm_sysfs_hotplug_event - generate a DRM uevent
|
||||
|
|
|
@ -1018,7 +1018,7 @@ static int exynos_dp_create_connector(struct exynos_drm_display *display,
|
|||
}
|
||||
|
||||
drm_connector_helper_add(connector, &exynos_dp_connector_helper_funcs);
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
drm_mode_connector_attach_encoder(connector, encoder);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -185,7 +185,7 @@ static void exynos_drm_connector_destroy(struct drm_connector *connector)
|
|||
struct exynos_drm_connector *exynos_connector =
|
||||
to_exynos_connector(connector);
|
||||
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
kfree(exynos_connector);
|
||||
}
|
||||
|
@ -230,7 +230,7 @@ struct drm_connector *exynos_drm_connector_create(struct drm_device *dev,
|
|||
drm_connector_init(dev, connector, &exynos_connector_funcs, type);
|
||||
drm_connector_helper_add(connector, &exynos_connector_helper_funcs);
|
||||
|
||||
err = drm_sysfs_connector_add(connector);
|
||||
err = drm_connector_register(connector);
|
||||
if (err)
|
||||
goto err_connector;
|
||||
|
||||
|
@ -250,7 +250,7 @@ struct drm_connector *exynos_drm_connector_create(struct drm_device *dev,
|
|||
return connector;
|
||||
|
||||
err_sysfs:
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
err_connector:
|
||||
drm_connector_cleanup(connector);
|
||||
kfree(exynos_connector);
|
||||
|
|
|
@ -48,7 +48,7 @@ exynos_dpi_detect(struct drm_connector *connector, bool force)
|
|||
|
||||
static void exynos_dpi_connector_destroy(struct drm_connector *connector)
|
||||
{
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
}
|
||||
|
||||
|
@ -117,7 +117,7 @@ static int exynos_dpi_create_connector(struct exynos_drm_display *display,
|
|||
}
|
||||
|
||||
drm_connector_helper_add(connector, &exynos_dpi_connector_helper_funcs);
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
drm_mode_connector_attach_encoder(connector, encoder);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -1246,7 +1246,7 @@ static int exynos_dsi_create_connector(struct exynos_drm_display *display,
|
|||
}
|
||||
|
||||
drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs);
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
drm_mode_connector_attach_encoder(connector, encoder);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -562,7 +562,7 @@ static int vidi_create_connector(struct exynos_drm_display *display,
|
|||
}
|
||||
|
||||
drm_connector_helper_add(connector, &vidi_connector_helper_funcs);
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
drm_mode_connector_attach_encoder(connector, encoder);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -1129,7 +1129,7 @@ static int hdmi_create_connector(struct exynos_drm_display *display,
|
|||
}
|
||||
|
||||
drm_connector_helper_add(connector, &hdmi_connector_helper_funcs);
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
drm_mode_connector_attach_encoder(connector, encoder);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -192,7 +192,7 @@ static void cdv_intel_crt_destroy(struct drm_connector *connector)
|
|||
struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
|
||||
|
||||
psb_intel_i2c_destroy(gma_encoder->ddc_bus);
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
kfree(connector);
|
||||
}
|
||||
|
@ -304,7 +304,7 @@ void cdv_intel_crt_init(struct drm_device *dev,
|
|||
drm_connector_helper_add(connector,
|
||||
&cdv_intel_crt_connector_helper_funcs);
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
return;
|
||||
failed_ddc:
|
||||
|
|
|
@ -1713,7 +1713,7 @@ cdv_intel_dp_destroy(struct drm_connector *connector)
|
|||
}
|
||||
}
|
||||
i2c_del_adapter(&intel_dp->adapter);
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
kfree(connector);
|
||||
}
|
||||
|
@ -1847,7 +1847,7 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev
|
|||
connector->interlace_allowed = false;
|
||||
connector->doublescan_allowed = false;
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
/* Set up the DDC bus. */
|
||||
switch (output_reg) {
|
||||
|
|
|
@ -248,7 +248,7 @@ static void cdv_hdmi_destroy(struct drm_connector *connector)
|
|||
|
||||
if (gma_encoder->i2c_bus)
|
||||
psb_intel_i2c_destroy(gma_encoder->i2c_bus);
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
kfree(connector);
|
||||
}
|
||||
|
@ -356,7 +356,7 @@ void cdv_hdmi_init(struct drm_device *dev,
|
|||
|
||||
hdmi_priv->hdmi_i2c_adapter = &(gma_encoder->i2c_bus->adapter);
|
||||
hdmi_priv->dev = dev;
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
return;
|
||||
|
||||
failed_ddc:
|
||||
|
|
|
@ -446,7 +446,7 @@ static void cdv_intel_lvds_destroy(struct drm_connector *connector)
|
|||
|
||||
if (gma_encoder->i2c_bus)
|
||||
psb_intel_i2c_destroy(gma_encoder->i2c_bus);
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
kfree(connector);
|
||||
}
|
||||
|
@ -774,7 +774,7 @@ void cdv_intel_lvds_init(struct drm_device *dev,
|
|||
|
||||
out:
|
||||
mutex_unlock(&dev->mode_config.mutex);
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
return;
|
||||
|
||||
failed_find:
|
||||
|
|
|
@ -318,7 +318,7 @@ static void mdfld_dsi_connector_destroy(struct drm_connector *connector)
|
|||
|
||||
if (!dsi_connector)
|
||||
return;
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
sender = dsi_connector->pkg_sender;
|
||||
mdfld_dsi_pkg_sender_destroy(sender);
|
||||
|
@ -597,7 +597,7 @@ void mdfld_dsi_output_init(struct drm_device *dev,
|
|||
dsi_config->encoder = encoder;
|
||||
encoder->base.type = (pipe == 0) ? INTEL_OUTPUT_MIPI :
|
||||
INTEL_OUTPUT_MIPI2;
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
return;
|
||||
|
||||
/*TODO: add code to destroy outputs on error*/
|
||||
|
|
|
@ -665,7 +665,7 @@ void oaktrail_hdmi_init(struct drm_device *dev,
|
|||
connector->display_info.subpixel_order = SubPixelHorizontalRGB;
|
||||
connector->interlace_allowed = false;
|
||||
connector->doublescan_allowed = false;
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
dev_info(dev->dev, "HDMI initialised.\n");
|
||||
|
||||
return;
|
||||
|
|
|
@ -404,7 +404,7 @@ void oaktrail_lvds_init(struct drm_device *dev,
|
|||
out:
|
||||
mutex_unlock(&dev->mode_config.mutex);
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
return;
|
||||
|
||||
failed_find:
|
||||
|
|
|
@ -563,7 +563,7 @@ void psb_intel_lvds_destroy(struct drm_connector *connector)
|
|||
|
||||
if (lvds_priv->ddc_bus)
|
||||
psb_intel_i2c_destroy(lvds_priv->ddc_bus);
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
kfree(connector);
|
||||
}
|
||||
|
@ -829,7 +829,7 @@ void psb_intel_lvds_init(struct drm_device *dev,
|
|||
*/
|
||||
out:
|
||||
mutex_unlock(&dev->mode_config.mutex);
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
return;
|
||||
|
||||
failed_find:
|
||||
|
|
|
@ -1682,7 +1682,7 @@ static void psb_intel_sdvo_destroy(struct drm_connector *connector)
|
|||
psb_intel_sdvo_connector->tv_format);
|
||||
|
||||
psb_intel_sdvo_destroy_enhance_property(connector);
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
kfree(connector);
|
||||
}
|
||||
|
@ -2071,7 +2071,7 @@ psb_intel_sdvo_connector_init(struct psb_intel_sdvo_connector *connector,
|
|||
connector->base.base.display_info.subpixel_order = SubPixelHorizontalRGB;
|
||||
|
||||
gma_connector_attach_encoder(&connector->base, &encoder->base);
|
||||
drm_sysfs_connector_add(&connector->base.base);
|
||||
drm_connector_register(&connector->base.base);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -869,7 +869,7 @@ void intel_crt_init(struct drm_device *dev)
|
|||
|
||||
drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
if (!I915_HAS_HOTPLUG(dev))
|
||||
intel_connector->polled = DRM_CONNECTOR_POLL_CONNECT;
|
||||
|
|
|
@ -12234,7 +12234,7 @@ void intel_connector_unregister(struct intel_connector *intel_connector)
|
|||
struct drm_connector *connector = &intel_connector->base;
|
||||
|
||||
intel_panel_destroy_backlight(connector);
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
}
|
||||
|
||||
void intel_modeset_cleanup(struct drm_device *dev)
|
||||
|
|
|
@ -4246,7 +4246,7 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
|
|||
edp_panel_vdd_work);
|
||||
|
||||
intel_connector_attach_encoder(intel_connector, intel_encoder);
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
if (HAS_DDI(dev))
|
||||
intel_connector->get_hw_state = intel_ddi_connector_get_hw_state;
|
||||
|
@ -4289,7 +4289,7 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
|
|||
edp_panel_vdd_off_sync(intel_dp);
|
||||
drm_modeset_unlock(&dev->mode_config.connection_mutex);
|
||||
}
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -742,7 +742,7 @@ bool intel_dsi_init(struct drm_device *dev)
|
|||
|
||||
intel_connector_attach_encoder(intel_connector, intel_encoder);
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
fixed_mode = dsi->dev_ops->get_modes(&intel_dsi->dev);
|
||||
if (!fixed_mode) {
|
||||
|
|
|
@ -558,7 +558,7 @@ void intel_dvo_init(struct drm_device *dev)
|
|||
intel_dvo->panel_wants_dither = true;
|
||||
}
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -1490,7 +1490,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
|
|||
intel_hdmi_add_properties(intel_hdmi, connector);
|
||||
|
||||
intel_connector_attach_encoder(intel_connector, intel_encoder);
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
/* For G4X desktop chip, PEG_BAND_GAP_DATA 3:0 must first be written
|
||||
* 0xd. Failure to do so will result in spurious interrupts being
|
||||
|
|
|
@ -1097,7 +1097,7 @@ void intel_lvds_init(struct drm_device *dev)
|
|||
DRM_DEBUG_KMS("lid notifier registration failed\n");
|
||||
lvds_connector->lid_notifier.notifier_call = NULL;
|
||||
}
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
intel_panel_init(&intel_connector->panel, fixed_mode, downclock_mode);
|
||||
intel_panel_setup_backlight(connector);
|
||||
|
|
|
@ -2431,7 +2431,7 @@ intel_sdvo_connector_init(struct intel_sdvo_connector *connector,
|
|||
connector->base.unregister = intel_sdvo_connector_unregister;
|
||||
|
||||
intel_connector_attach_encoder(&connector->base, &encoder->base);
|
||||
ret = drm_sysfs_connector_add(drm_connector);
|
||||
ret = drm_connector_register(drm_connector);
|
||||
if (ret < 0)
|
||||
goto err1;
|
||||
|
||||
|
@ -2444,7 +2444,7 @@ intel_sdvo_connector_init(struct intel_sdvo_connector *connector,
|
|||
return 0;
|
||||
|
||||
err2:
|
||||
drm_sysfs_connector_remove(drm_connector);
|
||||
drm_connector_unregister(drm_connector);
|
||||
err1:
|
||||
drm_connector_cleanup(drm_connector);
|
||||
|
||||
|
@ -2557,7 +2557,7 @@ intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, int type)
|
|||
return true;
|
||||
|
||||
err:
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
intel_sdvo_destroy(connector);
|
||||
return false;
|
||||
}
|
||||
|
@ -2636,7 +2636,7 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device)
|
|||
return true;
|
||||
|
||||
err:
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
intel_sdvo_destroy(connector);
|
||||
return false;
|
||||
}
|
||||
|
@ -2709,7 +2709,7 @@ static void intel_sdvo_output_cleanup(struct intel_sdvo *intel_sdvo)
|
|||
list_for_each_entry_safe(connector, tmp,
|
||||
&dev->mode_config.connector_list, head) {
|
||||
if (intel_attached_encoder(connector) == &intel_sdvo->base) {
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
intel_sdvo_destroy(connector);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1680,5 +1680,5 @@ intel_tv_init(struct drm_device *dev)
|
|||
drm_object_attach_property(&connector->base,
|
||||
dev->mode_config.tv_bottom_margin_property,
|
||||
intel_tv->margin[TV_MARGIN_BOTTOM]);
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
}
|
||||
|
|
|
@ -1621,7 +1621,7 @@ static struct drm_connector *mga_vga_init(struct drm_device *dev)
|
|||
|
||||
drm_connector_helper_add(connector, &mga_vga_connector_helper_funcs);
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
mga_connector->i2c = mgag200_i2c_create(dev);
|
||||
if (!mga_connector->i2c)
|
||||
|
|
|
@ -298,7 +298,7 @@ static void hdmi_connector_destroy(struct drm_connector *connector)
|
|||
|
||||
hdp_disable(hdmi_connector);
|
||||
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
|
||||
hdmi_unreference(hdmi_connector->hdmi);
|
||||
|
@ -408,7 +408,7 @@ struct drm_connector *hdmi_connector_init(struct hdmi *hdmi)
|
|||
connector->interlace_allowed = 1;
|
||||
connector->doublescan_allowed = 0;
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
ret = hpd_enable(hdmi_connector);
|
||||
if (ret) {
|
||||
|
|
|
@ -104,7 +104,7 @@ nouveau_connector_destroy(struct drm_connector *connector)
|
|||
struct nouveau_connector *nv_connector = nouveau_connector(connector);
|
||||
nouveau_event_ref(NULL, &nv_connector->hpd);
|
||||
kfree(nv_connector->edid);
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
if (nv_connector->aux.transfer)
|
||||
drm_dp_aux_unregister(&nv_connector->aux);
|
||||
|
@ -1236,6 +1236,6 @@ nouveau_connector_create(struct drm_device *dev, int index)
|
|||
|
||||
INIT_WORK(&nv_connector->work, nouveau_connector_hotplug_work);
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
return connector;
|
||||
}
|
||||
|
|
|
@ -130,7 +130,7 @@ static void omap_connector_destroy(struct drm_connector *connector)
|
|||
struct omap_dss_device *dssdev = omap_connector->dssdev;
|
||||
|
||||
DBG("%s", omap_connector->dssdev->name);
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
kfree(omap_connector);
|
||||
|
||||
|
@ -307,7 +307,7 @@ struct drm_connector *omap_connector_init(struct drm_device *dev,
|
|||
connector->interlace_allowed = 1;
|
||||
connector->doublescan_allowed = 0;
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
return connector;
|
||||
|
||||
|
|
|
@ -835,7 +835,7 @@ static void qxl_conn_destroy(struct drm_connector *connector)
|
|||
struct qxl_output *qxl_output =
|
||||
drm_connector_to_qxl_output(connector);
|
||||
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
kfree(qxl_output);
|
||||
}
|
||||
|
@ -902,7 +902,7 @@ static int qdev_output_init(struct drm_device *dev, int num_output)
|
|||
|
||||
drm_object_attach_property(&connector->base,
|
||||
qdev->hotplug_mode_update_property, 0);
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -737,7 +737,7 @@ static void radeon_connector_destroy(struct drm_connector *connector)
|
|||
if (radeon_connector->edid)
|
||||
kfree(radeon_connector->edid);
|
||||
kfree(radeon_connector->con_priv);
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
kfree(connector);
|
||||
}
|
||||
|
@ -2038,7 +2038,7 @@ radeon_add_atom_connector(struct drm_device *dev,
|
|||
connector->polled = DRM_CONNECTOR_POLL_HPD;
|
||||
|
||||
connector->display_info.subpixel_order = subpixel_order;
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
if (has_aux)
|
||||
radeon_dp_aux_init(radeon_connector);
|
||||
|
@ -2199,5 +2199,5 @@ radeon_add_legacy_connector(struct drm_device *dev,
|
|||
} else
|
||||
connector->polled = DRM_CONNECTOR_POLL_HPD;
|
||||
connector->display_info.subpixel_order = subpixel_order;
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
}
|
||||
|
|
|
@ -64,7 +64,7 @@ static const struct drm_connector_helper_funcs connector_helper_funcs = {
|
|||
|
||||
static void rcar_du_lvds_connector_destroy(struct drm_connector *connector)
|
||||
{
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
}
|
||||
|
||||
|
@ -105,7 +105,7 @@ int rcar_du_lvds_connector_init(struct rcar_du_device *rcdu,
|
|||
return ret;
|
||||
|
||||
drm_connector_helper_add(connector, &connector_helper_funcs);
|
||||
ret = drm_sysfs_connector_add(connector);
|
||||
ret = drm_connector_register(connector);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ static const struct drm_connector_helper_funcs connector_helper_funcs = {
|
|||
|
||||
static void rcar_du_vga_connector_destroy(struct drm_connector *connector)
|
||||
{
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
}
|
||||
|
||||
|
@ -70,7 +70,7 @@ int rcar_du_vga_connector_init(struct rcar_du_device *rcdu,
|
|||
return ret;
|
||||
|
||||
drm_connector_helper_add(connector, &connector_helper_funcs);
|
||||
ret = drm_sysfs_connector_add(connector);
|
||||
ret = drm_connector_register(connector);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -692,7 +692,7 @@ static void shmob_drm_connector_destroy(struct drm_connector *connector)
|
|||
struct shmob_drm_connector *scon = to_shmob_connector(connector);
|
||||
|
||||
shmob_drm_backlight_exit(scon);
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
}
|
||||
|
||||
|
@ -726,7 +726,7 @@ int shmob_drm_connector_create(struct shmob_drm_device *sdev,
|
|||
return ret;
|
||||
|
||||
drm_connector_helper_add(connector, &connector_helper_funcs);
|
||||
ret = drm_sysfs_connector_add(connector);
|
||||
ret = drm_connector_register(connector);
|
||||
if (ret < 0)
|
||||
goto err_cleanup;
|
||||
|
||||
|
@ -749,7 +749,7 @@ int shmob_drm_connector_create(struct shmob_drm_device *sdev,
|
|||
err_backlight:
|
||||
shmob_drm_backlight_exit(&sdev->connector);
|
||||
err_sysfs:
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
err_cleanup:
|
||||
drm_connector_cleanup(connector);
|
||||
return ret;
|
||||
|
|
|
@ -105,7 +105,7 @@ static void drm_connector_clear(struct drm_connector *connector)
|
|||
|
||||
static void tegra_connector_destroy(struct drm_connector *connector)
|
||||
{
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
drm_connector_clear(connector);
|
||||
}
|
||||
|
@ -318,7 +318,7 @@ int tegra_output_init(struct drm_device *drm, struct tegra_output *output)
|
|||
drm_encoder_helper_add(&output->encoder, &encoder_helper_funcs);
|
||||
|
||||
drm_mode_connector_attach_encoder(&output->connector, &output->encoder);
|
||||
drm_sysfs_connector_add(&output->connector);
|
||||
drm_connector_register(&output->connector);
|
||||
|
||||
output->encoder.possible_crtcs = 0x3;
|
||||
|
||||
|
|
|
@ -247,7 +247,7 @@ static struct drm_connector *panel_connector_create(struct drm_device *dev,
|
|||
if (ret)
|
||||
goto fail;
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
return connector;
|
||||
|
||||
|
|
|
@ -261,7 +261,7 @@ static struct drm_connector *slave_connector_create(struct drm_device *dev,
|
|||
if (ret)
|
||||
goto fail;
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
return connector;
|
||||
|
||||
|
|
|
@ -261,7 +261,7 @@ static struct drm_connector *tfp410_connector_create(struct drm_device *dev,
|
|||
if (ret)
|
||||
goto fail;
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
|
||||
return connector;
|
||||
|
||||
|
|
|
@ -124,7 +124,7 @@ static int udl_connector_set_property(struct drm_connector *connector,
|
|||
|
||||
static void udl_connector_destroy(struct drm_connector *connector)
|
||||
{
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
kfree(connector);
|
||||
}
|
||||
|
@ -154,7 +154,7 @@ int udl_connector_init(struct drm_device *dev, struct drm_encoder *encoder)
|
|||
drm_connector_init(dev, connector, &udl_connector_funcs, DRM_MODE_CONNECTOR_DVII);
|
||||
drm_connector_helper_add(connector, &udl_connector_helper_funcs);
|
||||
|
||||
drm_sysfs_connector_add(connector);
|
||||
drm_connector_register(connector);
|
||||
drm_mode_connector_attach_encoder(connector, encoder);
|
||||
|
||||
drm_object_attach_property(&connector->base,
|
||||
|
|
|
@ -75,7 +75,7 @@ void vmw_display_unit_cleanup(struct vmw_display_unit *du)
|
|||
vmw_surface_unreference(&du->cursor_surface);
|
||||
if (du->cursor_dmabuf)
|
||||
vmw_dmabuf_unreference(&du->cursor_dmabuf);
|
||||
drm_sysfs_connector_remove(&du->connector);
|
||||
drm_connector_unregister(&du->connector);
|
||||
drm_crtc_cleanup(&du->crtc);
|
||||
drm_encoder_cleanup(&du->encoder);
|
||||
drm_connector_cleanup(&du->connector);
|
||||
|
|
|
@ -371,7 +371,7 @@ static int vmw_ldu_init(struct vmw_private *dev_priv, unsigned unit)
|
|||
encoder->possible_crtcs = (1 << unit);
|
||||
encoder->possible_clones = 0;
|
||||
|
||||
(void) drm_sysfs_connector_add(connector);
|
||||
(void) drm_connector_register(connector);
|
||||
|
||||
drm_crtc_init(dev, crtc, &vmw_legacy_crtc_funcs);
|
||||
|
||||
|
|
|
@ -467,7 +467,7 @@ static int vmw_sou_init(struct vmw_private *dev_priv, unsigned unit)
|
|||
encoder->possible_crtcs = (1 << unit);
|
||||
encoder->possible_clones = 0;
|
||||
|
||||
(void) drm_sysfs_connector_add(connector);
|
||||
(void) drm_connector_register(connector);
|
||||
|
||||
drm_crtc_init(dev, crtc, &vmw_screen_object_crtc_funcs);
|
||||
|
||||
|
|
|
@ -202,7 +202,7 @@ static const struct file_operations imx_drm_driver_fops = {
|
|||
|
||||
void imx_drm_connector_destroy(struct drm_connector *connector)
|
||||
{
|
||||
drm_sysfs_connector_remove(connector);
|
||||
drm_connector_unregister(connector);
|
||||
drm_connector_cleanup(connector);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(imx_drm_connector_destroy);
|
||||
|
@ -293,10 +293,10 @@ static int imx_drm_driver_load(struct drm_device *drm, unsigned long flags)
|
|||
* userspace will expect to be able to access DRM at this point.
|
||||
*/
|
||||
list_for_each_entry(connector, &drm->mode_config.connector_list, head) {
|
||||
ret = drm_sysfs_connector_add(connector);
|
||||
ret = drm_connector_register(connector);
|
||||
if (ret) {
|
||||
dev_err(drm->dev,
|
||||
"[CONNECTOR:%d:%s] drm_sysfs_connector_add failed: %d\n",
|
||||
"[CONNECTOR:%d:%s] drm_connector_register failed: %d\n",
|
||||
connector->base.id,
|
||||
connector->name, ret);
|
||||
goto err_unbind;
|
||||
|
|
|
@ -878,6 +878,8 @@ extern int drm_connector_init(struct drm_device *dev,
|
|||
struct drm_connector *connector,
|
||||
const struct drm_connector_funcs *funcs,
|
||||
int connector_type);
|
||||
int drm_connector_register(struct drm_connector *connector);
|
||||
void drm_connector_unregister(struct drm_connector *connector);
|
||||
|
||||
extern void drm_connector_cleanup(struct drm_connector *connector);
|
||||
/* helper to unplug all connectors from sysfs for device */
|
||||
|
|
Loading…
Reference in a new issue