Browse Source

ASoC: tpa6130a2: Support for tpa6140's regulators

tpa6140a2 uses different names for the regulators.

Signed-off-by: Ilkka Koskinen <ilkka.koskinen@nokia.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Ilkka Koskinen 15 years ago
parent
commit
2138301e16
2 changed files with 26 additions and 2 deletions
  1. 6 0
      include/sound/tpa6130a2-plat.h
  2. 20 2
      sound/soc/codecs/tpa6130a2.c

+ 6 - 0
include/sound/tpa6130a2-plat.h

@@ -23,7 +23,13 @@
 #ifndef TPA6130A2_PLAT_H
 #ifndef TPA6130A2_PLAT_H
 #define TPA6130A2_PLAT_H
 #define TPA6130A2_PLAT_H
 
 
+enum tpa_model {
+	TPA6130A2,
+	TPA6140A2,
+};
+
 struct tpa6130a2_platform_data {
 struct tpa6130a2_platform_data {
+	enum tpa_model id;
 	int power_gpio;
 	int power_gpio;
 };
 };
 
 

+ 20 - 2
sound/soc/codecs/tpa6130a2.c

@@ -41,6 +41,11 @@ static const char *tpa6130a2_supply_names[TPA6130A2_NUM_SUPPLIES] = {
 	"Vdd",
 	"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;
@@ -420,8 +425,21 @@ static int tpa6130a2_probe(struct i2c_client *client,
 		gpio_direction_output(data->power_gpio, 0);
 		gpio_direction_output(data->power_gpio, 0);
 	}
 	}
 
 
-	for (i = 0; i < ARRAY_SIZE(data->supplies); i++)
-		data->supplies[i].supply = tpa6130a2_supply_names[i];
+	switch (pdata->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:
+		dev_warn(dev, "Unknown TPA model (%d). Assuming 6130A2\n",
+			 pdata->id);
+		for (i = 0; i < ARRAY_SIZE(data->supplies); i++)
+			data->supplies[i].supply = tpa6130a2_supply_names[i];
+	}
 
 
 	ret = regulator_bulk_get(dev, ARRAY_SIZE(data->supplies),
 	ret = regulator_bulk_get(dev, ARRAY_SIZE(data->supplies),
 				 data->supplies);
 				 data->supplies);