ASoC: tpa6130a2: Support for tpa6140's regulators
authorIlkka Koskinen <ilkka.koskinen@nokia.com>
Fri, 8 Jan 2010 15:48:31 +0000 (17:48 +0200)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 11 Jan 2010 17:13:11 +0000 (17:13 +0000)
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>
include/sound/tpa6130a2-plat.h
sound/soc/codecs/tpa6130a2.c

index e8c901e749d8f72cae77b3fe8ecd247aa2cf0faf..e29fde6b5cbe5214edeecbdc522c98afefd8a977 100644 (file)
 #ifndef TPA6130A2_PLAT_H
 #define TPA6130A2_PLAT_H
 
+enum tpa_model {
+       TPA6130A2,
+       TPA6140A2,
+};
+
 struct tpa6130a2_platform_data {
+       enum tpa_model id;
        int power_gpio;
 };
 
index 8e98ccfab75c5361b830867567d3b359d98a5208..8b27281e62a1f4d34f2b1c74e011eb66169d3880 100644 (file)
@@ -41,6 +41,11 @@ static const char *tpa6130a2_supply_names[TPA6130A2_NUM_SUPPLIES] = {
        "Vdd",
 };
 
+static const char *tpa6140a2_supply_names[TPA6130A2_NUM_SUPPLIES] = {
+       "HPVdd",
+       "AVdd",
+};
+
 /* This struct is used to save the context */
 struct tpa6130a2_data {
        struct mutex mutex;
@@ -420,8 +425,21 @@ static int tpa6130a2_probe(struct i2c_client *client,
                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),
                                 data->supplies);