xref: /linux/sound/hda/codecs/side-codecs/aw88399_hda_i2c.c (revision e5c91aac491def6ab3f90c4cc246e3fcb0f8f058)
1*de7027c9SMarco Giunta // SPDX-License-Identifier: GPL-2.0-only
2*de7027c9SMarco Giunta //
3*de7027c9SMarco Giunta // AW88399 HDA I2C driver
4*de7027c9SMarco Giunta //
5*de7027c9SMarco Giunta // Based on cs35l41_hda_i2c.c
6*de7027c9SMarco Giunta //
7*de7027c9SMarco Giunta 
8*de7027c9SMarco Giunta #include <linux/i2c.h>
9*de7027c9SMarco Giunta #include <linux/module.h>
10*de7027c9SMarco Giunta #include <linux/regmap.h>
11*de7027c9SMarco Giunta 
12*de7027c9SMarco Giunta #include "aw88399_hda.h"
13*de7027c9SMarco Giunta 
14*de7027c9SMarco Giunta static int aw88399_hda_i2c_probe(struct i2c_client *clt)
15*de7027c9SMarco Giunta {
16*de7027c9SMarco Giunta 	if (!strstr(dev_name(&clt->dev), "AWDZ8399"))
17*de7027c9SMarco Giunta 		return -ENODEV;
18*de7027c9SMarco Giunta 
19*de7027c9SMarco Giunta 	return aw88399_hda_probe(&clt->dev,
20*de7027c9SMarco Giunta 				 devm_regmap_init_i2c(clt, &aw88399_remap_config));
21*de7027c9SMarco Giunta }
22*de7027c9SMarco Giunta 
23*de7027c9SMarco Giunta static void aw88399_hda_i2c_remove(struct i2c_client *clt)
24*de7027c9SMarco Giunta {
25*de7027c9SMarco Giunta 	aw88399_hda_remove(&clt->dev);
26*de7027c9SMarco Giunta }
27*de7027c9SMarco Giunta 
28*de7027c9SMarco Giunta static const struct i2c_device_id aw88399_hda_i2c_id[] = {
29*de7027c9SMarco Giunta 	{ .name = "aw88399-hda" },
30*de7027c9SMarco Giunta 	{ }
31*de7027c9SMarco Giunta };
32*de7027c9SMarco Giunta 
33*de7027c9SMarco Giunta static const struct acpi_device_id aw88399_acpi_hda_match[] = {
34*de7027c9SMarco Giunta 	{ "AWDZ8399", 0 },
35*de7027c9SMarco Giunta 	{ }
36*de7027c9SMarco Giunta };
37*de7027c9SMarco Giunta MODULE_DEVICE_TABLE(acpi, aw88399_acpi_hda_match);
38*de7027c9SMarco Giunta 
39*de7027c9SMarco Giunta static struct i2c_driver aw88399_hda_i2c_driver = {
40*de7027c9SMarco Giunta 	.driver = {
41*de7027c9SMarco Giunta 		.name		= "aw88399-hda",
42*de7027c9SMarco Giunta 		.acpi_match_table = aw88399_acpi_hda_match,
43*de7027c9SMarco Giunta 		.pm		= &aw88399_hda_pm_ops,
44*de7027c9SMarco Giunta 	},
45*de7027c9SMarco Giunta 	.probe		= aw88399_hda_i2c_probe,
46*de7027c9SMarco Giunta 	.remove		= aw88399_hda_i2c_remove,
47*de7027c9SMarco Giunta 	.id_table	= aw88399_hda_i2c_id,
48*de7027c9SMarco Giunta };
49*de7027c9SMarco Giunta module_i2c_driver(aw88399_hda_i2c_driver);
50*de7027c9SMarco Giunta 
51*de7027c9SMarco Giunta MODULE_DESCRIPTION("HDA AW88399 I2C driver");
52*de7027c9SMarco Giunta MODULE_IMPORT_NS("SND_HDA_SCODEC_AW88399");
53*de7027c9SMarco Giunta MODULE_AUTHOR("Yakov Till <yakov.till@gmail.com>");
54*de7027c9SMarco Giunta MODULE_LICENSE("GPL");
55