Blame view

drivers/core/of_extra.c 973 Bytes
b7e0d73ba   Simon Glass   dm: core: Add a p...
1
2
3
4
5
6
7
8
  /*
   * Copyright (c) 2017 Google, Inc
   * Written by Simon Glass <sjg@chromium.org>
   *
   * SPDX-License-Identifier:	GPL-2.0+
   */
  
  #include <common.h>
b08c8c487   Masahiro Yamada   libfdt: move head...
9
  #include <linux/libfdt.h>
b7e0d73ba   Simon Glass   dm: core: Add a p...
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  #include <dm/of_access.h>
  #include <dm/of_extra.h>
  #include <dm/ofnode.h>
  
  int of_read_fmap_entry(ofnode node, const char *name,
  		       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
  ", name);
  		return -FDT_ERR_NOTFOUND;
  	}
  	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;
  	prop = ofnode_read_string(node, "hash");
  	if (prop)
  		entry->hash_size = strlen(prop);
  	entry->hash_algo = prop ? FMAP_HASH_SHA256 : FMAP_HASH_NONE;
  	entry->hash = (uint8_t *)prop;
  
  	return 0;
  }