Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Enable SPI - Banana pi m2u

Featured Replies

Hi all.

 

Firstly, sorry I had posted this query in the wrong forum.

 

I´m trying to add support for a raw SPI comunication through SPI0, as it´s a custom comunication with a little auxiliary board, I think best option is to have a spidev device.

 

My scenario is:

 

Banana pi m2 ultra
Armbian 5.4.35-sunxi, server (No gui).

 

I have been modifying .dts and .dtsi files, here are parts of the files that I modified:

 

sun8i-r40.dtsi

			spi0_pins: spi0-pins {
				pins = "PC0", "PC1", "PC2";
				function = "spi0";
			};

		spi0: spi@1c05000 {
			compatible = "allwinner,sun8i-spi";
			device_type = "spidev";
			reg = <0x01c05000 0x1000>;
			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
			clock-names = "ahb", "mod";
			pinctrl-names = "default";
			pinctrl-0 = <&spi0_pins>;
			resets = <&ccu RST_BUS_SPI0>;
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};
sun8i-r40-bananapi-m2-ultra.dts

&spi0 {
	status = "okay";
	num-chipselects = <1>;
	cs-gpios = <&pio 2 23 GPIO_ACTIVE_LOW>;	// CS = PC23
	spidev@0 {
		reg = <0>;
		compatible = "spidev";
		status = "okay";
		spi-max-frequency = <1000000>;
	};
};

 

I created a script to compile these files

 

!/bin/bash
sudo cpp -nostdinc -I include -I arch -undef -x assembler-with-cpp arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts preproc.dts
dtc -I dts -O dtb -o sun8i-bananapi-m2-ultra.dtb preproc.dtc

 

And I get my new dts. As a comment, the compilation of the device tree throws me this warning:

 

sun8i-r40-bananapi-m2-ultra.dtb: Warning (unit_address_vs_reg): Node /clocks/clk@1 has a unit name, but no reg propert

 

However, I think it is prior to my modifications, because if I delete all my changes the warning is already there.

 

So, next step, I procede to replace original dtb in Banana pi with the one that I just generated, under

 

/boot/dtb-5.4.35-sunxi/

 

And then, reboot.

 

I expected to get spix.y device under /dev but there is no change here.

 

If i decompile my new dtb, I can see spi

 

			spi0-pins {
				pins = "PC0", "PC1", "PC2";
				function = "spi0";
				phandle = <0x20>;
			};

		spi@1c05000 {
			compatible = "allwinner,sun8i-spi";
			reg = <0x1c05000 0x1000>;
			interrupts = <0x0 0xa 0x4>;
			clocks = <0x7 0x29 0x7 0x71>;
			clock-names = "ahb", "mod";
			pinctrl-names = "default";
			pinctrl-0 = <0x20>;
			resets = <0x7 0x11>;
			status = "okay";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			num-chipselects = <0x1>;
			cs-gpios = <0xd 0x2 0x17 0x1>;

 

So, Could somebody please tell me what thing (or probably things) I am doing wrong, or if there are any steps I am forgetting?

 

Just in case, I modified the armbianEnv.txt that way

 

overlay=spi-spidev
param_spidev_spi_bus=0

 

to add the spidev overlays (although if I'm not wrong this shouldn't be necessary, since I already enabled spi from the dts, is that correct?)

 

Thanks in advance to anyone who takes the time to read my issue, and if you have any suggestions, they will be more than welcome.

 

Regards.

 

mhc

Edited by Werner
Removed "moved" prefix

On 9/12/2020 at 9:47 AM, mhc said:

Thanks in advance to anyone who takes the time to read my issue, and if you have any suggestions, they will be more than welcome.

Overlays on R40 is a bit different than the ones on H3 ...

I've done tests on my BPiM2U using proper overlay which is "spi-spidev0" (not "spi-spidev") , without any needs for "param_spidev_spi_bus", and /dev/spidev0.0 appeared properly.

 

  • Author

Hi martinayotte, many thanks for your comments.

 

I changed armbianEnv.txt file according your suggestion, but spi dev did not appear, however I modified compatible property in .dtsi (from "allwinner,sun8i-spi" to  "allwinner,sun8i-h3-spi";  and after a reboot spidev0.0 does appear (even excluding overlay property in armbianEnv.txt).

 

allwinner,sun8i-spi made sense to me, it is difficult for me to know which driver to use in each case.

 

So, here is my working environment just in case someone has the same problem and wants to use it.

 

sun8i-r40.dtsi

			spi0_pins: spi0-pins {
				pins = "PC0", "PC1", "PC2";
				function = "spi0";
			};

		spi0: spi@1c05000 {
			compatible = "allwinner,sun8i-h3-spi";
			device_type = "spidev";
			reg = <0x01c05000 0x1000>;
			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
			clock-names = "ahb", "mod";
			pinctrl-names = "default";
			pinctrl-0 = <&spi0_pins>;
			resets = <&ccu RST_BUS_SPI0>;
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

And

 

sun8i-r40-bananapi-m2-ultra.dts

&spi0 {
	status = "okay";
	num-chipselects = <1>;
	cs-gpios = <&pio 2 23 GPIO_ACTIVE_LOW>;	// CS = PC23
	spidev@0 {
		reg = <0>;
		compatible = "spidev";
		status = "okay";
		spi-max-frequency = <1000000>;
	};
};

 

Thanks again!

 

mhc

Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.