16c3d713eSLars-Peter Clausen /* 26c3d713eSLars-Peter Clausen * AD1936/AD1937 audio driver 36c3d713eSLars-Peter Clausen * 46c3d713eSLars-Peter Clausen * Copyright 2014 Analog Devices Inc. 56c3d713eSLars-Peter Clausen * 66c3d713eSLars-Peter Clausen * Licensed under the GPL-2. 76c3d713eSLars-Peter Clausen */ 86c3d713eSLars-Peter Clausen 96c3d713eSLars-Peter Clausen #include <linux/module.h> 106c3d713eSLars-Peter Clausen #include <linux/i2c.h> 116c3d713eSLars-Peter Clausen #include <linux/regmap.h> 126c3d713eSLars-Peter Clausen 136c3d713eSLars-Peter Clausen #include <sound/soc.h> 146c3d713eSLars-Peter Clausen 156c3d713eSLars-Peter Clausen #include "ad193x.h" 166c3d713eSLars-Peter Clausen 176c3d713eSLars-Peter Clausen static const struct i2c_device_id ad193x_id[] = { 186c3d713eSLars-Peter Clausen { "ad1936", 0 }, 196c3d713eSLars-Peter Clausen { "ad1937", 0 }, 206c3d713eSLars-Peter Clausen { } 216c3d713eSLars-Peter Clausen }; 226c3d713eSLars-Peter Clausen MODULE_DEVICE_TABLE(i2c, ad193x_id); 236c3d713eSLars-Peter Clausen 246c3d713eSLars-Peter Clausen static int ad193x_i2c_probe(struct i2c_client *client, 256c3d713eSLars-Peter Clausen const struct i2c_device_id *id) 266c3d713eSLars-Peter Clausen { 276c3d713eSLars-Peter Clausen struct regmap_config config; 286c3d713eSLars-Peter Clausen 296c3d713eSLars-Peter Clausen config = ad193x_regmap_config; 306c3d713eSLars-Peter Clausen config.val_bits = 8; 316c3d713eSLars-Peter Clausen config.reg_bits = 8; 326c3d713eSLars-Peter Clausen 336c3d713eSLars-Peter Clausen return ad193x_probe(&client->dev, devm_regmap_init_i2c(client, &config)); 346c3d713eSLars-Peter Clausen } 356c3d713eSLars-Peter Clausen 366c3d713eSLars-Peter Clausen static int ad193x_i2c_remove(struct i2c_client *client) 376c3d713eSLars-Peter Clausen { 386c3d713eSLars-Peter Clausen snd_soc_unregister_codec(&client->dev); 396c3d713eSLars-Peter Clausen return 0; 406c3d713eSLars-Peter Clausen } 416c3d713eSLars-Peter Clausen 426c3d713eSLars-Peter Clausen static struct i2c_driver ad193x_i2c_driver = { 436c3d713eSLars-Peter Clausen .driver = { 446c3d713eSLars-Peter Clausen .name = "ad193x", 456c3d713eSLars-Peter Clausen }, 466c3d713eSLars-Peter Clausen .probe = ad193x_i2c_probe, 476c3d713eSLars-Peter Clausen .remove = ad193x_i2c_remove, 486c3d713eSLars-Peter Clausen .id_table = ad193x_id, 496c3d713eSLars-Peter Clausen }; 506c3d713eSLars-Peter Clausen module_i2c_driver(ad193x_i2c_driver); 516c3d713eSLars-Peter Clausen 526c3d713eSLars-Peter Clausen MODULE_DESCRIPTION("ASoC AD1936/AD1937 audio CODEC driver"); 536c3d713eSLars-Peter Clausen MODULE_AUTHOR("Barry Song <21cnbao@gmail.com>"); 546c3d713eSLars-Peter Clausen MODULE_LICENSE("GPL"); 55