git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote-tracking branch 'origin/master' into isa/arm64
[lunaix-os.git]
/
lunaix-os
/
hal
/
devtree
/
dt.c
diff --git
a/lunaix-os/hal/devtree/dt.c
b/lunaix-os/hal/devtree/dt.c
index a4265512c5e7effc6d39f7a30821189e33239c4b..6b954e7b3edd6fa7128c6cc2a2c511883ed98eeb 100644
(file)
--- 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)) {
}
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: