1 | // SPDX-License-Identifier: GPL-2.0-only |
2 | /* |
3 | * AD1936/AD1937 audio driver |
4 | * |
5 | * Copyright 2014 Analog Devices Inc. |
6 | */ |
7 | |
8 | #include <linux/module.h> |
9 | #include <linux/i2c.h> |
10 | #include <linux/regmap.h> |
11 | |
12 | #include <sound/soc.h> |
13 | |
14 | #include "ad193x.h" |
15 | |
16 | static const struct i2c_device_id ad193x_id[] = { |
17 | { "ad1936" , AD193X }, |
18 | { "ad1937" , AD193X }, |
19 | { } |
20 | }; |
21 | MODULE_DEVICE_TABLE(i2c, ad193x_id); |
22 | |
23 | static int ad193x_i2c_probe(struct i2c_client *client) |
24 | { |
25 | struct regmap_config config; |
26 | const struct i2c_device_id *id = i2c_match_id(id: ad193x_id, client); |
27 | |
28 | config = ad193x_regmap_config; |
29 | config.val_bits = 8; |
30 | config.reg_bits = 8; |
31 | |
32 | return ad193x_probe(dev: &client->dev, |
33 | devm_regmap_init_i2c(client, &config), |
34 | type: (enum ad193x_type)id->driver_data); |
35 | } |
36 | |
37 | static struct i2c_driver ad193x_i2c_driver = { |
38 | .driver = { |
39 | .name = "ad193x" , |
40 | }, |
41 | .probe = ad193x_i2c_probe, |
42 | .id_table = ad193x_id, |
43 | }; |
44 | module_i2c_driver(ad193x_i2c_driver); |
45 | |
46 | MODULE_DESCRIPTION("ASoC AD1936/AD1937 audio CODEC driver" ); |
47 | MODULE_AUTHOR("Barry Song <21cnbao@gmail.com>" ); |
48 | MODULE_LICENSE("GPL" ); |
49 | |