From: Igor Paunovic <royalnet026@gmail.com>
To: Dmitry Osipenko <dmitry.osipenko@collabora.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Sebastian Reichel <sebastian.reichel@collabora.com>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org,
linux-arm-kernel@lists.infradead.org, kernel@collabora.com,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
Igor Paunovic <royalnet026@gmail.com>
Subject: [PATCH v4 0/4] media: synopsys: hdmirx: add HDMI audio capture support
Date: Tue, 21 Jul 2026 08:41:11 +0200 [thread overview]
Message-ID: <20260721064115.64809-1-royalnet026@gmail.com> (raw)
This series adds audio capture support to the Synopsys DesignWare HDMI
RX controller used on the Rockchip RK3588: the controller's audio FIFO
is exposed through an ASoC hdmi-codec device, with a periodic worker
that keeps the local audio clock locked to the incoming stream by
tracking the FIFO fill level. Together with the two dts patches this
yields a capture-only ALSA card fed by the HDMI input.
Validated on the Orange Pi 5 Plus against multiple HDMI sources:
capture follows the source sample rate (44.1/48 kHz switches
included), survives repeated stream start/stop cycles and SIGKILL of
the capturing process, stays free of FIFO under/overruns via the
clock tracking, and now also survives system suspend with an active
capture stream: audio resumes flowing on its own after the cycle.
Changes in v4:
- Driver: support system suspend instead of the -EBUSY guard
discussed on the v3 thread (Dmitry Osipenko's preference). The
worker is stopped before the controller clocks are gated; resume
fully resets the controller, so the audio path is re-programmed
from the last known sample rate and the worker re-armed while a
capture stream is active, through a hdmirx_audio_setup() helper
shared with hw_params(). Validated with an active capture stream
across the suspend/resume cycle.
- Driver: use swab32() for the ACR word reversal; readl() already
abstracts bus endianness, so the reversal must be unconditional
(automated review, valid finding)
- dts: the sound card is now a shared, disabled-by-default
"RK3588 HDMI-IN" node in rk3588-extra.dtsi, mirroring the HDMI TX
sound cards; the board patch only flips it on (Sebastian Reichel)
- binding: reference dai-common.yaml, switch to
unevaluatedProperties: false, and drop the consumer comment from
the example (Krzysztof Kozlowski)
Known limitation, noted on the v3 thread and under investigation as a
follow-up: a second suspend/resume cycle in the same boot can leave
the audio datapath silent until reboot. It reproduces with no-stream
suspend cycles as well, so it is independent of the suspend handling
added here, and looks related to the cold-start behavior described in
the v3 testing notes.
Link to v3: https://lore.kernel.org/linux-media/20260718085728.6797-1-royalnet026@gmail.com/
Link to v2: https://lore.kernel.org/linux-media/20260715200834.8486-1-royalnet026@gmail.com/
Link to v1 (RFC): https://lore.kernel.org/linux-media/20260715051939.64652-1-royalnet026@gmail.com/
Igor Paunovic (4):
dt-bindings: media: snps,dw-hdmi-rx: add #sound-dai-cells
media: synopsys: hdmirx: add HDMI audio capture support
arm64: dts: rockchip: add HDMI RX audio on RK3588
arm64: dts: rockchip: enable HDMI RX audio capture on Orange Pi 5 Plus
.../bindings/media/snps,dw-hdmi-rx.yaml | 13 +-
.../arm64/boot/dts/rockchip/rk3588-extra.dtsi | 18 ++
.../dts/rockchip/rk3588-orangepi-5-plus.dts | 8 +
.../platform/synopsys/hdmirx/snps_hdmirx.c | 306 ++++++++++++++++++
.../platform/synopsys/hdmirx/snps_hdmirx.h | 8 +
5 files changed, 352 insertions(+), 1 deletion(-)
--
2.53.0
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
WARNING: multiple messages have this Message-ID (diff)
From: Igor Paunovic <royalnet026@gmail.com>
To: Dmitry Osipenko <dmitry.osipenko@collabora.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Sebastian Reichel <sebastian.reichel@collabora.com>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org,
linux-arm-kernel@lists.infradead.org, kernel@collabora.com,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
Igor Paunovic <royalnet026@gmail.com>
Subject: [PATCH v4 0/4] media: synopsys: hdmirx: add HDMI audio capture support
Date: Tue, 21 Jul 2026 08:41:11 +0200 [thread overview]
Message-ID: <20260721064115.64809-1-royalnet026@gmail.com> (raw)
This series adds audio capture support to the Synopsys DesignWare HDMI
RX controller used on the Rockchip RK3588: the controller's audio FIFO
is exposed through an ASoC hdmi-codec device, with a periodic worker
that keeps the local audio clock locked to the incoming stream by
tracking the FIFO fill level. Together with the two dts patches this
yields a capture-only ALSA card fed by the HDMI input.
Validated on the Orange Pi 5 Plus against multiple HDMI sources:
capture follows the source sample rate (44.1/48 kHz switches
included), survives repeated stream start/stop cycles and SIGKILL of
the capturing process, stays free of FIFO under/overruns via the
clock tracking, and now also survives system suspend with an active
capture stream: audio resumes flowing on its own after the cycle.
Changes in v4:
- Driver: support system suspend instead of the -EBUSY guard
discussed on the v3 thread (Dmitry Osipenko's preference). The
worker is stopped before the controller clocks are gated; resume
fully resets the controller, so the audio path is re-programmed
from the last known sample rate and the worker re-armed while a
capture stream is active, through a hdmirx_audio_setup() helper
shared with hw_params(). Validated with an active capture stream
across the suspend/resume cycle.
- Driver: use swab32() for the ACR word reversal; readl() already
abstracts bus endianness, so the reversal must be unconditional
(automated review, valid finding)
- dts: the sound card is now a shared, disabled-by-default
"RK3588 HDMI-IN" node in rk3588-extra.dtsi, mirroring the HDMI TX
sound cards; the board patch only flips it on (Sebastian Reichel)
- binding: reference dai-common.yaml, switch to
unevaluatedProperties: false, and drop the consumer comment from
the example (Krzysztof Kozlowski)
Known limitation, noted on the v3 thread and under investigation as a
follow-up: a second suspend/resume cycle in the same boot can leave
the audio datapath silent until reboot. It reproduces with no-stream
suspend cycles as well, so it is independent of the suspend handling
added here, and looks related to the cold-start behavior described in
the v3 testing notes.
Link to v3: https://lore.kernel.org/linux-media/20260718085728.6797-1-royalnet026@gmail.com/
Link to v2: https://lore.kernel.org/linux-media/20260715200834.8486-1-royalnet026@gmail.com/
Link to v1 (RFC): https://lore.kernel.org/linux-media/20260715051939.64652-1-royalnet026@gmail.com/
Igor Paunovic (4):
dt-bindings: media: snps,dw-hdmi-rx: add #sound-dai-cells
media: synopsys: hdmirx: add HDMI audio capture support
arm64: dts: rockchip: add HDMI RX audio on RK3588
arm64: dts: rockchip: enable HDMI RX audio capture on Orange Pi 5 Plus
.../bindings/media/snps,dw-hdmi-rx.yaml | 13 +-
.../arm64/boot/dts/rockchip/rk3588-extra.dtsi | 18 ++
.../dts/rockchip/rk3588-orangepi-5-plus.dts | 8 +
.../platform/synopsys/hdmirx/snps_hdmirx.c | 306 ++++++++++++++++++
.../platform/synopsys/hdmirx/snps_hdmirx.h | 8 +
5 files changed, 352 insertions(+), 1 deletion(-)
--
2.53.0
next reply other threads:[~2026-07-21 6:41 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-21 6:41 Igor Paunovic [this message]
2026-07-21 6:41 ` [PATCH v4 0/4] media: synopsys: hdmirx: add HDMI audio capture support Igor Paunovic
2026-07-21 6:41 ` [PATCH v4 1/4] dt-bindings: media: snps,dw-hdmi-rx: add #sound-dai-cells Igor Paunovic
2026-07-21 6:41 ` Igor Paunovic
2026-07-21 15:13 ` Sebastian Reichel
2026-07-21 15:13 ` Sebastian Reichel
2026-07-22 7:10 ` Krzysztof Kozlowski
2026-07-22 7:10 ` Krzysztof Kozlowski
2026-07-21 6:41 ` [PATCH v4 2/4] media: synopsys: hdmirx: add HDMI audio capture support Igor Paunovic
2026-07-21 6:41 ` Igor Paunovic
2026-07-21 7:00 ` sashiko-bot
2026-07-21 7:51 ` Igor Paunovic
2026-07-21 7:51 ` Igor Paunovic
2026-07-21 6:41 ` [PATCH v4 3/4] arm64: dts: rockchip: add HDMI RX audio on RK3588 Igor Paunovic
2026-07-21 6:41 ` Igor Paunovic
2026-07-21 6:54 ` sashiko-bot
2026-07-21 15:13 ` Sebastian Reichel
2026-07-21 15:13 ` Sebastian Reichel
2026-07-21 6:41 ` [PATCH v4 4/4] arm64: dts: rockchip: enable HDMI RX audio capture on Orange Pi 5 Plus Igor Paunovic
2026-07-21 6:41 ` Igor Paunovic
2026-07-21 15:15 ` Sebastian Reichel
2026-07-21 15:15 ` Sebastian Reichel
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=20260721064115.64809-1-royalnet026@gmail.com \
--to=royalnet026@gmail.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.osipenko@collabora.com \
--cc=heiko@sntech.de \
--cc=kernel@collabora.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mchehab@kernel.org \
--cc=robh@kernel.org \
--cc=sebastian.reichel@collabora.com \
/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.