diff --git a/sys/dev/drm2/drm_crtc.c b/sys/dev/drm2/drm_crtc.c index ae40eb2..297013c 100644 --- a/sys/dev/drm2/drm_crtc.c +++ b/sys/dev/drm2/drm_crtc.c @@ -973,8 +973,10 @@ void drm_mode_config_cleanup(struct drm_device *dev) encoder->funcs->destroy(encoder); } + DRM_INFO("%s: Destroy all connectors of dev %p\n", __func__, dev); list_for_each_entry_safe(connector, ot, &dev->mode_config.connector_list, head) { + DRM_INFO("%s: -> connector %p\n", __func__, connector); connector->funcs->destroy(connector); } diff --git a/sys/dev/drm2/drm_dp_iic_helper.c b/sys/dev/drm2/drm_dp_iic_helper.c index 71319e3..7a5ea65 100644 --- a/sys/dev/drm2/drm_dp_iic_helper.c +++ b/sys/dev/drm2/drm_dp_iic_helper.c @@ -26,6 +26,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include #include #include "iicbus_if.h" #include @@ -183,7 +185,7 @@ iic_dp_aux_reset(device_t idev, u_char speed, u_char addr, u_char *oldaddr) { iic_dp_aux_reset_bus(idev); - return (0); + return (0); } static int @@ -206,11 +208,17 @@ static int iic_dp_aux_attach(device_t idev) { struct iic_dp_aux_data *aux_data; + struct stack *st; aux_data = device_get_softc(idev); aux_data->port = device_add_child(idev, "iicbus", -1); if (aux_data->port == NULL) return (ENXIO); + DRM_INFO("%s: idev=%p port=%p\n", __func__, idev, aux_data->port); + st = stack_create(); + stack_save(st); + stack_print(st); + stack_destroy(st); device_quiet(aux_data->port); bus_generic_attach(idev); return (0); @@ -226,8 +234,16 @@ iic_dp_aux_detach(device_t idev) port = aux_data->port; bus_generic_detach(idev); - if (port != NULL) + if (port != NULL) { + struct stack *st; + DRM_INFO("%s: idev=%p port=%p\n", __func__, idev, aux_data->port); + st = stack_create(); + stack_save(st); + stack_print(st); + stack_destroy(st); device_delete_child(idev, port); + aux_data->port = NULL; + } return (0); } diff --git a/sys/dev/drm2/radeon/radeon_connectors.c b/sys/dev/drm2/radeon/radeon_connectors.c index 57d7c26..1088f23 100644 --- a/sys/dev/drm2/radeon/radeon_connectors.c +++ b/sys/dev/drm2/radeon/radeon_connectors.c @@ -1208,8 +1208,10 @@ static void radeon_dp_connector_destroy(struct drm_connector *connector) if (radeon_connector->edid) free(radeon_connector->edid, DRM_MEM_KMS); - if (radeon_dig_connector->dp_i2c_bus) + if (radeon_dig_connector->dp_i2c_bus) { + DRM_INFO("%s: destroy connector %p / %p / %p (bus %p)\n", __func__, connector, radeon_connector, radeon_dig_connector, radeon_dig_connector->dp_i2c_bus); radeon_i2c_destroy(radeon_dig_connector->dp_i2c_bus); + } free(radeon_connector->con_priv, DRM_MEM_DRIVER); #ifdef DUMBBELL_WIP drm_sysfs_connector_remove(connector); @@ -1590,6 +1592,7 @@ radeon_add_atom_connector(struct drm_device *dev, radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "eDP-auxch"); else radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "DP-auxch"); + DRM_INFO("%s: create connector %p / %p / %p (bus %p)\n", __func__, &radeon_connector->base, radeon_connector, radeon_dig_connector, radeon_dig_connector->dp_i2c_bus); if (!radeon_dig_connector->dp_i2c_bus) DRM_ERROR("DP: Failed to assign dp ddc bus! Check dmesg for i2c errors.\n"); radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); @@ -1774,6 +1777,7 @@ radeon_add_atom_connector(struct drm_device *dev, if (i2c_bus->valid) { /* add DP i2c bus */ radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "DP-auxch"); + DRM_INFO("%s: create connector %p / %p / %p (bus %p)\n", __func__, &radeon_connector->base, radeon_connector, radeon_dig_connector, radeon_dig_connector->dp_i2c_bus); if (!radeon_dig_connector->dp_i2c_bus) DRM_ERROR("DP: Failed to assign dp ddc bus! Check dmesg for i2c errors.\n"); radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); @@ -1812,6 +1816,7 @@ radeon_add_atom_connector(struct drm_device *dev, if (i2c_bus->valid) { /* add DP i2c bus */ radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "eDP-auxch"); + DRM_INFO("%s: create connector %p / %p / %p (bus %p)\n", __func__, &radeon_connector->base, radeon_connector, radeon_dig_connector, radeon_dig_connector->dp_i2c_bus); if (!radeon_dig_connector->dp_i2c_bus) DRM_ERROR("DP: Failed to assign dp ddc bus! Check dmesg for i2c errors.\n"); radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);