@@ -447,12 +447,12 @@ fn test_node_properties() {
447447 let mut found_address_cells = false ;
448448 let mut found_size_cells = false ;
449449 let mut found_interrupt_cells = false ;
450- let found_device_type = false ;
451- let found_compatible = false ;
452- let found_phandle = false ;
453- let found_interrupt_parent = false ;
454- let found_reg = false ;
455- let found_dma_coherent = false ;
450+ let mut found_device_type = false ;
451+ let mut found_compatible = false ;
452+ let mut found_phandle = false ;
453+ let mut found_interrupt_parent = false ;
454+ let mut found_reg = false ;
455+ let mut found_dma_coherent = false ;
456456 let mut found_empty_property = false ;
457457
458458 for node in fdt. all_nodes ( ) {
@@ -488,6 +488,27 @@ fn test_node_properties() {
488488 match s {
489489 Status :: Okay | Status :: Disabled => { }
490490 }
491+ } else if let Some ( iter) = prop. as_compatible ( ) {
492+ let strs: Vec < _ > = iter. clone ( ) . collect ( ) ;
493+ if !strs. is_empty ( ) {
494+ found_compatible = true ;
495+ info ! ( " compatible = {:?}" , strs) ;
496+ }
497+ } else if let Some ( s) = prop. as_device_type ( ) {
498+ found_device_type = true ;
499+ info ! ( " device_type = \" {}\" " , s) ;
500+ } else if prop. as_phandle ( ) . is_some ( ) {
501+ found_phandle = true ;
502+ info ! ( " {} = <{:?}>" , prop. name( ) , prop. as_phandle( ) ) ;
503+ } else if prop. as_interrupt_parent ( ) . is_some ( ) {
504+ found_interrupt_parent = true ;
505+ info ! ( " {} = <{:?}>" , prop. name( ) , prop. as_interrupt_parent( ) ) ;
506+ } else if prop. name ( ) == "reg" {
507+ found_reg = true ;
508+ info ! ( " reg ({} bytes)" , prop. len( ) ) ;
509+ } else if prop. name ( ) == "dma-coherent" {
510+ found_dma_coherent = true ;
511+ info ! ( " dma-coherent (empty)" ) ;
491512 } else {
492513 // 处理未知属性
493514 if let Some ( s) = prop. as_str ( ) {
@@ -743,8 +764,8 @@ fn test_memory_in_fdt(raw: &[u8], name: &str) {
743764 ) ;
744765 info ! ( "[{}] device_type = \" {}\" " , name, s) ;
745766 } else if let Some ( reg) = prop. as_reg (
746- node. reg_address_cells ( ) as u32 ,
747- node. reg_size_cells ( ) as u32 ,
767+ node. context . parent_address_cells . into ( ) ,
768+ node. context . parent_size_cells . into ( ) ,
748769 ) {
749770 found_reg = true ;
750771 let reg_infos: Vec < _ > = reg. iter ( ) . collect ( ) ;
@@ -754,8 +775,8 @@ fn test_memory_in_fdt(raw: &[u8], name: &str) {
754775 info ! (
755776 "[{}] address_cells={}, size_cells={}" ,
756777 name,
757- node. reg_address_cells ( ) ,
758- node. reg_size_cells ( )
778+ node. context . parent_address_cells ,
779+ node. context . parent_size_cells
759780 ) ;
760781 info ! (
761782 "[{}] raw data ({} bytes): {:02x?}" ,
@@ -823,7 +844,7 @@ fn test_memory_in_fdt(raw: &[u8], name: &str) {
823844
824845 // RPi 4B 的特殊情况 - 当前测试数据显示地址和大小为0
825846 // 这可能是测试数据的特殊情况,我们只验证基本结构
826- if node. reg_size_cells ( ) == 1 {
847+ if node. context . parent_size_cells == 1 {
827848 assert_eq ! (
828849 reg. as_slice( ) . len( ) % 12 ,
829850 0 ,
@@ -841,7 +862,7 @@ fn test_memory_in_fdt(raw: &[u8], name: &str) {
841862
842863 // 验证 reg 数据长度的一致性
843864 let expected_entry_size =
844- ( node. reg_address_cells ( ) + node. reg_size_cells ( ) ) * 4 ;
865+ ( node. context . parent_address_cells + node. context . parent_size_cells ) * 4 ;
845866 assert_eq ! (
846867 reg. as_slice( ) . len( ) % expected_entry_size as usize ,
847868 0 ,
0 commit comments