ASoC: tas571x: chip type detection via I2C name
authorPetr Kulhavy <petr@barix.com>
Tue, 29 Mar 2016 07:39:35 +0000 (09:39 +0200)
committerMark Brown <broonie@kernel.org>
Thu, 31 Mar 2016 00:01:47 +0000 (17:01 -0700)
The chip selection was relying only on DT. It was not possible to use the
driver without DT.
This adds the chip type detection from the I2C name, which
allows to use the driver from the platform driver without DT.

Signed-off-by: Petr Kulhavy <petr@barix.com>
Reviewed-by: Kevin Cernekee <cernekee@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/tas571x.c

index d003c6ce079400084a53c0af2ca13279fb86136d..aafee9bbe01aac0e3878737edcb042fb333f7f52 100644 (file)
@@ -404,11 +404,10 @@ static int tas571x_i2c_probe(struct i2c_client *client,
        i2c_set_clientdata(client, priv);
 
        of_id = of_match_device(tas571x_of_match, dev);
-       if (!of_id) {
-               dev_err(dev, "Unknown device type\n");
-               return -EINVAL;
-       }
-       priv->chip = of_id->data;
+       if (of_id)
+               priv->chip = of_id->data;
+       else
+               priv->chip = (void *) id->driver_data;
 
        priv->mclk = devm_clk_get(dev, "mclk");
        if (IS_ERR(priv->mclk) && PTR_ERR(priv->mclk) != -ENOENT) {
@@ -505,9 +504,9 @@ static const struct of_device_id tas571x_of_match[] = {
 MODULE_DEVICE_TABLE(of, tas571x_of_match);
 
 static const struct i2c_device_id tas571x_i2c_id[] = {
-       { "tas5711", 0 },
-       { "tas5717", 0 },
-       { "tas5719", 0 },
+       { "tas5711", (kernel_ulong_t) &tas5711_chip },
+       { "tas5717", (kernel_ulong_t) &tas5717_chip },
+       { "tas5719", (kernel_ulong_t) &tas5717_chip },
        { }
 };
 MODULE_DEVICE_TABLE(i2c, tas571x_i2c_id);
This page took 0.025875 seconds and 5 git commands to generate.