[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