From: Greg Kroah-Hartman Date: Thu, 18 Dec 2025 12:02:25 +0000 (+0100) Subject: 6.1-stable patches X-Git-Tag: v6.12.63~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2e58c3ef5c55e7c13678b276f3b95b6e56600a2c;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: asoc-fsl_xcvr-get-channel-status-data-when-phy-is-not-exists.patch --- diff --git a/queue-6.1/asoc-fsl_xcvr-get-channel-status-data-when-phy-is-not-exists.patch b/queue-6.1/asoc-fsl_xcvr-get-channel-status-data-when-phy-is-not-exists.patch new file mode 100644 index 0000000000..89396b0928 --- /dev/null +++ b/queue-6.1/asoc-fsl_xcvr-get-channel-status-data-when-phy-is-not-exists.patch @@ -0,0 +1,51 @@ +From ca592e20659e0304ebd8f4dabb273da4f9385848 Mon Sep 17 00:00:00 2001 +From: Shengjiu Wang +Date: Thu, 10 Jul 2025 11:04:04 +0800 +Subject: ASoC: fsl_xcvr: get channel status data when PHY is not exists + +From: Shengjiu Wang + +commit ca592e20659e0304ebd8f4dabb273da4f9385848 upstream. + +There is no PHY for the XCVR module on i.MX93, the channel status needs +to be obtained from FSL_XCVR_RX_CS_DATA_* registers. And channel status +acknowledge (CSA) bit should be set once channel status is processed. + +Fixes: e240b9329a30 ("ASoC: fsl_xcvr: Add support for i.MX93 platform") +Signed-off-by: Shengjiu Wang +Link: https://patch.msgid.link/20250710030405.3370671-2-shengjiu.wang@nxp.com +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman +--- + sound/soc/fsl/fsl_xcvr.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +--- a/sound/soc/fsl/fsl_xcvr.c ++++ b/sound/soc/fsl/fsl_xcvr.c +@@ -1166,6 +1166,26 @@ static irqreturn_t irq0_isr(int irq, voi + /* clear CS control register */ + writel_relaxed(0, reg_ctrl); + } ++ } else { ++ regmap_read(xcvr->regmap, FSL_XCVR_RX_CS_DATA_0, ++ (u32 *)&xcvr->rx_iec958.status[0]); ++ regmap_read(xcvr->regmap, FSL_XCVR_RX_CS_DATA_1, ++ (u32 *)&xcvr->rx_iec958.status[4]); ++ regmap_read(xcvr->regmap, FSL_XCVR_RX_CS_DATA_2, ++ (u32 *)&xcvr->rx_iec958.status[8]); ++ regmap_read(xcvr->regmap, FSL_XCVR_RX_CS_DATA_3, ++ (u32 *)&xcvr->rx_iec958.status[12]); ++ regmap_read(xcvr->regmap, FSL_XCVR_RX_CS_DATA_4, ++ (u32 *)&xcvr->rx_iec958.status[16]); ++ regmap_read(xcvr->regmap, FSL_XCVR_RX_CS_DATA_5, ++ (u32 *)&xcvr->rx_iec958.status[20]); ++ for (i = 0; i < 6; i++) { ++ val = *(u32 *)(xcvr->rx_iec958.status + i * 4); ++ *(u32 *)(xcvr->rx_iec958.status + i * 4) = ++ bitrev32(val); ++ } ++ regmap_set_bits(xcvr->regmap, FSL_XCVR_RX_DPTH_CTRL, ++ FSL_XCVR_RX_DPTH_CTRL_CSA); + } + } + if (isr & FSL_XCVR_IRQ_NEW_UD) { diff --git a/queue-6.1/series b/queue-6.1/series index 1e2896b7bf..3b68b170a2 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -221,3 +221,4 @@ net-lan743x-allocate-rings-outside-zone_dma.patch usb-gadget-tegra-xudc-always-reinitialize-data-toggle-when-clear-halt.patch usb-phy-initialize-struct-usb_phy-list_head.patch alsa-dice-fix-buffer-overflow-in-detect_stream_formats.patch +asoc-fsl_xcvr-get-channel-status-data-when-phy-is-not-exists.patch