Commit | Line | Data |
---|---|---|
c924dc68 LPC |
1 | /* |
2 | * SSM2602/SSM2603/SSM2604 I2C audio driver | |
3 | * | |
4 | * Copyright 2014 Analog Devices Inc. | |
5 | * | |
6 | * Licensed under the GPL-2. | |
7 | */ | |
8 | ||
9 | #include <linux/module.h> | |
10 | #include <linux/i2c.h> | |
11 | #include <linux/regmap.h> | |
12 | ||
13 | #include <sound/soc.h> | |
14 | ||
15 | #include "ssm2602.h" | |
16 | ||
17 | /* | |
18 | * ssm2602 2 wire address is determined by GPIO5 | |
19 | * state during powerup. | |
20 | * low = 0x1a | |
21 | * high = 0x1b | |
22 | */ | |
23 | static int ssm2602_i2c_probe(struct i2c_client *client, | |
24 | const struct i2c_device_id *id) | |
25 | { | |
26 | return ssm2602_probe(&client->dev, id->driver_data, | |
27 | devm_regmap_init_i2c(client, &ssm2602_regmap_config)); | |
28 | } | |
29 | ||
30 | static int ssm2602_i2c_remove(struct i2c_client *client) | |
31 | { | |
32 | snd_soc_unregister_codec(&client->dev); | |
33 | return 0; | |
34 | } | |
35 | ||
36 | static const struct i2c_device_id ssm2602_i2c_id[] = { | |
37 | { "ssm2602", SSM2602 }, | |
38 | { "ssm2603", SSM2602 }, | |
39 | { "ssm2604", SSM2604 }, | |
40 | { } | |
41 | }; | |
42 | MODULE_DEVICE_TABLE(i2c, ssm2602_i2c_id); | |
43 | ||
555b9ee1 SK |
44 | static const struct of_device_id ssm2602_of_match[] = { |
45 | { .compatible = "adi,ssm2602", }, | |
46 | { .compatible = "adi,ssm2603", }, | |
47 | { .compatible = "adi,ssm2604", }, | |
48 | { } | |
49 | }; | |
50 | MODULE_DEVICE_TABLE(of, ssm2602_of_match); | |
51 | ||
c924dc68 LPC |
52 | static struct i2c_driver ssm2602_i2c_driver = { |
53 | .driver = { | |
54 | .name = "ssm2602", | |
555b9ee1 | 55 | .of_match_table = ssm2602_of_match, |
c924dc68 LPC |
56 | }, |
57 | .probe = ssm2602_i2c_probe, | |
58 | .remove = ssm2602_i2c_remove, | |
59 | .id_table = ssm2602_i2c_id, | |
60 | }; | |
61 | module_i2c_driver(ssm2602_i2c_driver); | |
62 | ||
63 | MODULE_DESCRIPTION("ASoC SSM2602/SSM2603/SSM2604 I2C driver"); | |
64 | MODULE_AUTHOR("Cliff Cai"); | |
65 | MODULE_LICENSE("GPL"); |