X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/9daf4fcdae88f72af60aeb0c7722841af02233d4..43487eff262637a59a4c2c0272d7c4a824af3944:/lunaix-os/hal/devtree/dt.c diff --git a/lunaix-os/hal/devtree/dt.c b/lunaix-os/hal/devtree/dt.c index a426551..6b954e7 100644 --- a/lunaix-os/hal/devtree/dt.c +++ b/lunaix-os/hal/devtree/dt.c @@ -121,7 +121,7 @@ fdt_find_prop(const struct fdt_blob* fdt, fdt_loc_t loc, } 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; @@ -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; + + return true; } #define get_size(mscan, val) \ @@ -759,11 +761,21 @@ dtpx_compile_proplet(struct dtprop_def* proplet) { int i; unsigned int acc = 0; + struct dtprop_def* pl; 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) { @@ -856,7 +868,9 @@ dtpx_extract_at(struct dtpropx* propx, } break; case DTP_COMPX: - val->composite = enc; + { + val->composite = enc; + } break; default: