1a1253ef6SBrian Austin /* 2a1253ef6SBrian Austin * cs42l56.c -- CS42L51 ALSA SoC I2C audio driver 3a1253ef6SBrian Austin * 4a1253ef6SBrian Austin * Copyright 2014 CirrusLogic, Inc. 5a1253ef6SBrian Austin * 6a1253ef6SBrian Austin * Author: Brian Austin <brian.austin@cirrus.com> 7a1253ef6SBrian Austin * 8a1253ef6SBrian Austin * This program is free software; you can redistribute it and/or modify 9a1253ef6SBrian Austin * it under the terms of the GNU General Public License version 2 as 10a1253ef6SBrian Austin * published by the Free Software Foundation. 11a1253ef6SBrian Austin * 12a1253ef6SBrian Austin */ 13a1253ef6SBrian Austin 14a1253ef6SBrian Austin #include <linux/i2c.h> 15a1253ef6SBrian Austin #include <linux/module.h> 16a1253ef6SBrian Austin #include <sound/soc.h> 17a1253ef6SBrian Austin 18a1253ef6SBrian Austin #include "cs42l51.h" 19a1253ef6SBrian Austin 20a1253ef6SBrian Austin static struct i2c_device_id cs42l51_i2c_id[] = { 21a1253ef6SBrian Austin {"cs42l51", 0}, 22a1253ef6SBrian Austin {} 23a1253ef6SBrian Austin }; 24a1253ef6SBrian Austin MODULE_DEVICE_TABLE(i2c, cs42l51_i2c_id); 25a1253ef6SBrian Austin 26a1253ef6SBrian Austin static int cs42l51_i2c_probe(struct i2c_client *i2c, 27a1253ef6SBrian Austin const struct i2c_device_id *id) 28a1253ef6SBrian Austin { 29a1253ef6SBrian Austin struct regmap_config config; 30a1253ef6SBrian Austin 31a1253ef6SBrian Austin config = cs42l51_regmap; 32a1253ef6SBrian Austin 33a1253ef6SBrian Austin return cs42l51_probe(&i2c->dev, devm_regmap_init_i2c(i2c, &config)); 34a1253ef6SBrian Austin } 35a1253ef6SBrian Austin 36f77b6ea7SOlivier Moysan static int cs42l51_i2c_remove(struct i2c_client *i2c) 37f77b6ea7SOlivier Moysan { 38f77b6ea7SOlivier Moysan return cs42l51_remove(&i2c->dev); 39f77b6ea7SOlivier Moysan } 40f77b6ea7SOlivier Moysan 4175a71482SOlivier Moysan static const struct dev_pm_ops cs42l51_pm_ops = { 4275a71482SOlivier Moysan SET_SYSTEM_SLEEP_PM_OPS(cs42l51_suspend, cs42l51_resume) 4375a71482SOlivier Moysan }; 4475a71482SOlivier Moysan 45a1253ef6SBrian Austin static struct i2c_driver cs42l51_i2c_driver = { 46a1253ef6SBrian Austin .driver = { 47a1253ef6SBrian Austin .name = "cs42l51", 482cb1e025SThomas Petazzoni .of_match_table = cs42l51_of_match, 4975a71482SOlivier Moysan .pm = &cs42l51_pm_ops, 50a1253ef6SBrian Austin }, 51a1253ef6SBrian Austin .probe = cs42l51_i2c_probe, 52f77b6ea7SOlivier Moysan .remove = cs42l51_i2c_remove, 53a1253ef6SBrian Austin .id_table = cs42l51_i2c_id, 54a1253ef6SBrian Austin }; 55a1253ef6SBrian Austin 56a1253ef6SBrian Austin module_i2c_driver(cs42l51_i2c_driver); 57a1253ef6SBrian Austin 58a1253ef6SBrian Austin MODULE_DESCRIPTION("ASoC CS42L51 I2C Driver"); 59a1253ef6SBrian Austin MODULE_AUTHOR("Brian Austin, Cirrus Logic Inc, <brian.austin@cirrus.com>"); 60a1253ef6SBrian Austin MODULE_LICENSE("GPL"); 61