wm8904.c (8cb28fd6d1e98fe4cf232d7803093a3b7b46e969) wm8904.c (d633edd95dc938f3f5f0d4e431932f4ca042bffb)
1/*
2 * wm8904.c -- WM8904 ALSA SoC Audio driver
3 *
4 * Copyright 2009-12 Wolfson Microelectronics plc
5 *
6 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
7 *
8 *

--- 2249 unchanged lines hidden (view full) ---

2258 struct wm8904_priv *wm8904;
2259 int ret;
2260
2261 wm8904 = devm_kzalloc(&i2c->dev, sizeof(struct wm8904_priv),
2262 GFP_KERNEL);
2263 if (wm8904 == NULL)
2264 return -ENOMEM;
2265
1/*
2 * wm8904.c -- WM8904 ALSA SoC Audio driver
3 *
4 * Copyright 2009-12 Wolfson Microelectronics plc
5 *
6 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
7 *
8 *

--- 2249 unchanged lines hidden (view full) ---

2258 struct wm8904_priv *wm8904;
2259 int ret;
2260
2261 wm8904 = devm_kzalloc(&i2c->dev, sizeof(struct wm8904_priv),
2262 GFP_KERNEL);
2263 if (wm8904 == NULL)
2264 return -ENOMEM;
2265
2266 wm8904->regmap = regmap_init_i2c(i2c, &wm8904_regmap);
2266 wm8904->regmap = devm_regmap_init_i2c(i2c, &wm8904_regmap);
2267 if (IS_ERR(wm8904->regmap)) {
2268 ret = PTR_ERR(wm8904->regmap);
2269 dev_err(&i2c->dev, "Failed to allocate register map: %d\n",
2270 ret);
2271 return ret;
2272 }
2273
2274 wm8904->devtype = id->driver_data;
2275 i2c_set_clientdata(i2c, wm8904);
2276 wm8904->pdata = i2c->dev.platform_data;
2277
2278 ret = snd_soc_register_codec(&i2c->dev,
2279 &soc_codec_dev_wm8904, &wm8904_dai, 1);
2280 if (ret != 0)
2281 goto err;
2282
2283 return 0;
2284
2285err:
2267 if (IS_ERR(wm8904->regmap)) {
2268 ret = PTR_ERR(wm8904->regmap);
2269 dev_err(&i2c->dev, "Failed to allocate register map: %d\n",
2270 ret);
2271 return ret;
2272 }
2273
2274 wm8904->devtype = id->driver_data;
2275 i2c_set_clientdata(i2c, wm8904);
2276 wm8904->pdata = i2c->dev.platform_data;
2277
2278 ret = snd_soc_register_codec(&i2c->dev,
2279 &soc_codec_dev_wm8904, &wm8904_dai, 1);
2280 if (ret != 0)
2281 goto err;
2282
2283 return 0;
2284
2285err:
2286 regmap_exit(wm8904->regmap);
2287 return ret;
2288}
2289
2290static __devexit int wm8904_i2c_remove(struct i2c_client *client)
2291{
2286 return ret;
2287}
2288
2289static __devexit int wm8904_i2c_remove(struct i2c_client *client)
2290{
2292 struct wm8904_priv *wm8904 = i2c_get_clientdata(client);
2293 snd_soc_unregister_codec(&client->dev);
2291 snd_soc_unregister_codec(&client->dev);
2294 regmap_exit(wm8904->regmap);
2295 return 0;
2296}
2297
2298static const struct i2c_device_id wm8904_i2c_id[] = {
2299 { "wm8904", WM8904 },
2300 { "wm8912", WM8912 },
2301 { "wm8918", WM8904 }, /* Actually a subset, updates to follow */
2302 { }

--- 18 unchanged lines hidden ---
2292 return 0;
2293}
2294
2295static const struct i2c_device_id wm8904_i2c_id[] = {
2296 { "wm8904", WM8904 },
2297 { "wm8912", WM8912 },
2298 { "wm8918", WM8904 }, /* Actually a subset, updates to follow */
2299 { }

--- 18 unchanged lines hidden ---