cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

adau1761-i2c.c (1814B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 * Driver for ADAU1361/ADAU1461/ADAU1761/ADAU1961 codec
      4 *
      5 * Copyright 2014 Analog Devices Inc.
      6 *  Author: Lars-Peter Clausen <lars@metafoo.de>
      7 */
      8
      9#include <linux/i2c.h>
     10#include <linux/mod_devicetable.h>
     11#include <linux/module.h>
     12#include <linux/regmap.h>
     13#include <sound/soc.h>
     14
     15#include "adau1761.h"
     16
     17static const struct i2c_device_id adau1761_i2c_ids[];
     18
     19static int adau1761_i2c_probe(struct i2c_client *client)
     20{
     21	struct regmap_config config;
     22	const struct i2c_device_id *id = i2c_match_id(adau1761_i2c_ids, client);
     23
     24	config = adau1761_regmap_config;
     25	config.val_bits = 8;
     26	config.reg_bits = 16;
     27
     28	return adau1761_probe(&client->dev,
     29		devm_regmap_init_i2c(client, &config),
     30		id->driver_data, NULL);
     31}
     32
     33static int adau1761_i2c_remove(struct i2c_client *client)
     34{
     35	adau17x1_remove(&client->dev);
     36	return 0;
     37}
     38
     39static const struct i2c_device_id adau1761_i2c_ids[] = {
     40	{ "adau1361", ADAU1361 },
     41	{ "adau1461", ADAU1761 },
     42	{ "adau1761", ADAU1761 },
     43	{ "adau1961", ADAU1361 },
     44	{ }
     45};
     46MODULE_DEVICE_TABLE(i2c, adau1761_i2c_ids);
     47
     48#if defined(CONFIG_OF)
     49static const struct of_device_id adau1761_i2c_dt_ids[] = {
     50	{ .compatible = "adi,adau1361", },
     51	{ .compatible = "adi,adau1461", },
     52	{ .compatible = "adi,adau1761", },
     53	{ .compatible = "adi,adau1961", },
     54	{ },
     55};
     56MODULE_DEVICE_TABLE(of, adau1761_i2c_dt_ids);
     57#endif
     58
     59static struct i2c_driver adau1761_i2c_driver = {
     60	.driver = {
     61		.name = "adau1761",
     62		.of_match_table = of_match_ptr(adau1761_i2c_dt_ids),
     63	},
     64	.probe_new = adau1761_i2c_probe,
     65	.remove = adau1761_i2c_remove,
     66	.id_table = adau1761_i2c_ids,
     67};
     68module_i2c_driver(adau1761_i2c_driver);
     69
     70MODULE_DESCRIPTION("ASoC ADAU1361/ADAU1461/ADAU1761/ADAU1961 CODEC I2C driver");
     71MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
     72MODULE_LICENSE("GPL");