#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/gpio/consumer.h>
#include <linux/i2c.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/regmap.h>
#include <linux/regulator/consumer.h>
#include <linux/stddef.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include <sound/tlv.h>
#include <linux/unaligned.h>
#include "tas571x.h"
#define TAS571X_MAX_SUPPLIES …
struct tas571x_chip { … };
struct tas571x_private { … };
static int tas571x_register_size(struct tas571x_private *priv, unsigned int reg)
{ … }
static int tas571x_reg_write(void *context, unsigned int reg,
unsigned int value)
{ … }
static int tas571x_reg_read(void *context, unsigned int reg,
unsigned int *value)
{ … }
static int tas571x_reg_write_multiword(struct i2c_client *client,
unsigned int reg, const long values[], size_t len)
{ … }
static int tas571x_reg_read_multiword(struct i2c_client *client,
unsigned int reg, long values[], size_t len)
{ … }
static int tas571x_coefficient_info(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo)
{ … }
static int tas571x_coefficient_get(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int tas571x_coefficient_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int tas571x_set_dai_fmt(struct snd_soc_dai *dai, unsigned int format)
{ … }
static int tas571x_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params,
struct snd_soc_dai *dai)
{ … }
static int tas571x_mute(struct snd_soc_dai *dai, int mute, int direction)
{ … }
static int tas571x_set_bias_level(struct snd_soc_component *component,
enum snd_soc_bias_level level)
{ … }
static const struct snd_soc_dai_ops tas571x_dai_ops = …;
#define BIQUAD_COEFS(xname, reg) …
static const char *const tas5711_supply_names[] = …;
static const DECLARE_TLV_DB_SCALE(tas5711_volume_tlv, -10350, 50, 1);
static const struct snd_kcontrol_new tas5711_controls[] = …;
static const struct regmap_range tas571x_readonly_regs_range[] = …;
static const struct regmap_range tas571x_volatile_regs_range[] = …;
static const struct regmap_access_table tas571x_write_regs = …;
static const struct regmap_access_table tas571x_volatile_regs = …;
static const struct reg_default tas5711_reg_defaults[] = …;
static const struct regmap_config tas5711_regmap_config = …;
static const struct tas571x_chip tas5711_chip = …;
static const struct regmap_range tas5707_volatile_regs_range[] = …;
static const struct regmap_access_table tas5707_volatile_regs = …;
static const DECLARE_TLV_DB_SCALE(tas5707_volume_tlv, -7900, 50, 1);
static const char * const tas5707_volume_slew_step_txt[] = …;
static const unsigned int tas5707_volume_slew_step_values[] = …;
static SOC_VALUE_ENUM_SINGLE_DECL(tas5707_volume_slew_step_enum,
TAS571X_VOL_CFG_REG, 0, 0x3,
tas5707_volume_slew_step_txt,
tas5707_volume_slew_step_values);
static const struct snd_kcontrol_new tas5707_controls[] = …;
static const struct reg_default tas5707_reg_defaults[] = …;
static const struct regmap_config tas5707_regmap_config = …;
static const struct tas571x_chip tas5707_chip = …;
static const char *const tas5717_supply_names[] = …;
static const DECLARE_TLV_DB_SCALE(tas5717_volume_tlv, -10375, 25, 0);
static const struct snd_kcontrol_new tas5717_controls[] = …;
static const struct reg_default tas5717_reg_defaults[] = …;
static const struct regmap_config tas5717_regmap_config = …;
static const struct tas571x_chip tas5717_chip = …;
static const char *const tas5721_supply_names[] = …;
static const struct snd_kcontrol_new tas5721_controls[] = …;
static const struct reg_default tas5721_reg_defaults[] = …;
static const struct regmap_config tas5721_regmap_config = …;
static const char *const tas5733_supply_names[] = …;
static const struct reg_default tas5733_reg_defaults[] = …;
static const struct regmap_config tas5733_regmap_config = …;
static const struct tas571x_chip tas5733_chip = …;
static const struct tas571x_chip tas5721_chip = …;
static const struct snd_soc_dapm_widget tas571x_dapm_widgets[] = …;
static const struct snd_soc_dapm_route tas571x_dapm_routes[] = …;
static const struct snd_soc_component_driver tas571x_component = …;
static struct snd_soc_dai_driver tas571x_dai = …;
static int tas571x_i2c_probe(struct i2c_client *client)
{ … }
static void tas571x_i2c_remove(struct i2c_client *client)
{ … }
static const struct of_device_id tas571x_of_match[] __maybe_unused = …;
MODULE_DEVICE_TABLE(of, tas571x_of_match);
static const struct i2c_device_id tas571x_i2c_id[] = …;
MODULE_DEVICE_TABLE(i2c, tas571x_i2c_id);
static struct i2c_driver tas571x_i2c_driver = …;
module_i2c_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;