mirror of
https://github.com/torvalds/linux.git
synced 2026-04-22 16:53:59 -04:00
Merge v6.8-rc6 into drm-next
Thomas Zimmermann asked to backmerge -rc6 for drm-misc branches, there's a few same-area-changed conflicts (xe and amdgpu mostly) that are getting a bit too annoying. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
@@ -1844,21 +1844,12 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)
|
||||
DRM_ERROR("amdgpu: fail to register dmub aux callback");
|
||||
goto error;
|
||||
}
|
||||
if (!register_dmub_notify_callback(adev, DMUB_NOTIFICATION_HPD, dmub_hpd_callback, true)) {
|
||||
DRM_ERROR("amdgpu: fail to register dmub hpd callback");
|
||||
goto error;
|
||||
}
|
||||
if (!register_dmub_notify_callback(adev, DMUB_NOTIFICATION_HPD_IRQ, dmub_hpd_callback, true)) {
|
||||
DRM_ERROR("amdgpu: fail to register dmub hpd callback");
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
/* Enable outbox notification only after IRQ handlers are registered and DMUB is alive.
|
||||
* It is expected that DMUB will resend any pending notifications at this point, for
|
||||
* example HPD from DPIA.
|
||||
*/
|
||||
if (dc_is_dmub_outbox_supported(adev->dm.dc)) {
|
||||
/* Enable outbox notification only after IRQ handlers are registered and DMUB is alive.
|
||||
* It is expected that DMUB will resend any pending notifications at this point. Note
|
||||
* that hpd and hpd_irq handler registration are deferred to register_hpd_handlers() to
|
||||
* align legacy interface initialization sequence. Connection status will be proactivly
|
||||
* detected once in the amdgpu_dm_initialize_drm_device.
|
||||
*/
|
||||
dc_enable_dmub_outbox(adev->dm.dc);
|
||||
|
||||
/* DPIA trace goes to dmesg logs only if outbox is enabled */
|
||||
@@ -2298,6 +2289,7 @@ static int dm_sw_fini(void *handle)
|
||||
|
||||
if (adev->dm.dmub_srv) {
|
||||
dmub_srv_destroy(adev->dm.dmub_srv);
|
||||
kfree(adev->dm.dmub_srv);
|
||||
adev->dm.dmub_srv = NULL;
|
||||
}
|
||||
|
||||
@@ -3547,6 +3539,14 @@ static void register_hpd_handlers(struct amdgpu_device *adev)
|
||||
int_params.requested_polarity = INTERRUPT_POLARITY_DEFAULT;
|
||||
int_params.current_polarity = INTERRUPT_POLARITY_DEFAULT;
|
||||
|
||||
if (dc_is_dmub_outbox_supported(adev->dm.dc)) {
|
||||
if (!register_dmub_notify_callback(adev, DMUB_NOTIFICATION_HPD, dmub_hpd_callback, true))
|
||||
DRM_ERROR("amdgpu: fail to register dmub hpd callback");
|
||||
|
||||
if (!register_dmub_notify_callback(adev, DMUB_NOTIFICATION_HPD_IRQ, dmub_hpd_callback, true))
|
||||
DRM_ERROR("amdgpu: fail to register dmub hpd callback");
|
||||
}
|
||||
|
||||
list_for_each_entry(connector,
|
||||
&dev->mode_config.connector_list, head) {
|
||||
|
||||
@@ -3575,10 +3575,6 @@ static void register_hpd_handlers(struct amdgpu_device *adev)
|
||||
handle_hpd_rx_irq,
|
||||
(void *) aconnector);
|
||||
}
|
||||
|
||||
if (adev->dm.hpd_rx_offload_wq)
|
||||
adev->dm.hpd_rx_offload_wq[connector->index].aconnector =
|
||||
aconnector;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4590,6 +4586,10 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (dm->hpd_rx_offload_wq)
|
||||
dm->hpd_rx_offload_wq[aconnector->base.index].aconnector =
|
||||
aconnector;
|
||||
|
||||
if (!dc_link_detect_connection_type(link, &new_connection_type))
|
||||
DRM_ERROR("KMS: Failed to detect connector\n");
|
||||
|
||||
@@ -6651,10 +6651,15 @@ amdgpu_dm_connector_late_register(struct drm_connector *connector)
|
||||
static void amdgpu_dm_connector_funcs_force(struct drm_connector *connector)
|
||||
{
|
||||
struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
|
||||
struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
|
||||
struct dc_link *dc_link = aconnector->dc_link;
|
||||
struct dc_sink *dc_em_sink = aconnector->dc_em_sink;
|
||||
struct edid *edid;
|
||||
struct i2c_adapter *ddc;
|
||||
|
||||
if (dc_link->aux_mode)
|
||||
ddc = &aconnector->dm_dp_aux.aux.ddc;
|
||||
else
|
||||
ddc = &aconnector->i2c->base;
|
||||
|
||||
/*
|
||||
* Note: drm_get_edid gets edid in the following order:
|
||||
@@ -6662,7 +6667,7 @@ static void amdgpu_dm_connector_funcs_force(struct drm_connector *connector)
|
||||
* 2) firmware EDID if set via edid_firmware module parameter
|
||||
* 3) regular DDC read.
|
||||
*/
|
||||
edid = drm_get_edid(connector, &amdgpu_connector->ddc_bus->aux.ddc);
|
||||
edid = drm_get_edid(connector, ddc);
|
||||
if (!edid) {
|
||||
DRM_ERROR("No EDID found on connector: %s.\n", connector->name);
|
||||
return;
|
||||
@@ -6703,12 +6708,18 @@ static int get_modes(struct drm_connector *connector)
|
||||
static void create_eml_sink(struct amdgpu_dm_connector *aconnector)
|
||||
{
|
||||
struct drm_connector *connector = &aconnector->base;
|
||||
struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(&aconnector->base);
|
||||
struct dc_link *dc_link = aconnector->dc_link;
|
||||
struct dc_sink_init_data init_params = {
|
||||
.link = aconnector->dc_link,
|
||||
.sink_signal = SIGNAL_TYPE_VIRTUAL
|
||||
};
|
||||
struct edid *edid;
|
||||
struct i2c_adapter *ddc;
|
||||
|
||||
if (dc_link->aux_mode)
|
||||
ddc = &aconnector->dm_dp_aux.aux.ddc;
|
||||
else
|
||||
ddc = &aconnector->i2c->base;
|
||||
|
||||
/*
|
||||
* Note: drm_get_edid gets edid in the following order:
|
||||
@@ -6716,7 +6727,7 @@ static void create_eml_sink(struct amdgpu_dm_connector *aconnector)
|
||||
* 2) firmware EDID if set via edid_firmware module parameter
|
||||
* 3) regular DDC read.
|
||||
*/
|
||||
edid = drm_get_edid(connector, &amdgpu_connector->ddc_bus->aux.ddc);
|
||||
edid = drm_get_edid(connector, ddc);
|
||||
if (!edid) {
|
||||
DRM_ERROR("No EDID found on connector: %s.\n", connector->name);
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user