mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-06-09 23:36:03 +09:00
![Simon Glass](/assets/img/avatar_default.png)
When creating an entry, check for an expanded version of that entry, then use it instead. This allows, for example use of: u-boot { }; instead of having to write out in full: u-boot { type = "section"; u-boot-nodtb { }; u-boot-dtb { }; }; Add an implementaion of this and associated documentation. Signed-off-by: Simon Glass <sjg@chromium.org>
46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
# SPDX-License-Identifier: GPL-2.0+
|
|
# Copyright 2021 Google LLC
|
|
# Written by Simon Glass <sjg@chromium.org>
|
|
#
|
|
# Entry-type module for expanded U-Boot SPL binary
|
|
#
|
|
|
|
from patman import tout
|
|
|
|
from binman import state
|
|
from binman.etype.blob_phase import Entry_blob_phase
|
|
|
|
class Entry_u_boot_spl_expanded(Entry_blob_phase):
|
|
"""U-Boot SPL flat binary broken out into its component parts
|
|
|
|
Properties / Entry arguments:
|
|
- spl-dtb: Controls whether this entry is selected (set to 'y' or '1' to
|
|
select)
|
|
|
|
This is a section containing the U-Boot binary, BSS padding if needed and a
|
|
devicetree. Using this entry type automatically creates this section, with
|
|
the following entries in it:
|
|
|
|
u-boot-spl-nodtb
|
|
u-boot-spl-bss-pad
|
|
u-boot-dtb
|
|
|
|
Having the devicetree separate allows binman to update it in the final
|
|
image, so that the entries positions are provided to the running U-Boot.
|
|
|
|
This entry is selected based on the value of the 'spl-dtb' entryarg. If
|
|
this is non-empty (and not 'n' or '0') then this expanded entry is selected.
|
|
"""
|
|
def __init__(self, section, etype, node):
|
|
bss_pad = state.GetEntryArgBool('spl-bss-pad')
|
|
super().__init__(section, etype, node, 'u-boot-spl', 'u-boot-spl-dtb',
|
|
bss_pad)
|
|
|
|
@classmethod
|
|
def UseExpanded(cls, node, etype, new_etype):
|
|
val = state.GetEntryArgBool('spl-dtb')
|
|
tout.DoOutput(tout.INFO if val else tout.DETAIL,
|
|
"Node '%s': etype '%s': %s %sselected" %
|
|
(node.path, etype, new_etype, '' if val else 'not '))
|
|
return val
|