#include <linux/init.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/slab.h>
#include <linux/gpio/consumer.h>
#include <linux/regmap.h>
#include <sound/core.h>
#include <sound/soc.h>
#include <sound/tlv.h>
#include <sound/max9768.h>
#define MAX9768_VOL …
#define MAX9768_CTRL …
#define MAX9768_CTRL_PWM …
#define MAX9768_CTRL_FILTERLESS …
struct max9768 { … };
static const struct reg_default max9768_default_regs[] = …;
static int max9768_get_gpio(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int max9768_set_gpio(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static const DECLARE_TLV_DB_RANGE(volume_tlv,
0, 0, TLV_DB_SCALE_ITEM(-16150, 0, 0),
1, 1, TLV_DB_SCALE_ITEM(-9280, 0, 0),
2, 2, TLV_DB_SCALE_ITEM(-9030, 0, 0),
3, 3, TLV_DB_SCALE_ITEM(-8680, 0, 0),
4, 4, TLV_DB_SCALE_ITEM(-8430, 0, 0),
5, 5, TLV_DB_SCALE_ITEM(-8080, 0, 0),
6, 6, TLV_DB_SCALE_ITEM(-7830, 0, 0),
7, 7, TLV_DB_SCALE_ITEM(-7470, 0, 0),
8, 8, TLV_DB_SCALE_ITEM(-7220, 0, 0),
9, 9, TLV_DB_SCALE_ITEM(-6870, 0, 0),
10, 10, TLV_DB_SCALE_ITEM(-6620, 0, 0),
11, 11, TLV_DB_SCALE_ITEM(-6270, 0, 0),
12, 12, TLV_DB_SCALE_ITEM(-6020, 0, 0),
13, 13, TLV_DB_SCALE_ITEM(-5670, 0, 0),
14, 14, TLV_DB_SCALE_ITEM(-5420, 0, 0),
15, 17, TLV_DB_SCALE_ITEM(-5060, 250, 0),
18, 18, TLV_DB_SCALE_ITEM(-4370, 0, 0),
19, 19, TLV_DB_SCALE_ITEM(-4210, 0, 0),
20, 20, TLV_DB_SCALE_ITEM(-3960, 0, 0),
21, 21, TLV_DB_SCALE_ITEM(-3760, 0, 0),
22, 22, TLV_DB_SCALE_ITEM(-3600, 0, 0),
23, 23, TLV_DB_SCALE_ITEM(-3340, 0, 0),
24, 24, TLV_DB_SCALE_ITEM(-3150, 0, 0),
25, 25, TLV_DB_SCALE_ITEM(-2980, 0, 0),
26, 26, TLV_DB_SCALE_ITEM(-2720, 0, 0),
27, 27, TLV_DB_SCALE_ITEM(-2520, 0, 0),
28, 30, TLV_DB_SCALE_ITEM(-2350, 190, 0),
31, 31, TLV_DB_SCALE_ITEM(-1750, 0, 0),
32, 34, TLV_DB_SCALE_ITEM(-1640, 100, 0),
35, 37, TLV_DB_SCALE_ITEM(-1310, 110, 0),
38, 39, TLV_DB_SCALE_ITEM(-990, 100, 0),
40, 40, TLV_DB_SCALE_ITEM(-710, 0, 0),
41, 41, TLV_DB_SCALE_ITEM(-600, 0, 0),
42, 42, TLV_DB_SCALE_ITEM(-500, 0, 0),
43, 43, TLV_DB_SCALE_ITEM(-340, 0, 0),
44, 44, TLV_DB_SCALE_ITEM(-190, 0, 0),
45, 45, TLV_DB_SCALE_ITEM(-50, 0, 0),
46, 46, TLV_DB_SCALE_ITEM(50, 0, 0),
47, 50, TLV_DB_SCALE_ITEM(120, 40, 0),
51, 57, TLV_DB_SCALE_ITEM(290, 50, 0),
58, 58, TLV_DB_SCALE_ITEM(650, 0, 0),
59, 62, TLV_DB_SCALE_ITEM(700, 60, 0),
63, 63, TLV_DB_SCALE_ITEM(950, 0, 0)
);
static const struct snd_kcontrol_new max9768_volume[] = …;
static const struct snd_kcontrol_new max9768_mute[] = …;
static const struct snd_soc_dapm_widget max9768_dapm_widgets[] = …;
static const struct snd_soc_dapm_route max9768_dapm_routes[] = …;
static int max9768_probe(struct snd_soc_component *component)
{ … }
static const struct snd_soc_component_driver max9768_component_driver = …;
static const struct regmap_config max9768_i2c_regmap_config = …;
static int max9768_i2c_probe(struct i2c_client *client)
{ … }
static const struct i2c_device_id max9768_i2c_id[] = …;
MODULE_DEVICE_TABLE(i2c, max9768_i2c_id);
static struct i2c_driver max9768_i2c_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;