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