RG500Q-EA: PROSLIC-SPI.ko fails to detect Si32185 SLIC chip (data=0x0)

Problem Summary

I am trying to enable the SLIC (Si32185) voice functionality on an RG500Q-EA module (firmware RG500QEAAAR13A01M4G_01.200.01.200). The quectel_si3218x_daemon starts but PROSLIC-SPI.ko fails to detect the SLIC chip — proslic_detect_type() reads chip ID as 0x0 instead of the expected 0x17.

The daemon log shows:

proslic_detect_type: data=0

Module and Firmware Details

  • Module: RG500Q-EA
  • Firmware: RG500QEAAAR13A01M4G_01.200.01.200 (build 2023-06-09)
  • Kernel: Linux sdxprairie 4.14.206 armv7l
  • PROSLIC-SPI.ko: ProSLIC API v9.2.0, SPI Mode 3, 960kHz
  • SPI bus: spi@835000 (QUP0), GPIO 80-83 (FUNC_SEL=2, blsp_spi1)
  • PCM: SEC AUXPCM on GPIO 16-19
  • SLIC Reset: GPIO 92 (msm_cdc_pinctrl, verified HIGH = not in reset)

What I Have Verified

1. AT+QSLIC is accepted

AT+QSLIC=1,2    -> OK
AT+QSLIC?       -> +QSLIC: 1,2

Type=2 (Si32185) is accepted by firmware.

2. SPI controller is properly configured

  • GPIO 80-83 muxed to FUNC_SEL=2 (blsp_spi1) — verified via devmem 0xF150000 = 0x88
  • spi@835000 device tree node status = “ok”
  • Kernel thread [spi1] is running
  • PROSLIC-SPI.ko loads successfully with busnum=1 chipselect=0

3. SLIC reset GPIO is correct

  • GPIO 92 = HIGH (not in reset) — verified via devmem 0xF15C000
  • DT node msm_cdc_pinctrl@92 with cdc_reset_active = output-high

4. PCM clocks tested both ways

  • Test A: Module loaded WITHOUT PCM clocks active → chip ID = 0x0
  • Test B: PCM clocks started FIRST (tinyhostless on SEC AUXPCM device 25/26, GPIO 16-19 confirmed FUNC_SEL=1), THEN module loaded → chip ID = still 0x0
  • Test C: Clean modem reboot (slic.conf=0,2,0 to prevent auto-start), manually started PCM via tinyhostless, then fresh insmod → chip ID = still 0x0

5. No stale module state

  • Clean boot with slic.conf=0,2,0 (daemon disabled)
  • Fresh insmod PROSLIC-SPI.ko busnum=1 chipselect=0 — no kobject conflicts
  • Still reads 0x0

What Has Been Ruled Out

Possible Cause Status
Wrong SPI bus/chipselect Ruled out — matches DT (spi@835000, CS=0)
SPI GPIO not muxed Ruled out — FUNC_SEL=2 verified via devmem
SLIC held in reset Ruled out — GPIO 92 = HIGH
PCM clock not running during detect Ruled out — tested with active PCLK, still 0x0
Module stale state Ruled out — clean boot + fresh insmod
Wrong chip type in AT+QSLIC Ruled out — type=2 (Si32185) accepted

Questions

  1. Hardware power requirements: Does the Si32185 require an external DC input voltage (VDC 5-16V for the DC-DC converter / VBAT generation) before it will respond on SPI? Or should VDD_3V3 / VDDIO_1V8 be sufficient for basic SPI communication?

  2. SLIC chip identity: How can I verify which SLIC chip is actually populated on my specific RG500Q-EA module? Is Si32185 guaranteed on all RG500Q-EA variants, or do some variants ship without a SLIC chip or with a different SLIC (e.g., LE9643)?

  3. Level shifter / analog switch: The reference design shows LSF0204PWR level shifters and TS3A5018DR analog switches between the SDX55 SPI and the Si32185. Could a power or enable issue with these components cause the chip to appear as 0x0?

  4. Known working firmware: Is there a specific firmware version or configuration where SLIC voice functionality is confirmed working on RG500Q-EA? Are there any additional AT commands or NV items needed beyond AT+QSLIC=1,2?

  5. Debug suggestions: What additional diagnostic steps would you recommend? Is there a way to read raw SPI data or check if the SPI bus is electrically active (e.g., a loopback test)?

Any guidance would be greatly appreciated. Thank you!

Dear @Dilanka_Laksiri
Please share design of hardware about SLIC between board and module.
Si32185 requires two power sources.