From: Vijendar Mukunda <vijendar.muku...@amd.com>

Added quirk DW_I2S_QUIRK_16BIT_IDX_OVERRIDE to Designware
driver. This quirk will set idx value to 1.

By setting this quirk, it will override supported format
as 16 bit resolution and bus width as 2 Bytes.

Reviewed-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Vijendar Mukunda <vijendar.muku...@amd.com>
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
---

This patch is already applied to the audio tree, I'm just
including it here for completeness since it's not yet in
the drm tree.

include/sound/designware_i2s.h | 1 +
 sound/soc/dwc/dwc-i2s.c        | 6 ++++++
 2 files changed, 7 insertions(+)

diff --git a/include/sound/designware_i2s.h b/include/sound/designware_i2s.h
index 5681855..830f5ca 100644
--- a/include/sound/designware_i2s.h
+++ b/include/sound/designware_i2s.h
@@ -47,6 +47,7 @@ struct i2s_platform_data {
 
        #define DW_I2S_QUIRK_COMP_REG_OFFSET    (1 << 0)
        #define DW_I2S_QUIRK_COMP_PARAM1        (1 << 1)
+       #define DW_I2S_QUIRK_16BIT_IDX_OVERRIDE (1 << 2)
        unsigned int quirks;
        unsigned int i2s_reg_comp1;
        unsigned int i2s_reg_comp2;
diff --git a/sound/soc/dwc/dwc-i2s.c b/sound/soc/dwc/dwc-i2s.c
index 9c46e41..9160676 100644
--- a/sound/soc/dwc/dwc-i2s.c
+++ b/sound/soc/dwc/dwc-i2s.c
@@ -496,6 +496,8 @@ static int dw_configure_dai(struct dw_i2s_dev *dev,
                idx = COMP1_TX_WORDSIZE_0(comp1);
                if (WARN_ON(idx >= ARRAY_SIZE(formats)))
                        return -EINVAL;
+               if (dev->quirks & DW_I2S_QUIRK_16BIT_IDX_OVERRIDE)
+                       idx = 1;
                dw_i2s_dai->playback.channels_min = MIN_CHANNEL_NUM;
                dw_i2s_dai->playback.channels_max =
                                1 << (COMP1_TX_CHANNELS(comp1) + 1);
@@ -508,6 +510,8 @@ static int dw_configure_dai(struct dw_i2s_dev *dev,
                idx = COMP2_RX_WORDSIZE_0(comp2);
                if (WARN_ON(idx >= ARRAY_SIZE(formats)))
                        return -EINVAL;
+               if (dev->quirks & DW_I2S_QUIRK_16BIT_IDX_OVERRIDE)
+                       idx = 1;
                dw_i2s_dai->capture.channels_min = MIN_CHANNEL_NUM;
                dw_i2s_dai->capture.channels_max =
                                1 << (COMP1_RX_CHANNELS(comp1) + 1);
@@ -543,6 +547,8 @@ static int dw_configure_dai_by_pd(struct dw_i2s_dev *dev,
        if (ret < 0)
                return ret;
 
+       if (dev->quirks & DW_I2S_QUIRK_16BIT_IDX_OVERRIDE)
+               idx = 1;
        /* Set DMA slaves info */
        dev->play_dma_data.pd.data = pdata->play_dma_data;
        dev->capture_dma_data.pd.data = pdata->capture_dma_data;
-- 
2.5.5

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to