Kickpi-Book
  • KICKPI Document
  • K5/K5C(A133)
    • A133中文文档
      • 01-主板介绍
        • 01-KICKPI-K5硬件介绍
        • 02-KICKPI-K5C硬件介绍
      • 02-入门必读
        • 01-网盘目录说明
        • 02-快速使用
        • 03-功能测试
        • 04-扩展引脚
      • 03-镜像烧录
        • 01-获取镜像文件
        • 02-SD卡烧录
        • 02-USB线烧录
      • 04-SDK编译
        • 01-编译环境搭建
        • 02-LINUX_SDK源码编译
        • 03-ANDROID_SDK源码编译
      • 05-外设驱动
        • LCD功能调试
        • LRADC按键配置
      • 06-ANDROID系统定制
        • 01-Android常用系统定制
      • 07-LINUX系统定制
        • 02-Linux常用系统定制
      • 08-进阶
        • K5C主板供电
        • 安卓休眠唤醒
        • 13-硬件工厂测试
    • en
      • 01-Development_board_Introduction
        • 01-KICKPI-K5_Hardware_Introduction
        • 02-KICKPI-K5C_Hardware_Introduction
      • 02-Getting_Started_Guide
        • 01-KICKPI_Cloud_Storage_Introduction
        • 02-Quick_Start_Guide
        • 03-Functional_Testing
        • 04-Expansion_Pins_Testing
      • 03-Image_Flashing_Guide
        • 01-How_to_Get_Image_File
        • 02-SD Card Burning
        • 03-USB_Cable_Flashing
      • 04-SDK_Compilation_Guide
        • 01-Compilation_Environment_Setup
        • 02-Linux_SDK_Compilation
        • 03-Android_SDK_Compilation
      • 06-Android_System_Customization
        • 01-Android_Common_System_Customization
      • 07-Linux_System_Customization
        • ADB_Tutorial
  • K2B/K2C(H618)
    • en
      • 01-Development_board_Introduction
        • 01-KICKPI-K2B_Hardware_Introduction
        • 02-KICKPI-K2B_Hardware_Introduction
      • 02-Getting_Started_Guide
        • 01-KICKPI_Cloud_Storage_Introduction
        • 02-Quick_Start_Guide
        • 03-Functional_Testing
        • 04-Expansion_Pins_Testing
      • 03-Image_Flashing_Guide
        • 01-SD_Card_Flashing
        • 02-USB_Cable_Flashing
      • 04-SDK_Compilation_Guide
        • 01-Compilation_Environment_Setup
        • 02-Linux_SDK_Compilation
        • 03-Android_SDK_Compilation
      • 05-Drivers_Development
        • RTC
      • 06-Android_System_Customization
        • 01-Android_Common_System_Customization
      • 07-Linux_System_Customization
        • 01-Linux_Common_System_Customization
      • 08-Advanced_Topics
        • Hardware_Factory_Testing
        • Keybox
    • zh
      • 01-主板介绍
        • 01-KICKPI-K2B硬件介绍
        • 02-KICKPI-K2C硬件介绍
      • 02-入门必读
        • 01-网盘目录说明
        • 02-快速使用
        • 03-功能测试
        • 04-扩展引脚
      • 03-镜像烧录
        • 01-SD卡烧录
        • 02-USB线烧录
      • 04-SDK编译
        • 01-编译环境搭建
        • 02-LINUX_SDK源码编译
        • 2. Android SDK编译
      • 05-外设驱动
        • RTC
      • 06-Android系统定制
        • Android常用系统定制
      • 07-Linux系统定制
        • 01-Linux常用系统定制
        • 02-Linux_QT开发环境搭建
      • 08-进阶
        • Keybox
        • Secure Boot
        • Windows_QT开发环境搭建
        • 扩展引脚功能定制
        • 硬件工厂测试
  • K1/K1B/K3/K8(RK356x-RK3588)
    • en
      • 01-Development_board_Introduction
        • 01-RK_Chip_Comparison_Introduction
        • 02-KICKPI-K1_Hardware_Introduction
        • 03-KICKPI-K1B_Hardware_Introduction
        • 04-KICKPI-K3_Hardware_Introduction
        • 05-KICKPI-K8_Hardware_Introduction
      • 02-Getting_Started_Guide
        • 01-Cloud_Storage_Directory_Description
        • 02-K1-Quick_Start_Guide
        • 02-K1B-Quick_Start_Guide
        • 02-K3-Quick_Start_Guide
        • 02-K8-Quick_Start_Guide
        • 03-Functional_Testing
        • 04-Expansion_Pins
      • 03-Image_Flashing_Guide
        • 01-USB_Cable_Flashing
      • 04-SDK_Compilation_Guide
        • 01-Compilation_Environment_Setup
        • 02-LINUX_SDK_Compilation
        • 03-ANDROID_SDK_Compilation
      • 05-Drivers_Development
        • GPIO
        • Kernel
        • LCD
        • PWM
        • RTC
      • 06-Android_System_Customization
        • 01-Common_Android_System_Customizations
        • 01-Common_Android_System_Customizations
      • 07-Linux_System_Customization
        • 01-Common_Linux_System_Customization
        • 02-Installing_VNC_on_Linux
        • 03-Linux_Docker
        • 04-Linux_QT_Environment_Setup
        • 05-Linux_NPU_YOLOV5S_object_detection
      • 08-Advanced_Topics
        • 01-Hardware_Factory_Test
        • 02-Hardware_Aging_Test
        • 03-Firmware_Unpacking_and_Packing
    • zh
      • 01-主板介绍
        • 01-RK芯片对比介绍
        • 02-KICKPI-K1硬件介绍
        • 03-KICKPI-K1B硬件介绍
        • 04-KICKPI-K3硬件介绍
        • 05-KICKPI-K8硬件介绍
      • 02-入门必读
        • 01-网盘目录说明
        • 02-K1-快速使用
        • 02-K1B-快速使用
        • 02-K3-快速使用
        • 02-K8-快速使用
        • 03-功能测试
        • 04-拓展引脚
      • 03-镜像烧录
        • 01-获取镜像文件
        • 02-USB线烧录
      • 04-SDK编译
        • 01-编译环境搭建
        • 02-LINUX_SDK编译
        • 03-ANDROID_SDK编译
      • 05-外设驱动
        • GPIO
        • Kernel
        • LCD
        • PWM
        • RTC
      • 06-ANDROID系统定制
        • 01-Android常用系统定制
        • 07-Android NPU YOLOV5 目标检测
      • 07-LINUX系统定制
        • 01-Linux常用系统定制
        • 02-Linux安装VNC
        • 03-Linux Docker环境搭建
        • 04-Linux QT环境搭建
        • 05-Linux NPU YOLOV5S 目标检测
      • 08-进阶
        • 01-硬件工厂测试
        • 02-硬件老化测试
        • 03-固件解包和打包
  • K7(RK3576)
    • en
      • 01-Development_board_Introduction
        • 01-KICKPI-K7_Hardware_Introduction
      • 02-Getting_Started_Guide
        • 01-KICKPI_Cloud_Storage_Introduction
        • 02-Quick_Start_Guide
        • 03-Functional_Testing
        • 04-Expansion_Pins_Testing
      • 03-Image_Flashing_Guide
        • 01-How_to_Get_Image_File
        • 02-USB_Cable_Flashing
      • 04-SDK_Compilation_Guide
        • 01-Compilation_Environment_Setup
        • 02-Linux_SDK_Compilation
        • 03-Android_SDK_Compilation
      • 05-Drivers_Development
        • ADC
        • PWM
      • 06-Android_System_Customization
        • 01-Android_Common_System_Customization
      • 07-Linux_System_Customization
        • 01-Linux_Common_System_Customization
        • 02-Linux_Docker_Environment_Setup
        • 03-Linux_NPU_YOLOv5s_Object_Detection
        • 04-Linux_DeepSeek_Large_Model
        • 05-Linux_VNC_Remote_Control
      • 08-Advanced_Topics
        • Advanced_Testing
    • zh
      • 01-主板介绍
        • 01-KICKPI-K7硬件介绍
      • 02-入门必读
        • 01-网盘目录说明
        • 02-快速使用
        • 03-功能测试
        • 04-拓展引脚
      • 03-镜像烧录
        • 01-获取镜像文件
        • 02-USB线烧录
      • 04-SDK编译
        • 01-编译环境搭建
        • 02-Linux_SDK编译
        • 03-Android_SDK编译
      • 05-外设驱动
        • ADC
        • PWM
      • 06-ANDROID系统定制
        • 01-Android常用系统定制
      • 07-LINUX系统定制
        • 01-Linux常用系统定制
        • 02-Linux Docker环境搭建
        • 03-Linux NPU YOLOV5S 目标检测
        • 04-Linux_Deepseek大模型
        • 05-Linux_VNC远程控制
      • 08-进阶
        • 进阶测试
  • K4B(T113-S3)
    • T113-S3中文文档
      • 01-KICKPI-K4B硬件介绍
      • 10-系统镜像烧录
      • 11-SDK源码编译
      • 12-硬件功能测试
      • 13-硬件工厂测试
      • LCD功能调试
      • 20-Ubuntu20.04系统定制
      • Buildroot_QT5配置
      • Buildroot系统定制
  • common
    • en
      • adb
        • ADB_Tutorial
      • allwinner_burnning
        • SD_Card_Flashing
        • USB_Cable_Flashing
      • debug
        • 01 - Log Collection
      • display
        • FPC_Interface_Introduction
      • linux
        • SSH
    • zh
      • adb
        • ADB教程
      • android
        • qt
      • debug
        • 01-日志抓取
        • 常见问题
      • display
        • FPC接口介绍
      • linux
        • SSH
        • VNC
        • qt
      • 全志烧录
        • SD卡烧录
        • USB线烧录
Powered by GitBook
On this page
  • 1. Introduction to Display Interface Resources
  • RK3568
  • 2. Single Display Driver Configuration
  • MIPI
  • LVDS
  • EDP
  • 3. Multi-Screen Display System Configuration
  • Kernel Device Tree Configuration
  • Android Multi-Screen Configuration
  • 4. Single Touchscreen Driver Configuration
  • Driver Porting
  • Kernel Device Tree Configuration
  • Rotating the Touch Direction
  • 5. Multi-Screen Touch System Configuration
  • Kernel Device Tree Configuration
  • Android Single-Screen Touch Configuration
  • Android Multi-Screen Touch Configuration
  1. K1/K1B/K3/K8(RK356x-RK3588)
  2. en
  3. 05-Drivers_Development

LCD

The RK3568 is equipped with four display output interfaces, namely HDMI, MIPI, LVDS, and EDP. It supports a maximum of three simultaneous display outputs.

1. Introduction to Display Interface Resources

RK3568

The RK3568 has three VP nodes, and each VP node can be connected to a display. The corresponding relationships are shown in the following table:

VP Number
Supported Display Interfaces
Maximum VP Resolution

VP0

MIPI0 / MIPI1 / HDMI / EDP

4096x2304@60Hz

VP1

MIPI0 / MIPI1 / LVDS / HDMI / EDP

2048x1536@60Hz

VP2

LVDS / RGB

1920x1080@60Hz

The pins of the MIPI0 and LVDS interfaces conflict, so only one can be selected.

The VP2 node only supports LVDS/RGB. Therefore, one of the three displays must be LVDS (the RGB interface is not led out) in a triple-screen display setup.

Display Interface
Maximum Display Resolution
Format

HDMI

4096x2160@60Hz

RGB/YUV420 10Bit

MIPI

1920x1080@60Hz

RGB 8Bit

Dual MIPI

2560x1440@60Hz

RGB 8Bit

LVDS

1280x800@60Hz

RGB 8Bit

EDP

2560x1600@60Hz

RGB 10Bit

RGB

1920x1080@60Hz

RGB 8Bit

2. Single Display Driver Configuration

Display configuration mainly involves modifying the device tree LCD configuration file. The device tree LCD configuration directory for the RK3568 is as follows:

$ vim kernel/arch/arm64/boot/dts/rockchip/rk3568-kickpi-k1.dtsi //linux
$ vim kernel-5.10/arch/arm64/boot/dts/rockchip/rk3568-kickpi-k1.dtsi //android

// LCD
#include "rk3568-kickpi-lcd-hdmi.dtsi"
//#include "rk3568-kickpi-lcd-edp-15.6-1920-1080.dtsi"
//#include "rk3568-kickpi-lcd-mipi0-10.1-800-1280.dtsi"
//#include "rk3568-kickpi-lcd-mipi1-10.1-800-1280.dtsi"
//#include "rk3568-kickpi-lcd-lvds-7-1024-600.dtsi"

The rk3568-kickpi-lcd-hdmi.dtsi file needs to be enabled by default.

If there are problems with display debugging, you can contact after-sales for technical support.

MIPI

The RK3568 has two MIPI LCD interfaces, namely MIPI0 and MIPI1. Among them, MIPI0 is multiplexed with LVDS.

For the MIPI0 interface, refer to rk3568-kickpi-lcd-mipi0-10.1-800-1280.dtsi. For the MIPI1 interface, refer to rk3568-kickpi-lcd-mipi1-10.1-800-1280.dtsi.

LVDS

For the LVDS interface, refer to rk3568-kickpi-lcd-lvds-7-1024-600.dtsi.

EDP

For the EDP interface, refer to rk3568-kickpi-lcd-edp-15.6-1920-1080.dtsi.

3. Multi-Screen Display System Configuration

In a multi-screen display solution, pay attention to the following when selecting LCD parameters:

It is recommended to choose displays with the same aspect ratio; otherwise, the picture may be stretched or have black borders.

Kernel Device Tree Configuration

$ vim kernel/arch/arm64/boot/dts/rockchip/rk3568-kickpi-k1.dtsi

// Triple LCD
//#include "rk3568-kickpi-triple-lcd-hdmi-mipi1-lvds.dtsi"
//#include "rk3568-kickpi-triple-lcd-edp-mipi1-lvds.dtsi"

On the basis of completing single-screen debugging, refer to the above-provided multi-screen device tree configuration files.

Android Multi-Screen Configuration

  • Use DSI as the primary screen and HDMI-A as the secondary screen

PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=DSI
PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.extend=HDMI-A
  • Use DSI/eDP as the primary screen and LVDS/HDMI-A as the secondary screen

PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=DSI,eDP
PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.extend=LVDS,HDMI-A

4. Single Touchscreen Driver Configuration

Take GT9XX as an example.

Driver Porting

Port the driver provided by the manufacturer to the SDK directory and modify the compilation files.

Copy the driver files to the touch driver folder $(SDK_DIR)\kernel-5.10\drivers\input\touchscreen.

Modify the kconfig file by adding the following:

config TOUCHSCREEN_GT9XX
	tristate "GT9XX touchscreens support"

Modify the Makefile by adding the following:

obj-$(CONFIG_TOUCHSCREEN_GT9XX)		+= gt9xx/

Add CONFIG_TOUCHSCREEN_GT9XX=y to the kernel configuration.

The kernel configuration file is, for example, arch/arm64/configs/rockchip_defconfig. For different versions of defconfig, please find the corresponding version file in the Git history.

Kernel Device Tree Configuration

i2c_gt9xx configuration:

&i2c1 {
	status = "okay";
	gt9xx:gt9xx@5d {
		compatible = "goodix,gt9xx";
		status = "okay";
		reg = <0x5d>;

		gtp_resolution_x = <1024>;
		gtp_resolution_y = <600>;
		gtp_int_tarigger = <1>;
		gtp_change_x2y = <0>;
		gtp_overturn_x = <0>;
		gtp_overturn_y = <0>;
		gtp_send_cfg = <1>;
		gtp_touch_wakeup = <1>;
		goodix_rst_gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
		goodix_irq_gpio = <&gpio3 RK_PA3 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&touch3_gpio>;

		goodix,cfg-group0 = [
			4B 00 04 58 02 01 0D 00 01 08
			28 05 50 32 03 05 00 00 00 00
			00 00 00 00 00 00 00 8B 2A 0C
			17 15 31 0D 00 00 02 BA 03 2D
			00 00 00 00 00 03 00 00 00 00
			00 0F 41 94 C5 02 07 00 00 04
			9B 11 00 77 17 00 5C 1F 00 48
			2A 00 3B 38 00 3B 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 00 00 00 00 00 00 00 00 00
			00 00 02 04 06 08 0A 0C 0E 10
			12 14 16 18 FF FF 00 00 00 00
			00 00 00 00 00 00 00 00 00 00
			00 00 00 02 04 06 08 0A 0C 0F
			10 12 13 16 18 1C 1D 1E 1F 20
			21 22 24 FF FF FF FF FF 00 00
			00 00 00 00 00 00 00 00 00 00
			00 00 00 00 B6 01
		];
	};
};

Rotating the Touch Direction

Adjust the touchscreen direction based on the device tree. The following directions are only applicable to the GT9XX driver.

0 degrees (default)

gt9xx:gt9xx@5d {
	gtp_change_x2y = <0>;		
	gtp_overturn_x = <0>;
	gtp_overturn_y = <0>;
};

90 degrees

gt9xx:gt9xx@5d {
	gtp_change_x2y = <1>;
	gtp_overturn_x = <1>;
	gtp_overturn_y = <0>;
};

180 degrees

gt9xx:gt9xx@5d {
	gtp_change_x2y = <0>;
	gtp_overturn_x = <0>;
	gtp_overturn_y = <1>;
};

270 degrees

gt9xx:gt9xx@5d {
	gtp_change_x2y = <0>;
	gtp_overturn_x = <1>;
	gtp_overturn_y = <0>;
};

5. Multi-Screen Touch System Configuration

Kernel Device Tree Configuration

I2C + I2C

Android Single-Screen Touch Configuration

  • Android 13.0

Disable touch on the secondary screen. Whether it is an external or internal device, the touch function only works on the primary screen.

$ vim frameworks/native/services/inputflinger/reader/EventHub.cpp

    // Determine whether the device is external or internal.
    if (isExternalDeviceLocked(device)) {
-        device->classes |= INPUT_DEVICE_CLASS_EXTERNAL;
+        //device->classes |= INPUT_DEVICE_CLASS_EXTERNAL;
    }

Android Multi-Screen Touch Configuration

  • Determine the device name

$ vim frameworks/native/services/inputflinger/reader/EventHub.cpp

bool EventHub::isExternalDeviceLocked(Device* device) {
+	const char *I2C_DEVICE_NAME = "generic ft5x06 (79)";
+	ALOGE("input deviceis '%s' ",device->identifier.name.c_str());
+	if (strcmp(device->identifier.name.c_str(), I2C_DEVICE_NAME) == 0) {
+		return true;
+	}

	if (device->configuration) {
	bool value;
}
  • Add an IDC configuration file

Last updated 4 days ago