xref: /rk3399_rockchip-uboot/tools/binman/fdt_test.py (revision bf7fd50b3ba56b53dc13a681d19c845be903c3e0)
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