[PATCH v1] add tas2780

Amadeusz Sławiński amadeuszx.slawinski at linux.intel.com
Mon Jul 4 14:30:09 CEST 2022


On 7/4/2022 12:47 PM, Raphael-Xu wrote:
> 1.update Kconfig and Makefile 2.add tas2780.c and tas2780.h
> 
> Signed-off-by: Raphael-Xu <13691752556 at 139.com>
> ---

...

> diff --git a/sound/soc/codecs/tas2780.c b/sound/soc/codecs/tas2780.c
> new file mode 100644
> index 000000000000..0e452c7464fb
> --- /dev/null
> +++ b/sound/soc/codecs/tas2780.c
> @@ -0,0 +1,726 @@
> +// SPDX-License-Identifier: GPL-2.0
> +// Driver for the Texas Instruments TAS2780 Mono
> +//		Audio amplifier
> +// Copyright (C) 2022 Texas Instruments Inc.
> +
> +#include <linux/module.h>
> +#include <linux/moduleparam.h>
> +#include <linux/err.h>
> +#include <linux/init.h>
> +#include <linux/delay.h>
> +#include <linux/pm.h>
> +#include <linux/i2c.h>
> +#include <linux/gpio.h>
> +#include <linux/gpio/consumer.h>
> +#include <linux/regmap.h>
> +#include <linux/of.h>
> +#include <linux/of_gpio.h>
> +#include <sound/soc.h>
> +#include <sound/pcm.h>
> +#include <sound/pcm_params.h>
> +#include <sound/initval.h>
> +#include <sound/tlv.h>
> +
> +#include "tas2780.h"
> +
> +struct tas2780_priv {
> +	struct snd_soc_component *component;
> +	struct gpio_desc *reset_gpio;
> +	struct gpio_desc *sdz_gpio;
> +	struct regmap *regmap;
> +	struct device *dev;
> +	int v_sense_slot;
> +	int i_sense_slot;
> +

Unnecessary empty line?

> +};
> +
> +static void tas2780_reset(struct tas2780_priv *tas2780)
> +{
> +	if (tas2780->reset_gpio) {
> +		gpiod_set_value_cansleep(tas2780->reset_gpio, 0);
> +		usleep_range(2000, 2050);
> +		gpiod_set_value_cansleep(tas2780->reset_gpio, 1);
> +		usleep_range(2000, 2050);
> +	}
> +
> +	snd_soc_component_write(tas2780->component, TAS2780_SW_RST,
> +				TAS2780_RST);
> +}
> +

...

> +
> +static const struct snd_soc_component_driver soc_component_driver_tas2780 = {
> +	.probe			= tas2780_codec_probe,
> +#ifdef CONFIG_PM
> +	.suspend		= tas2780_codec_suspend,
> +	.resume			= tas2780_codec_resume,
> +#endif
> +	.controls		= tas2780_snd_controls,
> +	.num_controls		= ARRAY_SIZE(tas2780_snd_controls),
> +	.dapm_widgets		= tas2780_dapm_widgets,
> +	.num_dapm_widgets	= ARRAY_SIZE(tas2780_dapm_widgets),
> +	.dapm_routes		= tas2780_audio_map,
> +	.num_dapm_routes	= ARRAY_SIZE(tas2780_audio_map),
> +	.idle_bias_on		= 1,
> +	.endianness		= 1,
> +	.non_legacy_dai_naming	= 1,

 From what I see change removing non_legacy_dai_naming field is merged 
in for-next branch, so you can skip it, as it is default now.

> +};
> +
> +static const struct reg_default tas2780_reg_defaults[] = {
> +	{ TAS2780_PAGE, 0x00 },
> +	{ TAS2780_SW_RST, 0x00 },
> +	{ TAS2780_PWR_CTRL, 0x1a },
> +	{ TAS2780_DVC, 0x00 },
> +	{ TAS2780_CHNL_0, 0x00 },
> +	{ TAS2780_TDM_CFG0, 0x09 },
> +	{ TAS2780_TDM_CFG1, 0x02 },
> +	{ TAS2780_TDM_CFG2, 0x0a },
> +	{ TAS2780_TDM_CFG3, 0x10 },
> +	{ TAS2780_TDM_CFG5, 0x42 },
> +};
> +


More information about the Alsa-devel mailing list