Merge remote-tracking branches 'asoc/topic/txx9', 'asoc/topic/wm8750', 'asoc/topic/wm8804' and 'asoc/topic/wm8904' into asoc-next

This commit is contained in:
Mark Brown 2015-02-04 20:57:24 +00:00
6 changed files with 37 additions and 14 deletions

View File

@ -3,7 +3,7 @@ WM8904 audio CODEC
This device supports I2C only. This device supports I2C only.
Required properties: Required properties:
- compatible: "wlf,wm8904" - compatible: "wlf,wm8904" or "wlf,wm8912"
- reg: the I2C address of the device. - reg: the I2C address of the device.
- clock-names: "mclk" - clock-names: "mclk"
- clocks: reference to - clocks: reference to

View File

@ -323,7 +323,7 @@ static const struct snd_soc_dapm_widget wm8750_dapm_widgets[] = {
SND_SOC_DAPM_OUTPUT("ROUT2"), SND_SOC_DAPM_OUTPUT("ROUT2"),
SND_SOC_DAPM_OUTPUT("MONO1"), SND_SOC_DAPM_OUTPUT("MONO1"),
SND_SOC_DAPM_OUTPUT("OUT3"), SND_SOC_DAPM_OUTPUT("OUT3"),
SND_SOC_DAPM_OUTPUT("VREF"), SND_SOC_DAPM_VMID("VREF"),
SND_SOC_DAPM_INPUT("LINPUT1"), SND_SOC_DAPM_INPUT("LINPUT1"),
SND_SOC_DAPM_INPUT("LINPUT2"), SND_SOC_DAPM_INPUT("LINPUT2"),

View File

@ -648,7 +648,7 @@ static struct snd_soc_dai_driver wm8804_dai = {
.symmetric_rates = 1 .symmetric_rates = 1
}; };
static struct snd_soc_codec_driver soc_codec_dev_wm8804 = { static const struct snd_soc_codec_driver soc_codec_dev_wm8804 = {
.probe = wm8804_probe, .probe = wm8804_probe,
.remove = wm8804_remove, .remove = wm8804_remove,
.set_bias_level = wm8804_set_bias_level, .set_bias_level = wm8804_set_bias_level,
@ -664,7 +664,7 @@ static const struct of_device_id wm8804_of_match[] = {
}; };
MODULE_DEVICE_TABLE(of, wm8804_of_match); MODULE_DEVICE_TABLE(of, wm8804_of_match);
static struct regmap_config wm8804_regmap_config = { static const struct regmap_config wm8804_regmap_config = {
.reg_bits = 8, .reg_bits = 8,
.val_bits = 8, .val_bits = 8,

View File

@ -2105,6 +2105,24 @@ static const struct regmap_config wm8904_regmap = {
.num_reg_defaults = ARRAY_SIZE(wm8904_reg_defaults), .num_reg_defaults = ARRAY_SIZE(wm8904_reg_defaults),
}; };
#ifdef CONFIG_OF
static enum wm8904_type wm8904_data = WM8904;
static enum wm8904_type wm8912_data = WM8912;
static const struct of_device_id wm8904_of_match[] = {
{
.compatible = "wlf,wm8904",
.data = &wm8904_data,
}, {
.compatible = "wlf,wm8912",
.data = &wm8912_data,
}, {
/* sentinel */
}
};
MODULE_DEVICE_TABLE(of, wm8904_of_match);
#endif
static int wm8904_i2c_probe(struct i2c_client *i2c, static int wm8904_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
@ -2132,7 +2150,17 @@ static int wm8904_i2c_probe(struct i2c_client *i2c,
return ret; return ret;
} }
wm8904->devtype = id->driver_data; if (i2c->dev.of_node) {
const struct of_device_id *match;
match = of_match_node(wm8904_of_match, i2c->dev.of_node);
if (match == NULL)
return -EINVAL;
wm8904->devtype = *((enum wm8904_type *)match->data);
} else {
wm8904->devtype = id->driver_data;
}
i2c_set_clientdata(i2c, wm8904); i2c_set_clientdata(i2c, wm8904);
wm8904->pdata = i2c->dev.platform_data; wm8904->pdata = i2c->dev.platform_data;
@ -2266,6 +2294,7 @@ static struct i2c_driver wm8904_i2c_driver = {
.driver = { .driver = {
.name = "wm8904", .name = "wm8904",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = of_match_ptr(wm8904_of_match),
}, },
.probe = wm8904_i2c_probe, .probe = wm8904_i2c_probe,
.remove = wm8904_i2c_remove, .remove = wm8904_i2c_remove,

View File

@ -44,7 +44,7 @@ static const char *wm8995_supply_names[WM8995_NUM_SUPPLIES] = {
"MICVDD" "MICVDD"
}; };
static struct reg_default wm8995_reg_defaults[] = { static const struct reg_default wm8995_reg_defaults[] = {
{ 0, 0x8995 }, { 0, 0x8995 },
{ 5, 0x0100 }, { 5, 0x0100 },
{ 16, 0x000b }, { 16, 0x000b },
@ -2186,7 +2186,7 @@ static struct snd_soc_dai_driver wm8995_dai[] = {
} }
}; };
static struct snd_soc_codec_driver soc_codec_dev_wm8995 = { static const struct snd_soc_codec_driver soc_codec_dev_wm8995 = {
.probe = wm8995_probe, .probe = wm8995_probe,
.remove = wm8995_remove, .remove = wm8995_remove,
.set_bias_level = wm8995_set_bias_level, .set_bias_level = wm8995_set_bias_level,
@ -2200,7 +2200,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8995 = {
.num_dapm_routes = ARRAY_SIZE(wm8995_intercon), .num_dapm_routes = ARRAY_SIZE(wm8995_intercon),
}; };
static struct regmap_config wm8995_regmap = { static const struct regmap_config wm8995_regmap = {
.reg_bits = 16, .reg_bits = 16,
.val_bits = 16, .val_bits = 16,

View File

@ -282,11 +282,6 @@ static struct snd_pcm_ops txx9aclc_pcm_ops = {
.pointer = txx9aclc_pcm_pointer, .pointer = txx9aclc_pcm_pointer,
}; };
static void txx9aclc_pcm_free_dma_buffers(struct snd_pcm *pcm)
{
snd_pcm_lib_preallocate_free_for_all(pcm);
}
static int txx9aclc_pcm_new(struct snd_soc_pcm_runtime *rtd) static int txx9aclc_pcm_new(struct snd_soc_pcm_runtime *rtd)
{ {
struct snd_card *card = rtd->card->snd_card; struct snd_card *card = rtd->card->snd_card;
@ -412,7 +407,6 @@ static struct snd_soc_platform_driver txx9aclc_soc_platform = {
.remove = txx9aclc_pcm_remove, .remove = txx9aclc_pcm_remove,
.ops = &txx9aclc_pcm_ops, .ops = &txx9aclc_pcm_ops,
.pcm_new = txx9aclc_pcm_new, .pcm_new = txx9aclc_pcm_new,
.pcm_free = txx9aclc_pcm_free_dma_buffers,
}; };
static int txx9aclc_soc_platform_probe(struct platform_device *pdev) static int txx9aclc_soc_platform_probe(struct platform_device *pdev)