Just a heads up - I pushed this to drm-misc-fixes, but dim checkpatch
was complaining about the difference in authorship vs. S-O-B ("Alex
Ramirez" vs. "Alex Ramírez") so I updated the commit authorship to
"Alex Ramírez". In the future you probably want to make sure it uses
the the same name :).Either way, thank you for the fixes! On Wed, 2026-01-21 at 15:26 -0500, [email protected] wrote: > Reviewed-by: Lyude Paul <[email protected]> > > I will push these upstream in a moment > > On Fri, 2025-12-12 at 19:53 -0500, [email protected] wrote: > > From: Alex Ramirez <[email protected]> > > > > * Implement missing DCB connectors in uconn.c previously defined in > > conn.h. > > * Replace kernel WARN_ON macro with printk message to more > > gracefully > > signify > > an unknown connector was encountered. > > > > With this patch, unknown connectors are explicitly marked with > > value > > 0 > > (DCB_CONNECTOR_VGA) to match the tested current behavior. Although > > 0xff > > (DCB_CONNECTOR_NONE) may be more suitable, I don't want to > > introduce > > a breaking change. > > > > Fixes: 8b7d92cad953 ("drm/nouveau/kms/nv50-: create connectors > > based > > on nvkm info") > > Link: > > https://download.nvidia.com/open-gpu-doc/DCB/1/DCB-4.0-Specification.html#_connector_table_entry > > Signed-off-by: Alex Ramírez <[email protected]> > > --- > > .../gpu/drm/nouveau/nvkm/engine/disp/uconn.c | 73 ++++++++++++++- > > -- > > -- > > 1 file changed, 53 insertions(+), 20 deletions(-) > > > > diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c > > b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c > > index 2dab6612c4fc..d1fed2beee63 100644 > > --- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c > > +++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c > > @@ -191,27 +191,60 @@ nvkm_uconn_new(const struct nvkm_oclass > > *oclass, void *argv, u32 argc, struct nv > > spin_lock(&disp->client.lock); > > if (!conn->object.func) { > > switch (conn->info.type) { > > - case DCB_CONNECTOR_VGA : args->v0.type = > > NVIF_CONN_V0_VGA; break; > > - case DCB_CONNECTOR_TV_0 : > > - case DCB_CONNECTOR_TV_1 : > > - case DCB_CONNECTOR_TV_3 : args->v0.type = > > NVIF_CONN_V0_TV; break; > > - case DCB_CONNECTOR_DMS59_0 : > > - case DCB_CONNECTOR_DMS59_1 : > > - case DCB_CONNECTOR_DVI_I : args->v0.type = > > NVIF_CONN_V0_DVI_I; break; > > - case DCB_CONNECTOR_DVI_D : args->v0.type = > > NVIF_CONN_V0_DVI_D; break; > > - case DCB_CONNECTOR_LVDS : args->v0.type = > > NVIF_CONN_V0_LVDS; break; > > - case DCB_CONNECTOR_LVDS_SPWG: args->v0.type = > > NVIF_CONN_V0_LVDS_SPWG; break; > > - case DCB_CONNECTOR_DMS59_DP0: > > - case DCB_CONNECTOR_DMS59_DP1: > > - case DCB_CONNECTOR_DP : > > - case DCB_CONNECTOR_mDP : > > - case DCB_CONNECTOR_USB_C : args->v0.type = > > NVIF_CONN_V0_DP; break; > > - case DCB_CONNECTOR_eDP : args->v0.type = > > NVIF_CONN_V0_EDP; break; > > - case DCB_CONNECTOR_HDMI_0 : > > - case DCB_CONNECTOR_HDMI_1 : > > - case DCB_CONNECTOR_HDMI_C : args->v0.type = > > NVIF_CONN_V0_HDMI; break; > > + /* VGA */ > > + case DCB_CONNECTOR_DVI_A : > > + case DCB_CONNECTOR_POD_VGA : > > + case DCB_CONNECTOR_VGA : args->v0.type = > > NVIF_CONN_V0_VGA; break; > > + > > + /* TV */ > > + case DCB_CONNECTOR_TV_0 : > > + case DCB_CONNECTOR_TV_1 : > > + case DCB_CONNECTOR_TV_2 : > > + case DCB_CONNECTOR_TV_SCART : > > + case DCB_CONNECTOR_TV_SCART_D : > > + case DCB_CONNECTOR_TV_DTERM : > > + case DCB_CONNECTOR_POD_TV_3 : > > + case DCB_CONNECTOR_POD_TV_1 : > > + case DCB_CONNECTOR_POD_TV_0 : > > + case DCB_CONNECTOR_TV_3 : args- > > > v0.type = NVIF_CONN_V0_TV; break; > > + > > + /* DVI */ > > + case DCB_CONNECTOR_DVI_I_TV_1 : > > + case DCB_CONNECTOR_DVI_I_TV_0 : > > + case DCB_CONNECTOR_DVI_I_TV_2 : > > + case DCB_CONNECTOR_DVI_ADC : > > + case DCB_CONNECTOR_DMS59_0 : > > + case DCB_CONNECTOR_DMS59_1 : > > + case DCB_CONNECTOR_DVI_I : args->v0.type = > > NVIF_CONN_V0_DVI_I; break; > > + case DCB_CONNECTOR_TMDS : > > + case DCB_CONNECTOR_DVI_D : args->v0.type = > > NVIF_CONN_V0_DVI_D; break; > > + > > + /* LVDS */ > > + case DCB_CONNECTOR_LVDS : args- > > > v0.type = NVIF_CONN_V0_LVDS; break; > > + case DCB_CONNECTOR_LVDS_SPWG : args->v0.type = > > NVIF_CONN_V0_LVDS_SPWG; break; > > + > > + /* DP */ > > + case DCB_CONNECTOR_DMS59_DP0 : > > + case DCB_CONNECTOR_DMS59_DP1 : > > + case DCB_CONNECTOR_DP : > > + case DCB_CONNECTOR_mDP : > > + case DCB_CONNECTOR_USB_C : args->v0.type = > > NVIF_CONN_V0_DP; break; > > + case DCB_CONNECTOR_eDP : args->v0.type = > > NVIF_CONN_V0_EDP; break; > > + > > + /* HDMI */ > > + case DCB_CONNECTOR_HDMI_0 : > > + case DCB_CONNECTOR_HDMI_1 : > > + case DCB_CONNECTOR_HDMI_C : args->v0.type = > > NVIF_CONN_V0_HDMI; break; > > + > > + /* > > + * Dock & unused outputs. > > + * BNC, SPDIF, WFD, and detached LVDS go here. > > + */ > > default: > > - WARN_ON(1); > > + nvkm_warn(&(disp->engine.subdev), > > + "unimplemented connector type > > 0x%02x\n", > > + conn->info.type); > > + args->v0.type = NVIF_CONN_V0_VGA; > > ret = -EINVAL; > > break; > > }
