Merge remote-tracking branch 'asoc/topic/cs4271' into asoc-next

This commit is contained in:
Mark Brown 2012-12-02 13:35:00 +09:00
commit 0998deb561
3 changed files with 21 additions and 3 deletions

View File

@ -18,6 +18,8 @@ Optional properties:
- reset-gpio: a GPIO spec to define which pin is connected to the chip's - reset-gpio: a GPIO spec to define which pin is connected to the chip's
!RESET pin !RESET pin
- cirrus,amuteb-eq-bmutec: When given, the Codec's AMUTEB=BMUTEC flag
is enabled.
Examples: Examples:

View File

@ -19,6 +19,7 @@
struct cs4271_platform_data { struct cs4271_platform_data {
int gpio_nreset; /* GPIO driving Reset pin, if any */ int gpio_nreset; /* GPIO driving Reset pin, if any */
int amutec_eq_bmutec:1; /* flag to enable AMUTEC=BMUTEC */
}; };
#endif /* __CS4271_H */ #endif /* __CS4271_H */

View File

@ -474,15 +474,25 @@ static int cs4271_probe(struct snd_soc_codec *codec)
struct cs4271_platform_data *cs4271plat = codec->dev->platform_data; struct cs4271_platform_data *cs4271plat = codec->dev->platform_data;
int ret; int ret;
int gpio_nreset = -EINVAL; int gpio_nreset = -EINVAL;
int amutec_eq_bmutec = 0;
#ifdef CONFIG_OF #ifdef CONFIG_OF
if (of_match_device(cs4271_dt_ids, codec->dev)) if (of_match_device(cs4271_dt_ids, codec->dev)) {
gpio_nreset = of_get_named_gpio(codec->dev->of_node, gpio_nreset = of_get_named_gpio(codec->dev->of_node,
"reset-gpio", 0); "reset-gpio", 0);
if (!of_get_property(codec->dev->of_node,
"cirrus,amutec-eq-bmutec", NULL))
amutec_eq_bmutec = 1;
}
#endif #endif
if (cs4271plat && gpio_is_valid(cs4271plat->gpio_nreset)) if (cs4271plat) {
gpio_nreset = cs4271plat->gpio_nreset; if (gpio_is_valid(cs4271plat->gpio_nreset))
gpio_nreset = cs4271plat->gpio_nreset;
amutec_eq_bmutec = cs4271plat->amutec_eq_bmutec;
}
if (gpio_nreset >= 0) if (gpio_nreset >= 0)
if (devm_gpio_request(codec->dev, gpio_nreset, "CS4271 Reset")) if (devm_gpio_request(codec->dev, gpio_nreset, "CS4271 Reset"))
@ -528,6 +538,11 @@ static int cs4271_probe(struct snd_soc_codec *codec)
/* Power-up sequence requires 85 uS */ /* Power-up sequence requires 85 uS */
udelay(85); udelay(85);
if (amutec_eq_bmutec)
snd_soc_update_bits(codec, CS4271_MODE2,
CS4271_MODE2_MUTECAEQUB,
CS4271_MODE2_MUTECAEQUB);
return snd_soc_add_codec_controls(codec, cs4271_snd_controls, return snd_soc_add_codec_controls(codec, cs4271_snd_controls,
ARRAY_SIZE(cs4271_snd_controls)); ARRAY_SIZE(cs4271_snd_controls));
} }