root/drivers/of/of_private.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. of_property_notify
  2. __of_add_property_sysfs
  3. __of_remove_property_sysfs
  4. __of_update_property_sysfs
  5. __of_attach_node_sysfs
  6. __of_detach_node_sysfs
  7. of_overlay_mutex_lock
  8. of_overlay_mutex_unlock
  9. unittest_unflatten_overlay_base

   1 /* SPDX-License-Identifier: GPL-2.0+ */
   2 #ifndef _LINUX_OF_PRIVATE_H
   3 #define _LINUX_OF_PRIVATE_H
   4 /*
   5  * Private symbols used by OF support code
   6  *
   7  * Paul Mackerras       August 1996.
   8  * Copyright (C) 1996-2005 Paul Mackerras.
   9  */
  10 
  11 /**
  12  * struct alias_prop - Alias property in 'aliases' node
  13  * @link:       List node to link the structure in aliases_lookup list
  14  * @alias:      Alias property name
  15  * @np:         Pointer to device_node that the alias stands for
  16  * @id:         Index value from end of alias name
  17  * @stem:       Alias string without the index
  18  *
  19  * The structure represents one alias property of 'aliases' node as
  20  * an entry in aliases_lookup list.
  21  */
  22 struct alias_prop {
  23         struct list_head link;
  24         const char *alias;
  25         struct device_node *np;
  26         int id;
  27         char stem[0];
  28 };
  29 
  30 #if defined(CONFIG_SPARC)
  31 #define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 2
  32 #else
  33 #define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 1
  34 #endif
  35 
  36 #define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1
  37 
  38 extern struct mutex of_mutex;
  39 extern struct list_head aliases_lookup;
  40 extern struct kset *of_kset;
  41 
  42 #if defined(CONFIG_OF_DYNAMIC)
  43 extern int of_property_notify(int action, struct device_node *np,
  44                               struct property *prop, struct property *old_prop);
  45 extern void of_node_release(struct kobject *kobj);
  46 extern int __of_changeset_apply_entries(struct of_changeset *ocs,
  47                                         int *ret_revert);
  48 extern int __of_changeset_apply_notify(struct of_changeset *ocs);
  49 extern int __of_changeset_revert_entries(struct of_changeset *ocs,
  50                                          int *ret_apply);
  51 extern int __of_changeset_revert_notify(struct of_changeset *ocs);
  52 #else /* CONFIG_OF_DYNAMIC */
  53 static inline int of_property_notify(int action, struct device_node *np,
  54                                      struct property *prop, struct property *old_prop)
  55 {
  56         return 0;
  57 }
  58 #endif /* CONFIG_OF_DYNAMIC */
  59 
  60 #if defined(CONFIG_OF_KOBJ)
  61 int of_node_is_attached(struct device_node *node);
  62 int __of_add_property_sysfs(struct device_node *np, struct property *pp);
  63 void __of_remove_property_sysfs(struct device_node *np, struct property *prop);
  64 void __of_update_property_sysfs(struct device_node *np, struct property *newprop,
  65                 struct property *oldprop);
  66 int __of_attach_node_sysfs(struct device_node *np);
  67 void __of_detach_node_sysfs(struct device_node *np);
  68 #else
  69 static inline int __of_add_property_sysfs(struct device_node *np, struct property *pp)
  70 {
  71         return 0;
  72 }
  73 static inline void __of_remove_property_sysfs(struct device_node *np, struct property *prop) {}
  74 static inline void __of_update_property_sysfs(struct device_node *np,
  75                 struct property *newprop, struct property *oldprop) {}
  76 static inline int __of_attach_node_sysfs(struct device_node *np)
  77 {
  78         return 0;
  79 }
  80 static inline void __of_detach_node_sysfs(struct device_node *np) {}
  81 #endif
  82 
  83 #if defined(CONFIG_OF_RESOLVE)
  84 int of_resolve_phandles(struct device_node *tree);
  85 #endif
  86 
  87 #if defined(CONFIG_OF_DYNAMIC)
  88 void __of_free_phandle_cache_entry(phandle handle);
  89 #endif
  90 
  91 #if defined(CONFIG_OF_OVERLAY)
  92 void of_overlay_mutex_lock(void);
  93 void of_overlay_mutex_unlock(void);
  94 int of_free_phandle_cache(void);
  95 void of_populate_phandle_cache(void);
  96 #else
  97 static inline void of_overlay_mutex_lock(void) {};
  98 static inline void of_overlay_mutex_unlock(void) {};
  99 #endif
 100 
 101 #if defined(CONFIG_OF_UNITTEST) && defined(CONFIG_OF_OVERLAY)
 102 extern void __init unittest_unflatten_overlay_base(void);
 103 #else
 104 static inline void unittest_unflatten_overlay_base(void) {};
 105 #endif
 106 
 107 extern void *__unflatten_device_tree(const void *blob,
 108                               struct device_node *dad,
 109                               struct device_node **mynodes,
 110                               void *(*dt_alloc)(u64 size, u64 align),
 111                               bool detached);
 112 
 113 /**
 114  * General utilities for working with live trees.
 115  *
 116  * All functions with two leading underscores operate
 117  * without taking node references, so you either have to
 118  * own the devtree lock or work on detached trees only.
 119  */
 120 struct property *__of_prop_dup(const struct property *prop, gfp_t allocflags);
 121 struct device_node *__of_node_dup(const struct device_node *np,
 122                                   const char *full_name);
 123 
 124 struct device_node *__of_find_node_by_path(struct device_node *parent,
 125                                                 const char *path);
 126 struct device_node *__of_find_node_by_full_path(struct device_node *node,
 127                                                 const char *path);
 128 
 129 extern const void *__of_get_property(const struct device_node *np,
 130                                      const char *name, int *lenp);
 131 extern int __of_add_property(struct device_node *np, struct property *prop);
 132 extern int __of_add_property_sysfs(struct device_node *np,
 133                 struct property *prop);
 134 extern int __of_remove_property(struct device_node *np, struct property *prop);
 135 extern void __of_remove_property_sysfs(struct device_node *np,
 136                 struct property *prop);
 137 extern int __of_update_property(struct device_node *np,
 138                 struct property *newprop, struct property **oldprop);
 139 extern void __of_update_property_sysfs(struct device_node *np,
 140                 struct property *newprop, struct property *oldprop);
 141 
 142 extern int __of_attach_node_sysfs(struct device_node *np);
 143 extern void __of_detach_node(struct device_node *np);
 144 extern void __of_detach_node_sysfs(struct device_node *np);
 145 
 146 extern void __of_sysfs_remove_bin_file(struct device_node *np,
 147                                        struct property *prop);
 148 
 149 /* illegal phandle value (set when unresolved) */
 150 #define OF_PHANDLE_ILLEGAL      0xdeadbeef
 151 
 152 /* iterators for transactions, used for overlays */
 153 /* forward iterator */
 154 #define for_each_transaction_entry(_oft, _te) \
 155         list_for_each_entry(_te, &(_oft)->te_list, node)
 156 
 157 /* reverse iterator */
 158 #define for_each_transaction_entry_reverse(_oft, _te) \
 159         list_for_each_entry_reverse(_te, &(_oft)->te_list, node)
 160 
 161 #endif /* _LINUX_OF_PRIVATE_H */

/* [<][>][^][v][top][bottom][index][help] */