1d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 2a1253ef6SBrian Austin /* 3a1253ef6SBrian Austin * cs42l56.c -- CS42L51 ALSA SoC I2C audio driver 4a1253ef6SBrian Austin * 5a1253ef6SBrian Austin * Copyright 2014 CirrusLogic, Inc. 6a1253ef6SBrian Austin * 7a1253ef6SBrian Austin * Author: Brian Austin <brian.austin@cirrus.com> 8a1253ef6SBrian Austin */ 9a1253ef6SBrian Austin 10a1253ef6SBrian Austin #include <linux/i2c.h> 11a1253ef6SBrian Austin #include <linux/module.h> 12a1253ef6SBrian Austin #include <sound/soc.h> 13a1253ef6SBrian Austin 14a1253ef6SBrian Austin #include "cs42l51.h" 15a1253ef6SBrian Austin 16a1253ef6SBrian Austin static struct i2c_device_id cs42l51_i2c_id[] = { 17a1253ef6SBrian Austin {"cs42l51", 0}, 18a1253ef6SBrian Austin {} 19a1253ef6SBrian Austin }; 20a1253ef6SBrian Austin MODULE_DEVICE_TABLE(i2c, cs42l51_i2c_id); 21a1253ef6SBrian Austin 22*4a404345SStephen Kitt static int cs42l51_i2c_probe(struct i2c_client *i2c) 23a1253ef6SBrian Austin { 24a1253ef6SBrian Austin struct regmap_config config; 25a1253ef6SBrian Austin 26a1253ef6SBrian Austin config = cs42l51_regmap; 27a1253ef6SBrian Austin 28a1253ef6SBrian Austin return cs42l51_probe(&i2c->dev, devm_regmap_init_i2c(i2c, &config)); 29a1253ef6SBrian Austin } 30a1253ef6SBrian Austin 31f77b6ea7SOlivier Moysan static int cs42l51_i2c_remove(struct i2c_client *i2c) 32f77b6ea7SOlivier Moysan { 3373d4c313SUwe Kleine-König cs42l51_remove(&i2c->dev); 3473d4c313SUwe Kleine-König 3573d4c313SUwe Kleine-König return 0; 36f77b6ea7SOlivier Moysan } 37f77b6ea7SOlivier Moysan 3875a71482SOlivier Moysan static const struct dev_pm_ops cs42l51_pm_ops = { 3975a71482SOlivier Moysan SET_SYSTEM_SLEEP_PM_OPS(cs42l51_suspend, cs42l51_resume) 4075a71482SOlivier Moysan }; 4175a71482SOlivier Moysan 42a1253ef6SBrian Austin static struct i2c_driver cs42l51_i2c_driver = { 43a1253ef6SBrian Austin .driver = { 44a1253ef6SBrian Austin .name = "cs42l51", 452cb1e025SThomas Petazzoni .of_match_table = cs42l51_of_match, 4675a71482SOlivier Moysan .pm = &cs42l51_pm_ops, 47a1253ef6SBrian Austin }, 48*4a404345SStephen Kitt .probe_new = cs42l51_i2c_probe, 49f77b6ea7SOlivier Moysan .remove = cs42l51_i2c_remove, 50a1253ef6SBrian Austin .id_table = cs42l51_i2c_id, 51a1253ef6SBrian Austin }; 52a1253ef6SBrian Austin 53a1253ef6SBrian Austin module_i2c_driver(cs42l51_i2c_driver); 54a1253ef6SBrian Austin 55a1253ef6SBrian Austin MODULE_DESCRIPTION("ASoC CS42L51 I2C Driver"); 56a1253ef6SBrian Austin MODULE_AUTHOR("Brian Austin, Cirrus Logic Inc, <brian.austin@cirrus.com>"); 57a1253ef6SBrian Austin MODULE_LICENSE("GPL"); 58