After converting the WM8753 driver to the new-style I2C interface, the
"legacy" probing of the device based on this address stopped working.
The correct way to specify the device's address is by a call to
i2c_register_board_info; this codec_data is then never needed.
---
 sound/soc/codecs/wm8753.c          |   17 ++++-------------
 sound/soc/s3c24xx/neo1973_wm8753.c |    5 -----
 2 files changed, 4 insertions(+), 18 deletions(-)

diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c
index 0b13bad..307d871 100644
--- a/sound/soc/codecs/wm8753.c
+++ b/sound/soc/codecs/wm8753.c
@@ -1644,14 +1644,9 @@ static int wm8753_i2c_probe(struct i2c_client 
*i2c_client,
        const struct i2c_device_id *id)
 {
        struct snd_soc_device *socdev = wm8753_socdev;
-       struct wm8753_setup_data *setup = socdev->codec_data;
        struct snd_soc_codec *codec = socdev->codec;
        int ret;
 
-       /* Is this really useful? */
-       if (i2c_client->addr != setup->i2c_address)
-               return -ENODEV;
-
        /* codec->control_data must be set before call to wm8753_init */
        codec->control_data = i2c_client;
        i2c_set_clientdata(i2c_client, codec);
@@ -1690,14 +1685,12 @@ static struct i2c_driver wm8753_i2c_driver = {
 static int wm8753_probe(struct platform_device *pdev)
 {
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-       struct wm8753_setup_data *setup;
        struct snd_soc_codec *codec;
        struct wm8753_priv *wm8753;
        int ret = 0;
 
        pr_info("WM8753 Audio Codec %s\n", WM8753_VERSION);
 
-       setup = socdev->codec_data;
        codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
        if (codec == NULL)
                return -ENOMEM;
@@ -1717,12 +1710,10 @@ static int wm8753_probe(struct platform_device *pdev)
        INIT_DELAYED_WORK(&codec->delayed_work, wm8753_work);
 
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-       if (setup->i2c_address) {
-               codec->hw_write = (hw_write_t)i2c_master_send;
-               ret = i2c_add_driver(&wm8753_i2c_driver);
-               if (ret != 0)
-                       printk(KERN_ERR "can't add i2c driver");
-       }
+       codec->hw_write = (hw_write_t)i2c_master_send;
+       ret = i2c_add_driver(&wm8753_i2c_driver);
+       if (ret != 0)
+               printk(KERN_ERR "can't add i2c driver");
 #else
                /* Add other interfaces here */
 #endif
diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c 
b/sound/soc/s3c24xx/neo1973_wm8753.c
index 93b0849..2fae49c 100644
--- a/sound/soc/s3c24xx/neo1973_wm8753.c
+++ b/sound/soc/s3c24xx/neo1973_wm8753.c
@@ -585,15 +585,10 @@ static struct snd_soc_machine neo1973 = {
        .num_links = ARRAY_SIZE(neo1973_dai),
 };
 
-static struct wm8753_setup_data neo1973_wm8753_setup = {
-       .i2c_address = 0x1a,
-};
-
 static struct snd_soc_device neo1973_snd_devdata = {
        .machine = &neo1973,
        .platform = &s3c24xx_soc_platform,
        .codec_dev = &soc_codec_dev_wm8753,
-       .codec_data = &neo1973_wm8753_setup,
 };
 
 static struct i2c_client client_template;
-- 
1.5.4.3


Reply via email to