Re: [PATCH v2] ASoC: rt-sdw-common: Common functions for Realtek soundwire driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Op 01-10-2024 om 11:16 schreef Jack Yu:
This is the first version of common functions for Realtek
soundwire codec driver.

Signed-off-by: Jack Yu <jack.yu@xxxxxxxxxxx>
---
  sound/soc/codecs/Kconfig         |   5 +
  sound/soc/codecs/Makefile        |   2 +
  sound/soc/codecs/rt-sdw-common.c | 238 +++++++++++++++++++++++++++++++
  sound/soc/codecs/rt-sdw-common.h |  66 +++++++++
  4 files changed, 311 insertions(+)
  create mode 100644 sound/soc/codecs/rt-sdw-common.c
  create mode 100644 sound/soc/codecs/rt-sdw-common.h

[...]
+/**
+ * rt_sdca_headset_detect - Headset jack type detection.
+ *
+ * @map: map for setting.
+ * @entity_id: SDCA entity ID.
+ *
+ * A headset jack type will be returned, a negative errno will
+ * be returned in error cases.
+ */
+int rt_sdca_headset_detect(struct regmap *map, unsigned int entity_id)
+{
+	unsigned int det_mode, jack_type;
+	int ret;
+
+	/* get detected_mode */
+	ret = regmap_read(map, SDW_SDCA_CTL(SDCA_NUM_JACK_CODEC, entity_id,
+			RT_SDCA_CTL_DETECTED_MODE, 0), &det_mode);
+
+	if (ret < 0)
+		goto io_error;
+
+	switch (det_mode) {
+	case 0x00:
+		jack_type = 0;
+		break;
+	case 0x03:
+		jack_type = SND_JACK_HEADPHONE;
+		break;
+	case 0x05:
+		jack_type = SND_JACK_HEADSET;
+		break;
There is no default case. So, variable jack_type can remain uninitialized and then used for the return value.
Perhaps you can combine "case 0x00" with "default".
+	}
+
+	/* write selected_mode */
+	if (det_mode) {
+		ret = regmap_write(map, SDW_SDCA_CTL(SDCA_NUM_JACK_CODEC, entity_id,
+				RT_SDCA_CTL_SELECTED_MODE, 0), det_mode);
+		if (ret < 0)
+			goto io_error;
+	}
+
+	return jack_type;




[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux