mirror of
https://xff.cz/git/u-boot/
synced 2025-09-02 17:22:22 +02:00
binman: Centralise device-tree updates within binman
At present we have a few calls to device-tree functions in binman and plan to add more as we add new entry types which need to report their results. It makes sense to put this code in a central place so that we can make sure all device trees are updated. At present we only have U-Boot proper, but plan to add SPL and TPL too. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -12,6 +12,7 @@ import sys
|
|||||||
|
|
||||||
import fdt_util
|
import fdt_util
|
||||||
import re
|
import re
|
||||||
|
import state
|
||||||
import tools
|
import tools
|
||||||
|
|
||||||
class Section(object):
|
class Section(object):
|
||||||
@@ -98,14 +99,14 @@ class Section(object):
|
|||||||
"""Add new properties to the device tree as needed for this entry"""
|
"""Add new properties to the device tree as needed for this entry"""
|
||||||
for prop in ['offset', 'size', 'image-pos']:
|
for prop in ['offset', 'size', 'image-pos']:
|
||||||
if not prop in self._node.props:
|
if not prop in self._node.props:
|
||||||
self._node.AddZeroProp(prop)
|
state.AddZeroProp(self._node, prop)
|
||||||
for entry in self._entries.values():
|
for entry in self._entries.values():
|
||||||
entry.AddMissingProperties()
|
entry.AddMissingProperties()
|
||||||
|
|
||||||
def SetCalculatedProperties(self):
|
def SetCalculatedProperties(self):
|
||||||
self._node.SetInt('offset', self._offset)
|
state.SetInt(self._node, 'offset', self._offset)
|
||||||
self._node.SetInt('size', self._size)
|
state.SetInt(self._node, 'size', self._size)
|
||||||
self._node.SetInt('image-pos', self._image_pos)
|
state.SetInt(self._node, 'image-pos', self._image_pos)
|
||||||
for entry in self._entries.values():
|
for entry in self._entries.values():
|
||||||
entry.SetCalculatedProperties()
|
entry.SetCalculatedProperties()
|
||||||
|
|
||||||
|
@@ -168,13 +168,13 @@ class Entry(object):
|
|||||||
"""Add new properties to the device tree as needed for this entry"""
|
"""Add new properties to the device tree as needed for this entry"""
|
||||||
for prop in ['offset', 'size', 'image-pos']:
|
for prop in ['offset', 'size', 'image-pos']:
|
||||||
if not prop in self._node.props:
|
if not prop in self._node.props:
|
||||||
self._node.AddZeroProp(prop)
|
state.AddZeroProp(self._node, prop)
|
||||||
|
|
||||||
def SetCalculatedProperties(self):
|
def SetCalculatedProperties(self):
|
||||||
"""Set the value of device-tree properties calculated by binman"""
|
"""Set the value of device-tree properties calculated by binman"""
|
||||||
self._node.SetInt('offset', self.offset)
|
state.SetInt(self._node, 'offset', self.offset)
|
||||||
self._node.SetInt('size', self.size)
|
state.SetInt(self._node, 'size', self.size)
|
||||||
self._node.SetInt('image-pos', self.image_pos)
|
state.SetInt(self._node, 'image-pos', self.image_pos)
|
||||||
|
|
||||||
def ProcessFdt(self, fdt):
|
def ProcessFdt(self, fdt):
|
||||||
return True
|
return True
|
||||||
|
@@ -118,3 +118,38 @@ def GetFdts():
|
|||||||
"""
|
"""
|
||||||
yield main_dtb
|
yield main_dtb
|
||||||
|
|
||||||
|
def GetUpdateNodes(node):
|
||||||
|
"""Yield all the nodes that need to be updated in all device trees
|
||||||
|
|
||||||
|
The property referenced by this node is added to any device trees which
|
||||||
|
have the given node. Due to removable of unwanted notes, SPL and TPL may
|
||||||
|
not have this node.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
node: Node object in the main device tree to look up
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
Node objects in each device tree that is in use (U-Boot proper, which
|
||||||
|
is node, SPL and TPL)
|
||||||
|
"""
|
||||||
|
yield node
|
||||||
|
|
||||||
|
def AddZeroProp(node, prop):
|
||||||
|
"""Add a new property to affected device trees with an integer value of 0.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
prop_name: Name of property
|
||||||
|
"""
|
||||||
|
for n in GetUpdateNodes(node):
|
||||||
|
n.AddZeroProp(prop)
|
||||||
|
|
||||||
|
def SetInt(node, prop, value):
|
||||||
|
"""Update an integer property in affected device trees with an integer value
|
||||||
|
|
||||||
|
This is not allowed to change the size of the FDT.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
prop_name: Name of property
|
||||||
|
"""
|
||||||
|
for n in GetUpdateNodes(node):
|
||||||
|
n.SetInt(prop, value)
|
||||||
|
Reference in New Issue
Block a user