[PATCH 09/11] GTA01: Convert LM4857 I2C driver to "new-style" interface

Jonas Bonn jonas.bonn at gmail.com
Wed Oct 1 16:30:46 CEST 2008


---
 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




More information about the openmoko-kernel mailing list