2012-12-07 02:55:41 +04: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 20:58:03 +04:00
extern struct mutex of_mutex ;
2012-12-07 02:55:41 +04:00
extern struct list_head aliases_lookup ;
2014-07-24 03:05:06 +04:00
extern struct kset * of_kset ;
2014-06-26 18:40:48 +04:00
static inline struct device_node * kobj_to_device_node ( struct kobject * kobj )
{
return container_of ( kobj , struct device_node , kobj ) ;
}
# if defined(CONFIG_OF_DYNAMIC)
extern int of_property_notify ( int action , struct device_node * np ,
2014-07-16 22:48:23 +04:00
struct property * prop , struct property * old_prop ) ;
2014-06-26 18:40:48 +04:00
extern void of_node_release ( struct kobject * kobj ) ;
2015-11-04 16:12:49 +03:00
extern int __of_changeset_apply ( struct of_changeset * ocs ) ;
extern int __of_changeset_revert ( struct of_changeset * ocs ) ;
2014-06-26 18:40:48 +04:00
# else /* CONFIG_OF_DYNAMIC */
static inline int of_property_notify ( int action , struct device_node * np ,
2014-07-16 22:48:23 +04:00
struct property * prop , struct property * old_prop )
2014-06-26 18:40:48 +04:00
{
return 0 ;
}
# endif /* CONFIG_OF_DYNAMIC */
2014-07-04 20:58:47 +04: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-18 01:31:32 +03:00
__printf ( 2 , 3 ) struct device_node * __of_node_dup ( const struct device_node * np , const char * fmt , . . . ) ;
2014-07-04 20:58:47 +04:00
2014-07-16 09:25:43 +04:00
extern const void * __of_get_property ( const struct device_node * np ,
const char * name , int * lenp ) ;
2014-07-04 20:58:46 +04:00
extern int __of_add_property ( struct device_node * np , struct property * prop ) ;
2014-07-24 03:05:06 +04:00
extern int __of_add_property_sysfs ( struct device_node * np ,
struct property * prop ) ;
2014-07-04 20:58:46 +04:00
extern int __of_remove_property ( struct device_node * np , struct property * prop ) ;
2014-07-24 03:05:06 +04:00
extern void __of_remove_property_sysfs ( struct device_node * np ,
struct property * prop ) ;
2014-07-04 20:58:46 +04:00
extern int __of_update_property ( struct device_node * np ,
struct property * newprop , struct property * * oldprop ) ;
2014-07-24 03:05:06 +04:00
extern void __of_update_property_sysfs ( struct device_node * np ,
struct property * newprop , struct property * oldprop ) ;
2014-07-04 20:58:46 +04:00
extern void __of_attach_node ( struct device_node * np ) ;
2014-07-24 03:05:06 +04:00
extern int __of_attach_node_sysfs ( struct device_node * np ) ;
2014-07-04 20:58:46 +04:00
extern void __of_detach_node ( struct device_node * np ) ;
2014-07-24 03:05:06 +04:00
extern void __of_detach_node_sysfs ( struct device_node * np ) ;
2014-07-04 20:58:46 +04:00
2016-06-16 20:51:46 +03:00
extern void __of_sysfs_remove_bin_file ( struct device_node * np ,
struct property * prop ) ;
2014-07-04 20:58:49 +04: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-07 02:55:41 +04:00
# endif /* _LINUX_OF_PRIVATE_H */