summaryrefslogtreecommitdiff
path: root/sound/soc/fsl/fsl_xcvr.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/fsl/fsl_xcvr.c')
-rw-r--r--sound/soc/fsl/fsl_xcvr.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sound/soc/fsl/fsl_xcvr.c b/sound/soc/fsl/fsl_xcvr.c
index 2e73c0efed02..4e69a6d5fbe9 100644
--- a/sound/soc/fsl/fsl_xcvr.c
+++ b/sound/soc/fsl/fsl_xcvr.c
@@ -1006,7 +1006,7 @@ static irqreturn_t irq0_isr(int irq, void *devid)
struct device *dev = &xcvr->pdev->dev;
struct regmap *regmap = xcvr->regmap;
void __iomem *reg_ctrl, *reg_buff;
- u32 isr, val;
+ u32 isr, val, i;
regmap_read(regmap, FSL_XCVR_EXT_ISR, &isr);
regmap_write(regmap, FSL_XCVR_EXT_ISR_CLR, isr);
@@ -1032,6 +1032,11 @@ static irqreturn_t irq0_isr(int irq, void *devid)
/* copy CS buffer */
memcpy_fromio(&xcvr->rx_iec958.status, reg_buff,
sizeof(xcvr->rx_iec958.status));
+ for (i = 0; i < 6; i++) {
+ val = *(u32 *)(xcvr->rx_iec958.status + i*4);
+ *(u32 *)(xcvr->rx_iec958.status + i*4) =
+ bitrev32(val);
+ }
/* clear CS control register */
memset_io(reg_ctrl, 0, sizeof(val));
}