cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

of_private.h (5597B)


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