1fda8d26eSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 22923af02SLars-Peter Clausen /* 32923af02SLars-Peter Clausen * Driver for ADAU1381/ADAU1781 CODEC 42923af02SLars-Peter Clausen * 52923af02SLars-Peter Clausen * Copyright 2014 Analog Devices Inc. 62923af02SLars-Peter Clausen * Author: Lars-Peter Clausen <lars@metafoo.de> 72923af02SLars-Peter Clausen */ 82923af02SLars-Peter Clausen 92923af02SLars-Peter Clausen #include <linux/i2c.h> 102923af02SLars-Peter Clausen #include <linux/mod_devicetable.h> 112923af02SLars-Peter Clausen #include <linux/module.h> 122923af02SLars-Peter Clausen #include <linux/regmap.h> 132923af02SLars-Peter Clausen #include <sound/soc.h> 142923af02SLars-Peter Clausen 152923af02SLars-Peter Clausen #include "adau1781.h" 162923af02SLars-Peter Clausen 17e5cd0623SStephen Kitt static const struct i2c_device_id adau1781_i2c_ids[]; 18e5cd0623SStephen Kitt 19e5cd0623SStephen Kitt static int adau1781_i2c_probe(struct i2c_client *client) 202923af02SLars-Peter Clausen { 212923af02SLars-Peter Clausen struct regmap_config config; 22e5cd0623SStephen Kitt const struct i2c_device_id *id = i2c_match_id(adau1781_i2c_ids, client); 232923af02SLars-Peter Clausen 242923af02SLars-Peter Clausen config = adau1781_regmap_config; 252923af02SLars-Peter Clausen config.val_bits = 8; 262923af02SLars-Peter Clausen config.reg_bits = 16; 272923af02SLars-Peter Clausen 282923af02SLars-Peter Clausen return adau1781_probe(&client->dev, 292923af02SLars-Peter Clausen devm_regmap_init_i2c(client, &config), 302923af02SLars-Peter Clausen id->driver_data, NULL); 312923af02SLars-Peter Clausen } 322923af02SLars-Peter Clausen 33*ed5c2f5fSUwe Kleine-König static void adau1781_i2c_remove(struct i2c_client *client) 342923af02SLars-Peter Clausen { 355d76de61SLars-Peter Clausen adau17x1_remove(&client->dev); 362923af02SLars-Peter Clausen } 372923af02SLars-Peter Clausen 382923af02SLars-Peter Clausen static const struct i2c_device_id adau1781_i2c_ids[] = { 392923af02SLars-Peter Clausen { "adau1381", ADAU1381 }, 402923af02SLars-Peter Clausen { "adau1781", ADAU1781 }, 412923af02SLars-Peter Clausen { } 422923af02SLars-Peter Clausen }; 432923af02SLars-Peter Clausen MODULE_DEVICE_TABLE(i2c, adau1781_i2c_ids); 442923af02SLars-Peter Clausen 45aaf0f3aeSAndreas Irestål #if defined(CONFIG_OF) 46aaf0f3aeSAndreas Irestål static const struct of_device_id adau1781_i2c_dt_ids[] = { 47aaf0f3aeSAndreas Irestål { .compatible = "adi,adau1381", }, 48aaf0f3aeSAndreas Irestål { .compatible = "adi,adau1781", }, 49aaf0f3aeSAndreas Irestål { }, 50aaf0f3aeSAndreas Irestål }; 51aaf0f3aeSAndreas Irestål MODULE_DEVICE_TABLE(of, adau1781_i2c_dt_ids); 52aaf0f3aeSAndreas Irestål #endif 53aaf0f3aeSAndreas Irestål 542923af02SLars-Peter Clausen static struct i2c_driver adau1781_i2c_driver = { 552923af02SLars-Peter Clausen .driver = { 562923af02SLars-Peter Clausen .name = "adau1781", 57aaf0f3aeSAndreas Irestål .of_match_table = of_match_ptr(adau1781_i2c_dt_ids), 582923af02SLars-Peter Clausen }, 59e5cd0623SStephen Kitt .probe_new = adau1781_i2c_probe, 602923af02SLars-Peter Clausen .remove = adau1781_i2c_remove, 612923af02SLars-Peter Clausen .id_table = adau1781_i2c_ids, 622923af02SLars-Peter Clausen }; 632923af02SLars-Peter Clausen module_i2c_driver(adau1781_i2c_driver); 642923af02SLars-Peter Clausen 652923af02SLars-Peter Clausen MODULE_DESCRIPTION("ASoC ADAU1381/ADAU1781 CODEC I2C driver"); 662923af02SLars-Peter Clausen MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>"); 672923af02SLars-Peter Clausen MODULE_LICENSE("GPL"); 68