Commit 57d00ecf90cc9854973da2960012b734acc26e51

Authored by Stephen Neuendorffer
Committed by Grant Likely
1 parent a40d6c4cf1

of/flattree: Reorder unflatten_dt_node

Move unflatten_dt_node to be grouped with non-__init functions.

Signed-off-by: Stephen Neuendorffer <stephen.neuendorffer@xilinx.com>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>

Showing 1 changed file with 109 additions and 109 deletions Side-by-side Diff

... ... @@ -97,115 +97,6 @@
97 97 return 0;
98 98 }
99 99  
100   -/* Everything below here references initial_boot_params directly. */
101   -int __initdata dt_root_addr_cells;
102   -int __initdata dt_root_size_cells;
103   -
104   -struct boot_param_header *initial_boot_params;
105   -
106   -#ifdef CONFIG_OF_EARLY_FLATTREE
107   -
108   -/**
109   - * of_scan_flat_dt - scan flattened tree blob and call callback on each.
110   - * @it: callback function
111   - * @data: context data pointer
112   - *
113   - * This function is used to scan the flattened device-tree, it is
114   - * used to extract the memory information at boot before we can
115   - * unflatten the tree
116   - */
117   -int __init of_scan_flat_dt(int (*it)(unsigned long node,
118   - const char *uname, int depth,
119   - void *data),
120   - void *data)
121   -{
122   - unsigned long p = ((unsigned long)initial_boot_params) +
123   - be32_to_cpu(initial_boot_params->off_dt_struct);
124   - int rc = 0;
125   - int depth = -1;
126   -
127   - do {
128   - u32 tag = be32_to_cpup((__be32 *)p);
129   - char *pathp;
130   -
131   - p += 4;
132   - if (tag == OF_DT_END_NODE) {
133   - depth--;
134   - continue;
135   - }
136   - if (tag == OF_DT_NOP)
137   - continue;
138   - if (tag == OF_DT_END)
139   - break;
140   - if (tag == OF_DT_PROP) {
141   - u32 sz = be32_to_cpup((__be32 *)p);
142   - p += 8;
143   - if (be32_to_cpu(initial_boot_params->version) < 0x10)
144   - p = ALIGN(p, sz >= 8 ? 8 : 4);
145   - p += sz;
146   - p = ALIGN(p, 4);
147   - continue;
148   - }
149   - if (tag != OF_DT_BEGIN_NODE) {
150   - pr_err("Invalid tag %x in flat device tree!\n", tag);
151   - return -EINVAL;
152   - }
153   - depth++;
154   - pathp = (char *)p;
155   - p = ALIGN(p + strlen(pathp) + 1, 4);
156   - if ((*pathp) == '/') {
157   - char *lp, *np;
158   - for (lp = NULL, np = pathp; *np; np++)
159   - if ((*np) == '/')
160   - lp = np+1;
161   - if (lp != NULL)
162   - pathp = lp;
163   - }
164   - rc = it(p, pathp, depth, data);
165   - if (rc != 0)
166   - break;
167   - } while (1);
168   -
169   - return rc;
170   -}
171   -
172   -/**
173   - * of_get_flat_dt_root - find the root node in the flat blob
174   - */
175   -unsigned long __init of_get_flat_dt_root(void)
176   -{
177   - unsigned long p = ((unsigned long)initial_boot_params) +
178   - be32_to_cpu(initial_boot_params->off_dt_struct);
179   -
180   - while (be32_to_cpup((__be32 *)p) == OF_DT_NOP)
181   - p += 4;
182   - BUG_ON(be32_to_cpup((__be32 *)p) != OF_DT_BEGIN_NODE);
183   - p += 4;
184   - return ALIGN(p + strlen((char *)p) + 1, 4);
185   -}
186   -
187   -/**
188   - * of_get_flat_dt_prop - Given a node in the flat blob, return the property ptr
189   - *
190   - * This function can be used within scan_flattened_dt callback to get
191   - * access to properties
192   - */
193   -void *__init of_get_flat_dt_prop(unsigned long node, const char *name,
194   - unsigned long *size)
195   -{
196   - return of_fdt_get_property(initial_boot_params, node, name, size);
197   -}
198   -
199   -/**
200   - * of_flat_dt_is_compatible - Return true if given node has compat in compatible list
201   - * @node: node to test
202   - * @compat: compatible string to compare with compatible list.
203   - */
204   -int __init of_flat_dt_is_compatible(unsigned long node, const char *compat)
205   -{
206   - return of_fdt_is_compatible(initial_boot_params, node, compat);
207   -}
208   -
209 100 static void *unflatten_dt_alloc(unsigned long *mem, unsigned long size,
210 101 unsigned long align)
211 102 {
... ... @@ -419,6 +310,115 @@
419 310 }
420 311 *p += 4;
421 312 return mem;
  313 +}
  314 +
  315 +/* Everything below here references initial_boot_params directly. */
  316 +int __initdata dt_root_addr_cells;
  317 +int __initdata dt_root_size_cells;
  318 +
  319 +struct boot_param_header *initial_boot_params;
  320 +
  321 +#ifdef CONFIG_OF_EARLY_FLATTREE
  322 +
  323 +/**
  324 + * of_scan_flat_dt - scan flattened tree blob and call callback on each.
  325 + * @it: callback function
  326 + * @data: context data pointer
  327 + *
  328 + * This function is used to scan the flattened device-tree, it is
  329 + * used to extract the memory information at boot before we can
  330 + * unflatten the tree
  331 + */
  332 +int __init of_scan_flat_dt(int (*it)(unsigned long node,
  333 + const char *uname, int depth,
  334 + void *data),
  335 + void *data)
  336 +{
  337 + unsigned long p = ((unsigned long)initial_boot_params) +
  338 + be32_to_cpu(initial_boot_params->off_dt_struct);
  339 + int rc = 0;
  340 + int depth = -1;
  341 +
  342 + do {
  343 + u32 tag = be32_to_cpup((__be32 *)p);
  344 + char *pathp;
  345 +
  346 + p += 4;
  347 + if (tag == OF_DT_END_NODE) {
  348 + depth--;
  349 + continue;
  350 + }
  351 + if (tag == OF_DT_NOP)
  352 + continue;
  353 + if (tag == OF_DT_END)
  354 + break;
  355 + if (tag == OF_DT_PROP) {
  356 + u32 sz = be32_to_cpup((__be32 *)p);
  357 + p += 8;
  358 + if (be32_to_cpu(initial_boot_params->version) < 0x10)
  359 + p = ALIGN(p, sz >= 8 ? 8 : 4);
  360 + p += sz;
  361 + p = ALIGN(p, 4);
  362 + continue;
  363 + }
  364 + if (tag != OF_DT_BEGIN_NODE) {
  365 + pr_err("Invalid tag %x in flat device tree!\n", tag);
  366 + return -EINVAL;
  367 + }
  368 + depth++;
  369 + pathp = (char *)p;
  370 + p = ALIGN(p + strlen(pathp) + 1, 4);
  371 + if ((*pathp) == '/') {
  372 + char *lp, *np;
  373 + for (lp = NULL, np = pathp; *np; np++)
  374 + if ((*np) == '/')
  375 + lp = np+1;
  376 + if (lp != NULL)
  377 + pathp = lp;
  378 + }
  379 + rc = it(p, pathp, depth, data);
  380 + if (rc != 0)
  381 + break;
  382 + } while (1);
  383 +
  384 + return rc;
  385 +}
  386 +
  387 +/**
  388 + * of_get_flat_dt_root - find the root node in the flat blob
  389 + */
  390 +unsigned long __init of_get_flat_dt_root(void)
  391 +{
  392 + unsigned long p = ((unsigned long)initial_boot_params) +
  393 + be32_to_cpu(initial_boot_params->off_dt_struct);
  394 +
  395 + while (be32_to_cpup((__be32 *)p) == OF_DT_NOP)
  396 + p += 4;
  397 + BUG_ON(be32_to_cpup((__be32 *)p) != OF_DT_BEGIN_NODE);
  398 + p += 4;
  399 + return ALIGN(p + strlen((char *)p) + 1, 4);
  400 +}
  401 +
  402 +/**
  403 + * of_get_flat_dt_prop - Given a node in the flat blob, return the property ptr
  404 + *
  405 + * This function can be used within scan_flattened_dt callback to get
  406 + * access to properties
  407 + */
  408 +void *__init of_get_flat_dt_prop(unsigned long node, const char *name,
  409 + unsigned long *size)
  410 +{
  411 + return of_fdt_get_property(initial_boot_params, node, name, size);
  412 +}
  413 +
  414 +/**
  415 + * of_flat_dt_is_compatible - Return true if given node has compat in compatible list
  416 + * @node: node to test
  417 + * @compat: compatible string to compare with compatible list.
  418 + */
  419 +int __init of_flat_dt_is_compatible(unsigned long node, const char *compat)
  420 +{
  421 + return of_fdt_is_compatible(initial_boot_params, node, compat);
422 422 }
423 423  
424 424 #ifdef CONFIG_BLK_DEV_INITRD