From nobody Fri Dec 19 13:26:53 2025 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D2942DF716 for ; Sat, 6 Dec 2025 07:27:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765006047; cv=none; b=EGoD5wfp+pWTf5JFBOBtYG8aPqSiNS/NhEYkXGZFo3RajrAynYzXmJHjQSPh0sijmYbkFxHqOI+qdNdYnJS/6cOcC/M/eHTwx5d3QIHf8AiawxSsrTBIfP1jKTaEQpffjl+7tqCG90+U7PwzKQZl02SHEJ4x74I2gdg2cNdsuWU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765006047; c=relaxed/simple; bh=nd/5ivr6/bbpT0X/s5ZZhB2LAYH5tUUPNLLNKkI7uxo=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=mMn+VdLy5rznRVel+Czyrqh/5S2Qf0AZVZGJpnBSbvhh031Sy6p7Ch2px6394HRNE+zFk4ofUv1tyWtgqCSQROCOEgyTc38hFJ4WdxPqLjggYy+uC9IlpaESomSt6ZuY8jZITbiEPxG57yEVsu/ltxA5e8V2wM7ggYkERAa42aY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=PgvnwkR9; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PgvnwkR9" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4779a637712so21642625e9.1 for ; Fri, 05 Dec 2025 23:27:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765006044; x=1765610844; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=jGhpR6O2zFoAKNfdFNkxlU6+z+TxXnT6EOz7gMMWwCo=; b=PgvnwkR9IkgZ9X91s64owoOIdUZ5pUNuGOvTmRGTktD2TmuTDaPjx+bPMp2Z6epYBW +STtbCcFWFkPkyMSyE2yYdLpuQ0gaC1tm8IbjkKIQN2k3A4fwr46e1y/NGQRxDeeOdTC Wyv+j8wUny5ndKBwcOEgpotTqtTdlOMh04icvuQ5NxLTRjb2e8VQC8TwMiVqtCiP3sG5 D8UxO3oqe7+RReOyO3MBDHovTe8l4+W0u9iijZqG4i5dBR8NxfCr8uR/YoD3sQIdTCD2 CJp2wFejC4swZHZeTzVn9kUju/ApXO6YBHyn//ag9PCLGXbcK7uiyzX0Usa27DA9pRrh RF/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765006044; x=1765610844; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=jGhpR6O2zFoAKNfdFNkxlU6+z+TxXnT6EOz7gMMWwCo=; b=FJcxTzkTZdxFLk9w3dHM94kshvGrzX+ViDxrFSNvrzZUrRH9aDKCxUHG+aZ6rCC2Jf IGtV+/b2azAho1vEFITcf9+PWNoInvWDj7QbgOs07Gw6luFo4d1+Bx3vz9VgSN68FP7N o6hH9CPPevYBKiMZqBDIy88eHVd1fAztyT/PSBa5VlW50qR9kS/E7+BZ7Fh1q4VU/K5W zCajzkt/NJ8FGS7NMA8hMhbFsEI8Q/W2ekxRgIgUt03YcHlaYwu5vDXAjQO9T7WtyPD0 lC2wGk6FGTA+QqwTmBC16YUFhhUCvN5S4fM5dLp3lmrjZPxUJ3vpjVg084WIle3X6c2Q Ljsw== X-Forwarded-Encrypted: i=1; AJvYcCXgYBN3hxTsNz8pygDxGX9uza38mNXpNzOEmUM6zEcaoDRqrQapfIlr2B50YTyHIClxSgAzzM/nod0vDQ0=@vger.kernel.org X-Gm-Message-State: AOJu0YyUXhexCPVHHicpMBLwhiByhTmbTk/QxIDzU4CjJcRQtG6ESce0 sHCJfRcwGfrPZ1DFKKvsdaxC6UTIlWZVJjUhEmJpp96J2Rms3f2xoyTK X-Gm-Gg: ASbGncvvLMpi3d+lkLglfHnzKs3oG8O9z3JP8uYpWHLjAgA6/5WecUwwwFg2zoGOYSb ZW91sZNm+lssxxvG5mSeznSAUSAiBSia1W+6j28pMWiO9baTnsRBlKMekdHKFR7C7yqaq8NvX5x pKJce95kHkXa5TvBY+REMjS9J27ilsHrOmef/KHsP5fRWSdK0QP3rMSL3cF1c8/dyGvol1qxOi+ dFbE/i4J6LshWEjK2eC1DF8x2eIV0V2IAKmYVWHp6H6hL4n3DKZLJONfhvufF8f1r3uYYDN7B/Y FD5fjsL2Hi63fbJcQoS/DY5wAVoktejcTCem/7dPhP7ZlWF7ve6rjzpyW2M76F5KwBTnTzrPVxt w+fB2Saahz9SP7z4JJs71zbepcz70zhJkt5Uxy5/iWtDj7IvZJkJqvO86ki38Id43mRuLv5I1nU JnZjUN5NagOQXB60I= X-Google-Smtp-Source: AGHT+IFcSNJRPdN47xMM+2pb+RDdYixNneiclPN+q2YkRdM3jQKvDsax8tHHHgxDmSsm5A3RLgX0YA== X-Received: by 2002:a05:600c:3b07:b0:46e:32d4:46a1 with SMTP id 5b1f17b1804b1-47939e24836mr16647585e9.22.1765006043520; Fri, 05 Dec 2025 23:27:23 -0800 (PST) Received: from toolbox.. ([87.200.95.144]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4792b140cf4sm91054435e9.5.2025.12.05.23.27.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Dec 2025 23:27:23 -0800 (PST) From: Christian Hewitt To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dmitry Baryshkov , Cristian Ciocaltea , Detlev Casanova , Douglas Anderson , Andy Yan , Sugar Zhang , Luca Ceresoli , Heiko Stuebner , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/bridge: dw-hdmi-qp: fix multi-channel audio output Date: Sat, 6 Dec 2025 07:27:18 +0000 Message-Id: <20251206072718.2039874-1-christianshewitt@gmail.com> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jonas Karlman Channel Allocation (PB4) and Level Shift Information (PB5) are configured with values from PB1 and PB2 due to the wrong offset being used. This results in missing audio channels or incorrect speaker placement when playing multi-channel audio. Use the correct offset to fix multi-channel audio output. Fixes: fd0141d1a8a2 ("drm/bridge: synopsys: Add audio support for dw-hdmi-q= p") Reported-by: Christian Hewitt Signed-off-by: Jonas Karlman --- buffer is a pointer to u8 while data written to PKT_AUDI_CONTENTS is u32, so buffer contains audio infoframe header (buffer[0:2]) + checksum (buffer[3]) + payload byte 1-10 (buffer[4:13]), e.g. regmap_bulk_write(hdmi->regm, PKT_AUDI_CONTENTS1, &buffer[3], 1) .. will write PB0-PB3 to AUDI_CONTENTS1 regmap_bulk_write(hdmi->regm, PKT_AUDI_CONTENTS2, &buffer[4], 1) .. will write PB1-PB4 to AUDI_CONTENTS2, but should be PB4-PB7 &buffer[4] will point to payload byte 4 not payload byte 1, due to u8/u32 and not considering the size of header+checksum (3+1). --- drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c b/drivers/gpu/drm= /bridge/synopsys/dw-hdmi-qp.c index f3a13da488e6..7b8a69383dc4 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c @@ -845,7 +845,7 @@ static int dw_hdmi_qp_config_audio_infoframe(struct dw_= hdmi_qp *hdmi, =20 regmap_bulk_write(hdmi->regm, PKT_AUDI_CONTENTS0, &header_bytes, 1); regmap_bulk_write(hdmi->regm, PKT_AUDI_CONTENTS1, &buffer[3], 1); - regmap_bulk_write(hdmi->regm, PKT_AUDI_CONTENTS2, &buffer[4], 1); + regmap_bulk_write(hdmi->regm, PKT_AUDI_CONTENTS2, &buffer[7], 1); =20 /* Enable ACR, AUDI, AMD */ dw_hdmi_qp_mod(hdmi, --=20 2.34.1