kernel icon indicating copy to clipboard operation
kernel copied to clipboard

Custom DSI panel doesnt work

Open BMValeev opened this issue 9 months ago • 0 comments

Hi, I try to add custom display, but for some reason DRM doesnt connect it in any way. Is DSI panels works or not in kernel?

root@orangepicm4:~# dmesg | grep drm;echo "" ;dmesg | grep dsi ; echo ""; dmesg | grep panel [ 5.501723] OF: fdt: Reserved memory: failed to reserve memory for node 'drm-logo@00000000': base 0x0000000000000000, size 0 MiB [ 5.502845] OF: fdt: Reserved memory: failed to reserve memory for node 'drm-cubic-lut@00000000': base 0x0000000000000000, size 0 MiB [ 9.512595] dw-mipi-dsi-rockchip fe070000.dsi: [drm] ERROR modalias failure on /dsi@fe070000/port@1 [ 9.529773] dw-mipi-dsi-rockchip fe070000.dsi: [drm:dw_mipi_dsi_host_attach] ERROR Failed to find panel or bridge: -19 [ 10.387747] [drm] Initialized rknpu 0.9.2 20231018 for fde40000.npu on minor 0

[ 9.512595] dw-mipi-dsi-rockchip fe070000.dsi: [drm] ERROR modalias failure on /dsi@fe070000/port@1 [ 9.528975] panel-simple-dsi fe070000.dsi.0: Looking up power-supply from device tree [ 9.529070] panel-simple-dsi fe070000.dsi.0: Looking up power-supply property in node /dsi@fe070000/panel@0 failed [ 9.529135] panel-simple-dsi fe070000.dsi.0: supply power not found, using dummy regulator [ 9.529773] dw-mipi-dsi-rockchip fe070000.dsi: [drm:dw_mipi_dsi_host_attach] ERROR Failed to find panel or bridge: -19

[ 9.528975] panel-simple-dsi fe070000.dsi.0: Looking up power-supply from device tree [ 9.529070] panel-simple-dsi fe070000.dsi.0: Looking up power-supply property in node /dsi@fe070000/panel@0 failed [ 9.529135] panel-simple-dsi fe070000.dsi.0: supply power not found, using dummy regulator [ 9.529773] dw-mipi-dsi-rockchip fe070000.dsi: [drm:dw_mipi_dsi_host_attach] ERROR Failed to find panel or bridge: -19 [ 16.882886] waveshare_panel_regulator: loading out-of-tree module taints kernel. [ 16.893858] waveshare_touchscreen 1-0045: waveshare panel hw id = 0x1 [ 16.904957] waveshare_touchscreen 1-0045: waveshare panel size = 101 [ 16.917636] waveshare_touchscreen 1-0045: waveshare panel mcu version = 0x1

/*

  • vc4-kms-dsi-ili9881-5inch-overlay.dts */

/dts-v1/; /plugin/;

/ { fragment@4 { target = <0xffffffff>;

	__overlay__ {
		status = "disabled";
	};
};
fragment@5 {
	target = <0xffffffff>;

	__overlay__ {
		status = "okay";
	};
};
fragment@6 {
	target = <0xffffffff>;

	__overlay__ {
		status = "okay";
	};
};
fragment@10 {
	target = <0xffffffff>;

	__overlay__ {
		status = "okay";
	};
};
fragment@11 {
	target = <0xffffffff>;

	__overlay__ {
		status = "disabled";
	};
};
fragment@12 {
	target = <0xffffffff>;

	__overlay__ {
		status = "disabled";
	};
};
i2c_frag: fragment@0 {
	target = <&i2c1>;
	__overlay__ {
		#address-cells = <1>;
		#size-cells = <0>;
		status = "okay";

		display_mcu: display_mcu@45 {
			compatible = "waveshare,touchscreen-panel-regulator";
			reg = <0x45>;
			gpio-controller;
			#gpio-cells = <2>;
		};

		touch: goodix@5d {
			compatible = "goodix,gt9271";
			reg = <0x5d>;
			reset-gpio = <&display_mcu 9 0>;
		};
	};
};

dsi_frag: fragment@1 {
	target = <&dsi1>;
	__overlay__  {
		#address-cells = <1>;
		#size-cells = <0>;
		status = "okay";
		panel = <&dsi_panel>;
		//rockchip,lane-rate = <1000>;
		//port@1 {
		//	reg = <0x01>;
		//	dsi_out_panel: endpoint {
		//		remote-endpoint = <&dsi_in_panel>;
		//		//remote-endpoint = <0xa0>;
		//		//phandle = <0xdc>;
		//		status = "okay";
		//	};
		//};	
		//dsi_panel: panel@0 {//
		//	reg = <0>;
		//	compatible = "waveshare,10.1-dsi-touch-a";
		//	reset-gpio = <&display_mcu 1 0>;
		//	backlight = <&display_mcu>;
		//	phandle = <0x1b2>;
		//	status = "okay";
		//	port {
		//		endpoint {
		//			remote-endpoint = <0xdc>;
		//			phandle = <0xa0>;	
		//		};
		//	};
		//};
		dsi_panel: panel@0 {//dsi_panel_simple:@1
			status = "okay";
			compatible = "simple-panel-dsi";
			reg = <0>;
			//select the backlight node of the previous configuration
			//backlight = <&display_mcu>; 
			//reset-gpio = <&display_mcu 1 0>;
	
			//sets the timing of startup of LCD 
			enable-delay-ms = <50>;
			prepare-delay-ms = <200>;
			reset-delay-ms = <50>;
			init-delay-ms = <55>;
			unprepare-delay-ms = <50>;
			disable-delay-ms = <20>;
			mipi-data-delay-ms = <200>;
			size,width = <120>;
			size,height = <170>;
	
			//set the output mode of DSI (DPHY). the default mode is Video  
			dsi,flags = <0xc11>;//c11 //411
			//sets the output format for DSI pixel data, depending on whether the receiving screen supports the format  
			dsi,format = <0>;
	
			//set the number of lanes to be used. Default is 4 lanes
			dsi,lanes  = <2>;
	
			//set the power-on command for the MIPI DSI
			panel-init-sequence = [
				13 00 02 E0 00
				13 00 02 E1 93
				13 00 02 E2 65
				13 00 02 E3 F8
				13 00 02 80 01
				13 00 02 E0 01
				13 00 02 00 00
				13 00 02 01 38
				13 00 02 03 10
				13 00 02 04 38
				13 00 02 0C 74
				13 00 02 17 00
				13 00 02 18 AF
				13 00 02 19 00
				13 00 02 1A 00
				13 00 02 1B AF
				13 00 02 1C 00
				13 00 02 35 26
				13 00 02 37 09
				13 00 02 38 04
				13 00 02 39 00
				13 00 02 3A 01
				13 00 02 3C 78
				13 00 02 3D FF
				13 00 02 3E FF
				13 00 02 3F 7F
				13 00 02 40 06
				13 00 02 41 A0
				13 00 02 42 81
				13 00 02 43 1E
				13 00 02 44 0D
				13 00 02 45 28
				13 00 02 55 02
				13 00 02 57 69
				13 00 02 59 0A
				13 00 02 5A 2A
				13 00 02 5B 17
				13 00 02 5D 7F
				13 00 02 5E 6A
				13 00 02 5F 5B
				13 00 02 60 4F
				13 00 02 61 4A
				13 00 02 62 3D
				13 00 02 63 41
				13 00 02 64 2A
				13 00 02 65 44
				13 00 02 66 43
				13 00 02 67 44
				13 00 02 68 62
				13 00 02 69 52
				13 00 02 6A 59
				13 00 02 6B 4C
				13 00 02 6C 48
				13 00 02 6D 3A
				13 00 02 6E 26
				13 00 02 6F 00
				13 00 02 70 7F
				13 00 02 71 6A
				13 00 02 72 5B
				13 00 02 73 4F
				13 00 02 74 4A
				13 00 02 75 3D
				13 00 02 76 41
				13 00 02 77 2A
				13 00 02 78 44
				13 00 02 79 43
				13 00 02 7A 44
				13 00 02 7B 62
				13 00 02 7C 52
				13 00 02 7D 59
				13 00 02 7E 4C
				13 00 02 7F 48
				13 00 02 80 3A
				13 00 02 81 26
				13 00 02 82 00
				13 00 02 E0 02
				13 00 02 00 42
				13 00 02 01 42
				13 00 02 02 40
				13 00 02 03 40
				13 00 02 04 5E
				13 00 02 05 5E
				13 00 02 06 5F
				13 00 02 07 5F
				13 00 02 08 5F
				13 00 02 09 57
				13 00 02 0A 57
				13 00 02 0B 77
				13 00 02 0C 77
				13 00 02 0D 47
				13 00 02 0E 47
				13 00 02 0F 45
				13 00 02 10 45
				13 00 02 11 4B
				13 00 02 12 4B
				13 00 02 13 49
				13 00 02 14 49
				13 00 02 15 5F
				13 00 02 16 41
				13 00 02 17 41
				13 00 02 18 40
				13 00 02 19 40
				13 00 02 1A 5E
				13 00 02 1B 5E
				13 00 02 1C 5F
				13 00 02 1D 5F
				13 00 02 1E 5F
				13 00 02 1F 57
				13 00 02 20 57
				13 00 02 21 77
				13 00 02 22 77
				13 00 02 23 46
				13 00 02 24 46
				13 00 02 25 44
				13 00 02 26 44
				13 00 02 27 4A
				13 00 02 28 4A
				13 00 02 29 48
				13 00 02 2A 48
				13 00 02 2B 5F
				13 00 02 2C 01
				13 00 02 2D 01
				13 00 02 2E 00
				13 00 02 2F 00
				13 00 02 30 1F
				13 00 02 31 1F
				13 00 02 32 1E
				13 00 02 33 1E
				13 00 02 34 1F
				13 00 02 35 17
				13 00 02 36 17
				13 00 02 37 37
				13 00 02 38 37
				13 00 02 39 08
				13 00 02 3A 08
				13 00 02 3B 0A
				13 00 02 3C 0A
				13 00 02 3D 04
				13 00 02 3E 04
				13 00 02 3F 06
				13 00 02 40 06
				13 00 02 41 1F
				13 00 02 42 02
				13 00 02 43 02
				13 00 02 44 00
				13 00 02 45 00
				13 00 02 46 1F
				13 00 02 47 1F
				13 00 02 48 1E
				13 00 02 49 1E
				13 00 02 4A 1F
				13 00 02 4B 17
				13 00 02 4C 17
				13 00 02 4D 37
				13 00 02 4E 37
				13 00 02 4F 09
				13 00 02 50 09
				13 00 02 51 0B
				13 00 02 52 0B
				13 00 02 53 05
				13 00 02 54 05
				13 00 02 55 07
				13 00 02 56 07
				13 00 02 57 1F
				13 00 02 58 40
				13 00 02 5B 30
				13 00 02 5C 00
				13 00 02 5D 34
				13 00 02 5E 05
				13 00 02 5F 02
				13 00 02 63 00
				13 00 02 64 6A
				13 00 02 67 73
				13 00 02 68 07
				13 00 02 69 08
				13 00 02 6A 6A
				13 00 02 6B 08
				13 00 02 6C 00
				13 00 02 6D 00
				13 00 02 6E 00
				13 00 02 6F 88
				13 00 02 75 FF
				13 00 02 77 DD
				13 00 02 78 2C
				13 00 02 79 15
				13 00 02 7A 17
				13 00 02 7D 14
				13 00 02 7E 82
				13 00 02 E0 04
				13 00 02 00 0E
				13 00 02 02 B3
				13 00 02 09 61
				13 00 02 0E 48
				13 00 02 37 58
				13 00 02 2B 0F
				13 00 02 E0 00
				13 00 02 E6 02
				13 00 02 E7 0C
				05 78 01 11
				05 3C 01 29
			];

			//set the power-off command for the MIPI DSI
			panel-exit-sequence = [
				05 00 01 28
				05 00 01 10
			];
			//set the display timing of the LCD screen (this part can be obtained from the corresponding screen, as shown in the figure above)  
			disp_timings0: display-timings {
				native-mode = <&dsi0_timing0>;
				dsi0_timing0: timing0 {
	
					/* the conversion formula for display timing sequence is generally:
					(hactive + hsync-len + hback-porch + hfront-porch)   
								x
					( vactive + vsync-len + vback-porch + vfront-porch)x fps
					 = clock-frequency
					*/
					clock-frequency = <70000000>;//<80000000>;
					hactive = <800>;//800;//880
					vactive = <1280>;//1280//1324
					hsync-len = <20>;   //20, 50,10
					hback-porch = <20>; //50, 56,10
					hfront-porch = <40>;//50, 30,180
					vsync-len = <4>;//4
					vback-porch = <10>;//4
					vfront-porch = <30>;//8
					hsync-active = <0>;
					vsync-active = <0>;
					de-active = <0>;
					pixelclk-active = <0>;
				};
			};
			ports {	
				port {
					dsi_in_panel: endpoint {
						//remote-endpoint = <0xdd>;
						//phandle = <0xa1>;
						remote-endpoint = <&dsi_out_panel>;
					};
				};
			};
		};
		port@1 {
			reg = <0x01>;
			dsi_out_panel: endpoint {
				remote-endpoint = <&dsi_in_panel>;
				//remote-endpoint = <0xa1>;
				//phandle = <0xdd>;
				status = "okay";
			};
		};	
	};
};
fragment@7 {
	target = <0xffffffff>;

	__overlay__ {
		status = "disabled";
	};
};

fragment@8 {
	target = <0xffffffff>;

	__overlay__ {
		status = "okay";
	};
};

fragment@9 {
	target = <0xffffffff>;

	__overlay__ {
		status = "okay";
	};
};
__overrides__ {
	//10_1_inch_a = <&dsi_panel>, "compatible=waveshare,10.1-dsi-touch-a";
	//10_1_inch_a_4lane = <&dsi_panel>, "compatible=waveshare,10.1-dsi-touch-a,4lane";
	//10_1_inch_b = <&dsi_panel>, "compatible=waveshare,10.1-dsi-touch-b";
	//10_1_inch_b_4lane = <&dsi_panel>, "compatible=waveshare,10.1-dsi-touch-b,4lane";
	dsi1 = <&dsi_frag>, "target:0=",<&dsi1>,
		   <&i2c_frag>, "target:0=",<&i2c1>;
};

__fixups__ {
	dsi1 = "/fragment@10:target:0";
	i2c1 = "/fragment@5:target:0";
	video_phy1 = "/fragment@6:target:0";
	dsi1_in_vp0 = "/fragment@7:target:0";
	dsi1_in_vp1 = "/fragment@8:target:0";
	route_dsi1 = "/fragment@9:target:0";
	hdmi = "/fragment@4:target:0";
	edp = "/fragment@11:target:0";
	panel_in_edp = "/fragment@12:target:0";

};

};

BMValeev avatar Apr 02 '25 20:04 BMValeev