3399验证情况记录

设备树处理

tf卡上拿到设备树dtb,然后反编译出来设备树dts:

linux/scripts/dtc/dtc  -I dtb -O dts rk3399-rock-pi-4c.dtb > rk3399-rock-pi-4c.dts

内核编译

sudo apt-get install libncurses-dev flex bison libssl-dev git
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
wget https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
sudo tar xvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz ${local_dir}
export ARCH=arm64
export CROSS_COMPILE=${local_dir}/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
make defconfig
make -j6

内核/设备树替换

内核

替换${ROOT_OF_TF}/boot/Image指向的内核镜像。

设备树

可以修改armbinEnv.txt中的fdtfile=rockchip/rk3399-rock-pi-4c.dtb

PS:uboot这块没有细看,先沿用原来的,重心放在内核上。

开机

此时可以进入系统

Unknown command 'kaslrseed' - try 'help'
Moving Image from 0x2080000 to 0x2200000, end=40f0000
## Loading init Ramdisk from Legacy Image at 06000000 ...
   Image Name:   uInitrd
   Image Type:   AArch64 Linux RAMDisk Image (gzip compressed)
   Data Size:    22787598 Bytes = 21.7 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 01f00000
   Booting using the fdt blob at 0x1f00000
   Loading Ramdisk to f0950000, end f1f0b60e ... OK
   Loading Device Tree to 00000000f08d5000, end 00000000f094ffff ... OK

Starting kernel ...

efi_free_pool: illegal free 0x00000000f0f0d040
efi_free_pool: illegal free 0x00000000f0f0a040
[    7.265273] systemd[1]: Failed to start Armbian ZRAM config.

Armbian 22.11.1 Jammy ttyS2 

rockpi-4c login: 
rockpi-4c login: 
rockpi-4c login: 
rockpi-4c login: root
Password: 
Last login: Wed Nov 30 20:21:30 UTC 2022 on ttyS2

有线网卡

此时没有网卡,原因就是没驱动(猜的)。
看设备树,找网卡

259     ethernet@fe300000 {                                                                                                                                                                                          
 260         compatible = "rockchip,rk3399-gmac";
 261         reg = <0x00 0xfe300000 0x00 0x10000>;
 262         interrupts = <0x00 0x0c 0x04 0x00>;
 263         interrupt-names = "macirq";
 264         clocks = <0x08 0x69 0x08 0x67 0x08 0x68 0x08 0x66 0x08 0x6a 0x08 0xd5 0x08 0x166>;
 265         clock-names = "stmmaceth\0mac_clk_rx\0mac_clk_tx\0clk_mac_ref\0clk_mac_refout\0aclk_mac\0pclk_mac";
 266         power-domains = <0x1c 0x16>;
 267         resets = <0x08 0x89>;
 268         reset-names = "stmmaceth";
 269         rockchip,grf = <0x1d>;
 270         snps,txpbl = <0x04>;
 271         status = "okay";
 272         assigned-clocks = <0x08 0xa6>;
 273         assigned-clock-parents = <0x1e>;
 274         clock_in_out = "input";
 275         phy-supply = <0x1f>;
 276         phy-mode = "rgmii";
 277         pinctrl-names = "default";
 278         pinctrl-0 = <0x20>;
 279         snps,reset-gpio = <0x21 0x0f 0x01>;
 280         snps,reset-active-low;
 281         snps,reset-delays-us = <0x00 0x2710 0xc350>;
 282         tx_delay = <0x28>;
 283         rx_delay = <0x11>;
 284         phandle = <0xcc>;
 285     };

根据网卡的兼容信息找驱动

grep "rk3399-gmac" driver -rn

匹配到二进制文件 ./ethernet/stmicro/stmmac/dwmac-rk.ko
匹配到二进制文件 ./ethernet/stmicro/stmmac/dwmac-rk.o
匹配到二进制文件 ./ethernet/stmicro/stmmac/dwmac-rk.mod.o
./ethernet/stmicro/stmmac/dwmac-rk.mod.c:44:MODULE_ALIAS("of:N*T*Crockchip,rk3399-gmac");
./ethernet/stmicro/stmmac/dwmac-rk.mod.c:45:MODULE_ALIAS("of:N*T*Crockchip,rk3399-gmacC*");
./ethernet/stmicro/stmmac/dwmac-rk.c:1483:  { .compatible = "rockchip,rk3399-gmac", .data = &rk3399_ops },

然后再找Makefile

obj-$(CONFIG_DWMAC_ROCKCHIP)    += dwmac-rk.o

得到内核配置项 CONFIG_DWMAC_ROCKCHIP
进行 menuconfig,发现这个配置是M,改成*的时候提示有依赖就是M,顺着提示全部改为*,然后make -j8得到kernel image(boot/arch/arm64/boot/Image),拷贝到TF上,启动系统。

root@rockpi-4c:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 62:65:5b:e8:57:6f  txqueuelen 1000  (Ethernet)
        RX packets 643  bytes 44267 (44.2 KB)
        RX errors 0  dropped 55  overruns 0  frame 0
        TX packets 14  bytes 4606 (4.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 31  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@rockpi-4c:~# ifconfig eth0 172.29.157.6 netmask 255.255.254.0
root@rockpi-4c:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.29.157.6  netmask 255.255.254.0  broadcast 172.29.157.255
        ether 62:65:5b:e8:57:6f  txqueuelen 1000  (Ethernet)
        RX packets 1335  bytes 89014 (89.0 KB)
        RX errors 0  dropped 128  overruns 0  frame 0
        TX packets 20  bytes 6580 (6.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 31  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@rockpi-4c:~# ifconfig eth0 172.29.157.7 netmask 255.255.254.0                                                                                                                                                    
root@rockpi-4c:~# ping 172.29.157.6
PING 172.29.157.6 (172.29.157.6) 56(84) bytes of data.
64 bytes from 172.29.157.6: icmp_seq=1 ttl=64 time=1.18 ms
64 bytes from 172.29.157.6: icmp_seq=2 ttl=64 time=0.739 ms
64 bytes from 172.29.157.6: icmp_seq=3 ttl=64 time=0.778 ms
64 bytes from 172.29.157.6: icmp_seq=4 ttl=64 time=0.596 ms

网卡驱动起来了。

PS:后续流程差不多,这一步记录详细点。

wifi

目前来看,wifi设备已经被初始化,并且尝试了与驱动进行匹配;驱动在匹配时出现了问题 —— 目前看起来像是固件加载出现问题。

dmesg信息比对

5.15内核 wifi正常启动:
  1 [   10.729431] brcmfmac: F1 signature read @0x18000000=0x15294345                                      
  2 [   10.739167] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43456-sdio for chip BCM4345/9      
  3 [   10.740580] usbcore: registered new interface driver brcmfmac
  4 [   10.762214] brcmfmac mmc2:0001:1: Direct firmware load for brcm/brcmfmac43456-sdio.radxa,rockpi4c.bin failed with error -2
  5 [   10.790987] brcmfmac mmc2:0001:1: Direct firmware load for brcm/brcmfmac43456-sdio.radxa,rockpi4c.txt failed with error -2
  6 [   10.905414] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43456-sdio for chip BCM4345/9                                                                                                                 
  7 [   10.915353] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/9 wl0: Jun 16 2017 12:38:26 version 7.45.96.2 (66c4e21@sh-git) (r) FWID 01-1813af84

内核5.15信息
 14 [    2.034984] usbcore: registered new interface driver brcmfmac
 15 [    2.568174] brcmfmac: F1 signature read @0x18000000=0x15294345
 16 [    2.573287] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43456-sdio for chip BCM4345/9
 17 [    2.573608] brcmfmac mmc0:0001:1: Direct firmware load for brcm/brcmfmac43456-sdio.bin failed with error -2
 18 [    2.573617] brcmfmac mmc0:0001:1: Falling back to sysfs fallback for: brcm/brcmfmac43456-sdio.bin
 19 [    5.583245] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50

比较发现,5.15内核有固件加载成功的信息Firmware: BCM4345/9 wl0: Jun 16 2017 12:38:26 version 7.45.96.2 (66c4e21@sh-git) (r) FWID 01-1813af84

打开调试信息

486 static int __init brcmfmac_module_init(void)                                                        
  487 {
  488     int err;
  489 
  490     pr_debug("******** fucking life ***************");                                              
  491     pr_debug("**fucking life: brcmf_msg_level is 0x%x **", brcmf_msg_level);                        
  492     pr_debug("**fucking life: change brcmf_msg_level **");                                          
  493 
  494     brcmf_msg_level |= BRCMF_TRACE_VAL;
  495     brcmf_msg_level |= BRCMF_INFO_VAL;                                                              
  496     brcmf_msg_level |= BRCMF_DATA_VAL;
  497     brcmf_msg_level |= BRCMF_CTL_VAL;
  498     brcmf_msg_level |= BRCMF_TIMER_VAL;                                                             
  499     brcmf_msg_level |= BRCMF_HDRS_VAL;                                                              
  500     brcmf_msg_level |= BRCMF_BYTES_VAL;                                                             
  501     brcmf_msg_level |= BRCMF_INTR_VAL;                                                              
  502     brcmf_msg_level |= BRCMF_GLOM_VAL;                                                              
  503     brcmf_msg_level |= BRCMF_EVENT_VAL;
  504     brcmf_msg_level |= BRCMF_BTA_VAL;                                                               
  505     brcmf_msg_level |= BRCMF_FIL_VAL;
  506     brcmf_msg_level |= BRCMF_USB_VAL;
  507     brcmf_msg_level |= BRCMF_SCAN_VAL;                                                              
  508     brcmf_msg_level |= BRCMF_CONN_VAL;                                                              
  509     brcmf_msg_level |= BRCMF_BCDC_VAL;
  510     brcmf_msg_level |= BRCMF_SDIO_VAL;                                                              
  511     brcmf_msg_level |= BRCMF_MSGBUF_VAL ;                                                           
  512     brcmf_msg_level |= BRCMF_PCIE_VAL;                                                              
  513     brcmf_msg_level |= BRCMF_FWCON_VAL;
  514 
  515     pr_debug("**fucking life: new brcmf_msg_level is 0x%x **", brcmf_msg_level);   

拿到更为详细的日志信息:

  1 [    2.034599] brcmfmac: ******** fucking life ***************                                                                                                                                                    
  2 [    2.034606] brcmfmac: **fucking life: brcmf_msg_level is 0x0 **
  3 [    2.034612] brcmfmac: **fucking life: change brcmf_msg_level **
  4 [    2.034618] brcmfmac: **fucking life: new brcmf_msg_level is 0x1ffffe **
  5 [    2.034743] brcmfmac: brcmfmac_module_init No platform data available.
  6 [    2.034790] brcmfmac: brcmf_usb_register Enter
  7 [    2.034886] usbcore: registered new interface driver brcmfmac
  8 [    2.034893] brcmfmac: brcmf_pcie_register Enter
  9 [    2.553430] brcmfmac: brcmf_ops_sdio_probe Enter
 10 [    2.553438] brcmfmac: brcmf_ops_sdio_probe Class=0
 11 [    2.553444] brcmfmac: brcmf_ops_sdio_probe sdio vendor ID: 0x02d0
 12 [    2.553450] brcmfmac: brcmf_ops_sdio_probe sdio device ID: 0xa9bf
 13 [    2.553456] brcmfmac: brcmf_ops_sdio_probe Function#: 1
 14 [    2.553622] brcmfmac: brcmf_ops_sdio_probe Enter
 15 [    2.553629] brcmfmac: brcmf_ops_sdio_probe Class=0
 16 [    2.553636] brcmfmac: brcmf_ops_sdio_probe sdio vendor ID: 0x02d0
 17 [    2.553642] brcmfmac: brcmf_ops_sdio_probe sdio device ID: 0xa9bf
 18 [    2.553648] brcmfmac: brcmf_ops_sdio_probe Function#: 2
 19 [    2.553664] brcmfmac: brcmf_ops_sdio_probe F2 found, calling brcmf_sdiod_probe...
 20 [    2.553714] brcmfmac: brcmf_sdiod_probe set F2 blocksize to 512
 21 [    2.553755] brcmfmac: brcmf_sdio_probe Enter
 22 [    2.554226] brcmfmac: F1 signature read @0x18000000=0x15294345
 23 [    2.554394] brcmfmac: brcmf_chip_recognition found AXI chip: BCM4345/9
 24 [    2.556224] brcmfmac: brcmf_chip_cores_check  [1 ] core 0x800:51 base 0x18000000 wrap 0x18100000
 25 [    2.556234] brcmfmac: brcmf_chip_cores_check  [2 ] core 0x812:54 base 0x18001000 wrap 0x18101000
 26 [    2.556242] brcmfmac: brcmf_chip_cores_check  [3 ] core 0x83e:9  base 0x18002000 wrap 0x18102000
 27 [    2.556251] brcmfmac: brcmf_chip_cores_check  [4 ] core 0x83c:14 base 0x18003000 wrap 0x18103000
 28 [    2.556258] brcmfmac: brcmf_chip_cores_check  [5 ] core 0x829:21 base 0x18004000 wrap 0x18104000
 29 [    2.556266] brcmfmac: brcmf_chip_cores_check  [6 ] core 0x135:0  base 0x00000000 wrap 0x18107000
 30 [    2.556274] brcmfmac: brcmf_chip_cores_check  [7 ] core 0x240:0  base 0x00000000 wrap 0x00000000
 31 [    2.556280] brcmfmac: brcmf_chip_set_passive Enter
 32 [    2.557289] brcmfmac: brcmf_chip_get_raminfo RAM: base=0x198000 size=819200 (0xc8000) sr=0 (0x0)
 33 [    2.557359] brcmfmac: brcmf_chip_setup ccrev=51, pmurev=27, pmucaps=0x39d05f1b
 34 [    2.557368] brcmfmac: brcmf_get_module_param Enter, bus=0, chip=17221, rev=9
 35 [    2.557481] brcmfmac: brcmf_sdiod_sgtable_alloc nents=35
 36 [    2.557500] brcmfmac: brcmf_sdio_kso_init Enter
 37 [    2.557523] brcmfmac: brcmf_sdio_drivestrengthinit No SDIO driver strength init needed for chip BCM4345/9 rev 9 pmurev 27
 38 [    2.557932] brcmfmac: brcmf_sdio_probe completed!!
 39 [    2.557945] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43456-sdio for chip BCM4345/9
 40 [    2.557955] brcmfmac: brcmf_fw_get_firmwares enter: dev=mmc0:0001:1
 41 [    2.557968] brcmfmac: brcmf_ops_sdio_probe F2 init completed...
 42 [    2.558152] brcmfmac: brcmf_ops_sdio_probe Enter
 43 [    2.558159] brcmfmac: brcmf_ops_sdio_probe Class=2
 44 [    2.558166] brcmfmac: brcmf_ops_sdio_probe sdio vendor ID: 0x02d0
 45 [    2.558172] brcmfmac: brcmf_ops_sdio_probe sdio device ID: 0xa9bf
 46 [    2.558177] brcmfmac: brcmf_ops_sdio_probe Function#: 3
 47 [    2.558634] brcmfmac mmc0:0001:1: Direct firmware load for brcm/brcmfmac43456-sdio.bin failed with error -2
 48 [    2.558645] brcmfmac mmc0:0001:1: Falling back to sysfs fallback for: brcm/brcmfmac43456-sdio.bin
 49 [    3.411816] brcmfmac: brcmf_fw_complete_request firmware brcm/brcmfmac43456-sdio.bin not found
 50 [    3.411845] brcmfmac: brcmf_sdio_firmware_callback Enter: dev=mmc0:0001:1, err=-2
 51 [    3.411858] brcmfmac: brcmf_sdio_firmware_callback failed: dev=mmc0:0001:1, err=-2
 52 [    3.411934] brcmfmac: brcmf_ops_sdio_remove Enter
 53 [    3.411946] brcmfmac: brcmf_ops_sdio_remove sdio vendor ID: 0x02d0
 54 [    3.411958] brcmfmac: brcmf_ops_sdio_remove sdio device ID: 0xa9bf
 55 [    3.411970] brcmfmac: brcmf_ops_sdio_remove Function: 2

我擦,我发现这么处理这个问题不一定能够解决,我应该尝试把5.15内核中这个wifi的驱动拿过来,放在5.10上去用,然后根据效果再决定如何进行下一步。

root@rockpi-4c:/sys/bus/mmc/devices/mmc0:0001/mmc0:0001:1# ls -l
total 0
-r--r--r-- 1 root root 4096 Dec  1 10:33 class
--w------- 1 root root 4096 Dec  1 10:33 coredump
-r--r--r-- 1 root root 4096 Dec  1 10:33 device
lrwxrwxrwx 1 root root    0 Dec  1 10:32 driver -> ../../../../../../../bus/sdio/drivers/brcmfmac
drwxr-xr-x 3 root root    0 Dec  1 10:32 ieee80211
-r--r--r-- 1 root root 4096 Dec  1 10:33 info1
-r--r--r-- 1 root root 4096 Dec  1 10:33 info2
-r--r--r-- 1 root root 4096 Dec  1 10:33 info3
-r--r--r-- 1 root root 4096 Dec  1 10:33 info4
-r--r--r-- 1 root root 4096 Dec  1 10:33 modalias
drwxr-xr-x 3 root root    0 Dec  1 10:32 net
lrwxrwxrwx 1 root root    0 Dec  1 10:33 of_node -> ../../../../../../../firmware/devicetree/base/mmc@fe310000/wifi@1
drwxr-xr-x 2 root root    0 Dec  1 10:32 power
-r--r--r-- 1 root root 4096 Dec  1 10:33 revision
lrwxrwxrwx 1 root root    0 Jan 18  2013 subsystem -> ../../../../../../../bus/sdio
-rw-r--r-- 1 root root 4096 Jan 18  2013 uevent
-r--r--r-- 1 root root 4096 Dec  1 10:33 vendor

驱动信息。

硬解驱动bug
brcmf_ops_sdio_probe ------> brcmf_sdiod_probe ----------> brcmf_sdio_probe -----------> brcmf_fw_get_firmwares  --------> request_firmware_nowait ----------------> brcmf_fw_request_done ----------->  brcmf_fw_request_firmware -------------> brcmf_sdio_firmware_callback

问题解决,按照上面的流程分析代码,发现逻辑貌似没有问题;做了若干尝试发现有可能是加载固件的时机太早,此时文件系统还没准备好,尝试:

  673 #include <linux/delay.h>                                                                            
  674                                                                                                     
  675 int brcmf_fw_get_firmwares(struct device *dev, struct brcmf_fw_request *req,                        
  676             ¦  void (*fw_cb)(struct device *dev, int err,                                           
  677                     ¦struct brcmf_fw_request *req))                                                 
  678 {                                                                                                   
  679     struct brcmf_fw_item *first = &req->items[0];                                                   
  680     struct brcmf_fw *fwctx;                                                                         
  681     int ret;                                                                                        
  682     int heartbeat = 0;                                                                              
  683                                                                                                     
  684     brcmf_dbg(TRACE, "enter: dev=%s\n", dev_name(dev));                                             
  685     if (!fw_cb)                                                                                     
  686         return -EINVAL;                                                                             
  687                                                                                                     
  688     if (!brcmf_fw_request_is_valid(req))                                                            
  689         return -EINVAL;                                                                             
  690                                                                                                     
  691     fwctx = kzalloc(sizeof(*fwctx), GFP_KERNEL);                                                    
  692     if (!fwctx)                                                                                     
  693         return -ENOMEM;                                                                             
  694                                                                                                     
  695     fwctx->dev = dev;                                                                               
  696     fwctx->req = req;                                                                               
  697     fwctx->done = fw_cb;                                                                            
  698                                                                                                     
  699     brcmf_dbg(TRACE, "sleep to wati for fs online");                                                
  700     while(heartbeat++ < 10)                                                                         
  701     {                                                                                               
  702     ¦   msleep(1000);                                                                               
  703     ¦   brcmf_dbg(TRACE, "heart beating ..........");                                                                                                                                                           
  704     }                                                                                               
  705     brcmf_dbg(TRACE, "now wake up");                                                                
  706                                                                                                     
  707     ret = request_firmware_nowait(THIS_MODULE, true, first->path,                                   
  708                 ¦   ¦ fwctx->dev, GFP_KERNEL, fwctx,                                                
  709                 ¦   ¦ brcmf_fw_request_done);                                                       
  710     if (ret < 0)                                                                                    
  711         brcmf_fw_request_done(NULL, fwctx);
  712                                                                                                     
  713     return 0;                                                                                       
  714 }

加载固件之前,等10秒(其实不用这么久),效果:

Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... [    6.968892] systemd[1]: Failed to start Armbian ZRAM config.
[    7.839553] systemd[1]: Failed to start Armbian ZRAM config.
[   14.976177] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43456-sdio for chip BCM4345/9
[   14.976935] brcmfmac: brcmf_fw_alloc_request: fwreq-items[0].path = brcm/brcmfmac43456-sdio.clm_blob
[   15.012302] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/9 wl0: Jun 16 2017 12:38:26 version 7.45.96.2 (66c4e21@sh-git) (r) FWID 01-1813af84

Armbian 22.11.1 Jammy ttyS2

固件成功加载。

iw dev wlan0 scan ssid |grep - 
        SSID: ChinaNet-DC4T
        SSID: asus
        SSID: kylinos
        SSID: kylinos
        SSID: asus
        SSID: 123456
        SSID: kylinos
        SSID: Kylin_11F
        SSID: huanghexinchan
        SSID: huanghe_5G
        SSID: kylinos
        SSID: TP-LINK_944CB8
        SSID: huanghexinchan
        SSID: 
                 * SSID List
                 * UTF-8 SSID
        SSID: hw_manage_f200
        SSID: kylinos
        SSID: \x00\x00\x00\x00\x00\x00\x00\x00
        SSID: FAST_2.4G_E16F
        SSID: \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
        SSID: Kylin_11F
        SSID: 
                 * SSID List
                 * UTF-8 SSID
        SSID: kylinos
        SSID: EZVIZ_F77790454
        SSID: huanghexinchan
        SSID: 360\xe8\xa1\x8c\xe8\xbd\xa6\xe8\xae\xb0\xe5\xbd\x95\xe4\xbb\xaa-0867
        SSID: kylinos
        SSID: kylinos
        SSID: HONOR V30
        SSID: Kylin_11F

无线网卡可以操作。

Bluetooth

[    2.635076] Bluetooth: hci0: BCM: chip id 130
[    2.637480] Bluetooth: hci0: BCM: features 0x0f
[    2.660672] Bluetooth: hci0: BCM4345C5
[    2.660685] Bluetooth: hci0: BCM4345C5 (003.006.006) build 0000
[    2.663316] Bluetooth: hci0: BCM: firmware Patch file not found, tried:
[    2.663329] Bluetooth: hci0: BCM: 'brcm/BCM4345C5.hcd'
[    2.663334] Bluetooth: hci0: BCM: 'brcm/BCM.hcd'
[    2.860103] cfg80211: failed to load regulatory.db


内核信息串口输出

[    1.863048] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    1.865744] ff180000.serial: ttyS0 at MMIO 0xff180000 (irq = 42, base_baud = 1500000) is a 16550A
[    1.865898] serial serial0: tty port ttyS0 registered
[    1.866586] ff1a0000.serial: ttyS2 at MMIO 0xff1a0000 (irq = 43, base_baud = 1500000) is a 16550A
[    1.866851] printk: console [ttyS2] enabled

但是内核输出还是看不见。

pcie

[    1.828517] rockchip-pcie f8000000.pcie: host bridge /pcie@f8000000 ranges:
[    1.828555] rockchip-pcie f8000000.pcie:      MEM 0x00fa000000..0x00fbdfffff -> 0x00fa000000
[    1.828573] rockchip-pcie f8000000.pcie:       IO 0x00fbe00000..0x00fbefffff -> 0x00fbe00000

[    2.306158] rockchip-pcie f8000000.pcie: host bridge /pcie@f8000000 ranges:
[    2.306175] rockchip-pcie f8000000.pcie:      MEM 0x00fa000000..0x00fbdfffff -> 0x00fa000000
[    2.306182] rockchip-pcie f8000000.pcie:       IO 0x00fbe00000..0x00fbefffff -> 0x00fbe00000
[    2.308572] rockchip-pcie f8000000.pcie: host bridge /pcie@f8000000 ranges:
[    2.308590] rockchip-pcie f8000000.pcie:      MEM 0x00fa000000..0x00fbdfffff -> 0x00fa000000
[    2.308597] rockchip-pcie f8000000.pcie:       IO 0x00fbe00000..0x00fbefffff -> 0x00fbe00000
[    2.309449] rockchip-pcie f8000000.pcie: host bridge /pcie@f8000000 ranges:
[    2.309468] rockchip-pcie f8000000.pcie:      MEM 0x00fa000000..0x00fbdfffff -> 0x00fa000000
[    2.309475] rockchip-pcie f8000000.pcie:       IO 0x00fbe00000..0x00fbefffff -> 0x00fbe00000

hdmi输出

2251     hdmi@ff940000 {
2252         compatible = "rockchip,rk3399-dw-hdmi";
2253         reg = <0x00 0xff940000 0x00 0x20000>;
2254         interrupts = <0x00 0x17 0x04 0x00>;
2255         clocks = <0x08 0x174 0x08 0x71 0x08 0x70 0x08 0x16f 0x08 0x07>;
2256         clock-names = "iahb\0isfr\0cec\0grf\0vpll";
2257         power-domains = <0x1c 0x15>;
2258         reg-io-width = <0x04>;
2259         rockchip,grf = <0x1d>;
2260         #sound-dai-cells = <0x00>;
2261         status = "okay";
2262         ddc-i2c-bus = <0xad>;
2263         pinctrl-names = "default";
2264         pinctrl-0 = <0xae>;
2265         phandle = <0xac>;
2266 
2267         ports {
2268 
2269             port {
2270                 #address-cells = <0x01>;
2271                 #size-cells = <0x00>;
2272                 phandle = <0x11e>;
2273 
2274                 endpoint@0 {
2275                     reg = <0x00>;
2276                     remote-endpoint = <0xaf>;
2277                     phandle = <0xa6>;
2278                 };
2279 
2280                 endpoint@1 {
2281                     reg = <0x01>;                                                                                                                                                                                
2282                     remote-endpoint = <0xb0>;
2283                     phandle = <0xa0>;
2284                 };
2285             };
2286         };
2287     };

配置项

    6 rockchipdrm-y := rockchip_drm_drv.o rockchip_drm_fb.o \
    7         rockchip_drm_gem.o rockchip_drm_vop.o rockchip_vop_reg.o
    8 rockchipdrm-$(CONFIG_DRM_FBDEV_EMULATION) += rockchip_drm_fbdev.o
    9 
   10 rockchipdrm-$(CONFIG_ROCKCHIP_ANALOGIX_DP) += analogix_dp-rockchip.o
   11 rockchipdrm-$(CONFIG_ROCKCHIP_CDN_DP) += cdn-dp-core.o cdn-dp-reg.o
   12 rockchipdrm-$(CONFIG_ROCKCHIP_DW_HDMI) += dw_hdmi-rockchip.o                                                                                                                                                    
   13 rockchipdrm-$(CONFIG_ROCKCHIP_DW_MIPI_DSI) += dw-mipi-dsi-rockchip.o
   14 rockchipdrm-$(CONFIG_ROCKCHIP_INNO_HDMI) += inno_hdmi.o
   15 rockchipdrm-$(CONFIG_ROCKCHIP_LVDS) += rockchip_lvds.o
   16 rockchipdrm-$(CONFIG_ROCKCHIP_RGB) += rockchip_rgb.o
   17 rockchipdrm-$(CONFIG_ROCKCHIP_RK3066_HDMI) += rk3066_hdmi.o
   18 
   19 obj-$(CONFIG_DRM_ROCKCHIP) += rockchipdrm.o

简单处理,这些配置项全部改为*


效果


image.png

image.png

音频

设备树:

2234     hdmi-sound {                                                                                                                                                                                                 
2235         compatible = "simple-audio-card";
2236         simple-audio-card,format = "i2s";
2237         simple-audio-card,mclk-fs = <0x100>;
2238         simple-audio-card,name = "hdmi-sound";
2239         status = "okay";
2240         phandle = <0x11d>;
2241         
2242         simple-audio-card,cpu {
2243             sound-dai = <0xab>;
2244         };
2245         
2246         simple-audio-card,codec {
2247             sound-dai = <0xac>;
2248         };
2249     };

3408     sound {                                                                                                                                                                                                      
3409         compatible = "audio-graph-card";
3410         label = "Analog";
3411         dais = <0xc3>;
3412     };

配置项:

    6 obj-$(CONFIG_SND_SIMPLE_CARD_UTILS) += snd-soc-simple-card-utils.o                                                                                                                                              
    7 obj-$(CONFIG_SND_SIMPLE_CARD)       += snd-soc-simple-card.o
    8 obj-$(CONFIG_SND_AUDIO_GRAPH_CARD)  += snd-soc-audio-graph-card.o

简单处理,全加上。


效果目前没有验证,感觉问题不大。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容