Merge remote-tracking branches 'asoc/topic/uda1380', 'asoc/topic/unregister', 'asoc/topic/ux500', 'asoc/topic/wm5100' and 'asoc/topic/wm8903' into asoc-next
This commit is contained in:
commit
258ced9d08
|
@ -28,6 +28,14 @@ Optional properties:
|
|||
performed. If any entry has the value 0xffffffff, that GPIO's
|
||||
configuration will not be modified.
|
||||
|
||||
- AVDD-supply : Analog power supply regulator on the AVDD pin.
|
||||
|
||||
- CPVDD-supply : Charge pump supply regulator on the CPVDD pin.
|
||||
|
||||
- DBVDD-supply : Digital buffer supply regulator for the DBVDD pin.
|
||||
|
||||
- DCVDD-supply : Digital core supply regulator for the DCVDD pin.
|
||||
|
||||
Pins on the device (for linking into audio routes):
|
||||
|
||||
* IN1L
|
||||
|
@ -54,6 +62,11 @@ codec: wm8903@1a {
|
|||
reg = <0x1a>;
|
||||
interrupts = < 347 >;
|
||||
|
||||
AVDD-supply = <&fooreg_a>;
|
||||
CPVDD-supply = <&fooreg_b>;
|
||||
DBVDD-supply = <&fooreg_c>;
|
||||
DCVDC-supply = <&fooreg_d>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
|
|
|
@ -791,9 +791,16 @@ static const struct i2c_device_id uda1380_i2c_id[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(i2c, uda1380_i2c_id);
|
||||
|
||||
static const struct of_device_id uda1380_of_match[] = {
|
||||
{ .compatible = "nxp,uda1380", },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, uda1380_of_match);
|
||||
|
||||
static struct i2c_driver uda1380_i2c_driver = {
|
||||
.driver = {
|
||||
.name = "uda1380-codec",
|
||||
.of_match_table = uda1380_of_match,
|
||||
},
|
||||
.probe = uda1380_i2c_probe,
|
||||
.remove = uda1380_i2c_remove,
|
||||
|
|
|
@ -2014,7 +2014,7 @@ static void wm5100_micd_irq(struct wm5100_priv *wm5100)
|
|||
|
||||
ret = regmap_read(wm5100->regmap, WM5100_MIC_DETECT_3, &val);
|
||||
if (ret != 0) {
|
||||
dev_err(wm5100->dev, "Failed to read micropone status: %d\n",
|
||||
dev_err(wm5100->dev, "Failed to read microphone status: %d\n",
|
||||
ret);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <linux/pm.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/mutex.h>
|
||||
|
@ -115,10 +116,19 @@ static const struct reg_default wm8903_reg_defaults[] = {
|
|||
{ 172, 0x0000 }, /* R172 - Analogue Output Bias 0 */
|
||||
};
|
||||
|
||||
#define WM8903_NUM_SUPPLIES 4
|
||||
static const char *wm8903_supply_names[WM8903_NUM_SUPPLIES] = {
|
||||
"AVDD",
|
||||
"CPVDD",
|
||||
"DBVDD",
|
||||
"DCVDD",
|
||||
};
|
||||
|
||||
struct wm8903_priv {
|
||||
struct wm8903_platform_data *pdata;
|
||||
struct device *dev;
|
||||
struct regmap *regmap;
|
||||
struct regulator_bulk_data supplies[WM8903_NUM_SUPPLIES];
|
||||
|
||||
int sysclk;
|
||||
int irq;
|
||||
|
@ -2030,6 +2040,23 @@ static int wm8903_i2c_probe(struct i2c_client *i2c,
|
|||
|
||||
pdata = wm8903->pdata;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(wm8903->supplies); i++)
|
||||
wm8903->supplies[i].supply = wm8903_supply_names[i];
|
||||
|
||||
ret = devm_regulator_bulk_get(&i2c->dev, ARRAY_SIZE(wm8903->supplies),
|
||||
wm8903->supplies);
|
||||
if (ret != 0) {
|
||||
dev_err(&i2c->dev, "Failed to request supplies: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = regulator_bulk_enable(ARRAY_SIZE(wm8903->supplies),
|
||||
wm8903->supplies);
|
||||
if (ret != 0) {
|
||||
dev_err(&i2c->dev, "Failed to enable supplies: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = regmap_read(wm8903->regmap, WM8903_SW_RESET_AND_ID, &val);
|
||||
if (ret != 0) {
|
||||
dev_err(&i2c->dev, "Failed to read chip ID: %d\n", ret);
|
||||
|
@ -2160,6 +2187,8 @@ static int wm8903_i2c_probe(struct i2c_client *i2c,
|
|||
|
||||
return 0;
|
||||
err:
|
||||
regulator_bulk_disable(ARRAY_SIZE(wm8903->supplies),
|
||||
wm8903->supplies);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -2167,6 +2196,8 @@ static int wm8903_i2c_remove(struct i2c_client *client)
|
|||
{
|
||||
struct wm8903_priv *wm8903 = i2c_get_clientdata(client);
|
||||
|
||||
regulator_bulk_disable(ARRAY_SIZE(wm8903->supplies),
|
||||
wm8903->supplies);
|
||||
if (client->irq)
|
||||
free_irq(client->irq, wm8903);
|
||||
wm8903_free_gpio(wm8903);
|
||||
|
|
|
@ -3240,6 +3240,11 @@ static void snd_soc_component_cleanup(struct snd_soc_component *component)
|
|||
|
||||
static void snd_soc_component_del_unlocked(struct snd_soc_component *component)
|
||||
{
|
||||
struct snd_soc_card *card = component->card;
|
||||
|
||||
if (card)
|
||||
snd_soc_unregister_card(card);
|
||||
|
||||
list_del(&component->list);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,6 @@ static struct snd_soc_dai_link mop500_dai_links[] = {
|
|||
.stream_name = "ab8500_0",
|
||||
.cpu_dai_name = "ux500-msp-i2s.1",
|
||||
.codec_dai_name = "ab8500-codec-dai.0",
|
||||
.platform_name = "ux500-msp-i2s.1",
|
||||
.codec_name = "ab8500-codec.0",
|
||||
.init = mop500_ab8500_machine_init,
|
||||
.ops = mop500_ab8500_ops,
|
||||
|
@ -43,7 +42,6 @@ static struct snd_soc_dai_link mop500_dai_links[] = {
|
|||
.stream_name = "ab8500_1",
|
||||
.cpu_dai_name = "ux500-msp-i2s.3",
|
||||
.codec_dai_name = "ab8500-codec-dai.1",
|
||||
.platform_name = "ux500-msp-i2s.3",
|
||||
.codec_name = "ab8500-codec.0",
|
||||
.init = NULL,
|
||||
.ops = mop500_ab8500_ops,
|
||||
|
@ -87,8 +85,6 @@ static int mop500_of_probe(struct platform_device *pdev,
|
|||
for (i = 0; i < 2; i++) {
|
||||
mop500_dai_links[i].cpu_of_node = msp_np[i];
|
||||
mop500_dai_links[i].cpu_dai_name = NULL;
|
||||
mop500_dai_links[i].platform_of_node = msp_np[i];
|
||||
mop500_dai_links[i].platform_name = NULL;
|
||||
mop500_dai_links[i].codec_of_node = codec_np;
|
||||
mop500_dai_links[i].codec_name = NULL;
|
||||
}
|
||||
|
|
|
@ -133,6 +133,7 @@ static int setup_pcm_framing(struct snd_soc_dai *dai, unsigned int rate,
|
|||
struct ux500_msp_i2s_drvdata *drvdata = dev_get_drvdata(dai->dev);
|
||||
|
||||
u32 frame_length = MSP_FRAME_LEN_1;
|
||||
|
||||
prot_desc->frame_width = 0;
|
||||
|
||||
switch (drvdata->slots) {
|
||||
|
@ -482,7 +483,8 @@ static int ux500_msp_dai_prepare(struct snd_pcm_substream *substream,
|
|||
if ((drvdata->fmt & SND_SOC_DAIFMT_MASTER_MASK) &&
|
||||
(drvdata->msp->f_bitclk > 19200000)) {
|
||||
/* If the bit-clock is higher than 19.2MHz, Vape should be
|
||||
* run in 100% OPP. Only when bit-clock is used (MSP master) */
|
||||
* run in 100% OPP. Only when bit-clock is used (MSP master)
|
||||
*/
|
||||
prcmu_qos_update_requirement(PRCMU_QOS_APE_OPP,
|
||||
"ux500-msp-i2s", 100);
|
||||
drvdata->vape_opp_constraint = 1;
|
||||
|
|
|
@ -604,7 +604,6 @@ int ux500_msp_i2s_trigger(struct ux500_msp *msp, int cmd, int direction)
|
|||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue