---
 arch/arm/mach-s3c2410/mach-gta01.c |    6 ++-
 sound/soc/s3c24xx/neo1973_wm8753.c |   58 ++++++-----------------------------
 2 files changed, 14 insertions(+), 50 deletions(-)

diff --git a/arch/arm/mach-s3c2410/mach-gta01.c 
b/arch/arm/mach-s3c2410/mach-gta01.c
index a11c49f..ecc75ee 100644
--- a/arch/arm/mach-s3c2410/mach-gta01.c
+++ b/arch/arm/mach-s3c2410/mach-gta01.c
@@ -364,8 +364,10 @@ static struct s3c2410fb_mach_info gta01_lcd_cfg __initdata 
= {
 
 static struct i2c_board_info gta01_i2c_devs[] __initdata = {
        {
-               I2C_BOARD_INFO("wm8753", 0x1a),
-       },
+               I2C_BOARD_INFO("wm8753", 0x1a)
+       }, {
+               I2C_BOARD_INFO("lm4857", 0x7c) 
+       }
 };
 
 static struct platform_device *gta01_devices[] __initdata = {
diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c 
b/sound/soc/s3c24xx/neo1973_wm8753.c
index 2fae49c..f3b3245 100644
--- a/sound/soc/s3c24xx/neo1973_wm8753.c
+++ b/sound/soc/s3c24xx/neo1973_wm8753.c
@@ -591,56 +591,24 @@ static struct snd_soc_device neo1973_snd_devdata = {
        .codec_dev = &soc_codec_dev_wm8753,
 };
 
-static struct i2c_client client_template;
-
-static const unsigned short normal_i2c[] = { 0x7C, I2C_CLIENT_END };
-
-/* Magic definition of all other variables and things */
-I2C_CLIENT_INSMOD;
+static const struct i2c_device_id lm4857_id[] = {
+        {"lm4857", 0},
+        {}
+};
+MODULE_DEVICE_TABLE(i2c, lm4857_id);
 
-static int lm4857_amp_probe(struct i2c_adapter *adap, int addr, int kind)
+static int lm4857_probe(struct i2c_client *i2c_client, 
+       const struct i2c_device_id *id)
 {
-       int ret;
-
        DBG("Entered %s\n", __func__);
 
-       client_template.adapter = adap;
-       client_template.addr = addr;
-
-       i2c = kmemdup(&client_template, sizeof(client_template), GFP_KERNEL);
-       if (i2c == NULL)
-               return -ENOMEM;
-
-       ret = i2c_attach_client(i2c);
-       if (ret < 0) {
-               printk(KERN_ERR "LM4857 failed to attach at addr %x\n", addr);
-               goto exit_err;
-       }
+       i2c = i2c_client;
 
        lm4857_write_regs();
-       return ret;
 
-exit_err:
-       kfree(i2c);
-       return ret;
-}
-
-static int lm4857_i2c_detach(struct i2c_client *client)
-{
-       DBG("Entered %s\n", __func__);
-
-       i2c_detach_client(client);
-       kfree(client);
        return 0;
 }
 
-static int lm4857_i2c_attach(struct i2c_adapter *adap)
-{
-       DBG("Entered %s\n", __func__);
-
-       return i2c_probe(adap, &addr_data, lm4857_amp_probe);
-}
-
 static u8 lm4857_state;
 
 static int lm4857_suspend(struct i2c_client *dev, pm_message_t state)
@@ -682,20 +650,14 @@ static struct i2c_driver lm4857_i2c_driver = {
                .name = "LM4857 I2C Amp",
                .owner = THIS_MODULE,
        },
-       .id =             I2C_DRIVERID_LM4857,
+       .id_table =       lm4857_id,
+       .probe =          lm4857_probe,
        .suspend =        lm4857_suspend,
        .resume =         lm4857_resume,
        .shutdown =       lm4857_shutdown,
-       .attach_adapter = lm4857_i2c_attach,
-       .detach_client =  lm4857_i2c_detach,
        .command =        NULL,
 };
 
-static struct i2c_client client_template = {
-       .name =   "LM4857",
-       .driver = &lm4857_i2c_driver,
-};
-
 static struct platform_device *neo1973_snd_device;
 
 static int __init neo1973_init(void)
-- 
1.5.4.3


Reply via email to