How can I write SPI device tree? where can I found SPI information?

After long long study, finally I reach ‘change device tree’ step.

As @ShaneCCC suggest, I try to follow 3 post shown in below.

  1. Spidev read failed on xavier devkit
  2. SPI1 not work on Xavier
  3. SPI works with JetPack 3.3 but not JetPack 4.2

At first post, @bwp2012 wrote sample spi device tree.

spi@3210000 {
compatible = “nvidia,tegra186-spi”;
reg = <0x0 0x3210000 0x0 0x10000>;
interrupts = <0x0 0x24 0x4>;
#address-cells = <0x1>;
#size-cells = <0x0>;
iommus = <0x2 0x20>;
dmas = <0x1e 0xf 0x1e 0xf>;
dma-names = “rx”, “tx”;
spi-max-frequency = <0x3dfd240>;
nvidia,clk-parents = “pll_p”, “clk_m”;
clocks = <0x4 0x87 0x4 0x66 0x4 0xe>;
clock-names = “spi”, “pll_p”, “clk_m”;
resets = <0x5 0x5b>;
reset-names = “spi”;
status = “okay”;
linux,phandle = <0x172>;
phandle = <0x172>;

	spidev@0 {
		compatible = "spidev";
		reg = <0x0>;
		spi-max-frequency = <0x1312d00>;

I only can understand SPI memory starting address 0x3210000 and the length is 0x10000.
And I don’t know about why ‘reg’ field has 4 arguments.(First and thrid arguments are for what]?
[reg = <0x0 0x3210000 0x0 0x10000>;]

and also at the end of my develope, I need to use interrupts for SPI.
but I can’t find why interrupt field has <0x0 0x24 0x4>.
[interrupts = <0x0 0x24 0x4>;]

Thus, Is there any documents for detail explain about jetson device tree contents?
Or can anyone make device-tree components if I explain detail of my SPI mode setting?


I found Interrupt address.

So, please let me know where can I find about such as ‘clocks’,'spi-max-frequency '.
I think it should defined somewhere, but I can’t find.(It maybe targetting some of SPI resister…)

Have a reference to below document from the kernel source code.

Also have a fine them from below source code.


It may helps a lot!
I will study!