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