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