Hi Team,
We are currently working on the LMK04828 clock synthesizer bring-up on an Intel Agilex-9 platform and would like your guidance regarding SPI access during the U-Boot stage.
Platform Overview
-
SoC: Intel Agilex-9
-
SPI controller: DesignWare SPI (dw_spi)
-
Bootloader: U-Boot (DM_SPI framework)
-
Kernel: Linux (SPI access working correctly)
-
CS type: GPIO-based CS defined via Device Tree
-
SPI mode: Mode 0
-
SPI frequency: 1 MHz
Current Status (Important)
-
LMK04828 SPI programming works correctly in the Linux kernel
-
SPI access to LMK04828 fails only in U-Boot
This confirms that:
-
Hardware connections are correct
-
SPI timing and protocol are correct
-
LMK04828 device behavior is as expected
-
The issue appears to be specific to the U-Boot SPI/CS handling, not the LMK04828 device itself
Observed Issue in U-Boot
While attempting to program LMK04828 in U-Boot using raw SPI write/read-back sequences, we encounter the following error:
Invalid chip select (err = -19 / ENODEV)
This error occurs during chip-select validation in the U-Boot SPI framework before actual data transfer.
Additional Observation
On the same SPI controller and U-Boot environment, when a QSPI flash device is connected:
-
SPI access works correctly
-
Chip select validation succeeds
-
No CS-related errors are observed
This indicates that:
-
The SPI controller and GPIO-based CS are functional in U-Boot
-
The issue appears specific to non-flash SPI slave handling in U-Boot, such as LMK04828
SPI Access Method in U-Boot
-
Using U-Boot DM_SPI APIs only
-
CS is defined in the Device Tree using
cs-gpios -
No manual CS GPIO handling in board code
-
Raw SPI access (write + read-back), as required for LMK04828
-
No legacy SPI APIs are used
Clarification Requested
We would appreciate TI’s guidance on the following:
-
Does TI recommend any specific SPI driver or access method for LMK04828 during the bootloader or bare-metal stages?
-
Is there any U-Boot–specific reference implementation for LMK04828 SPI programming?
-
Are there any special CS timing or sequencing requirements (e.g., CS setup/hold time) that bootloaders must explicitly handle?
-
Are there any known differences or constraints when accessing LMK04828 from a bootloader environment versus Linux?
-
Does TI have any known errata or recommendations related to LMK04828 SPI usage during early boot?
Summary
-
LMK04828 works correctly in Linux
-
SPI and CS hardware are validated
-
The Issue is isolated to U-Boot SPI handling
-
Guidance is requested specifically for bootloader-stage access
Please let us know if you need:
-
SPI waveform captures
-
Linux driver reference
-
U-Boot source snippets
-
Device Tree excerpts
Thank you for your support.
Best regards,
Thaniyel
