u-boot-brain/tools/binman/etype/intel_fit_ptr.py
Simon Glass 34861d506c binman: Use super() instead of specifying parent type
It is easier and less error-prone to use super() when the parent type is
needed. Update binman to remove the type names.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2020-07-25 14:46:57 -06:00

42 lines
1.3 KiB
Python

# SPDX-License-Identifier: GPL-2.0+
# Copyright (c) 2016 Google, Inc
# Written by Simon Glass <sjg@chromium.org>
#
# Entry-type module for a pointer to an Intel Firmware Image Table
#
import struct
from binman.etype.blob import Entry_blob
class Entry_intel_fit_ptr(Entry_blob):
"""Intel Firmware Image Table (FIT) pointer
This entry contains a pointer to the FIT. It is required to be at address
0xffffffc0 in the image.
"""
def __init__(self, section, etype, node):
super().__init__(section, etype, node)
if self.HasSibling('intel-fit') is False:
self.Raise("'intel-fit-ptr' section must have an 'intel-fit' sibling")
def _GetContents(self):
fit_pos = self.GetSiblingImagePos('intel-fit')
return struct.pack('<II', fit_pos or 0, 0)
def ObtainContents(self):
self.SetContents(self._GetContents())
return True
def ProcessContents(self):
"""Write an updated version of the FIT pointer to this entry
This is necessary since image_pos is not available when ObtainContents()
is called, since by then the entries have not been packed in the image.
"""
return self.ProcessContentsUpdate(self._GetContents())
def Pack(self, offset):
"""Special pack method to set the offset to the right place"""
return super().Pack(0xffffffc0)