2012-12-06 14:55:41 -08:00
# ifndef _LINUX_OF_PRIVATE_H
# define _LINUX_OF_PRIVATE_H
/*
* Private symbols used by OF support code
*
* Paul Mackerras August 1996.
* Copyright ( C ) 1996 - 2005 Paul Mackerras .
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version
* 2 of the License , or ( at your option ) any later version .
*/
/**
* struct alias_prop - Alias property in ' aliases ' node
* @ link : List node to link the structure in aliases_lookup list
* @ alias : Alias property name
* @ np : Pointer to device_node that the alias stands for
* @ id : Index value from end of alias name
* @ stem : Alias string without the index
*
* The structure represents one alias property of ' aliases ' node as
* an entry in aliases_lookup list .
*/
struct alias_prop {
struct list_head link ;
const char * alias ;
struct device_node * np ;
int id ;
char stem [ 0 ] ;
} ;
2014-07-04 19:58:03 +03:00
extern struct mutex of_mutex ;
2012-12-06 14:55:41 -08:00
extern struct list_head aliases_lookup ;
2014-07-23 17:05:06 -06:00
extern struct kset * of_kset ;
2014-06-26 15:40:48 +01:00
# if defined(CONFIG_OF_DYNAMIC)
extern int of_property_notify ( int action , struct device_node * np ,
2014-07-16 12:48:23 -06:00
struct property * prop , struct property * old_prop ) ;
2014-06-26 15:40:48 +01:00
extern void of_node_release ( struct kobject * kobj ) ;
2017-10-17 16:36:26 -07:00
extern int __of_changeset_apply_entries ( struct of_changeset * ocs ,
int * ret_revert ) ;
extern int __of_changeset_apply_notify ( struct of_changeset * ocs ) ;
extern int __of_changeset_revert_entries ( struct of_changeset * ocs ,
int * ret_apply ) ;
extern int __of_changeset_revert_notify ( struct of_changeset * ocs ) ;
2014-06-26 15:40:48 +01:00
# else /* CONFIG_OF_DYNAMIC */
static inline int of_property_notify ( int action , struct device_node * np ,
2014-07-16 12:48:23 -06:00
struct property * prop , struct property * old_prop )
2014-06-26 15:40:48 +01:00
{
return 0 ;
}
# endif /* CONFIG_OF_DYNAMIC */
2017-10-04 14:09:40 -05:00
# if defined(CONFIG_OF_KOBJ)
int of_node_is_attached ( struct device_node * node ) ;
int __of_add_property_sysfs ( struct device_node * np , struct property * pp ) ;
void __of_remove_property_sysfs ( struct device_node * np , struct property * prop ) ;
void __of_update_property_sysfs ( struct device_node * np , struct property * newprop ,
struct property * oldprop ) ;
int __of_attach_node_sysfs ( struct device_node * np ) ;
void __of_detach_node_sysfs ( struct device_node * np ) ;
# else
static inline int __of_add_property_sysfs ( struct device_node * np , struct property * pp )
{
return 0 ;
}
static inline void __of_remove_property_sysfs ( struct device_node * np , struct property * prop ) { }
static inline void __of_update_property_sysfs ( struct device_node * np ,
struct property * newprop , struct property * oldprop ) { }
static inline int __of_attach_node_sysfs ( struct device_node * np )
{
return 0 ;
}
static inline void __of_detach_node_sysfs ( struct device_node * np ) { }
# endif
2017-10-17 16:36:29 -07:00
# if defined(CONFIG_OF_RESOLVE)
int of_resolve_phandles ( struct device_node * tree ) ;
# endif
# if defined(CONFIG_OF_OVERLAY)
void of_overlay_mutex_lock ( void ) ;
void of_overlay_mutex_unlock ( void ) ;
# else
static inline void of_overlay_mutex_lock ( void ) { } ;
static inline void of_overlay_mutex_unlock ( void ) { } ;
# endif
2017-04-28 11:44:12 +02:00
# if defined(CONFIG_OF_UNITTEST) && defined(CONFIG_OF_OVERLAY)
2017-04-25 17:09:54 -07:00
extern void __init unittest_unflatten_overlay_base ( void ) ;
# else
static inline void unittest_unflatten_overlay_base ( void ) { } ;
# endif
extern void * __unflatten_device_tree ( const void * blob ,
struct device_node * dad ,
struct device_node * * mynodes ,
void * ( * dt_alloc ) ( u64 size , u64 align ) ,
bool detached ) ;
2014-07-04 19:58:47 +03:00
/**
* General utilities for working with live trees .
*
* All functions with two leading underscores operate
* without taking node references , so you either have to
* own the devtree lock or work on detached trees only .
*/
struct property * __of_prop_dup ( const struct property * prop , gfp_t allocflags ) ;
2014-11-17 22:31:32 +00:00
__printf ( 2 , 3 ) struct device_node * __of_node_dup ( const struct device_node * np , const char * fmt , . . . ) ;
2014-07-04 19:58:47 +03:00
2017-10-17 16:36:31 -07:00
struct device_node * __of_find_node_by_path ( struct device_node * parent ,
const char * path ) ;
2017-06-02 12:43:18 -05:00
struct device_node * __of_find_node_by_full_path ( struct device_node * node ,
const char * path ) ;
2014-07-15 23:25:43 -06:00
extern const void * __of_get_property ( const struct device_node * np ,
const char * name , int * lenp ) ;
2014-07-04 19:58:46 +03:00
extern int __of_add_property ( struct device_node * np , struct property * prop ) ;
2014-07-23 17:05:06 -06:00
extern int __of_add_property_sysfs ( struct device_node * np ,
struct property * prop ) ;
2014-07-04 19:58:46 +03:00
extern int __of_remove_property ( struct device_node * np , struct property * prop ) ;
2014-07-23 17:05:06 -06:00
extern void __of_remove_property_sysfs ( struct device_node * np ,
struct property * prop ) ;
2014-07-04 19:58:46 +03:00
extern int __of_update_property ( struct device_node * np ,
struct property * newprop , struct property * * oldprop ) ;
2014-07-23 17:05:06 -06:00
extern void __of_update_property_sysfs ( struct device_node * np ,
struct property * newprop , struct property * oldprop ) ;
2014-07-04 19:58:46 +03:00
2014-07-23 17:05:06 -06:00
extern int __of_attach_node_sysfs ( struct device_node * np ) ;
2014-07-04 19:58:46 +03:00
extern void __of_detach_node ( struct device_node * np ) ;
2014-07-23 17:05:06 -06:00
extern void __of_detach_node_sysfs ( struct device_node * np ) ;
2014-07-04 19:58:46 +03:00
2016-06-16 10:51:46 -07:00
extern void __of_sysfs_remove_bin_file ( struct device_node * np ,
struct property * prop ) ;
2014-07-04 19:58:49 +03:00
/* iterators for transactions, used for overlays */
/* forward iterator */
# define for_each_transaction_entry(_oft, _te) \
list_for_each_entry ( _te , & ( _oft ) - > te_list , node )
/* reverse iterator */
# define for_each_transaction_entry_reverse(_oft, _te) \
list_for_each_entry_reverse ( _te , & ( _oft ) - > te_list , node )
2012-12-06 14:55:41 -08:00
# endif /* _LINUX_OF_PRIVATE_H */