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.

Yet another 3.5" SPI display thread.

Featured Replies

Hey.

I'm trying to set up a 3.5" spi touch display with my orange pi zero +2 (H5). 
I've gotten the display to work - console is displaying fine, and the same with Xorg.
However, getting the touch panel to work, seems quite difficult. (I tested it on a pi, so I know the hardware works).
I've been running through all the threads I could find in here, regarding these setups, but I haven't been able to crack it.
I have tried a lot of different variations of using spi-spidev, spi-add-cs1, customized spi-double-spidev, setting the param_spidev_spi_bus etc.
I have a suspicion that something is off with the second cs channel, as this seems to be where I get my error regarding the touch panel:

anders@orangepizeroplus2-h5:~$ dmesg  | grep spi
[    5.412056] ads7846: probe of spi1.1 failed with error -22
[    5.425241] [drm] Initialized ili9486 1.0.0 20200118 for spi1.0 on minor 2
[    7.345854] ili9486 spi1.0: [drm] fb0: ili9486drmfb frame buffer device
anders@orangepizeroplus2-h5:~$

For now I'm trying to collect it all into one dts, since I pretty much had to edit all the others, to account for the pin naming on this board (https://linux-sunxi.org/Xunlong_Orange_Pi_Zero_Plus_2).

Here's my armbianEnv.txt:

 

verbosity=1
bootlogo=false
console=both
disp_mode=1920x1080p60
overlay_prefix=sun50i-h5
overlays=gpio-regulator-1.3v usbhost2 usbhost3
rootdev=UUID=9f2bef22-f83b-49fd-a7a8-02b905c6d123
rootfstype=ext4
user_overlays= tft35-4
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u

 

and the tft35-4.dts I've put together so far:

/dts-v1/;
/plugin/;

/ {
	compatible = "allwinner,sun4i-a10", "allwinner,sun7i-a20", "allwinner,sun8i-h3", "allwinner,sun50i-a64", "allwinner,sun50i-h5";
	
	fragment@0 {
		target-path = "/aliases";
		__overlay__ {
			spi0 = "/soc/spi@01c68000"; 
			spi1 = "/soc/spi@01c69000";
		};
	};

    	fragment@1 {
		target = <&pio>;
		__overlay__ {

			tft35a_pins: tft35a_pins {
				allwinner,pins = "PA18", "PA2";
				allwinner,function = "gpio_out";
			};

			ads7846_pins: ads7846_pins {
				pins = "PD11"; 
				function = "irq";
				pull = <0>;
			};

			spi1_cs1: spi1_cs1 {
				pins = "PD14";
				function = "gpio_out";
				output-high;
			};
		};
	};

	fragment@2 {
		target = <&spi1>;
		__overlay__ {
			#address-cells = <1>;
			#size-cells = <0>;
			status = "okay";
			pinctrl-names = "default", "default";
			pinctrl-1 = <&spi1_cs1>;
			cs-gpios = <1>, <&pio 3 14 0>; // PD14

			tft35a: tft35a@0 {
				reg = <0>; /* Chip Select 0 */
				compatible = "ilitek,ili9486";
				spi-max-frequency = <16000000>;
				status = "okay";
				pinctrl-names = "default";
				pinctrl-0 = <&tft35a_pins>;
				txbuflen = <32768>;
				rotation = <180>;
				bgr = <0>;
				fps = <25>;
				buswidth = <8>;
				regwidth = <16>;
				reset-gpios = <&pio 0 2 0>; //PA2
				dc-gpios = <&pio 0 18 0>; //PA18
				debug = <1>;
			};

			ads7846@1 {
				reg = <1>; /* Chip Select 1 */
				compatible = "ti,ads7846"; 
				spi-max-frequency = <2000000>;
				status = "okay";
				pinctrl-names = "default";
				interrupt-parent = <&pio>; 
				interrupts = <3 11 2>; //PD11
				pendown-gpio = <&pio 3 11 0>;

				/* driver defaults, optional */
				ti,x-min = /bits/ 16 <0>;
				ti,y-min = /bits/ 16 <0>;
				ti,x-max = /bits/ 16 <0x0FFF>;
				ti,y-max = /bits/ 16 <0x0FFF>;
				ti,pressure-min = /bits/ 16 <0>;
				ti,pressure-max = /bits/ 16 <0xFFFF>;
				ti,x-plate-ohms = /bits/ 16 <400>;
			};
		};
	};
};

 

Any help?

 

Regards

Anders

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.