X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/7e13988c1113d38bec17bd79b71757d78d977e76..ec98d05af80e6e68c889dac10b8478ce92bd5161:/lunaix-os/hal/devtree/dt.c?ds=sidebyside diff --git a/lunaix-os/hal/devtree/dt.c b/lunaix-os/hal/devtree/dt.c index a426551..ee68cf6 100644 --- a/lunaix-os/hal/devtree/dt.c +++ b/lunaix-os/hal/devtree/dt.c @@ -759,11 +759,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 +866,9 @@ dtpx_extract_at(struct dtpropx* propx, } break; case DTP_COMPX: - val->composite = enc; + { + val->composite = enc; + } break; default: