LMK04828: LMK Programming failed in U-boot

Part Number: LMK04828


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:

  1. Does TI recommend any specific SPI driver or access method for LMK04828 during the bootloader or bare-metal stages?

  2. Is there any U-Boot–specific reference implementation for LMK04828 SPI programming?

  3. Are there any special CS timing or sequencing requirements (e.g., CS setup/hold time) that bootloaders must explicitly handle?

  4. Are there any known differences or constraints when accessing LMK04828 from a bootloader environment versus Linux?

  5. 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

  • Hi Team,

    We are looking for you reply.

    Regards,
    Thaniyel

  • Hi Thaniyel, 

    Our LMK04828 device expert is out of office for the holidays, but in the meantime I'll try to address some of your questions. 

    We generally don't have any specific recommendations for SPI drivers as long as they can meet the timing specifications provided in the datasheet (also pasted below). If you could provide SPI waveform captures in the Linux kernel compared to u-boot then we can help confirm that the SPI timing is valid. 

    Can you also confirm that the LMK04828 supply rail has fully ramped before SPI communication starts in u-boot?