zephyr/drivers
Laurentiu Mihalcea ae082064ff drivers: dai: sai: write some data into TX FIFO before start
While running the following command:

	aplay ... | arecord ...

multiple times, it was discovered that the SAI transmit
FIFO goes into underrun. This only happened in the
beginning, a few BCLK cycles after unmasking the transmit
data line. With the following flow:

	1) Trigger start on RX
		a) Do TX and RX software reset
		b) Enable RX FIFO error interrupt
		c) Enable RX DMA requests
		d) Enable receive data line
		e) Enable transmitter
		f) Enable receiver

	    ..... some time has passed .....

	2) Trigger start on TX
		a) Enable DMA requests
		b) Enable transmit data line

and configuration in mind:

	1) RX is SYNC with TX
	2) TX is ASYNC
	3) Each FSYNC edge is 32-bit wide
	4) Each frame contains 2 32-bit words

this points to the following possibilites:

	1) The transmitter is enabled so close to the
	start of a new frame that even though the DMA requests
	are asserted, the DMAC doesn't have enough time
	to service them until the module goes into underrun
	=> the timing is bad.

	2) The transmitter is enabled somewhat close to
	the start of a new frame such that the DMAC is not
	fast enough to service the module until it goes into
	underrun => DMAC is too slow AND the timing is bad.

Although the exact cause was not pinpointed, this patch
aims to fix the problem by writing a frame's worth of 0s
in the transmit FIFO. This way, even if we're dealing with
scenario 1) or 2), the DMAC has plenty of time to perform
the transfer (i.e: a frame), thus avoiding the underrun.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-05-17 12:40:43 +02:00
..
adc drivers: adc: Support regulator output as reference to LPADC 2024-05-15 17:28:38 +02:00
audio drivers: audio: mpxxdtyy: Handle PCM block sizes of more than 1 ms 2024-04-17 14:40:14 +02:00
auxdisplay
bbram drivers: bbram: Rename emul_bbram_backend_api to emul_bbram_driver_api 2024-05-03 14:44:41 +01:00
bluetooth drivers: hci: da1469x: Add driver for CMAC core on DA1469x 2024-05-16 18:58:00 -04:00
cache drivers: cache: nrf: Use CONFIG_DCACHE_LINE_SIZE 2024-04-28 17:22:35 +03:00
can drivers: can: set default initial bitrates via Kconfig 2024-05-16 09:23:59 +02:00
charger drivers: charger: charger_max20355: handle thermistor mode 2024-03-26 16:18:31 -04:00
clock_control drivers: clock_control: Smartbond: Add runtime frequency support 2024-05-17 09:29:58 +02:00
console drivers/console/xtensa_sim_console: force \r\n byte sequence 2024-05-15 09:33:27 +02:00
coredump
counter drivers: counter: ll_stm32_timer: G4X changes 2024-05-13 14:23:52 +02:00
crypto drivers: crypto: mbedtls: fix dependency 2024-05-03 14:47:52 -07:00
dac drivers: dac: Add driver for NXP GAU DAC 2024-05-14 18:23:22 -04:00
dai drivers: dai: sai: write some data into TX FIFO before start 2024-05-17 12:40:43 +02:00
disk drivers: disk: sdmmc_stm2: Add HWFC support on stm32h5 2024-04-24 19:41:09 +00:00
display drivers: display: smartbond: Add support for PM 2024-05-14 18:22:54 -04:00
dma drivers: dma: G0X changes 2024-05-13 14:23:52 +02:00
edac
eeprom drivers epprom_simulator: Set standard source macro appropriately 2024-01-26 07:48:55 -05:00
entropy drivers: entropy: smartbond: Bug fix 2024-05-16 18:55:18 -04:00
espi driver: espi: npcx: enable the Serial Port 2024-05-14 13:25:43 +02:00
ethernet drivers: ethernet: eth_liteeth: add set_config 2024-05-15 16:07:21 +02:00
flash drivers: flash: flash_mcux_flexspi_nor: better handle legacy SFDP tables 2024-05-16 18:56:33 -04:00
fpga drivers: fpga: Added altera FPGA bridge support 2024-04-26 09:30:24 +02:00
fuel_gauge drivers: use DT_INST_PROP over DT_INST_PROP_OR if possible 2024-01-30 00:26:58 +00:00
gnss drivers: gnss: Add emulated GNSS device driver 2024-05-09 15:45:34 +02:00
gpio drivers: gpio: Add support for Apollo3 SoCs GPIO 2024-05-15 16:08:29 +02:00
hwinfo drivers: hwinfo: Adds Ambiq hwinfo support 2024-05-10 12:32:02 +02:00
hwspinlock
i2c drivers: esp32: i2c: configure clock frequency 2024-05-15 09:29:31 +02:00
i2s drivers: i2s: stm32: use length from i2s_write 2024-05-03 07:53:05 -04:00
i3c drivers: i3c: cdns: handle variable length ccc with m0 err 2024-05-16 16:23:31 +02:00
ieee802154 drivers: ieee802154: nrf5: fix default value for nRF54H20 2024-05-13 10:21:08 +02:00
input input: gpio_keys: skip change checking when suspended 2024-05-16 14:02:36 +02:00
interrupt_controller drivers: added missing parenthesis 2024-05-17 09:29:48 +02:00
ipm drivers: ipm: esp32: Allow doorbell without data transfer 2024-02-26 11:39:29 +00:00
kscan drivers: ht16k33: convert from kscan to input 2024-05-06 14:53:36 +01:00
led drivers: ht16k33: convert from kscan to input 2024-05-06 14:53:36 +01:00
led_strip drivers: led_strip: Make update channels function optional 2024-05-14 09:33:58 +02:00
lora
mbox drivers: mbox: nrf_vevif_local: remove RT periph enable 2024-04-23 21:26:04 +00:00
mdio drivers: mdio: add stm32 mdio support 2024-05-07 09:41:46 +02:00
memc drivers: memc: memc_mcux_flexspi_is66wvq8m4: do not reset FLEXSPI 2024-05-14 18:21:57 -04:00
mfd drivers: mfd: add new driver "mfd_adp5585" 2024-05-08 16:09:08 -04:00
mipi_dbi drivers: mipi dbi: smartbond: Add support for PM 2024-05-06 21:55:03 +03:00
mipi_dsi drivers: dsi: stm32: add additional dt options 2024-04-02 21:03:10 -04:00
misc drivers: grove_lcd: lcd fix Kconfig leakage 2024-04-26 19:48:11 +01:00
mm hwmv2: Introduce Hardware model version 2 and convert devices 2024-03-02 16:56:33 -05:00
modem modem: modem_cellular: make modem_cellular_config structure constant 2024-05-14 20:22:45 -04:00
net drivers: nsos: support IPV6_V6ONLY getsockopt() and setsockopt() 2024-05-17 11:12:43 +02:00
pcie drivers: pcie: Remove deprecated pcie_bdf_lookup 2024-05-17 09:30:04 +02:00
peci
pinctrl drivers: pinctrl: support digital-path-disable for Numaker 2024-05-10 18:06:15 -04:00
pm_cpu_ops
power_domain intel_adsp/ace: power: No pending transaction before power gate 2024-03-22 21:29:33 -04:00
ps2 hwmv2: Introduce Hardware model version 2 and convert devices 2024-03-02 16:56:33 -05:00
ptp_clock drivers: ptp_clock_nxp_enet: misc fixes 2024-04-23 15:31:33 +02:00
pwm drivers: pwm: pwm_mcux: make thread safe with mutex. 2024-05-15 09:27:38 +02:00
regulator drivers: regulator/nxp_vref: Remove nxp_ground_select property 2024-05-15 17:28:38 +02:00
reset driver: reset: npcx: add driver support for reset controller 2024-04-16 09:09:13 +02:00
retained_mem
rtc drivers: rtc: stm32: subsecond not supported by F2x 2024-05-13 09:45:17 +02:00
sdhc drivers: sdhc: sdhc_spi: rework CMD12 failure logic 2024-05-17 09:30:12 +02:00
sensor drivers: sensor: st: vbat: check for ADC nodes 2024-05-17 11:39:19 +02:00
serial Driver: Add pin inversion to Esp32 Uart 2024-05-14 18:21:27 -04:00
sip_svc
smbus
spi drivers: spi_dw: add HSSI register layout 2024-04-29 15:44:22 +02:00
syscon
timer drivers: apic_tsc: Use toolchain cpuid() 2024-05-17 09:30:27 +02:00
usb drivers: usb: usb_dc_mcux: add case for MCXN94X SOC series 2024-05-16 09:17:18 +02:00
usb_c drivers: usbc_ppc: Rename usbc_ppc_drv to usbc_ppc_driver_api 2024-05-03 14:44:41 +01:00
video drivers: video: csi: Rename sensor to source 2024-05-14 20:23:15 -04:00
virtualization
w1 drivers: w1: fix return check in bit_read for w1-gpio 2024-02-08 12:14:36 +00:00
watchdog drivers: watchdog: wdt_nrfx.c: Unistall timeouts in wdt_disable() 2024-05-15 15:34:38 +01:00
wifi drivers: wifi: esp32: remove pre-defined mbedTLS requirements 2024-05-16 18:54:43 -04:00
xen
CMakeLists.txt drivers: ethernet: Build ethernet drivers with ETH_DRIVER_RAW_MODE 2024-03-20 08:05:55 -05:00
Kconfig drivers: mipi_dbi: introduce MIPI DBI driver class 2024-01-31 16:01:45 +00:00