0001
0002
0003
0004
0005
0006
0007
0008 #include <linux/module.h>
0009 #include <linux/i2c.h>
0010 #include <linux/regmap.h>
0011
0012 #include <sound/soc.h>
0013
0014 #include "ssm2602.h"
0015
0016 static const struct i2c_device_id ssm2602_i2c_id[];
0017
0018
0019
0020
0021
0022
0023
0024 static int ssm2602_i2c_probe(struct i2c_client *client)
0025 {
0026 const struct i2c_device_id *id = i2c_match_id(ssm2602_i2c_id, client);
0027 return ssm2602_probe(&client->dev, id->driver_data,
0028 devm_regmap_init_i2c(client, &ssm2602_regmap_config));
0029 }
0030
0031 static const struct i2c_device_id ssm2602_i2c_id[] = {
0032 { "ssm2602", SSM2602 },
0033 { "ssm2603", SSM2602 },
0034 { "ssm2604", SSM2604 },
0035 { }
0036 };
0037 MODULE_DEVICE_TABLE(i2c, ssm2602_i2c_id);
0038
0039 static const struct of_device_id ssm2602_of_match[] = {
0040 { .compatible = "adi,ssm2602", },
0041 { .compatible = "adi,ssm2603", },
0042 { .compatible = "adi,ssm2604", },
0043 { }
0044 };
0045 MODULE_DEVICE_TABLE(of, ssm2602_of_match);
0046
0047 static struct i2c_driver ssm2602_i2c_driver = {
0048 .driver = {
0049 .name = "ssm2602",
0050 .of_match_table = ssm2602_of_match,
0051 },
0052 .probe_new = ssm2602_i2c_probe,
0053 .id_table = ssm2602_i2c_id,
0054 };
0055 module_i2c_driver(ssm2602_i2c_driver);
0056
0057 MODULE_DESCRIPTION("ASoC SSM2602/SSM2603/SSM2604 I2C driver");
0058 MODULE_AUTHOR("Cliff Cai");
0059 MODULE_LICENSE("GPL");