ASoC: tpa6130a2: Remove CPVSS and HPVdd supplies
These pins are for decoupling capacitors for the internal charge pumps in TPA6130A2 and TPA6140A2 and not for connecting external supply. Thanks to Eduardo Valentin <eduardo.valentin@nokia.com> for pointing out the issue with TPA6130A2 and Ilkka Koskinen <ilkka.koskinen@nokia.com> with TPA6140A2. Signed-off-by: Jarkko Nikula <jhnikula@gmail.com> Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com> Reviewed-by: Ilkka Koskinen <ilkka.koskinen@nokia.com> Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
This commit is contained in:
parent
266d38c8e3
commit
ad8332c130
|
@ -35,22 +35,11 @@
|
||||||
|
|
||||||
static struct i2c_client *tpa6130a2_client;
|
static struct i2c_client *tpa6130a2_client;
|
||||||
|
|
||||||
#define TPA6130A2_NUM_SUPPLIES 2
|
|
||||||
static const char *tpa6130a2_supply_names[TPA6130A2_NUM_SUPPLIES] = {
|
|
||||||
"CPVSS",
|
|
||||||
"Vdd",
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *tpa6140a2_supply_names[TPA6130A2_NUM_SUPPLIES] = {
|
|
||||||
"HPVdd",
|
|
||||||
"AVdd",
|
|
||||||
};
|
|
||||||
|
|
||||||
/* This struct is used to save the context */
|
/* This struct is used to save the context */
|
||||||
struct tpa6130a2_data {
|
struct tpa6130a2_data {
|
||||||
struct mutex mutex;
|
struct mutex mutex;
|
||||||
unsigned char regs[TPA6130A2_CACHEREGNUM];
|
unsigned char regs[TPA6130A2_CACHEREGNUM];
|
||||||
struct regulator_bulk_data supplies[TPA6130A2_NUM_SUPPLIES];
|
struct regulator *supply;
|
||||||
int power_gpio;
|
int power_gpio;
|
||||||
unsigned char power_state;
|
unsigned char power_state;
|
||||||
enum tpa_model id;
|
enum tpa_model id;
|
||||||
|
@ -135,11 +124,10 @@ static int tpa6130a2_power(int power)
|
||||||
if (data->power_gpio >= 0)
|
if (data->power_gpio >= 0)
|
||||||
gpio_set_value(data->power_gpio, 1);
|
gpio_set_value(data->power_gpio, 1);
|
||||||
|
|
||||||
ret = regulator_bulk_enable(ARRAY_SIZE(data->supplies),
|
ret = regulator_enable(data->supply);
|
||||||
data->supplies);
|
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
dev_err(&tpa6130a2_client->dev,
|
dev_err(&tpa6130a2_client->dev,
|
||||||
"Failed to enable supplies: %d\n", ret);
|
"Failed to enable supply: %d\n", ret);
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,11 +148,10 @@ static int tpa6130a2_power(int power)
|
||||||
if (data->power_gpio >= 0)
|
if (data->power_gpio >= 0)
|
||||||
gpio_set_value(data->power_gpio, 0);
|
gpio_set_value(data->power_gpio, 0);
|
||||||
|
|
||||||
ret = regulator_bulk_disable(ARRAY_SIZE(data->supplies),
|
ret = regulator_disable(data->supply);
|
||||||
data->supplies);
|
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
dev_err(&tpa6130a2_client->dev,
|
dev_err(&tpa6130a2_client->dev,
|
||||||
"Failed to disable supplies: %d\n", ret);
|
"Failed to disable supply: %d\n", ret);
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -411,7 +398,8 @@ static int __devinit tpa6130a2_probe(struct i2c_client *client,
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
struct tpa6130a2_data *data;
|
struct tpa6130a2_data *data;
|
||||||
struct tpa6130a2_platform_data *pdata;
|
struct tpa6130a2_platform_data *pdata;
|
||||||
int i, ret;
|
const char *regulator;
|
||||||
|
int ret;
|
||||||
|
|
||||||
dev = &client->dev;
|
dev = &client->dev;
|
||||||
|
|
||||||
|
@ -453,25 +441,21 @@ static int __devinit tpa6130a2_probe(struct i2c_client *client,
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (data->id) {
|
switch (data->id) {
|
||||||
case TPA6130A2:
|
|
||||||
for (i = 0; i < ARRAY_SIZE(data->supplies); i++)
|
|
||||||
data->supplies[i].supply = tpa6130a2_supply_names[i];
|
|
||||||
break;
|
|
||||||
case TPA6140A2:
|
|
||||||
for (i = 0; i < ARRAY_SIZE(data->supplies); i++)
|
|
||||||
data->supplies[i].supply = tpa6140a2_supply_names[i];;
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
dev_warn(dev, "Unknown TPA model (%d). Assuming 6130A2\n",
|
dev_warn(dev, "Unknown TPA model (%d). Assuming 6130A2\n",
|
||||||
pdata->id);
|
pdata->id);
|
||||||
for (i = 0; i < ARRAY_SIZE(data->supplies); i++)
|
case TPA6130A2:
|
||||||
data->supplies[i].supply = tpa6130a2_supply_names[i];
|
regulator = "Vdd";
|
||||||
|
break;
|
||||||
|
case TPA6140A2:
|
||||||
|
regulator = "AVdd";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = regulator_bulk_get(dev, ARRAY_SIZE(data->supplies),
|
data->supply = regulator_get(dev, regulator);
|
||||||
data->supplies);
|
if (IS_ERR(data->supply)) {
|
||||||
if (ret != 0) {
|
ret = PTR_ERR(data->supply);
|
||||||
dev_err(dev, "Failed to request supplies: %d\n", ret);
|
dev_err(dev, "Failed to request supply: %d\n", ret);
|
||||||
goto err_regulator;
|
goto err_regulator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -494,7 +478,7 @@ static int __devinit tpa6130a2_probe(struct i2c_client *client,
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_power:
|
err_power:
|
||||||
regulator_bulk_free(ARRAY_SIZE(data->supplies), data->supplies);
|
regulator_put(data->supply);
|
||||||
err_regulator:
|
err_regulator:
|
||||||
if (data->power_gpio >= 0)
|
if (data->power_gpio >= 0)
|
||||||
gpio_free(data->power_gpio);
|
gpio_free(data->power_gpio);
|
||||||
|
@ -515,7 +499,7 @@ static int __devexit tpa6130a2_remove(struct i2c_client *client)
|
||||||
if (data->power_gpio >= 0)
|
if (data->power_gpio >= 0)
|
||||||
gpio_free(data->power_gpio);
|
gpio_free(data->power_gpio);
|
||||||
|
|
||||||
regulator_bulk_free(ARRAY_SIZE(data->supplies), data->supplies);
|
regulator_put(data->supply);
|
||||||
|
|
||||||
kfree(data);
|
kfree(data);
|
||||||
tpa6130a2_client = NULL;
|
tpa6130a2_client = NULL;
|
||||||
|
|
Loading…
Reference in New Issue