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@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 },
+};