All of lore.kernel.org
 help / color / mirror / Atom feed
From: lyude@redhat.com
To: Mohamed Ahmed <mohamedahmedegypt2001@gmail.com>,
	 linux-kernel@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org,
	Danilo Krummrich <dakr@kernel.org>,
	 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann	 <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>,
	Simona Vetter	 <simona@ffwll.ch>,
	Mary Guillemard <mary@mary.zone>,
		nouveau@lists.freedesktop.org
Subject: Re: [PATCH 2/7] nouveau/gsp: fix HDMI vendor infoframes on GB20x
Date: Mon, 17 Aug 2026 17:49:05 -0400	[thread overview]
Message-ID: <2e606cab65a7c7134ade630b17c52aaa4017dca8.camel@redhat.com> (raw)
In-Reply-To: <20260814235705.59132-3-mohamedahmedegypt2001@gmail.com>

On Sat, 2026-08-15 at 03:57 +0400, Mohamed Ahmed wrote:
> The GSP path reuses the GV100 direct-MMIO infoframe writers on every
> chip. On GB20x that is only half right as while the legacy SF AVI
> unit is
> unchanged, the legacy VSI unit at 0x6f0100 was removed, so
> gv100_sor_hdmi_infoframe_vsi() writes into a reserved area and no
> vendor
> infoframe ever reaches the wire. This affects HDMI-VIC signalling
> which
> can impact some 4K modes for legacy HDMI 1.4 sinks.
> 
> Select the SOR functions per GPU family in r535_sor_new(), keyed on
> the display root class from the RM GPU table and use the new
> generic-infoframe VSI writer on GB20x. Everything else stays on the
> r535 table.
> 
> Signed-off-by: Mohamed Ahmed <mohamedahmedegypt2001@gmail.com>
> ---
>  .../nouveau/nvkm/subdev/gsp/rm/r535/disp.c    | 29
> ++++++++++++++++++-
>  1 file changed, 28 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c
> b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c
> index 1155f079b0c3..96febd01da78 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c
> @@ -36,6 +36,8 @@
>  
>  #include <rm/gpu.h>
>  
> +#include <nvif/class.h>
> +
>  #include <nvhw/drf.h>
>  
>  #include "nvrm/disp.h"
> @@ -587,6 +589,16 @@ r535_sor_hdmi = {
>  	.audio = r535_sor_hdmi_audio,
>  };
>  
> +static const struct nvkm_ior_func_hdmi
> +gb202_sor_hdmi = {
> +	.ctrl = r535_sor_hdmi_ctrl,
> +	/* The legacy AVI unit is unchanged on GB20x. */
> +	.infoframe_avi = gv100_sor_hdmi_infoframe_avi,
> +	.infoframe_vsi = gb202_sor_hdmi_infoframe_vsi,
> +	.audio = r535_sor_hdmi_audio,
> +	.frl_train = r535_sor_frl_train,
> +};
> +

This is the right approach, but I think this might make more sense to
move into drivers/gpu/drm/nouveau/nvkm/subdev/gsp/gb202.c and then
reference it back here.

>  static const struct nvkm_ior_func
>  r535_sor = {
>  	.hdmi = &r535_sor_hdmi,
> @@ -595,10 +607,25 @@ r535_sor = {
>  	.bl = &r535_sor_bl,
>  };
>  
> +static const struct nvkm_ior_func
> +gb202_sor = {
> +	.hdmi = &gb202_sor_hdmi,
> +	.dp = &r535_sor_dp,
> +	.hda = &r535_sor_hda,
> +	.bl = &r535_sor_bl,
> +};
> +
>  static int
>  r535_sor_new(struct nvkm_disp *disp, int id)
>  {
> -	return nvkm_ior_new_(&r535_sor, disp, SOR, id, true/*XXX:
> hda cap*/);
> +	const struct nvkm_rm_gpu *gpu = disp->engine.subdev.device-
> >gsp->rm->gpu;
> +	const struct nvkm_ior_func *func = &r535_sor;
> +
> +	/* NVD5.0 (GB20x and later) reorganised the SF HDMI packet
> units. */
> +	if (gpu->disp.class.root >= GB202_DISP)
> +		func = &gb202_sor;
> +
> +	return nvkm_ior_new_(func, disp, SOR, id, true/*XXX: hda
> cap*/);
>  }
>  
>  static int


WARNING: multiple messages have this Message-ID (diff)
From: lyude@redhat.com
To: Mohamed Ahmed <mohamedahmedegypt2001@gmail.com>,
	linux-kernel@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org,
	Danilo Krummrich <dakr@kernel.org>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Simona Vetter <simona@ffwll.ch>, Mary Guillemard <mary@mary.zone>,
	nouveau@lists.freedesktop.org
Subject: Re: [PATCH 2/7] nouveau/gsp: fix HDMI vendor infoframes on GB20x
Date: Mon, 17 Aug 2026 17:49:05 -0400	[thread overview]
Message-ID: <2e606cab65a7c7134ade630b17c52aaa4017dca8.camel@redhat.com> (raw)
In-Reply-To: <20260814235705.59132-3-mohamedahmedegypt2001@gmail.com>

On Sat, 2026-08-15 at 03:57 +0400, Mohamed Ahmed wrote:
> The GSP path reuses the GV100 direct-MMIO infoframe writers on every
> chip. On GB20x that is only half right as while the legacy SF AVI
> unit is
> unchanged, the legacy VSI unit at 0x6f0100 was removed, so
> gv100_sor_hdmi_infoframe_vsi() writes into a reserved area and no
> vendor
> infoframe ever reaches the wire. This affects HDMI-VIC signalling
> which
> can impact some 4K modes for legacy HDMI 1.4 sinks.
> 
> Select the SOR functions per GPU family in r535_sor_new(), keyed on
> the display root class from the RM GPU table and use the new
> generic-infoframe VSI writer on GB20x. Everything else stays on the
> r535 table.
> 
> Signed-off-by: Mohamed Ahmed <mohamedahmedegypt2001@gmail.com>
> ---
>  .../nouveau/nvkm/subdev/gsp/rm/r535/disp.c    | 29
> ++++++++++++++++++-
>  1 file changed, 28 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c
> b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c
> index 1155f079b0c3..96febd01da78 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c
> @@ -36,6 +36,8 @@
>  
>  #include <rm/gpu.h>
>  
> +#include <nvif/class.h>
> +
>  #include <nvhw/drf.h>
>  
>  #include "nvrm/disp.h"
> @@ -587,6 +589,16 @@ r535_sor_hdmi = {
>  	.audio = r535_sor_hdmi_audio,
>  };
>  
> +static const struct nvkm_ior_func_hdmi
> +gb202_sor_hdmi = {
> +	.ctrl = r535_sor_hdmi_ctrl,
> +	/* The legacy AVI unit is unchanged on GB20x. */
> +	.infoframe_avi = gv100_sor_hdmi_infoframe_avi,
> +	.infoframe_vsi = gb202_sor_hdmi_infoframe_vsi,
> +	.audio = r535_sor_hdmi_audio,
> +	.frl_train = r535_sor_frl_train,
> +};
> +

This is the right approach, but I think this might make more sense to
move into drivers/gpu/drm/nouveau/nvkm/subdev/gsp/gb202.c and then
reference it back here.

>  static const struct nvkm_ior_func
>  r535_sor = {
>  	.hdmi = &r535_sor_hdmi,
> @@ -595,10 +607,25 @@ r535_sor = {
>  	.bl = &r535_sor_bl,
>  };
>  
> +static const struct nvkm_ior_func
> +gb202_sor = {
> +	.hdmi = &gb202_sor_hdmi,
> +	.dp = &r535_sor_dp,
> +	.hda = &r535_sor_hda,
> +	.bl = &r535_sor_bl,
> +};
> +
>  static int
>  r535_sor_new(struct nvkm_disp *disp, int id)
>  {
> -	return nvkm_ior_new_(&r535_sor, disp, SOR, id, true/*XXX:
> hda cap*/);
> +	const struct nvkm_rm_gpu *gpu = disp->engine.subdev.device-
> >gsp->rm->gpu;
> +	const struct nvkm_ior_func *func = &r535_sor;
> +
> +	/* NVD5.0 (GB20x and later) reorganised the SF HDMI packet
> units. */
> +	if (gpu->disp.class.root >= GB202_DISP)
> +		func = &gb202_sor;
> +
> +	return nvkm_ior_new_(func, disp, SOR, id, true/*XXX: hda
> cap*/);
>  }
>  
>  static int


  parent reply	other threads:[~2026-08-17 21:49 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-14 23:56 [PATCH 0/7] nouveau: assorted display fixes (GB20x, r570 DP_CONFIG_STREAM, HF-EEODB EDIDs) Mohamed Ahmed
2026-08-14 23:56 ` Mohamed Ahmed
2026-08-14 23:56 ` [PATCH 1/7] nouveau/disp: add GB20x HDMI vendor infoframe writer Mohamed Ahmed
2026-08-14 23:56   ` Mohamed Ahmed
2026-08-15  0:08   ` sashiko-bot
2026-08-14 23:57 ` [PATCH 2/7] nouveau/gsp: fix HDMI vendor infoframes on GB20x Mohamed Ahmed
2026-08-14 23:57   ` Mohamed Ahmed
2026-08-15  0:08   ` sashiko-bot
2026-08-17 21:49   ` lyude [this message]
2026-08-17 21:49     ` lyude
2026-08-14 23:57 ` [PATCH 3/7] nouveau/gsp: fix HDMI GCP AVMute register offsets " Mohamed Ahmed
2026-08-14 23:57   ` Mohamed Ahmed
2026-08-14 23:57 ` [PATCH 4/7] nouveau/gsp: use per-version DP_CONFIG_STREAM params on r570 firmware Mohamed Ahmed
2026-08-14 23:57   ` Mohamed Ahmed
2026-08-15  0:13   ` sashiko-bot
2026-08-17 22:05   ` lyude
2026-08-17 22:05     ` lyude
2026-08-14 23:57 ` [PATCH 5/7] nouveau/gsp: fix vblank interrupts on GB20x Mohamed Ahmed
2026-08-14 23:57   ` Mohamed Ahmed
2026-08-15  0:08   ` sashiko-bot
2026-08-17 22:59   ` lyude
2026-08-17 22:59     ` lyude
2026-08-18 20:02     ` Mohamed Ahmed
2026-08-18 20:02       ` Mohamed Ahmed
2026-08-18 20:06       ` lyude
2026-08-18 20:06         ` lyude
2026-08-18 20:09         ` Mohamed Ahmed
2026-08-18 20:09           ` Mohamed Ahmed
2026-08-14 23:57 ` [PATCH 6/7] nouveau/dispnv50: program pixel clocks above 2.147GHz " Mohamed Ahmed
2026-08-14 23:57   ` Mohamed Ahmed
2026-08-17 22:43   ` lyude
2026-08-17 22:43     ` lyude
2026-08-14 23:57 ` [PATCH 7/7] nouveau: honor HF-EEODB EDIDs by converting to struct drm_edid Mohamed Ahmed
2026-08-14 23:57   ` Mohamed Ahmed
2026-08-15  0:08   ` sashiko-bot
2026-08-17 23:51   ` lyude
2026-08-17 23:51     ` lyude

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2e606cab65a7c7134ade630b17c52aaa4017dca8.camel@redhat.com \
    --to=lyude@redhat.com \
    --cc=airlied@gmail.com \
    --cc=dakr@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mary@mary.zone \
    --cc=mohamedahmedegypt2001@gmail.com \
    --cc=mripard@kernel.org \
    --cc=nouveau@lists.freedesktop.org \
    --cc=simona@ffwll.ch \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.