1*bf7fd50bSSimon Glass# 2*bf7fd50bSSimon Glass# Copyright (c) 2016 Google, Inc 3*bf7fd50bSSimon Glass# Written by Simon Glass <sjg@chromium.org> 4*bf7fd50bSSimon Glass# 5*bf7fd50bSSimon Glass# SPDX-License-Identifier: GPL-2.0+ 6*bf7fd50bSSimon Glass# 7*bf7fd50bSSimon Glass# Test for the fdt modules 8*bf7fd50bSSimon Glass 9*bf7fd50bSSimon Glassimport os 10*bf7fd50bSSimon Glassimport sys 11*bf7fd50bSSimon Glassimport tempfile 12*bf7fd50bSSimon Glassimport unittest 13*bf7fd50bSSimon Glass 14*bf7fd50bSSimon Glassfrom fdt_select import FdtScan 15*bf7fd50bSSimon Glassimport fdt_util 16*bf7fd50bSSimon Glassimport tools 17*bf7fd50bSSimon Glass 18*bf7fd50bSSimon Glassclass TestFdt(unittest.TestCase): 19*bf7fd50bSSimon Glass @classmethod 20*bf7fd50bSSimon Glass def setUpClass(self): 21*bf7fd50bSSimon Glass self._binman_dir = os.path.dirname(os.path.realpath(sys.argv[0])) 22*bf7fd50bSSimon Glass self._indir = tempfile.mkdtemp(prefix='binmant.') 23*bf7fd50bSSimon Glass tools.PrepareOutputDir(self._indir, True) 24*bf7fd50bSSimon Glass 25*bf7fd50bSSimon Glass def TestFile(self, fname): 26*bf7fd50bSSimon Glass return os.path.join(self._binman_dir, 'test', fname) 27*bf7fd50bSSimon Glass 28*bf7fd50bSSimon Glass def GetCompiled(self, fname): 29*bf7fd50bSSimon Glass return fdt_util.EnsureCompiled(self.TestFile(fname)) 30*bf7fd50bSSimon Glass 31*bf7fd50bSSimon Glass def _DeleteProp(self, fdt): 32*bf7fd50bSSimon Glass node = fdt.GetNode('/microcode/update@0') 33*bf7fd50bSSimon Glass node.DeleteProp('data') 34*bf7fd50bSSimon Glass 35*bf7fd50bSSimon Glass def testFdtNormal(self): 36*bf7fd50bSSimon Glass fname = self.GetCompiled('34_x86_ucode.dts') 37*bf7fd50bSSimon Glass fdt = FdtScan(fname) 38*bf7fd50bSSimon Glass self._DeleteProp(fdt) 39*bf7fd50bSSimon Glass 40*bf7fd50bSSimon Glass def testFdtFallback(self): 41*bf7fd50bSSimon Glass fname = self.GetCompiled('34_x86_ucode.dts') 42*bf7fd50bSSimon Glass fdt = FdtScan(fname, True) 43*bf7fd50bSSimon Glass fdt.GetProp('/microcode/update@0', 'data') 44*bf7fd50bSSimon Glass self.assertEqual('fred', 45*bf7fd50bSSimon Glass fdt.GetProp('/microcode/update@0', 'none', default='fred')) 46*bf7fd50bSSimon Glass self.assertEqual('12345678 12345679', 47*bf7fd50bSSimon Glass fdt.GetProp('/microcode/update@0', 'data', typespec='x')) 48*bf7fd50bSSimon Glass self._DeleteProp(fdt) 49