OSDN Git Service

Merge branch 'for-5.7' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie...
authorMark Brown <broonie@kernel.org>
Thu, 14 May 2020 17:37:31 +0000 (18:37 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 14 May 2020 17:37:31 +0000 (18:37 +0100)
1  2 
sound/soc/codecs/tlv320adcx140.c
sound/soc/codecs/tlv320adcx140.h

@@@ -758,15 -739,12 +758,16 @@@ static int adcx140_codec_probe(struct s
  {
        struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(component);
        int sleep_cfg_val = ADCX140_WAKE_DEV;
-       u8 bias_source;
-       u8 vref_source;
+       u32 bias_source;
+       u32 vref_source;
+       u8 bias_cfg;
 +      int pdm_count;
 +      u32 pdm_edges[ADCX140_NUM_PDM_EDGES];
 +      u32 pdm_edge_val = 0;
 +      int i;
        int ret;
  
-       ret = device_property_read_u8(adcx140->dev, "ti,mic-bias-source",
+       ret = device_property_read_u32(adcx140->dev, "ti,mic-bias-source",
                                      &bias_source);
        if (ret)
                bias_source = ADCX140_MIC_BIAS_VAL_VREF;
                return -EINVAL;
        }
  
-       bias_source |= vref_source;
+       bias_cfg = bias_source << ADCX140_MIC_BIAS_SHIFT | vref_source;
  
 +      pdm_count = device_property_count_u32(adcx140->dev,
 +                                            "ti,pdm-edge-select");
 +      if (pdm_count <= ADCX140_NUM_PDM_EDGES && pdm_count > 0) {
 +              ret = device_property_read_u32_array(adcx140->dev,
 +                                                   "ti,pdm-edge-select",
 +                                                   pdm_edges, pdm_count);
 +              if (ret)
 +                      return ret;
 +
 +              for (i = 0; i < pdm_count; i++)
 +                      pdm_edge_val |= pdm_edges[i] << (ADCX140_PDM_EDGE_SHIFT - i);
 +
 +              ret = regmap_write(adcx140->regmap, ADCX140_PDM_CFG,
 +                                 pdm_edge_val);
 +              if (ret)
 +                      return ret;
 +      }
 +
        ret = adcx140_reset(adcx140);
        if (ret)
                goto out;
Simple merge