Merge lp:~fboudra/linaro-image-tools/add-arndale-board-support into lp:linaro-image-tools/11.11

Proposed by Fathi Boudra
Status: Merged
Approved by: Milo Casagrande
Approved revision: 594
Merged at revision: 595
Proposed branch: lp:~fboudra/linaro-image-tools/add-arndale-board-support
Merge into: lp:linaro-image-tools/11.11
Diff against target: 240 lines (+148/-9)
2 files modified
linaro_image_tools/media_create/boards.py (+32/-9)
linaro_image_tools/media_create/tests/test_media_create.py (+116/-0)
To merge this branch: bzr merge lp:~fboudra/linaro-image-tools/add-arndale-board-support
Reviewer Review Type Date Requested Status
Milo Casagrande (community) Approve
Review via email: mp+141180@code.launchpad.net

Description of the change

Add Arndale board support

To post a comment you must log in.
Revision history for this message
Milo Casagrande (milo) wrote :

Thanks Fathi for working on this! Thanks also for all the tests written!
Everything looks good to me.
+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'linaro_image_tools/media_create/boards.py'
2--- linaro_image_tools/media_create/boards.py 2012-12-12 09:35:49 +0000
3+++ linaro_image_tools/media_create/boards.py 2012-12-23 12:52:22 +0000
4@@ -1452,21 +1452,26 @@
5 chroot_dir, 'usr', 'lib', 'u-boot', cls.bootloader_flavor)
6 old_spl_path = os.path.join(spl_dir, 'v310_mmc_spl.bin')
7 new_spl_path = os.path.join(spl_dir, 'u-boot-mmc-spl.bin')
8- new_new_spl_path = os.path.join(spl_dir, 'origen-spl.bin')
9- samsung_spl_path_4 = os.path.join(spl_dir, 'origen_quad-spl.bin')
10+ spl_path_origen2 = os.path.join(spl_dir, 'origen-spl.bin')
11+ spl_path_origen4 = os.path.join(spl_dir, 'origen_quad-spl.bin')
12+ spl_path_arndale = os.path.join(spl_dir, 'smdk5250-spl.bin')
13
14 spl_file = old_spl_path
15 # The new upstream u-boot filename has changed
16 if not os.path.exists(spl_file):
17 spl_file = new_spl_path
18
19- # The new upstream u-boot filename has changed again
20- if not os.path.exists(spl_file):
21- spl_file = new_new_spl_path
22-
23- # upstream u-boot filename is dependent on board name
24- if not os.path.exists(spl_file):
25- spl_file = samsung_spl_path_4
26+ # upstream u-boot filename for Origen Dual (Exynos 4210)
27+ if not os.path.exists(spl_file):
28+ spl_file = spl_path_origen2
29+
30+ # upstream u-boot filename for Origen Quad (Exynos 4412)
31+ if not os.path.exists(spl_file):
32+ spl_file = spl_path_origen4
33+
34+ # upstream u-boot filename for Arndale (Exynos 5250)
35+ if not os.path.exists(spl_file):
36+ spl_file = spl_path_arndale
37
38 if not os.path.exists(spl_file):
39 # missing SPL loader
40@@ -1554,6 +1559,23 @@
41 samsung_env_start = 1073
42
43
44+class ArndaleConfig(SamsungConfig):
45+ bootloader_flavor = 'arndale'
46+ serial_tty = 'ttySAC2'
47+ _extra_serial_opts = 'console=%s,115200n8'
48+ kernel_addr = '0x40007000'
49+ initrd_addr = '0x42000000'
50+ dtb_addr = '0x41f00000'
51+ load_addr = '0x40008000'
52+ kernel_flavors = ['arndale']
53+ boot_script = 'boot.scr'
54+ mmc_part_offset = 1
55+ mmc_option = '0:2'
56+ samsung_bl1_start = 17
57+ samsung_bl2_start = 49
58+ samsung_env_start = 1073
59+
60+
61 class I386Config(BoardConfig):
62 # define serial
63 serial_tty = 'ttyS0'
64@@ -1623,6 +1645,7 @@
65
66
67 board_configs = {
68+ 'arndale': ArndaleConfig,
69 'beagle': BeagleConfig,
70 'igep': IgepConfig,
71 'panda': PandaConfig,
72
73=== modified file 'linaro_image_tools/media_create/tests/test_media_create.py'
74--- linaro_image_tools/media_create/tests/test_media_create.py 2012-12-12 09:35:49 +0000
75+++ linaro_image_tools/media_create/tests/test_media_create.py 2012-12-23 12:52:22 +0000
76@@ -779,6 +779,26 @@
77 config = boards.OrigenQuadConfig
78
79
80+class TestGetArndaleSPL(TestCaseWithFixtures):
81+ config = boards.ArndaleConfig
82+
83+ def test_no_file_present(self):
84+ tempdir = self.useFixture(CreateTempDirFixture()).get_temp_dir()
85+ self.assertRaises(
86+ AssertionError, self.config._get_samsung_spl, tempdir)
87+
88+ def test_new_file_present(self):
89+ tempdir = self.useFixture(CreateTempDirFixture()).get_temp_dir()
90+ path = _create_uboot_dir(tempdir, self.config.bootloader_flavor)
91+ spl_path = os.path.join(path, 'smdk5250-spl.bin')
92+ open(spl_path, 'w').close()
93+ self.assertEquals(spl_path, self.config._get_samsung_spl(tempdir))
94+
95+
96+class TestGetArndaleUboot(TestGetSMDKUboot):
97+ config = boards.ArndaleConfig
98+
99+
100 class TestCreateToc(TestCaseWithFixtures):
101 ''' Tests boards.SnowballEmmcConfig.create_toc()'''
102
103@@ -1264,6 +1284,27 @@
104 'make_uImage', 'make_uInitrd', 'make_boot_script']
105 self.assertEqual(expected, self.funcs_calls)
106
107+ def test_arndale_steps(self):
108+ def mock_func_creator(name):
109+ return classmethod(
110+ lambda *args, **kwargs: self.funcs_calls.append(name))
111+
112+ self.useFixture(MockSomethingFixture(
113+ linaro_image_tools.media_create.boards.ArndaleConfig,
114+ 'install_samsung_boot_loader',
115+ mock_func_creator('install_samsung_boot_loader')))
116+ self.useFixture(MockSomethingFixture(os.path, 'exists',
117+ lambda file: True))
118+ boards.ArndaleConfig.hardwarepack_handler = (
119+ TestSetMetadata.MockHardwarepackHandler('ahwpack.tar.gz'))
120+ boards.ArndaleConfig.hardwarepack_handler.get_format = (
121+ lambda: '1.0')
122+ self.make_boot_files(boards.ArndaleConfig)
123+ expected = [
124+ 'install_samsung_boot_loader', 'make_flashable_env', '_dd',
125+ 'make_uImage', 'make_uInitrd', 'make_boot_script']
126+ self.assertEqual(expected, self.funcs_calls)
127+
128 def test_ux500_steps(self):
129 self.make_boot_files(boards.Ux500Config)
130 expected = ['make_uImage', 'make_uInitrd', 'make_boot_script']
131@@ -1407,6 +1448,14 @@
132 expected = ['_dd', '_dd', '_dd']
133 self.assertEqual(expected, self.funcs_calls)
134
135+ def test_arndale_raw(self):
136+ self.useFixture(MockSomethingFixture(os.path, 'getsize',
137+ lambda file: 1))
138+
139+ self.populate_raw_partition(boards.ArndaleConfig)
140+ expected = ['_dd', '_dd', '_dd']
141+ self.assertEqual(expected, self.funcs_calls)
142+
143 def test_vexpress_a9_raw(self):
144 self.populate_raw_partition(boards.VexpressA9Config)
145 expected = []
146@@ -1672,6 +1721,11 @@
147 '1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-',
148 board_configs['origen_quad'].get_sfdisk_cmd())
149
150+ def test_arndale(self):
151+ self.assertEquals(
152+ '1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-',
153+ board_configs['arndale'].get_sfdisk_cmd())
154+
155 def test_panda_android(self):
156 self.assertEqual(
157 '63,270272,0x0C,*\n270336,1048576,L\n1318912,524288,L\n'
158@@ -1772,6 +1826,17 @@
159 '1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-',
160 config.get_sfdisk_cmd())
161
162+ def test_arndale(self):
163+ class config(board_configs['arndale']):
164+ partition_layout = 'reserved_bootfs_rootfs'
165+ LOADER_MIN_SIZE_S = (boards.BoardConfig.samsung_bl1_start +
166+ boards.BoardConfig.samsung_bl1_len +
167+ boards.BoardConfig.samsung_bl2_len +
168+ boards.BoardConfig.samsung_env_len)
169+ self.assertEquals(
170+ '1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-',
171+ config.get_sfdisk_cmd())
172+
173
174 class TestGetBootCmd(TestCase):
175
176@@ -2395,6 +2460,36 @@
177 boards.OrigenQuadConfig.samsung_bl2_start)]
178 self.assertEqual(expected, fixture.mock.commands_executed)
179
180+ def test_install_arndale_u_boot(self):
181+ fixture = self._mock_Popen()
182+ bootloader_flavor = boards.ArndaleConfig.bootloader_flavor
183+ self.useFixture(MockSomethingFixture(
184+ boards.ArndaleConfig, '_get_samsung_spl',
185+ classmethod(lambda cls, chroot_dir: "%s/%s/SPL" % (
186+ chroot_dir, bootloader_flavor))))
187+ self.useFixture(MockSomethingFixture(
188+ boards.ArndaleConfig, '_get_samsung_bootloader',
189+ classmethod(lambda cls, chroot_dir: "%s/%s/uboot" % (
190+ chroot_dir, bootloader_flavor))))
191+ boards.ArndaleConfig.hardwarepack_handler = (
192+ TestSetMetadata.MockHardwarepackHandler('ahwpack.tar.gz'))
193+ boards.ArndaleConfig.hardwarepack_handler.get_format = (
194+ lambda: '1.0')
195+ self.useFixture(MockSomethingFixture(os.path, 'getsize',
196+ lambda file: 1))
197+ boards.ArndaleConfig.install_samsung_boot_loader(
198+ boards.ArndaleConfig._get_samsung_spl("chroot_dir"),
199+ boards.ArndaleConfig._get_samsung_bootloader("chroot_dir"),
200+ "boot_disk")
201+ expected = [
202+ '%s dd if=chroot_dir/%s/SPL of=boot_disk bs=512 conv=notrunc '
203+ 'seek=%d' % (sudo_args, bootloader_flavor,
204+ boards.ArndaleConfig.samsung_bl1_start),
205+ '%s dd if=chroot_dir/%s/uboot of=boot_disk bs=512 conv=notrunc '
206+ 'seek=%d' % (sudo_args, bootloader_flavor,
207+ boards.ArndaleConfig.samsung_bl2_start)]
208+ self.assertEqual(expected, fixture.mock.commands_executed)
209+
210 def test_get_plain_boot_script_contents(self):
211 boot_env = {'bootargs': 'mybootargs', 'bootcmd': 'mybootcmd',
212 'initrd_high': '0xffffffff', 'fdt_high': '0xffffffff'}
213@@ -2643,6 +2738,27 @@
214 [('1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-', HEADS,
215 SECTORS, '', self.media.path)], sfdisk_fixture.mock.calls)
216
217+ def test_create_partitions_for_arndale(self):
218+ # For this board we create a one cylinder partition at the beginning.
219+ popen_fixture = self.useFixture(MockCmdRunnerPopenFixture())
220+ sfdisk_fixture = self.useFixture(MockRunSfdiskCommandsFixture())
221+
222+ create_partitions(
223+ board_configs['arndale'], self.media, HEADS, SECTORS, '')
224+
225+ self.assertEqual(
226+ ['%s parted -s %s mklabel msdos' % (sudo_args, self.media.path),
227+ '%s sfdisk -l %s' % (sudo_args, self.media.path),
228+ 'sync',
229+ '%s sfdisk -l %s' % (sudo_args, self.media.path)],
230+ popen_fixture.mock.commands_executed)
231+ # Notice that we create all partitions in a single sfdisk run because
232+ # every time we run sfdisk it actually repartitions the device,
233+ # erasing any partitions created previously.
234+ self.assertEqual(
235+ [('1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-', HEADS,
236+ SECTORS, '', self.media.path)], sfdisk_fixture.mock.calls)
237+
238 def test_create_partitions_for_beagle(self):
239 popen_fixture = self.useFixture(MockCmdRunnerPopenFixture())
240 sfdisk_fixture = self.useFixture(MockRunSfdiskCommandsFixture())

Subscribers

People subscribed via source and target branches