@@ -1281,6 +1281,26 @@ static void i915_switcheroo_set_state(struct pci_dev
*pdev, enum vga_switcheroo_
}
}
+static void
+i915_switcheroo_reprobe(struct pci_dev *pdev)
+{
+ struct drm_device *dev = pci_get_drvdata(pdev);
+ struct drm_encoder *encoder, *encoder_tmp;
+ struct drm_connector *connector, *connector_tmp;
+
+ intel_fbdev_output_poll_changed(dev);
+
+ list_for_each_entry_safe(connector, connector_tmp, &dev-
>mode_config.connector_list, head)
+ if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)
+ connector->funcs->destroy(connector);
+
+ list_for_each_entry_safe(encoder, encoder_tmp, &dev-
>mode_config.encoder_list, head)
+ if (encoder->encoder_type == DRM_MODE_ENCODER_LVDS)
+ intel_encoder_destroy(encoder);
+
+ intel_lvds_init(dev);
+}
+