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;
> >             }

Reply via email to