linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 1/1] sound: Add a new kcontrol
@ 2022-08-15 11:27 Kevin Lu
  2022-08-16 17:48 ` Mark Brown
  2022-08-17 14:31 ` Mark Brown
  0 siblings, 2 replies; 4+ messages in thread
From: Kevin Lu @ 2022-08-15 11:27 UTC (permalink / raw)
  To: broonie; +Cc: linux-kernel, shenghao-ding, kevin-lu, Kevin Lu

Add a new kcontrol for phase calib

Signed-off-by: Kevin Lu <luminlong@139.com>
---
 sound/soc/codecs/tlv320adcx140.c | 59 ++++++++++++++++++++++++++++++++
 sound/soc/codecs/tlv320adcx140.h |  1 +
 2 files changed, 60 insertions(+)

diff --git a/sound/soc/codecs/tlv320adcx140.c b/sound/soc/codecs/tlv320adcx140.c
index 0b72965..802c8e4 100644
--- a/sound/soc/codecs/tlv320adcx140.c
+++ b/sound/soc/codecs/tlv320adcx140.c
@@ -31,6 +31,7 @@ struct adcx140_priv {
 	struct device *dev;
 
 	bool micbias_vg;
+	bool phase_calib_on;
 
 	unsigned int dai_fmt;
 	unsigned int slot_width;
@@ -592,6 +593,52 @@ static const struct snd_soc_dapm_route adcx140_audio_map[] = {
 	{"MIC4M Input Mux", "Digital", "MIC4M"},
 };
 
+#define ADCX140_PHASE_CALIB_SWITCH(xname) {\
+	.iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
+	.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,\
+	.info = adcx140_phase_calib_info, \
+	.get = adcx140_phase_calib_get, \
+	.put = adcx140_phase_calib_put}
+
+static int adcx140_phase_calib_info(struct snd_kcontrol *kcontrol,
+	struct snd_ctl_elem_info *uinfo)
+{
+	uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
+	uinfo->count = 1;
+	uinfo->value.integer.min = 0;
+	uinfo->value.integer.max = 1;
+	return 0;
+}
+
+static int adcx140_phase_calib_get(struct snd_kcontrol *kcontrol,
+	struct snd_ctl_elem_value *value)
+{
+	struct snd_soc_component *codec =
+		snd_soc_kcontrol_component(kcontrol);
+	struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(codec);
+
+	value->value.integer.value[0] = adcx140->phase_calib_on ? 1 : 0;
+
+
+	return 0;
+}
+
+static int adcx140_phase_calib_put(struct snd_kcontrol *kcontrol,
+	struct snd_ctl_elem_value *value)
+{
+	struct snd_soc_component *codec
+		= snd_soc_kcontrol_component(kcontrol);
+	struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(codec);
+
+	bool v = value->value.integer.value[0] ? true : false;
+
+	if (adcx140->phase_calib_on != v) {
+		adcx140->phase_calib_on = v;
+		return 1;
+	}
+	return 0;
+}
+
 static const struct snd_kcontrol_new adcx140_snd_controls[] = {
 	SOC_SINGLE_TLV("Analog CH1 Mic Gain Volume", ADCX140_CH1_CFG1, 2, 42, 0,
 			adc_tlv),
@@ -628,6 +675,7 @@ static const struct snd_kcontrol_new adcx140_snd_controls[] = {
 			0, 0xff, 0, dig_vol_tlv),
 	SOC_SINGLE_TLV("Digital CH8 Out Volume", ADCX140_CH8_CFG2,
 			0, 0xff, 0, dig_vol_tlv),
+	ADCX140_PHASE_CALIB_SWITCH("Adcx140 Phase Calib Switch"),
 };
 
 static int adcx140_reset(struct adcx140_priv *adcx140)
@@ -653,6 +701,8 @@ static int adcx140_reset(struct adcx140_priv *adcx140)
 static void adcx140_pwr_ctrl(struct adcx140_priv *adcx140, bool power_state)
 {
 	int pwr_ctrl = 0;
+	int ret = 0;
+	struct snd_soc_component *component = adcx140->component;
 
 	if (power_state)
 		pwr_ctrl = ADCX140_PWR_CFG_ADC_PDZ | ADCX140_PWR_CFG_PLL_PDZ;
@@ -660,6 +710,14 @@ static void adcx140_pwr_ctrl(struct adcx140_priv *adcx140, bool power_state)
 	if (adcx140->micbias_vg && power_state)
 		pwr_ctrl |= ADCX140_PWR_CFG_BIAS_PDZ;
 
+	if (pwr_ctrl) {
+		ret = regmap_write(adcx140->regmap, ADCX140_PHASE_CALIB,
+			adcx140->phase_calib_on ? 0x00 : 0x40);
+		if (ret)
+			dev_err(component->dev, "%s: register write error %d\n",
+				__func__, ret);
+	}
+
 	regmap_update_bits(adcx140->regmap, ADCX140_PWR_CFG,
 			   ADCX140_PWR_CTRL_MSK, pwr_ctrl);
 }
@@ -1098,6 +1156,7 @@ static int adcx140_i2c_probe(struct i2c_client *i2c)
 	if (!adcx140)
 		return -ENOMEM;
 
+	adcx140->phase_calib_on = false;
 	adcx140->dev = &i2c->dev;
 
 	adcx140->gpio_reset = devm_gpiod_get_optional(adcx140->dev,
diff --git a/sound/soc/codecs/tlv320adcx140.h b/sound/soc/codecs/tlv320adcx140.h
index d7d4e3a..827f373 100644
--- a/sound/soc/codecs/tlv320adcx140.h
+++ b/sound/soc/codecs/tlv320adcx140.h
@@ -90,6 +90,7 @@
 #define ADCX140_PWR_CFG		0x75
 #define ADCX140_DEV_STS0	0x76
 #define ADCX140_DEV_STS1	0x77
+#define ADCX140_PHASE_CALIB		0X7b
 
 #define ADCX140_RESET	BIT(0)
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v1 1/1] sound: Add a new kcontrol
  2022-08-15 11:27 [PATCH v1 1/1] sound: Add a new kcontrol Kevin Lu
@ 2022-08-16 17:48 ` Mark Brown
  2022-08-17  0:30   ` [EXTERNAL] " Lu, Kevin
  2022-08-17 14:31 ` Mark Brown
  1 sibling, 1 reply; 4+ messages in thread
From: Mark Brown @ 2022-08-16 17:48 UTC (permalink / raw)
  To: Kevin Lu; +Cc: linux-kernel, shenghao-ding, kevin-lu

[-- Attachment #1: Type: text/plain, Size: 911 bytes --]

On Mon, Aug 15, 2022 at 07:27:15PM +0800, Kevin Lu wrote:
> Add a new kcontrol for phase calib

This looks mostly good now - one small issue below which I'll fix up
myself and apply.

Please submit patches using subject lines reflecting the style for the
subsystem, this makes it easier for people to identify relevant patches.
Look at what existing commits in the area you're changing are doing and
make sure your subject lines visually resemble what they're doing.
There's no need to resubmit to fix this alone.

> +	ADCX140_PHASE_CALIB_SWITCH("Adcx140 Phase Calib Switch"),

We wouldn't normally put the CODEC name in the control name, it's not
really relevant to users and if some disambiguation is needed it's
usually better to do it in a board specific way (eg, describing the
output the CODEC is connected to) using the support ASoC has for adding
prefixes.  Better would be "Phase Callibration Switch".

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [EXTERNAL] Re: [PATCH v1 1/1] sound: Add a new kcontrol
  2022-08-16 17:48 ` Mark Brown
@ 2022-08-17  0:30   ` Lu, Kevin
  0 siblings, 0 replies; 4+ messages in thread
From: Lu, Kevin @ 2022-08-17  0:30 UTC (permalink / raw)
  To: Mark Brown
  Cc: linux-kernel, Ding, Shenghao, Lu, Kevin, Navada Kanyana, Mukund

Hi Mark,

Thanks for your patience to point out my mistakes, It will be helpful for the future patch submitting.
I will take every code change carefully.

Best regards
Kevin

-----Original Message-----
From: Mark Brown <broonie@kernel.org> 
Sent: Wednesday, August 17, 2022 1:49 AM
To: Kevin Lu <luminlong@139.com>
Cc: linux-kernel@vger.kernel.org; Ding, Shenghao <shenghao-ding@ti.com>; Lu, Kevin <kevin-lu@ti.com>
Subject: [EXTERNAL] Re: [PATCH v1 1/1] sound: Add a new kcontrol

On Mon, Aug 15, 2022 at 07:27:15PM +0800, Kevin Lu wrote:
> Add a new kcontrol for phase calib

This looks mostly good now - one small issue below which I'll fix up myself and apply.

Please submit patches using subject lines reflecting the style for the subsystem, this makes it easier for people to identify relevant patches.
Look at what existing commits in the area you're changing are doing and make sure your subject lines visually resemble what they're doing.
There's no need to resubmit to fix this alone.

> +	ADCX140_PHASE_CALIB_SWITCH("Adcx140 Phase Calib Switch"),

We wouldn't normally put the CODEC name in the control name, it's not really relevant to users and if some disambiguation is needed it's usually better to do it in a board specific way (eg, describing the output the CODEC is connected to) using the support ASoC has for adding prefixes.  Better would be "Phase Callibration Switch".

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v1 1/1] sound: Add a new kcontrol
  2022-08-15 11:27 [PATCH v1 1/1] sound: Add a new kcontrol Kevin Lu
  2022-08-16 17:48 ` Mark Brown
@ 2022-08-17 14:31 ` Mark Brown
  1 sibling, 0 replies; 4+ messages in thread
From: Mark Brown @ 2022-08-17 14:31 UTC (permalink / raw)
  To: Kevin Lu; +Cc: shenghao-ding, kevin-lu, linux-kernel

On Mon, 15 Aug 2022 19:27:15 +0800, Kevin Lu wrote:
> Add a new kcontrol for phase calib
> 
> 

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/1] sound: Add a new kcontrol
      commit: 4e82971f7b556cff3491c867e8840e7d788693b9

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-08-17 14:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-15 11:27 [PATCH v1 1/1] sound: Add a new kcontrol Kevin Lu
2022-08-16 17:48 ` Mark Brown
2022-08-17  0:30   ` [EXTERNAL] " Lu, Kevin
2022-08-17 14:31 ` Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).