Merge lp:~tusharbehera/linaro-image-tools/origen-quad-support into lp:linaro-image-tools/11.11

Proposed by Tushar Behera
Status: Merged
Approved by: Данило Шеган
Approved revision: 591
Merged at revision: 591
Proposed branch: lp:~tusharbehera/linaro-image-tools/origen-quad-support
Merge into: lp:linaro-image-tools/11.11
Diff against target: 333 lines (+196/-0)
3 files modified
linaro_image_tools/media_create/android_boards.py (+8/-0)
linaro_image_tools/media_create/boards.py (+22/-0)
linaro_image_tools/media_create/tests/test_media_create.py (+166/-0)
To merge this branch: bzr merge lp:~tusharbehera/linaro-image-tools/origen-quad-support
Reviewer Review Type Date Requested Status
Данило Шеган (community) Approve
Review via email: mp+139425@code.launchpad.net

Description of the change

Tested with linaro-android-media-create with a custom built boot.tar.bz2 for Origen Quad board. For testing, the BL1 and SPL binaries are merged to make a single binary. Waiting for approval from Samsung HQ to release BL1 in the same method. Till we get the permission, we can review this patch.

To post a comment you must log in.
Revision history for this message
Данило Шеган (danilo) wrote :

This looks good. Thanks for writing up all the tests. I'll be landing this after I do a few more local tests.

review: Approve
Revision history for this message
Данило Шеган (danilo) wrote :

Hum, I am having problems with Linaro Android 12.10 release: with these changes, my Exynos 4210 won't boot, whereas the pre-created image does boot.

Revision history for this message
Данило Шеган (danilo) wrote :

Hum, it seems this was transient. It boots on my 4th attempt.

Revision history for this message
Milo Casagrande (milo) wrote :

Pinged Tusharb on IRC about merging this branch, this is what he said:

Gwaihir, let's proceed ahead with the merge of the origen-quad patches ...
Gwaihir, for 2012.12 release, we are using the binaries released by Insignal and we would require this patch ...
Gwaihir, although getting BL1 through Insignal repository is a bit tedious, but it is the only solution ATM for 2012.12 OrigenQuad Android release ..

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'linaro_image_tools/media_create/android_boards.py'
--- linaro_image_tools/media_create/android_boards.py 2012-12-06 04:45:51 +0000
+++ linaro_image_tools/media_create/android_boards.py 2012-12-12 10:23:23 +0000
@@ -33,6 +33,7 @@
33from linaro_image_tools.media_create.boards import SnowballEmmcConfig33from linaro_image_tools.media_create.boards import SnowballEmmcConfig
34from linaro_image_tools.media_create.boards import SMDKV310Config34from linaro_image_tools.media_create.boards import SMDKV310Config
35from linaro_image_tools.media_create.boards import OrigenConfig35from linaro_image_tools.media_create.boards import OrigenConfig
36from linaro_image_tools.media_create.boards import OrigenQuadConfig
36from linaro_image_tools.media_create.boards import VexpressConfig37from linaro_image_tools.media_create.boards import VexpressConfig
37from linaro_image_tools.media_create.boards import (38from linaro_image_tools.media_create.boards import (
38 align_up,39 align_up,
@@ -349,6 +350,12 @@
349 dtb_name = None350 dtb_name = None
350351
351352
353class AndroidOrigenQuadConfig(AndroidSamsungConfig, OrigenQuadConfig):
354 _extra_serial_opts = 'console=tty0 console=ttySAC2,115200n8'
355 android_specific_args = 'init=/init androidboot.console=ttySAC2'
356 dtb_name = None
357
358
352class AndroidVexpressConfig(AndroidBoardConfig, VexpressConfig):359class AndroidVexpressConfig(AndroidBoardConfig, VexpressConfig):
353 _extra_serial_opts = 'console=tty0 console=ttyAMA0,38400n8'360 _extra_serial_opts = 'console=tty0 console=ttyAMA0,38400n8'
354 android_specific_args = 'init=/init androidboot.console=ttyAMA0'361 android_specific_args = 'init=/init androidboot.console=ttyAMA0'
@@ -365,6 +372,7 @@
365 'iMX53': AndroidMx53LoCoConfig,372 'iMX53': AndroidMx53LoCoConfig,
366 'mx6qsabrelite': AndroidMx6QSabreliteConfig,373 'mx6qsabrelite': AndroidMx6QSabreliteConfig,
367 'origen': AndroidOrigenConfig,374 'origen': AndroidOrigenConfig,
375 'origen_quad': AndroidOrigenQuadConfig,
368 'vexpress': AndroidVexpressConfig,376 'vexpress': AndroidVexpressConfig,
369 'vexpress-a9': AndroidVexpressConfig,377 'vexpress-a9': AndroidVexpressConfig,
370 }378 }
371379
=== modified file 'linaro_image_tools/media_create/boards.py'
--- linaro_image_tools/media_create/boards.py 2012-12-10 10:49:30 +0000
+++ linaro_image_tools/media_create/boards.py 2012-12-12 10:23:23 +0000
@@ -1453,6 +1453,7 @@
1453 old_spl_path = os.path.join(spl_dir, 'v310_mmc_spl.bin')1453 old_spl_path = os.path.join(spl_dir, 'v310_mmc_spl.bin')
1454 new_spl_path = os.path.join(spl_dir, 'u-boot-mmc-spl.bin')1454 new_spl_path = os.path.join(spl_dir, 'u-boot-mmc-spl.bin')
1455 new_new_spl_path = os.path.join(spl_dir, 'origen-spl.bin')1455 new_new_spl_path = os.path.join(spl_dir, 'origen-spl.bin')
1456 samsung_spl_path_4 = os.path.join(spl_dir, 'origen_quad-spl.bin')
14561457
1457 spl_file = old_spl_path1458 spl_file = old_spl_path
1458 # The new upstream u-boot filename has changed1459 # The new upstream u-boot filename has changed
@@ -1463,6 +1464,10 @@
1463 if not os.path.exists(spl_file):1464 if not os.path.exists(spl_file):
1464 spl_file = new_new_spl_path1465 spl_file = new_new_spl_path
14651466
1467 # upstream u-boot filename is dependent on board name
1468 if not os.path.exists(spl_file):
1469 spl_file = samsung_spl_path_4
1470
1466 if not os.path.exists(spl_file):1471 if not os.path.exists(spl_file):
1467 # missing SPL loader1472 # missing SPL loader
1468 raise AssertionError("Couldn't find the SPL file, tried %s and %s"1473 raise AssertionError("Couldn't find the SPL file, tried %s and %s"
@@ -1533,6 +1538,22 @@
1533 mmc_option = '0:2'1538 mmc_option = '0:2'
15341539
15351540
1541class OrigenQuadConfig(SamsungConfig):
1542 bootloader_flavor = 'origen_quad'
1543 serial_tty = 'ttySAC2'
1544 _extra_serial_opts = 'console=%s,115200n8'
1545 kernel_addr = '0x40007000'
1546 initrd_addr = '0x42000000'
1547 load_addr = '0x40008000'
1548 kernel_flavors = ['origen_quad']
1549 boot_script = 'boot.scr'
1550 mmc_part_offset = 1
1551 mmc_option = '0:2'
1552 samsung_bl1_len = 48
1553 samsung_bl2_start = 49
1554 samsung_env_start = 1073
1555
1556
1536class I386Config(BoardConfig):1557class I386Config(BoardConfig):
1537 # define serial1558 # define serial
1538 serial_tty = 'ttyS0'1559 serial_tty = 'ttyS0'
@@ -1618,6 +1639,7 @@
1618 'overo': OveroConfig,1639 'overo': OveroConfig,
1619 'smdkv310': SMDKV310Config,1640 'smdkv310': SMDKV310Config,
1620 'origen': OrigenConfig,1641 'origen': OrigenConfig,
1642 'origen_quad': OrigenQuadConfig,
1621 'mx6qsabrelite': BoardConfig,1643 'mx6qsabrelite': BoardConfig,
1622 'i386': I386Config,1644 'i386': I386Config,
1623 }1645 }
16241646
=== modified file 'linaro_image_tools/media_create/tests/test_media_create.py'
--- linaro_image_tools/media_create/tests/test_media_create.py 2012-12-10 10:49:30 +0000
+++ linaro_image_tools/media_create/tests/test_media_create.py 2012-12-12 10:23:23 +0000
@@ -759,6 +759,26 @@
759 config = boards.OrigenConfig759 config = boards.OrigenConfig
760760
761761
762class TestGetOrigenQuadSPL(TestCaseWithFixtures):
763 config = boards.OrigenQuadConfig
764
765 def test_no_file_present(self):
766 tempdir = self.useFixture(CreateTempDirFixture()).get_temp_dir()
767 self.assertRaises(
768 AssertionError, self.config._get_samsung_spl, tempdir)
769
770 def test_new_file_present(self):
771 tempdir = self.useFixture(CreateTempDirFixture()).get_temp_dir()
772 path = _create_uboot_dir(tempdir, self.config.bootloader_flavor)
773 spl_path = os.path.join(path, 'origen_quad-spl.bin')
774 open(spl_path, 'w').close()
775 self.assertEquals(spl_path, self.config._get_samsung_spl(tempdir))
776
777
778class TestGetOrigenQuadUboot(TestGetSMDKUboot):
779 config = boards.OrigenQuadConfig
780
781
762class TestCreateToc(TestCaseWithFixtures):782class TestCreateToc(TestCaseWithFixtures):
763 ''' Tests boards.SnowballEmmcConfig.create_toc()'''783 ''' Tests boards.SnowballEmmcConfig.create_toc()'''
764784
@@ -1223,6 +1243,27 @@
1223 'make_uImage', 'make_uInitrd', 'make_boot_script']1243 'make_uImage', 'make_uInitrd', 'make_boot_script']
1224 self.assertEqual(expected, self.funcs_calls)1244 self.assertEqual(expected, self.funcs_calls)
12251245
1246 def test_origen_quad_steps(self):
1247 def mock_func_creator(name):
1248 return classmethod(
1249 lambda *args, **kwargs: self.funcs_calls.append(name))
1250
1251 self.useFixture(MockSomethingFixture(
1252 linaro_image_tools.media_create.boards.OrigenQuadConfig,
1253 'install_samsung_boot_loader',
1254 mock_func_creator('install_samsung_boot_loader')))
1255 self.useFixture(MockSomethingFixture(os.path, 'exists',
1256 lambda file: True))
1257 boards.OrigenQuadConfig.hardwarepack_handler = (
1258 TestSetMetadata.MockHardwarepackHandler('ahwpack.tar.gz'))
1259 boards.OrigenQuadConfig.hardwarepack_handler.get_format = (
1260 lambda: '1.0')
1261 self.make_boot_files(boards.OrigenQuadConfig)
1262 expected = [
1263 'install_samsung_boot_loader', 'make_flashable_env', '_dd',
1264 'make_uImage', 'make_uInitrd', 'make_boot_script']
1265 self.assertEqual(expected, self.funcs_calls)
1266
1226 def test_ux500_steps(self):1267 def test_ux500_steps(self):
1227 self.make_boot_files(boards.Ux500Config)1268 self.make_boot_files(boards.Ux500Config)
1228 expected = ['make_uImage', 'make_uInitrd', 'make_boot_script']1269 expected = ['make_uImage', 'make_uInitrd', 'make_boot_script']
@@ -1358,6 +1399,14 @@
1358 expected = ['_dd', '_dd', '_dd']1399 expected = ['_dd', '_dd', '_dd']
1359 self.assertEqual(expected, self.funcs_calls)1400 self.assertEqual(expected, self.funcs_calls)
13601401
1402 def test_origen_quad_raw(self):
1403 self.useFixture(MockSomethingFixture(os.path, 'getsize',
1404 lambda file: 1))
1405
1406 self.populate_raw_partition(boards.OrigenQuadConfig)
1407 expected = ['_dd', '_dd', '_dd']
1408 self.assertEqual(expected, self.funcs_calls)
1409
1361 def test_vexpress_a9_raw(self):1410 def test_vexpress_a9_raw(self):
1362 self.populate_raw_partition(boards.VexpressA9Config)1411 self.populate_raw_partition(boards.VexpressA9Config)
1363 expected = []1412 expected = []
@@ -1463,6 +1512,24 @@
1463 self.assertEqual(expected_commands, fixture.mock.commands_executed)1512 self.assertEqual(expected_commands, fixture.mock.commands_executed)
1464 self.assertEqual(expected, self.funcs_calls)1513 self.assertEqual(expected, self.funcs_calls)
14651514
1515 def test_origen_quad_raw(self):
1516 fixture = MockCmdRunnerPopenFixture()
1517 self.useFixture(fixture)
1518 expected_commands = [
1519 ('sudo -E dd if=/dev/zero of= bs=512 conv=notrunc count=32 '
1520 'seek=1073'),
1521 ('sudo -E dd if=boot/u-boot-mmc-spl.bin of= bs=512 '
1522 'conv=notrunc seek=1'),
1523 'sudo -E dd if=boot/u-boot.bin of= bs=512 conv=notrunc seek=49']
1524 self.useFixture(MockSomethingFixture(os.path, 'getsize',
1525 lambda file: 1))
1526
1527 self.populate_raw_partition(android_boards.AndroidOrigenQuadConfig)
1528 expected = []
1529 # Test that we dd the files
1530 self.assertEqual(expected_commands, fixture.mock.commands_executed)
1531 self.assertEqual(expected, self.funcs_calls)
1532
1466 def test_vexpress_raw(self):1533 def test_vexpress_raw(self):
1467 self.populate_raw_partition(android_boards.AndroidVexpressConfig)1534 self.populate_raw_partition(android_boards.AndroidVexpressConfig)
1468 expected = []1535 expected = []
@@ -1600,6 +1667,11 @@
1600 '1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-',1667 '1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-',
1601 board_configs['origen'].get_sfdisk_cmd())1668 board_configs['origen'].get_sfdisk_cmd())
16021669
1670 def test_origen_quad(self):
1671 self.assertEquals(
1672 '1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-',
1673 board_configs['origen_quad'].get_sfdisk_cmd())
1674
1603 def test_panda_android(self):1675 def test_panda_android(self):
1604 self.assertEqual(1676 self.assertEqual(
1605 '63,270272,0x0C,*\n270336,1048576,L\n1318912,524288,L\n'1677 '63,270272,0x0C,*\n270336,1048576,L\n1318912,524288,L\n'
@@ -1612,6 +1684,12 @@
1612 '1327104,-,E\n1327104,524288,L\n1851392,1048576,L\n2899968,,,-',1684 '1327104,-,E\n1327104,524288,L\n1851392,1048576,L\n2899968,,,-',
1613 android_boards.AndroidOrigenConfig.get_sfdisk_cmd())1685 android_boards.AndroidOrigenConfig.get_sfdisk_cmd())
16141686
1687 def test_origen_quad_android(self):
1688 self.assertEqual(
1689 '1,8191,0xDA\n8253,270274,0x0C,*\n278528,1048576,L\n'
1690 '1327104,-,E\n1327104,524288,L\n1851392,1048576,L\n2899968,,,-',
1691 android_boards.AndroidOrigenQuadConfig.get_sfdisk_cmd())
1692
1615 def test_snowball_emmc_android(self):1693 def test_snowball_emmc_android(self):
1616 self.assertEqual(1694 self.assertEqual(
1617 '256,7936,0xDA\n8192,262144,0x0C,*\n270336,1048576,L\n'1695 '256,7936,0xDA\n8192,262144,0x0C,*\n270336,1048576,L\n'
@@ -1683,6 +1761,17 @@
1683 '1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-',1761 '1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-',
1684 config.get_sfdisk_cmd())1762 config.get_sfdisk_cmd())
16851763
1764 def test_origen_quad(self):
1765 class config(board_configs['origen_quad']):
1766 partition_layout = 'reserved_bootfs_rootfs'
1767 LOADER_MIN_SIZE_S = (boards.BoardConfig.samsung_bl1_start +
1768 boards.BoardConfig.samsung_bl1_len +
1769 boards.BoardConfig.samsung_bl2_len +
1770 boards.BoardConfig.samsung_env_len)
1771 self.assertEquals(
1772 '1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-',
1773 config.get_sfdisk_cmd())
1774
16861775
1687class TestGetBootCmd(TestCase):1776class TestGetBootCmd(TestCase):
16881777
@@ -1760,6 +1849,20 @@
1760 'initrd_high': '0xffffffff'}1849 'initrd_high': '0xffffffff'}
1761 self.assertEqual(expected, boot_commands)1850 self.assertEqual(expected, boot_commands)
17621851
1852 def test_origen_quad(self):
1853 boot_commands = board_configs['origen_quad']._get_boot_env(
1854 is_live=False, is_lowmem=False, consoles=[],
1855 rootfs_id="UUID=deadbeef", i_img_data="initrd", d_img_data=None)
1856 expected = {
1857 'bootargs': 'console=ttySAC2,115200n8 root=UUID=deadbeef '
1858 'rootwait ro',
1859 'bootcmd': 'fatload mmc 0:2 0x40007000 uImage; '
1860 'fatload mmc 0:2 0x42000000 uInitrd; '
1861 'bootm 0x40007000 0x42000000',
1862 'fdt_high': '0xffffffff',
1863 'initrd_high': '0xffffffff'}
1864 self.assertEqual(expected, boot_commands)
1865
1763 def test_ux500(self):1866 def test_ux500(self):
1764 boot_commands = board_configs['ux500']._get_boot_env(1867 boot_commands = board_configs['ux500']._get_boot_env(
1765 is_live=False, is_lowmem=False, consoles=[],1868 is_live=False, is_lowmem=False, consoles=[],
@@ -2031,6 +2134,18 @@
2031 self.assertBootEnv(2134 self.assertBootEnv(
2032 android_boards.AndroidOrigenConfig, expected)2135 android_boards.AndroidOrigenConfig, expected)
20332136
2137 def test_android_origen_quad(self):
2138 expected = {
2139 'bootargs': 'console=tty0 console=ttySAC2,115200n8 '
2140 'rootwait ro init=/init androidboot.console=ttySAC2',
2141 'bootcmd': 'fatload mmc 0:2 0x40007000 uImage; '
2142 'fatload mmc 0:2 0x42000000 uInitrd; '
2143 'bootm 0x40007000 0x42000000',
2144 'fdt_high': '0xffffffff',
2145 'initrd_high': '0xffffffff'}
2146 self.assertBootEnv(
2147 android_boards.AndroidOrigenQuadConfig, expected)
2148
2034 def test_android_vexpress(self):2149 def test_android_vexpress(self):
2035 expected = {2150 expected = {
2036 'bootargs': 'console=tty0 console=ttyAMA0,38400n8 '2151 'bootargs': 'console=tty0 console=ttyAMA0,38400n8 '
@@ -2250,6 +2365,36 @@
2250 boards.OrigenConfig.samsung_bl2_start)]2365 boards.OrigenConfig.samsung_bl2_start)]
2251 self.assertEqual(expected, fixture.mock.commands_executed)2366 self.assertEqual(expected, fixture.mock.commands_executed)
22522367
2368 def test_install_origen_quad_u_boot(self):
2369 fixture = self._mock_Popen()
2370 bootloader_flavor = boards.OrigenQuadConfig.bootloader_flavor
2371 self.useFixture(MockSomethingFixture(
2372 boards.OrigenQuadConfig, '_get_samsung_spl',
2373 classmethod(lambda cls, chroot_dir: "%s/%s/SPL" % (
2374 chroot_dir, bootloader_flavor))))
2375 self.useFixture(MockSomethingFixture(
2376 boards.OrigenQuadConfig, '_get_samsung_bootloader',
2377 classmethod(lambda cls, chroot_dir: "%s/%s/uboot" % (
2378 chroot_dir, bootloader_flavor))))
2379 boards.OrigenQuadConfig.hardwarepack_handler = (
2380 TestSetMetadata.MockHardwarepackHandler('ahwpack.tar.gz'))
2381 boards.OrigenQuadConfig.hardwarepack_handler.get_format = (
2382 lambda: '1.0')
2383 self.useFixture(MockSomethingFixture(os.path, 'getsize',
2384 lambda file: 1))
2385 boards.OrigenQuadConfig.install_samsung_boot_loader(
2386 boards.OrigenQuadConfig._get_samsung_spl("chroot_dir"),
2387 boards.OrigenQuadConfig._get_samsung_bootloader("chroot_dir"),
2388 "boot_disk")
2389 expected = [
2390 '%s dd if=chroot_dir/%s/SPL of=boot_disk bs=512 conv=notrunc '
2391 'seek=%d' % (sudo_args, bootloader_flavor,
2392 boards.OrigenQuadConfig.samsung_bl1_start),
2393 '%s dd if=chroot_dir/%s/uboot of=boot_disk bs=512 conv=notrunc '
2394 'seek=%d' % (sudo_args, bootloader_flavor,
2395 boards.OrigenQuadConfig.samsung_bl2_start)]
2396 self.assertEqual(expected, fixture.mock.commands_executed)
2397
2253 def test_get_plain_boot_script_contents(self):2398 def test_get_plain_boot_script_contents(self):
2254 boot_env = {'bootargs': 'mybootargs', 'bootcmd': 'mybootcmd',2399 boot_env = {'bootargs': 'mybootargs', 'bootcmd': 'mybootcmd',
2255 'initrd_high': '0xffffffff', 'fdt_high': '0xffffffff'}2400 'initrd_high': '0xffffffff', 'fdt_high': '0xffffffff'}
@@ -2477,6 +2622,27 @@
2477 [('1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-', HEADS,2622 [('1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-', HEADS,
2478 SECTORS, '', self.media.path)], sfdisk_fixture.mock.calls)2623 SECTORS, '', self.media.path)], sfdisk_fixture.mock.calls)
24792624
2625 def test_create_partitions_for_origen_quad(self):
2626 # For this board we create a one cylinder partition at the beginning.
2627 popen_fixture = self.useFixture(MockCmdRunnerPopenFixture())
2628 sfdisk_fixture = self.useFixture(MockRunSfdiskCommandsFixture())
2629
2630 create_partitions(
2631 board_configs['origen_quad'], self.media, HEADS, SECTORS, '')
2632
2633 self.assertEqual(
2634 ['%s parted -s %s mklabel msdos' % (sudo_args, self.media.path),
2635 '%s sfdisk -l %s' % (sudo_args, self.media.path),
2636 'sync',
2637 '%s sfdisk -l %s' % (sudo_args, self.media.path)],
2638 popen_fixture.mock.commands_executed)
2639 # Notice that we create all partitions in a single sfdisk run because
2640 # every time we run sfdisk it actually repartitions the device,
2641 # erasing any partitions created previously.
2642 self.assertEqual(
2643 [('1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-', HEADS,
2644 SECTORS, '', self.media.path)], sfdisk_fixture.mock.calls)
2645
2480 def test_create_partitions_for_beagle(self):2646 def test_create_partitions_for_beagle(self):
2481 popen_fixture = self.useFixture(MockCmdRunnerPopenFixture())2647 popen_fixture = self.useFixture(MockCmdRunnerPopenFixture())
2482 sfdisk_fixture = self.useFixture(MockRunSfdiskCommandsFixture())2648 sfdisk_fixture = self.useFixture(MockRunSfdiskCommandsFixture())

Subscribers

People subscribed via source and target branches