Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 193442
b: refs/heads/master
c: e5e5b31
h: refs/heads/master
v: v3
  • Loading branch information
Peter Ujfalusi authored and Liam Girdwood committed May 4, 2010
1 parent a19fdcf commit 7bb5192
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ad05c03b1c4c1fb4db066a7bd502b674148ccd89
refs/heads/master: e5e5b31e8c729b6bae569bec0790c655ee0121a1
31 changes: 28 additions & 3 deletions trunk/sound/soc/codecs/tpa6130a2.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ struct tpa6130a2_data {
struct regulator_bulk_data supplies[TPA6130A2_NUM_SUPPLIES];
int power_gpio;
unsigned char power_state;
enum tpa_model id;
};

static int tpa6130a2_i2c_read(int reg)
Expand Down Expand Up @@ -263,6 +264,20 @@ static const struct snd_kcontrol_new tpa6130a2_controls[] = {
tpa6130_tlv),
};

static const unsigned int tpa6140_tlv[] = {
TLV_DB_RANGE_HEAD(3),
0, 8, TLV_DB_SCALE_ITEM(-5900, 400, 0),
9, 16, TLV_DB_SCALE_ITEM(-2500, 200, 0),
17, 31, TLV_DB_SCALE_ITEM(-1000, 100, 0),
};

static const struct snd_kcontrol_new tpa6140a2_controls[] = {
SOC_SINGLE_EXT_TLV("TPA6140A2 Headphone Playback Volume",
TPA6130A2_REG_VOL_MUTE, 1, 0x1f, 0,
tpa6130a2_get_reg, tpa6130a2_set_reg,
tpa6140_tlv),
};

/*
* Enable or disable channel (left or right)
* The bit number for mute and amplifier are the same per channel:
Expand Down Expand Up @@ -368,13 +383,22 @@ static const struct snd_soc_dapm_route audio_map[] = {

int tpa6130a2_add_controls(struct snd_soc_codec *codec)
{
struct tpa6130a2_data *data;

BUG_ON(tpa6130a2_client == NULL);
data = i2c_get_clientdata(tpa6130a2_client);

snd_soc_dapm_new_controls(codec, tpa6130a2_dapm_widgets,
ARRAY_SIZE(tpa6130a2_dapm_widgets));

snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));

return snd_soc_add_controls(codec, tpa6130a2_controls,
ARRAY_SIZE(tpa6130a2_controls));
if (data->id == TPA6140A2)
return snd_soc_add_controls(codec, tpa6140a2_controls,
ARRAY_SIZE(tpa6140a2_controls));
else
return snd_soc_add_controls(codec, tpa6130a2_controls,
ARRAY_SIZE(tpa6130a2_controls));

}
EXPORT_SYMBOL_GPL(tpa6130a2_add_controls);
Expand Down Expand Up @@ -407,6 +431,7 @@ static int __devinit tpa6130a2_probe(struct i2c_client *client,

pdata = client->dev.platform_data;
data->power_gpio = pdata->power_gpio;
data->id = pdata->id;

mutex_init(&data->mutex);

Expand All @@ -425,7 +450,7 @@ static int __devinit tpa6130a2_probe(struct i2c_client *client,
gpio_direction_output(data->power_gpio, 0);
}

switch (pdata->id) {
switch (data->id) {
case TPA6130A2:
for (i = 0; i < ARRAY_SIZE(data->supplies); i++)
data->supplies[i].supply = tpa6130a2_supply_names[i];
Expand Down

0 comments on commit 7bb5192

Please sign in to comment.