Merge remote-tracking branch 'origin/master' into isa/arm64
[lunaix-os.git] / lunaix-os / hal / devtree / dt.c
index a4265512c5e7effc6d39f7a30821189e33239c4b..6b954e7b3edd6fa7128c6cc2a2c511883ed98eeb 100644 (file)
@@ -121,7 +121,7 @@ fdt_find_prop(const struct fdt_blob* fdt, fdt_loc_t loc,
         }
         
         if (likely(val)) {
         }
         
         if (likely(val)) {
-            val->encoded = (dt_enc_t)loc.prop->val;
+            val->encoded = (dt_enc_t)__prop_val_ptr(loc.prop);
             val->size    = loc.prop->len;
         }
         return true;
             val->size    = loc.prop->len;
         }
         return true;
@@ -152,6 +152,8 @@ fdt_memscan_begin(struct fdt_memscan* mscan, const struct fdt_blob* fdt)
 
     mscan->loc = loc;
     mscan->node_type = FDT_MEM_FREE;
 
     mscan->loc = loc;
     mscan->node_type = FDT_MEM_FREE;
+
+    return true;
 }
 
 #define get_size(mscan, val)    \
 }
 
 #define get_size(mscan, val)    \
@@ -759,11 +761,21 @@ dtpx_compile_proplet(struct dtprop_def* proplet)
 {
     int i;
     unsigned int acc = 0;
 {
     int i;
     unsigned int acc = 0;
+    struct dtprop_def* pl;
     
     for (i = 0; proplet[i].type && i < 10; ++i)
     {
     
     for (i = 0; proplet[i].type && i < 10; ++i)
     {
-        proplet[i].acc_sz = acc;
-        acc += proplet[i].cell;
+        pl = &proplet[i];
+
+        if (pl->type == DTP_COMPX) {
+            if (pl->cell == 1) 
+                pl->type = DTP_U32;
+            else if (pl->cell == 2)
+                pl->type = DTP_U64;
+        }
+
+        pl->acc_sz = acc;
+        acc += pl->cell;
     }
 
     if (proplet[i - 1].type && i == 10) {
     }
 
     if (proplet[i - 1].type && i == 10) {
@@ -856,7 +868,9 @@ dtpx_extract_at(struct dtpropx* propx,
         } break;
 
         case DTP_COMPX:
         } break;
 
         case DTP_COMPX:
-            val->composite = enc;
+            {
+                val->composite = enc;
+            }
             break;
         
         default:
             break;
         
         default: