ASoC: dwc: add quirk to override COMP_PARAM_1 register
authorMaruthi Srinivas Bayyavarapu <Maruthi.Bayyavarapu@amd.com>
Fri, 8 Jan 2016 23:22:05 +0000 (18:22 -0500)
committerMark Brown <broonie@kernel.org>
Sun, 10 Jan 2016 12:11:50 +0000 (12:11 +0000)
DWC for capture in ACP 2.x IP reports playback and capture capabilities
though it supports only capture. Added a quirk to override default value
to represent capture capability only.

Signed-off-by: Maruthi Bayyavarapu <maruthi.bayyavarapu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/designware_i2s.h
sound/soc/dwc/designware_i2s.c

index e0bb45807f2980abff0e0144b7e00e2dd62fb4eb..5681855396c411210b51fffe1b368d6ccf5a1027 100644 (file)
@@ -46,6 +46,7 @@ struct i2s_platform_data {
        u32 snd_rates;
 
        #define DW_I2S_QUIRK_COMP_REG_OFFSET    (1 << 0)
+       #define DW_I2S_QUIRK_COMP_PARAM1        (1 << 1)
        unsigned int quirks;
        unsigned int i2s_reg_comp1;
        unsigned int i2s_reg_comp2;
index 825a1f480aaba26412972512702e3e2995bbfe39..ce664c239be32fda4d269aea1722bb14631e3b22 100644 (file)
@@ -500,6 +500,10 @@ static int dw_configure_dai(struct dw_i2s_dev *dev,
        u32 comp2 = i2s_read_reg(dev->i2s_base, dev->i2s_reg_comp2);
        u32 idx;
 
+       if (dev->capability & DWC_I2S_RECORD &&
+                       dev->quirks & DW_I2S_QUIRK_COMP_PARAM1)
+               comp1 = comp1 & ~BIT(5);
+
        if (COMP1_TX_ENABLED(comp1)) {
                dev_dbg(dev->dev, " designware: play supported\n");
                idx = COMP1_TX_WORDSIZE_0(comp1);