首页 > 其他分享 >Rockchip RK3399 - DRM eDP调试

Rockchip RK3399 - DRM eDP调试

时间:2024-04-30 10:56:38浏览次数:14  
标签:hdmi Rockchip ROCKCHIP --- eDP RK3399 内核 rockchip CONFIG

----------------------------------------------------------------------------------------------------------------------------

开发板 :NanoPC-T4开发板
eMMC16GB
LPDDR34GB
显示屏 :15.6英寸HDMI接口显示屏
u-boot2023.04
linux6.3
----------------------------------------------------------------------------------------------------------------------------

在《Rockchip RK3399 - DRM eDP驱动程序》中我们介绍了eDP相关设备树的配置,并对eDP相关驱动程序源码进行了分析,本节我们将进行内核烧录和调试。

一、烧录内核

1.1 内核配置

linux内核根目录下执行make menuconfig配置以下内容。

1.1.1 eDP驱动配置

eDP驱动实现主要位于:

  • drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
  • drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c
  • drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
  • drivers/phy/rockchip/phy-rockchip-dp.c

如果需要使以上文件生效,首先需要配置CONFIG_ROCKCHIP_ANALOGIX_DP,具体参考drivers/gpu/drm/rockchip/Makefile

rockchipdrm-$(CONFIG_ROCKCHIP_ANALOGIX_DP) += analogix_dp-rockchip.o
......

obj-$(CONFIG_DRM_ROCKCHIP) += rockchipdrm.o

接着需要配置CONFIG_PHY_ROCKCHIP_DP,具体参考drivers/gpu/drm/rockchip/Makefile

obj-$(CONFIG_PHY_ROCKCHIP_DP)           += phy-rockchip-dp.o

因此,我们需要在linux内核根目录下执行make menuconfig配置以下选项:

Device Drivers --->
  Graphics support --->
   	 <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  ---> 
  	 <*>  DRM Support for Rockchip (DRM_ROCKCHIP [=y])     
     [*]   Rockchip VOP driver        # CONFIG_ROCKCHIP_VOP2
	 [ ]   Rockchip VOP2 driver       # CONFIG_ROCKCHIP_VOP
     [*]   Rockchip specific extensions for Analogix DP driver  # CONFIG_ROCKCHIP_ANALOGIX_DP
     [*]   Rockchip cdn DP  # CONFIG_ROCKCHIP_CDN_DP
     [*]   Rockchip specific extensions for Synopsys DW HDMI    # CONFIG_ROCKCHIP_DW_HDMI
     [*]   Rockchip specific extensions for Synopsys DW MIPI DSI  # CONFIG_ROCKCHIP_DW_MIPI_DSI
     [*]   Rockchip specific extensions for Innosilicon HDMI    # CONFIG_ROCKCHIP_INNO_HDMI 实际上RK3399并没有使用Innosilicon IP,可以不选
     [*]   Rockchip LVDS support   # CONFIG_ROCKCHIP_LVDS
     [ ]   Rockchip RGB support    # CONFIG_ROCKCHIP_RGB
     Display Interface Bridges  --->     # CONFIG_DRM_DW_HDMI取决于CONFIG_DRM_BRIDGE、DRM_DRM(默认开启)
     	<M> Synopsys Designware AHB Audio interface   # CONFIG_DRM_DW_HDMI_AHB_AUDIO
     	<*> Synopsys Designware I2S Audio interface   # CONFIG_DRM_DW_HDMI_I2S_AUDIO  HDMI音频
     	<M> Synopsys Designware GP Audio interface    # CONFIG_DRM_DW_HDMI_I2S_AUDIO
	    <*> Synopsis Designware CEC interface         # CONFIG_DRM_DW_HDMI_CEC       
Device Drivers  ---> 
    PHY Subsystem  --->
    	<*> Rockchip Display Port PHY Driver    
1.1.2 配置backlight驱动

backlight驱动实现位于drivers/video/backlight/pwm_bl.c,如果需要使该文件生效,需要配置CONFIG_BACKLIGHT_PWM,具体参考drivers/video/backlight/Makefile

obj-$(CONFIG_BACKLIGHT_PWM)             += pwm_bl.o

因此,我们需要配置内核:

Device Drivers --->
	Graphics support --->
		Backlight & LCD device support --->  
			 -*- Lowlevel Backlight controls 
			 <*> Generic PWM based Backlight Driver
1.1.3 配置pwm驱动

PWM驱动位于drivers/pwm/pwm-rockchip.c,如果需要使该文件生效,需要配置CONFIG_PWM_ROCKCHIP,具体参考drivers/pwm/Makefile

obj-$(CONFIG_PWM_ROCKCHIP)      += pwm-rockchip.o

因此,我们需要配置内核:

Device Drivers   --->     
	[*] Pulse-Width Modulation (PWM) Support  --->
		<*>  Rockchip PWM support         // CONFIG_PWM_ROCKCHIP
1.1.4 配置panel驱动

panel驱动位于drivers/gpu/drm/panel/panel-simple.c,如果需要使该文件生效,需要配置CONFIG_PWM_ROCKCHIP,具体参考drivers/gpu/drm/panel/Makefile

obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o

因此,我们需要配置内核:

Device Drivers --->
	Graphics support --->
		Display Panels  --->  
			 <*> support for simple panels (other than eDP ones) 
			 < > support for simple Embedded DisplayPort panels
1.1.5 配置gt9xx驱动

在内核中,配置gt9xx有多种方式,比如I2C HID驱动程序、Generic input layer,我们采用其中一种即可。

(1) ``Generic input layer`

linux内核中中有一个通用输入层子系统,用于处理和管理各种输入设备,例如键盘、鼠标、触摸屏和游戏手柄等。通用输入层提供了一个统一的接口,使应用程序可以以一致的方式与不同类型的输入设备进行交互。

gt9xx驱动位于:

  • drivers/input/touchscreen/goodix.c
  • drivers/input/touchscreen/goodix_fwupload.c

如果需要使该文件生效,需要配置CONFIG_TOUCHSCREEN_GOODIX,具体参考drivers/input/touchscreen/Makefile

goodix_ts-y := goodix.o goodix_fwupload.o
obj-$(CONFIG_TOUCHSCREEN_GOODIX)        += goodix_ts.o

因此,我们需要配置内核:

Device Drivers   --->       
    Input device support   --->       
        -*- Generic input layer (needed for keyboard, mouse, ...) 
        [*]   Touchscreens  --->  
              <*>   Goodix I2C touchscreen 

注意:这里我才用这种方式;

(2) I2C HID驱动程序

如果要使用I2C 接口的HID设备,那么就需要配置 I2C HID support

Device Drivers   --->     
    [*] HID bus support   --->     
	     <*>  I2C HID support  --->
		 	   <*>  Driver for Goodix hid-i2c based devices on OF systems

注意:该方式未测试。

1.2 保存配置

配置完内核之后记得保存配置:

img

存档:

root@zhengyang:/work/sambashare/rk3399/linux-6.3# mv rk3399_defconfig ./arch/arm64/configs/

重新配置内核(如果不想重新编译内核,可以存档一份到.config):

root@zhengyang:/work/sambashare/rk3399/linux-6.3# make rk3399_defconfig

1.3 编译内核

linux内核根目录下执行如下命令进行编译内核:

root@zhengyang:/work/sambashare/rk3399/linux-6.3# make -j8

u-boot-2023.04路径下的mkimage工具拷贝过来,然后在命令行使用mkimage工具编译即可:

root@zhengyang:/work/sambashare/rk3399/linux-6.3# cp ../u-boot-2023.04/tools/mkimage ./
root@zhengyang:/work/sambashare/rk3399/linux-6.3# ./mkimage -f kernel.its kernel.itb

1.4 通过tftp烧录内核

给开发板上电,同时连接上网线,进入uboot命令行。我们将内核拷贝到tftp文件目录:

root@zhengyang:/work/sambashare/rk3399/linux-6.3# cp kernel.itb /work/tftpboot/

接着给开发板上电。通过uboot命令行将kernel.itb下到内存地址0x10000000处:

=> tftp 0x10000000 kernel.itb

通过mmc write命令将内核镜像烧录到eMMC0x8000个扇区处:

=> mmc erase 0x8000 0xA000
=> mmc write 0x10000000 0x8000 0xA000
=> bootm

1.5 启动内核

将开发板和HD702E显示屏通过eDP 30PIN接口引脚连接起来,同时将开发板和hdmi显示器通过hdmi线缆连接起来,然后给开发板上电启动。内核输入有关edp日志:

root@rk3399:~# dmesg | grep -E "hdmi|edp|drm|Goodix"
[    0.551098] platform ff940000.hdmi: Fixed dependency cycle(s) with /vop@ff900000/port/endpoint@2
[    0.561496] platform ff970000.edp: Fixed dependency cycle(s) with /vop@ff8f0000/port/endpoint@1
[    0.669022] platform edp-panel: Fixed dependency cycle(s) with /edp@ff970000/ports/port@1/endpoint@0
[    3.413841] Goodix-TS 4-005d: ID 9271, version: 1020
[    3.419508] Goodix-TS 4-005d: Direct firmware load for goodix_9271_cfg.bin failed with error -2
[    3.438411] input: Goodix Capacitive TouchScreen as /devices/platform/ff3d0000.i2c/i2c-4/4-005d/input/input0
[    5.060616] [drm] Initialized panfrost 1.2.0 20180908 for ff9a0000.gpu on minor 0
[    5.417080] rockchip-dp ff970000.edp: no DP phy configured
[    5.425681] rockchip-drm display-subsystem: bound ff8f0000.vop (ops vop_component_ops)
[    5.434692] [drm] unsupported AFBC format[3231564e]
[    5.441264] rockchip-drm display-subsystem: bound ff900000.vop (ops vop_component_ops)
[    5.451078] rockchip-drm display-subsystem: bound ff970000.edp (ops rockchip_dp_component_ops)
[    5.460949] dwhdmi-rockchip ff940000.hdmi: supply avdd-0v9 not found, using dummy regulator
[    5.470491] dwhdmi-rockchip ff940000.hdmi: supply avdd-1v8 not found, using dummy regulator
[    5.480056] dwhdmi-rockchip ff940000.hdmi: Detected HDMI TX controller v2.11a with HDCP (DWC HDMI 2.0 TX PHY)
[    5.495963] rockchip-drm display-subsystem: bound ff940000.hdmi (ops dw_hdmi_rockchip_ops)
[    5.507029] [drm] Initialized rockchip 1.0.0 20140818 for display-subsystem on minor 1
[    5.573242] rockchip-dp ff970000.edp: AUX CH error happened: 0x2 (1)
[    5.574257] rockchip-dp ff970000.edp: AUX CH error happened: 0x0 (1)
[    5.759654] rockchip-drm display-subsystem: [drm] fb0: rockchipdrmfb frame buffer device
[    5.771274] asoc-simple-card hdmi-sound: ASoC: binding ff8a0000.i2s-i2s-hifi
[    5.783063] asoc-simple-card hdmi-sound: ASoC: CPU DAI (null)registered
[    5.790541] asoc-simple-card hdmi-sound: ASoC: CODEC DAI i2s-hifi registered
[    5.800032] asoc-simple-card hdmi-sound: connected DAI link ff8a0000.i2s:Playback -> hdmi-audio-codec.6.auto:I2S Playback
[    5.818546] asoc-simple-card hdmi-sound: connected DAI link hdmi-audio-codec.6.auto:Capture -> ff8a0000.i2s:Capture
[    5.833667] dev hdmi-audio-codec.6.auto
[    5.859644]   #1: hdmi-sound
[   10.198950] systemd[1]: Starting Load Kernel Module drm...

标签:hdmi,Rockchip,ROCKCHIP,---,eDP,RK3399,内核,rockchip,CONFIG
From: https://www.cnblogs.com/zyly/p/18167577

相关文章