IMX6ULL SPI Frequency not going beyond 20 Mhz

I am working on Col iMX6ULL 512 MB IT V1.0 A SOM and Colibri Evaluation Board 3.2 B. I am using spidev_test.c as my user space application.
Initially in imx6ull-colibri-eval-v3.dtsi , spi-max-frequency = 23000000 is set , but i want spi frequency up to 40 MHz, so i have modified above dtsi file as spi-max-frequency = 60000000 since spi max frequency possible is 60000000. Here User Space Application Execution is showing max speed as what i am requested.
But in CRO i am getting only 20 MHz Frequency whatever the frequency i am requested via user space using spidev_test.c above 20 MHz Frequency.

Please Suggest me what to do to increase the SPI Frequency. Thanks in advance.

Below is dtsi modification:

&ecspi1 {
status = "okay";

mcp251x0: mcp251x@0 {
	compatible = "microchip,mcp2515";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_can_int>;
	reg = <0>;
	clocks = <&clk16m>;
	interrupt-parent = <&gpio2>;
	interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
	spi-max-frequency = <10000000>;
	//status = "okay";
            status = "disabled";
};

spidev0: spidev@0 {
	compatible = "toradex,evalspi";
	reg = <0>;
	spi-max-frequency = <60000000>;
	//status = "disabled";
            status = "okay";
	};
};

Below is application Execution:

root@colibri-imx6ull:~# ./hello-world-debug -D /dev/spidev0.0 -s 30000000       
spi mode: 0x0                                                                   
bits per word: 8                                                                
max speed: 30000000 Hz (30000 KHz)                                              
RX | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
root@colibri-imx6ull:~# ./hello-world-debug -D /dev/spidev0.0 -s 20000000       
spi mode: 0x0                                                                   
bits per word: 8                                                                
max speed: 20000000 Hz (20000 KHz)                                              
RX | 00 00 00 00 00 00 00+-----------------------------+00 00 00 00 00 00 00 00.
root@colibri-imx6ull:~# ./hello-world-debug -D /dev/spidev0.0 -s 25000000       
spi mode: 0x0                                                                   
bits per word: 8                                                                
max speed: 25000000 Hz (25000 KHz)                                              
RX | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.

Hi @vemula,

Welcome to Toradex community.

Could you provide me the software versions of your module?

Hi@ashok,
Thanks for your enquiry.

Below are the details:
Linux LXDE Image 2.8b6 (Ångström LXDE Desktop Environment Image) i am using for IMX6ULL.

Hi @vemula

The i.MX6ULL Datasheet provides specs regarding eCSPI maximal frequency, which is different for read and write. The read timing for the master mode is 43 ns, which results in 23 Mbits for a maximum frequency of SCLK(23MHz).

Please refer Link1 link2 for more information.

Thanks for reply.

If i use only SPI writes (MOSI) (15 ns mentioned in the datasheet) whether i can get 66 MHz (Max.) or atleast 33 MHz? If Yes how to do that . If no what is the restriction and how max can get for SPI Clock.

Hi @vemula

Are you going to use one-way communication(master only mode). let us know the use case?

I want to use SPI Communication(3-wire-SCLK,MOSI,CS) for LED Matrix Drivers in a Daisy Chain passion and so many drivers are Connected in a Daisy Chain and MOSI data is visible on LED Matrix. So I don’t required to use MISO in my application.

Hi @vemula

Being at Home-Office, I cannot do the testing at my end.
Give us some time and will get back to you by next week.

Hi @vemula

I could able to get the SPI frequency of 30MHz by changing
spi-max-frequency = 60000000; in arch/arm/boot/dts/imx6ull-colibri-eval-v3.dtsi file.

Could you please provide us some pictures of CRO measurements ??