Hi! Sorry, this totally flew past my radar. This looks almost perfect,
just some small corrections below:

On Fri, 2025-12-12 at 19:53 -0500, [email protected] wrote:
> From: Alex Ramirez <[email protected]>
> 
> * Add missing DCB connectors in conn.h as per the NVIDIA DCB
> specification.
> 
> A lot of connector logic was rewritten for Linux v6.5; some display
> connector types
> went unaccounted-for which caused kernel warnings on devices with the
> now-unsupported
> DCB connectors. This patch adds all of the DCB connectors as defined
> by NVIDIA to the
> dcb_connector_type enum to bring back support for these connectors to
> the new logic.
> 
> 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]>
> ---
>  .../nouveau/include/nvkm/subdev/bios/conn.h   | 84 ++++++++++++++---
> --
>  1 file changed, 63 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/conn.h
> b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/conn.h
> index d1beaad0c82b..538306522d9a 100644
> --- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/conn.h
> +++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/conn.h
> @@ -1,28 +1,70 @@
>  /* SPDX-License-Identifier: MIT */
>  #ifndef __NVBIOS_CONN_H__
>  #define __NVBIOS_CONN_H__
> +
>  enum dcb_connector_type {
> -     DCB_CONNECTOR_VGA = 0x00,
> -     DCB_CONNECTOR_TV_0 = 0x10,
> -     DCB_CONNECTOR_TV_1 = 0x11,
> -     DCB_CONNECTOR_TV_3 = 0x13,
> -     DCB_CONNECTOR_DVI_I = 0x30,
> -     DCB_CONNECTOR_DVI_D = 0x31,
> -     DCB_CONNECTOR_DMS59_0 = 0x38,
> -     DCB_CONNECTOR_DMS59_1 = 0x39,
> -     DCB_CONNECTOR_LVDS = 0x40,
> -     DCB_CONNECTOR_LVDS_SPWG = 0x41,
> -     DCB_CONNECTOR_DP = 0x46,
> -     DCB_CONNECTOR_eDP = 0x47,
> -     DCB_CONNECTOR_mDP = 0x48,
> -     DCB_CONNECTOR_HDMI_0 = 0x60,
> -     DCB_CONNECTOR_HDMI_1 = 0x61,
> -     DCB_CONNECTOR_HDMI_C = 0x63,
> -     DCB_CONNECTOR_DMS59_DP0 = 0x64,
> -     DCB_CONNECTOR_DMS59_DP1 = 0x65,
> -     DCB_CONNECTOR_WFD       = 0x70,
> -     DCB_CONNECTOR_USB_C = 0x71,
> -     DCB_CONNECTOR_NONE = 0xff
> +     /* Analog outputs */
> +     DCB_CONNECTOR_VGA = 0x00,               // VGA 15-pin
> connector
> +     DCB_CONNECTOR_DVI_A = 0x01,             // DVI-A
> +     DCB_CONNECTOR_POD_VGA = 0x02,           // Pod - VGA 15-pin
> connector
> +     DCB_CONNECTOR_TV_0 = 0x10,              // TV - Composite
> Out
> +     DCB_CONNECTOR_TV_1 = 0x11,              // TV - S-Video Out
> +     DCB_CONNECTOR_TV_2 = 0x12,              // TV - S-Video
> Breakout - Composite
> +     DCB_CONNECTOR_TV_3 = 0x13,              // HDTV Component -
> YPrPb
> +     DCB_CONNECTOR_TV_SCART = 0x14,          // TV - SCART
> Connector
> +     DCB_CONNECTOR_TV_SCART_D = 0x16,        // TV - Composite
> SCART over D-connector
> +     DCB_CONNECTOR_TV_DTERM = 0x17,          // HDTV - D-
> connector (EIAJ4120)
> +     DCB_CONNECTOR_POD_TV_3 = 0x18,          // Pod - HDTV -
> YPrPb
> +     DCB_CONNECTOR_POD_TV_1 = 0x19,          // Pod - S-Video
> +     DCB_CONNECTOR_POD_TV_0 = 0x1a,          // Pod - Composite
> +
> +     /* DVI digital outputs */
> +     DCB_CONNECTOR_DVI_I_TV_1 = 0x20,        // DVI-I-TV-S-Video
> +     DCB_CONNECTOR_DVI_I_TV_0 = 0x21,        // DVI-I-TV-
> Composite
> +     DCB_CONNECTOR_DVI_I_TV_2 = 0x22,        // DVI-I-TV-S-Video
> Breakout-Composite
> +     DCB_CONNECTOR_DVI_I = 0x30,             // DVI-I
> +     DCB_CONNECTOR_DVI_D = 0x31,             // DVI-D
> +     DCB_CONNECTOR_DVI_ADC = 0x32,           // Apple Display
> Connector (ADC)
> +     DCB_CONNECTOR_DMS59_0 = 0x38,           // LFH-DVI-I-1
> +     DCB_CONNECTOR_DMS59_1 = 0x39,           // LFH-DVI-I-2
> +     DCB_CONNECTOR_BNC = 0x3c,               // BNC Connector
> [for SDI?]
> +
> +     /* LVDS / TMDS digital outputs */
> +     DCB_CONNECTOR_LVDS = 0x40,              // LVDS-SPWG-
> Attached [is this name correct?]
> +     DCB_CONNECTOR_LVDS_SPWG = 0x41,         // LVDS-OEM-
> Attached (non-removable)
> +     DCB_CONNECTOR_LVDS_REM = 0x42,          // LVDS-SPWG-
> Detached [following naming above]
> +     DCB_CONNECTOR_LVDS_SPWG_REM = 0x43,     // LVDS-OEM-Detached
> (removable)
> +     DCB_CONNECTOR_TMDS = 0x45,              // TMDS-OEM-Attached
> (non-removable)
> +
> +     /* DP digital outputs */
> +     DCB_CONNECTOR_DP = 0x46,                // DisplayPort
> External Connector
> +     DCB_CONNECTOR_eDP = 0x47,               // DisplayPort
> Internal Connector
> +     DCB_CONNECTOR_mDP = 0x48,               // DisplayPort
> (Mini) External Connector
> +
> +     /* Dock outputs (not used) */
> +     DCB_CONNECTOR_DOCK_VGA_0 = 0x50,        // VGA 15-pin if not
> docked
> +     DCB_CONNECTOR_DOCK_VGA_1 = 0x51,        // VGA 15-pin if
> docked
> +     DCB_CONNECTOR_DOCK_DVI_I_0 = 0x52,      // DVI-I if not
> docked
> +     DCB_CONNECTOR_DOCK_DVI_I_1 = 0x53,      // DVI-I if docked
> +     DCB_CONNECTOR_DOCK_DVI_D_0 = 0x54,      // DVI-D if not
> docked
> +     DCB_CONNECTOR_DOCK_DVI_D_1 = 0x55,      // DVI-D if docked
> +     DCB_CONNECTOR_DOCK_DP_0 = 0x56,         //
> DisplayPort if not docked
> +     DCB_CONNECTOR_DOCK_DP_1 = 0x57,         //
> DisplayPort if docked
> +     DCB_CONNECTOR_DOCK_mDP_0 = 0x58,        // DisplayPort
> (Mini) if not docked
> +     DCB_CONNECTOR_DOCK_mDP_1 = 0x59,        // DisplayPort
> (Mini) if docked
> +
> +     /* HDMI? digital outputs */
> +     DCB_CONNECTOR_HDMI_0 = 0x60,            // 3-Pin DIN Stereo
> Connector [for real?]

Yeah this one is weird and suspicious and seems very likely to be a
documentation typo.

I wonder if maybe it used to be DIN, but at some point nvidia
mistakenly reused the ID. Though I'm not sure how much sense that
actually makes, considering that I would have expected a connector like
this to then be in/near the 0x1-0x20 range like all of the other legacy
analog connectors in that case. 

Since it's just a comment, I'll fix this up myself before pushing this
and add an explainer comment while I ask nvidia about this.

Reviewed-by: Lyude Paul <[email protected]>

> +     DCB_CONNECTOR_HDMI_1 = 0x61,            // HDMI-A connector
> +     DCB_CONNECTOR_SPDIF = 0x62,             // Audio S/PDIF
> connector
> +     DCB_CONNECTOR_HDMI_C = 0x63,            // HDMI-C (Mini)
> connector
> +
> +     /* Misc. digital outputs */
> +     DCB_CONNECTOR_DMS59_DP0 = 0x64,         // LFH-DP-1
> +     DCB_CONNECTOR_DMS59_DP1 = 0x65,         // LFH-DP-2
> +     DCB_CONNECTOR_WFD = 0x70,               // Virtual connector
> for Wifi Display (WFD)
> +     DCB_CONNECTOR_USB_C = 0x71,             // [DP over USB-C;
> not present in docs]
> +     DCB_CONNECTOR_NONE = 0xff               // Skip Entry
>  };
>  
>  struct nvbios_connT {

Reply via email to