• Andy Shevchenko's avatar
    device property: Keep secondary firmware node secondary by type · d5dcce0c
    Andy Shevchenko authored
    Behind primary and secondary we understand the type of the nodes
    which might define their ordering. However, if primary node gone,
    we can't maintain the ordering by definition of the linked list.
    Thus, by ordering secondary node becomes first in the list.
    But in this case the meaning of it is still secondary (or auxiliary).
    The type of the node is maintained by the secondary pointer in it:
    
    	secondary pointer		Meaning
    	NULL or valid			primary node
    	ERR_PTR(-ENODEV)		secondary node
    
    So, if by some reason we do the following sequence of calls
    
    	set_primary_fwnode(dev, NULL);
    	set_primary_fwnode(dev, primary);
    
    we should preserve secondary node.
    
    This concept is supported by the description of set_primary_fwnode()
    along with implementation of set_secondary_fwnode(). Hence, fix
    the commit c15e1bdd to follow this as well.
    
    Fixes: c15e1bdd ("device property: Fix the secondary firmware node handling in set_primary_fwnode()")
    Cc: Ferry Toth <fntoth@gmail.com>
    Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
    Tested-by: default avatarFerry Toth <fntoth@gmail.com>
    Cc: 5.9+ <stable@vger.kernel.org> # 5.9+
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    d5dcce0c
core.c 116 KB