• Grant Likely's avatar
    of: Make devicetree sysfs update functions consistent. · 8a2b22a2
    Grant Likely authored
    All of the DT modification functions are split into two parts, the first
    part manipulates the DT data structure, and the second part updates
    sysfs, but the code isn't very consistent about how the second half is
    called. They don't all enforce the same rules about when it is valid to
    update sysfs, and there isn't any clarity on locking.
    
    The transactional DT modification feature that is coming also needs
    access to these functions so that it can perform all the structure
    changes together, and then all the sysfs updates as a second stage
    instead of doing each one at a time.
    
    Fix up the second have by creating a separate __of_*_sysfs() function
    for each of the helpers. The new functions have consistent naming (ie.
    of_node_add() becomes __of_attach_node_sysfs()) and all of them now
    defer if of_init hasn't been called yet.
    
    Callers of the new functions must hold the of_mutex to ensure there are
    no race conditions with of_init(). The mutex ensures that there will
    only ever be one writer to the tree at any given time. There can still
    be any number of readers and the raw_spin_lock is still used to make
    sure access to the data structure is still consistent.
    
    Finally, put the function prototypes into of_private.h so they are
    accessible to the transaction code.
    Signed-off-by: default avatarPantelis Antoniou <pantelis.antoniou@konsulko.com>
    [grant.likely: Changed suffix from _post to _sysfs to match existing code]
    [grant.likely: Reorganized to eliminate trivial wrappers]
    Signed-off-by: default avatarGrant Likely <grant.likely@linaro.org>
    8a2b22a2
base.c 58.4 KB