I´m, planning to use the SPI- Controller of the LS1046a. In a first test setup, I made some measurements at the Testpoints TP9 (SPI_CLK) and TP10 (SPI_SOUT) of the Eval Board LS1046ARDB.

To be able to send data via the SPI- Controller from Linux Userspace, I added a "spidev" device to the devicetree and compiled the spidev_test tool from https://github.com/nxp-qoriq/linux/blob/lf-5.15.y/tools/spi/spidev_test.c
DeviceTree:
&dspi {
bus-num = <0>;
status = "okay";
spi1: spi@CS0 {
compatible = "rohm,dh2228fv"; # in compatibility list of spidev.c
reg = <0x0>;
spi-max-frequency = <50000000>;
#address-cells = <1>;
#size-cells = <1>;
};
With this modification and the following command, I`m able to see outcoming data on SPI_SOUT.
./spidev_test -D /dev/spidev0.0 -v -p "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09" -H
With a short between SPI_SOUT and SPI_SIN, I got following output:
./spidev_test -D /dev/spidev0.0 -v -p "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09" -H
spi mode: 0x1
bits per word: 8
max speed: 500000 Hz (500 kHz)
TX | 00 01 02 03 04 05 06 07 08 09 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ |..........|
RX | 00 01 02 03 04 05 06 07 08 09 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ |..........|
So, all fine until now.
But there is some unexpected behavior on the SPI Bus.
Depending on the size of the Tx data buffer, I observe a much too short negative clock phase (~16ns instead of 1/(2*500MHz) = 1us)).

I used an Oscilloscope to distinguish, if a whole negative clock phase is just to short or if there is only one longer positive clock phase with a unwanted glitch.
But you can already see that MOSI changes from 1 to 0 during these short 16ns Pulse.
I used two probes at the clock. The yellow one with a Bandwidth of 200MHz and the orange one with a Bandwidth of 5MHz only. A third probe was connected to SPI_SOUT (TP9).
If I select the yellow trace (BW: 200MHz) as a Clk source for the SPI- Analyzer, the interpreted data are equal to the transmitted.

So, no surprise: As far as I select the filtered orange trace as a clock, there are missing Bits in the analyzed data:

Do you already know this behavior? Is a workaround available to get a “clean”, uniform clock cycles?
I would really like to use the SPIDEV Kernel Driver as an entry point for further development.
BR
Simon