At least a bit of commit message would be nice. On 02/02/2016 03:31 PM, Andreas Irestål wrote: > Signed-off-by: Andreas Irestål <andire@xxxxxxxx> > --- > .../devicetree/bindings/sound/adi,adau17x1.txt | 33 ++++++ > include/dt-bindings/sound/adau17x1.h | 14 +++ > sound/soc/codecs/adau1761.c | 131 +++++++++++++++++++++ > sound/soc/codecs/adau1781.c | 57 +++++++++ > 4 files changed, 235 insertions(+) > create mode 100644 include/dt-bindings/sound/adau17x1.h > > diff --git a/Documentation/devicetree/bindings/sound/adi,adau17x1.txt b/Documentation/devicetree/bindings/sound/adi,adau17x1.txt > index 90f3ac3..296b417 100644 > --- a/Documentation/devicetree/bindings/sound/adi,adau17x1.txt > +++ b/Documentation/devicetree/bindings/sound/adi,adau17x1.txt > @@ -12,10 +12,43 @@ Required properties: > - reg: The i2c address. Value depends on the state of ADDR0 > and ADDR1, as wired in hardware. > > +Optional properties: > + > + - input-differential bool to set if the input is differential > + - digital-microphone bool to set if there is a digital microphone connected > + to the digmic/jackdet pin. > + - micbias-vg Microphone bias voltage > + MICBIAS_0_90_AVDD - 0.9 * AVDD > + MICBIAS_0_65_AVDD - 0.65 * AVDD > + > +Optional properties (ADAU1361/ADAU1461/ADAU1761/ADAU1961 only) > + > + - jack-detection If present, configures codec to use the digmic/jackdet > + pin for jack detection. must provide one of > + JACKDETECT_ACTIVE_LO or JACKDETECT_ACTIVE_HI followed > + by debounce time in ms, which must be 5, 10, 20, or 40. > + > + - lineout-mode Set output mode of the lineout pins. > + - headphone-mode Set output mode of the headphone pins. These properties all need a vendor prefix ("adi,"). [...] > + > +static void adau1761_pdata_from_of(struct snd_soc_codec *codec, > + struct adau1761_platform_data *pdata) > +{ > + struct device_node *np = codec->dev->of_node; > + uint32_t val; > + uint32_t debounce_pars[2]; > + > + if (of_get_property(np, "input-differential", NULL)) There is a helper function for this of_property_read_bool(). > + pdata->input_differential = 1; > + else > + pdata->input_differential = 0; > + [...] > + > static int adau1761_codec_probe(struct snd_soc_codec *codec) > { > struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec); > struct adau1761_platform_data *pdata = codec->dev->platform_data; > struct adau *adau = snd_soc_codec_get_drvdata(codec); > + struct device_node *np = codec->dev->of_node; > + struct adau1761_platform_data *of_pdata; > int ret; > > + if (!pdata && np && of_device_is_available(np)) { > + of_pdata = devm_kzalloc(codec->dev, sizeof(*of_pdata), > + GFP_KERNEL); > + if (!of_pdata) > + return -ENOMEM; > + adau1761_pdata_from_of(codec, of_pdata); > + pdata = of_pdata; > + codec->dev->platform_data = pdata; The parsing should be done in the main probe function. This will make sure that we propagate errors up the stack the right way. > + } _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel