dm: core: Update ofnode to read binman-style flash entry
[oweals/u-boot.git] / drivers / core / of_extra.c
index aa48917dddf40b13aa0949851018e45a1930fba7..f1f393c3598c7e3579648bda3d949b6e031e1ce5 100644 (file)
 int ofnode_read_fmap_entry(ofnode node, struct fmap_entry *entry)
 {
        const char *prop;
-       u32 reg[2];
 
-       if (ofnode_read_u32_array(node, "reg", reg, 2)) {
-               debug("Node '%s' has bad/missing 'reg' property\n",
+       if (ofnode_read_u32(node, "image-pos", &entry->offset)) {
+               debug("Node '%s' has bad/missing 'image-pos' property\n",
                      ofnode_get_name(node));
-               return -log_ret(ENOENT);
+               return log_ret(-ENOENT);
+       }
+       if (ofnode_read_u32(node, "size", &entry->length)) {
+               debug("Node '%s' has bad/missing 'size' property\n",
+                     ofnode_get_name(node));
+               return log_ret(-ENOENT);
        }
-       entry->offset = reg[0];
-       entry->length = reg[1];
        entry->used = ofnode_read_s32_default(node, "used", entry->length);
        prop = ofnode_read_string(node, "compress");
-       entry->compress_algo = prop && !strcmp(prop, "lzo") ?
-               FMAP_COMPRESS_LZO : FMAP_COMPRESS_NONE;
+       if (prop) {
+               if (!strcmp(prop, "lz4"))
+                       entry->compress_algo = FMAP_COMPRESS_LZ4;
+               else
+                       return log_msg_ret("Unknown compression algo",
+                                          -EINVAL);
+       } else {
+               entry->compress_algo = FMAP_COMPRESS_NONE;
+       }
+       entry->unc_length = ofnode_read_s32_default(node, "uncomp-size",
+                                                   entry->length);
        prop = ofnode_read_string(node, "hash");
        if (prop)
                entry->hash_size = strlen(prop);