nRF5340 I2S microphone in Zephyr

Hello, I'm trying to get an I2S microphone working and have not had any success. I've done my best to review the other I2S related issues for the nrf5340 in Zephyr, but I'm obviously missing something.
Situation: I have an I2S microphone (44.1KHz, 24bit) configured and I'm able to read the data into the first memory block. However, after the first memory block is filled (35280 bytes) the I2S clocks stop and I don't get any more data. I do get IO errors, or failed to allocate next RX Buffer: -ENOMEM errors. I've tried to bump the thread memory, main processor memory, stack size for the thread but I'm missing something. I've duplicated the sample and swapped the I2S microphone with a PDM microphone and it works perfectly fine using the dmic interface, ie clock persists when it's meant to. (Tested to ensure the mem_slab is correctly defined and usable.)

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <zephyr/kernel.h>
#include <zephyr/logging/log.h>
#include <zephyr/device.h>
#include <zephyr/drivers/i2s.h>
#define SAMPLE_FREQUENCY 44100
#define SAMPLE_BIT_WIDTH 32
#define BYTES_PER_SAMPLE sizeof(int32_t)
#define NUMBER_OF_CHANNELS 2
#define SAMPLES_PER_BLOCK ((SAMPLE_FREQUENCY / 10) * NUMBER_OF_CHANNELS)
#define INITIAL_BLOCKS 2
#define TIMEOUT 1000
/* Size of a block for 100 ms of audio data. */
#define BLOCK_SIZE(_sample_rate, _number_of_channels) \
(BYTES_PER_SAMPLE * (_sample_rate / 10) * _number_of_channels)
/* Driver will allocate blocks from this slab to receive audio data into them.
* Application, after getting a given block from the driver and processing its
* data, needs to free that block.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

I would like any insight into what I'm missing and how I can get this sample to work. Thank you for your patience and support.