[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