mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
drm/nouveau/disp: PIOR DP uses GPIO for HPD, not PMGR AUX interrupts
Fixes crash on boards with ANX9805 TMDS/DP encoders. Cc: stable@vger.kernel.org # 6.4+ Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Karol Herbst <kherbst@redhat.com> Signed-off-by: Karol Herbst <kherbst@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230719044051.6975-2-skeggsb@gmail.com
This commit is contained in:
parent
752a281032
commit
2b5d1c29f6
@ -81,20 +81,29 @@ nvkm_uconn_uevent(struct nvkm_object *object, void *argv, u32 argc, struct nvkm_
|
||||
return -ENOSYS;
|
||||
|
||||
list_for_each_entry(outp, &conn->disp->outps, head) {
|
||||
if (outp->info.connector == conn->index && outp->dp.aux) {
|
||||
if (args->v0.types & NVIF_CONN_EVENT_V0_PLUG ) bits |= NVKM_I2C_PLUG;
|
||||
if (args->v0.types & NVIF_CONN_EVENT_V0_UNPLUG) bits |= NVKM_I2C_UNPLUG;
|
||||
if (args->v0.types & NVIF_CONN_EVENT_V0_IRQ ) bits |= NVKM_I2C_IRQ;
|
||||
if (outp->info.connector == conn->index)
|
||||
break;
|
||||
}
|
||||
|
||||
return nvkm_uevent_add(uevent, &device->i2c->event, outp->dp.aux->id, bits,
|
||||
nvkm_uconn_uevent_aux);
|
||||
}
|
||||
if (&outp->head == &conn->disp->outps)
|
||||
return -EINVAL;
|
||||
|
||||
if (outp->dp.aux && !outp->info.location) {
|
||||
if (args->v0.types & NVIF_CONN_EVENT_V0_PLUG ) bits |= NVKM_I2C_PLUG;
|
||||
if (args->v0.types & NVIF_CONN_EVENT_V0_UNPLUG) bits |= NVKM_I2C_UNPLUG;
|
||||
if (args->v0.types & NVIF_CONN_EVENT_V0_IRQ ) bits |= NVKM_I2C_IRQ;
|
||||
|
||||
return nvkm_uevent_add(uevent, &device->i2c->event, outp->dp.aux->id, bits,
|
||||
nvkm_uconn_uevent_aux);
|
||||
}
|
||||
|
||||
if (args->v0.types & NVIF_CONN_EVENT_V0_PLUG ) bits |= NVKM_GPIO_HI;
|
||||
if (args->v0.types & NVIF_CONN_EVENT_V0_UNPLUG) bits |= NVKM_GPIO_LO;
|
||||
if (args->v0.types & NVIF_CONN_EVENT_V0_IRQ)
|
||||
return -EINVAL;
|
||||
if (args->v0.types & NVIF_CONN_EVENT_V0_IRQ) {
|
||||
/* TODO: support DP IRQ on ANX9805 and remove this hack. */
|
||||
if (!outp->info.location)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return nvkm_uevent_add(uevent, &device->gpio->event, conn->info.hpd, bits,
|
||||
nvkm_uconn_uevent_gpio);
|
||||
|
Loading…
Reference in New Issue
Block a user