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 08-10-2024 om 22:59 schreef Kees Bakker:
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;

Please have a look at my comment again.
If regmap_read returns a `det_mode` not 0, 3 or 5 then the function will return jack_type
with an uninitialzed value.
--
Kees



[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