[alsa-devel] i.Mx35 SGTL5000 - audio hangs only on system reboot.
Hello,
I am facing an issue with SGTL5000 codec which happens only on reboot. Below are the details.
On doing a power cycle audio works fine, but if I do a "reboot", I could see that driver probe is success, but on playing a file using ogg, it hangs. At the moment, I am not sure where the issue is. I did some search in Freescale/NXP forums and found there are issues related to SGTL5000 and i2c bus on reboot, but in my case, on reboot the probe itself is success, so I believe , its not the I2c reboot issue. Any help as to how I can debug further or solutions is much appreciated. Thanks in advance.
Regards Nikhil
System details: chip : i.Mx35 Kernel : 4.14 linux-fslc DeviceTree : sound { compatible = "fsl,imx-audio-sgtl5000"; model = "ebox-sgtl5000"; ssi-controller = <&ssi1>; audio-codec = <&codec>; audio-routing = "MIC_IN", "Mic Jack", "Mic Jack", "Mic Bias", "Headphone Jack", "HP_OUT", "Ext Spk", "LINE_OUT"; mux-int-port = <1>; mux-ext-port = <4>; }; codec: sgtl5000@0a { compatible = "fsl,sgtl5000"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_sgtl5000>; reg = <0x0a>; clocks = <&clks 86>; VDDA-supply = <&vcam_reg>; VDDIO-supply = <®_sgtl5000_vddd>; };
sgtl output: $ dmesg | grep sgtl [ 2.416167] sgtl5000 1-000a: sgtl5000 revision 0x11 [ 2.425204] sgtl5000 1-000a: Using internal LDO instead of VDDD: check ER1 [ 2.562911] imx-sgtl5000 sound: sgtl5000 <-> 43fa0000.ssi mapping ok [ 3.247742] #0: ebox-sgtl5000
dma output on reboot: $ dmesg | grep -i dma [ 0.049859] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.710313] i2c i2c-1: can't use DMA, using PIO instead. [ 0.712794] i2c i2c-3: can't use DMA, using PIO instead. [ 0.818858] ipu-core ipu-core: private_candidate: dma0chan0 filter said false [ 0.818918] ipu-core ipu-core: private_candidate: dma0chan1 filter said false [ 0.818945] ipu-core ipu-core: private_candidate: dma0chan2 filter said false [ 0.818972] ipu-core ipu-core: private_candidate: dma0chan3 filter said false [ 0.818997] ipu-core ipu-core: private_candidate: dma0chan4 filter said false [ 0.819022] ipu-core ipu-core: private_candidate: dma0chan5 filter said false [ 0.819047] ipu-core ipu-core: private_candidate: dma0chan6 filter said false [ 0.819072] ipu-core ipu-core: private_candidate: dma0chan7 filter said false [ 0.819098] ipu-core ipu-core: private_candidate: dma0chan8 filter said false [ 0.819123] ipu-core ipu-core: private_candidate: dma0chan9 filter said false [ 0.819148] ipu-core ipu-core: private_candidate: dma0chan10 filter said false [ 0.819174] ipu-core ipu-core: private_candidate: dma0chan11 filter said false [ 0.819199] ipu-core ipu-core: private_candidate: dma0chan12 filter said false [ 0.819224] ipu-core ipu-core: private_candidate: dma0chan13 filter said false [ 0.961113] ipu-core ipu-core: IDMAC_CONF 0x70, IC_CONF 0x0, IDMAC_CHA_EN 0x0, IDMAC_CHA_PRI 0x0, IDMAC_CHA_BUSY 0x0 [ 0.961409] dma dma0chan14: Found channel 0xe, irq 176 [ 0.961442] dmaengine: __dma_request_channel: success (dma0chan14) [ 0.988705] dma dma0chan14: Submitting sg d79f3b94 [ 0.988776] dma dma0chan14: Updated sg d79f3b94 on channel 0xe buffer 0 [ 0.988827] ipu-core ipu-core: IDMAC_CONF 0x70, IC_CONF 0x0, IDMAC_CHA_EN 0x0, IDMAC_CHA_PRI 0x4000, IDMAC_CHA_BUSY 0x0 [ 0.988885] ipu-core ipu-core: IDMAC_CONF 0x70, IC_CONF 0x0, IDMAC_CHA_EN 0x4000, IDMAC_CHA_PRI 0x4000, IDMAC_CHA_BUSY 0x0 [ 1.084868] imx-sdma 53fd4000.sdma: no event needs to be remapped [ 1.085941] imx-sdma 53fd4000.sdma: loaded firmware 1.0 [ 1.934535] spi_imx 43fa4000.cspi: dma setup error -19, use pio [ 2.401179] mmc0: SDHCI controller on 53fb4000.esdhc [53fb4000.esdhc] using DMA [ 2.472063] dmaengine: __dma_request_channel: success (dma1chan0) [ 2.472236] imx-sdma 53fd4000.sdma: private_candidate: dma1chan0 busy [ 2.472374] dmaengine: __dma_request_channel: success (dma1chan1)
sgtl5000 registers on reboot , but before playing sound file: $ cat /sys/kernel/debug/regmap/1-000a/registers 000: a011 002: 0060 004: 0008 006: 0080 00a: 0010 00e: 020c 010: 3c3c 014: 015f 020: 0000 022: 1818 024: 0022 026: 0008 028: 01c1 02a: 0200 02c: 031c 02e: 0f0f 030: 7a60 032: 5000 034: 0800 036: 0017 03a: 0000 03c: 0000 100: 0000 102: 0000 104: 8040 106: 051f 108: 0000 10a: 0040 10c: 0000 10e: 0000 110: 0000 116: 002f 118: 002f 11a: 002f 11c: 002f 11e: 002f 120: 8000 122: 0000 124: 5100 126: 1473 128: 0028 12a: 0050 12c: 0000 12e: 0000 130: 0000 132: 0000 134: 0000 136: 0000 138: 0000 13a: 0000
ssi registers on reboot , but before playing sound file: $ cat /sys/kernel/debug/regmap/43fa0000.ssi/registers 00: 00000000 04: 00000000 10: 00001058 18: 00003003 1c: 0000020d 20: 0000020d 24: 00040100 28: 00040100 2c: 00880088 30: 00001111 34: 00000000 38: 00000000 48: 00000000 4c: 00000000 50: 00000000 54: 00000000 58: 00000000
sgtl5000 registers on reboot , after playing sound file: $ cat /sys/kernel/debug/regmap/1-000a/registers 000: a011 002: 0061 004: 0007 006: 0090 00a: 0010 00e: 0200 010: 3c3c 014: 015f 020: 0000 022: 1818 024: 0022 026: 0008 028: 01c1 02a: 0200 02c: 031c 02e: 0f0f 030: 7ff9 032: 786c 034: 0808 036: 0017 03a: 0000 03c: 0000 100: 0000 102: 0000 104: 8040 106: 051f 108: 0000 10a: 0040 10c: 0000 10e: 0000 110: 0000 116: 002f 118: 002f 11a: 002f 11c: 002f 11e: 002f 120: 8000 122: 0000 124: 5100 126: 1473 128: 0028 12a: 0050 12c: 0000 12e: 0000 130: 0000 132: 0000 134: 0000 136: 0000 138: 0000 13a: 0000
ssi registers on reboot , after playing sound file: $ cat /sys/kernel/debug/regmap/43fa0000.ssi/registers 00: 00ffff00 04: 00000000 10: 0000105b 18: 01d035f7 1c: 0000028d 20: 0000028d 24: 00056100 28: 00040100 2c: 00880888 30: 00001111 34: 00000000 38: 00000000 48: 00000000 4c: 00000000 50: 00000000 54: 00000000 58: 00000000
dma output after playing a sound file: [ 115.626358] imx-sdma 53fd4000.sdma: load_address = 834 [ 115.626482] imx-sdma 53fd4000.sdma: wml = 0x00000020 [ 115.626512] imx-sdma 53fd4000.sdma: shp_addr = 0x43fa0000 [ 115.626537] imx-sdma 53fd4000.sdma: per_addr = 0x00000000 [ 115.626563] imx-sdma 53fd4000.sdma: event_mask0 = 0x20000000 [ 115.626588] imx-sdma 53fd4000.sdma: event_mask1 = 0x00000000 [ 116.072831] imx-sdma 53fd4000.sdma: sdma_prep_dma_cyclic channel: 1 [ 116.072956] imx-sdma 53fd4000.sdma: load_address = 834 [ 116.072984] imx-sdma 53fd4000.sdma: wml = 0x00000020 [ 116.073009] imx-sdma 53fd4000.sdma: shp_addr = 0x43fa0000 [ 116.073032] imx-sdma 53fd4000.sdma: per_addr = 0x00000000 [ 116.073055] imx-sdma 53fd4000.sdma: event_mask0 = 0x20000000 [ 116.073077] imx-sdma 53fd4000.sdma: event_mask1 = 0x00000000 [ 116.073160] imx-sdma 53fd4000.sdma: entry 0: count: 1768 dma: 0x97b80000 intr [ 116.073191] imx-sdma 53fd4000.sdma: entry 1: count: 1768 dma: 0x97b806e8 intr [ 116.073219] imx-sdma 53fd4000.sdma: entry 2: count: 1768 dma: 0x97b80dd0 intr [ 116.073247] imx-sdma 53fd4000.sdma: entry 3: count: 1768 dma: 0x97b814b8 wrap int
participants (1)
-
Nikhil