diff options
author | Fathi Boudra <fathi.boudra@linaro.org> | 2013-04-04 12:31:47 +0300 |
---|---|---|
committer | Fathi Boudra <fathi.boudra@linaro.org> | 2013-04-04 12:31:47 +0300 |
commit | e465383b0c4b5b9aee6cb5547e173ce15b8a7fdb (patch) | |
tree | 29952240a714407362859ebdce63b5c2db93c848 | |
parent | f2d720ea4972e27c51b447d25c0c771f08a576fc (diff) | |
parent | b56ba8cceeb3a79a75e65b29246a60c55b46caf8 (diff) |
Add Highbank (Calxeda) support
-rw-r--r-- | linaro_image_tools/media_create/boards.py | 55 | ||||
-rw-r--r-- | linaro_image_tools/media_create/partitions.py | 13 | ||||
-rw-r--r-- | linaro_image_tools/media_create/tests/test_media_create.py | 39 |
3 files changed, 89 insertions, 18 deletions
diff --git a/linaro_image_tools/media_create/boards.py b/linaro_image_tools/media_create/boards.py index d578ffa..e0d14ba 100644 --- a/linaro_image_tools/media_create/boards.py +++ b/linaro_image_tools/media_create/boards.py @@ -169,6 +169,8 @@ class BoardConfig(object): self.extra_boot_args_options = None self.fat_size = 32 self.fatload_command = 'fatload' + self.load_interface = 'mmc' + self.bootfs_type = 'vfat' self.fdt_high = '0xffffffff' self.hardwarepack_handler = None self.hwpack_format = None @@ -448,13 +450,17 @@ class BoardConfig(object): :param should_align_boot_part: Whether to align the boot partition too. - This returns a boot vfat partition of type FAT16 - or FAT32, followed by a root partition. + This returns a boot partition of type FAT16 or FAT32 or Linux, + followed by a root partition. """ - if self.fat_size == 32: - partition_type = '0x0C' + + if self.bootfs_type == 'vfat': + if self.fat_size == 32: + partition_type = '0x0C' + else: + partition_type = '0x0E' else: - partition_type = '0x0E' + partition_type = '0x83' # align on sector 63 for compatibility with broken versions of x-loader # unless align_boot_part is set @@ -522,23 +528,26 @@ class BoardConfig(object): replacements = dict( fatload_command=self.fatload_command, uimage_path=self.uimage_path, mmc_option=self.mmc_option, kernel_addr=self.kernel_addr, - initrd_addr=self.initrd_addr, dtb_addr=self.dtb_addr) + initrd_addr=self.initrd_addr, dtb_addr=self.dtb_addr, + load_interface=self.load_interface) + boot_script = ( - ("%(fatload_command)s mmc %(mmc_option)s %(kernel_addr)s " + - "%(uimage_path)suImage; ")) % replacements + ("%(fatload_command)s %(load_interface)s %(mmc_option)s " + "%(kernel_addr)s %(uimage_path)suImage; ")) % replacements if i_img_data is not None: boot_script += ( - ("%(fatload_command)s mmc %(mmc_option)s %(initrd_addr)s " + - "%(uimage_path)suInitrd; ")) % replacements + ("%(fatload_command)s %(load_interface)s %(mmc_option)s " + "%(initrd_addr)s %(uimage_path)suInitrd; ")) % replacements if d_img_data is not None: assert self.dtb_addr is not None, ( "Need a dtb_addr when passing d_img_data") - boot_script += ("%(fatload_command)s mmc %(mmc_option)s " - "%(dtb_addr)s board.dtb; " % replacements) + boot_script += ( + ("%(fatload_command)s %(load_interface)s %(mmc_option)s " + "%(dtb_addr)s board.dtb; ")) % replacements boot_script += (("bootm %(kernel_addr)s")) % replacements if i_img_data is not None: boot_script += ((" %(initrd_addr)s")) % replacements - if d_img_data is not None: + if self.dtb_addr is not None: boot_script += ((" %(dtb_addr)s")) % replacements return boot_script @@ -1317,7 +1326,8 @@ class Mx51Config(Mx5Config): class Mx53Config(Mx5Config): def __init__(self): super(Mx53Config, self).__init__() - self.dtb_addr = '0x71ff0000' + # XXX: Is dtb_addr really needed? + #self.dtb_addr = '0x71ff0000' self.initrd_addr = '0x72000000' self.kernel_addr = '0x70000000' self.kernel_flavors = ['linaro-lt-mx53', 'linaro-lt-mx5'] @@ -1680,6 +1690,22 @@ class ArndaleConfig(SamsungConfig): return bl0_file +class HighBankConfig(BoardConfig): + def __init__(self): + super(HighBankConfig, self).__init__() + self.boot_script = 'boot.scr' + self.bootloader_flavor = 'highbank' + self.kernel_flavors = ['highbank'] + self.serial_tty = 'ttyAMA0' + self.fatload_command = 'ext2load' + self.load_interface = 'scsi' + self.bootfs_type = 'ext2' + self.dtb_addr = '0x00001000' + self.initrd_addr = '0x01000000' + self.kernel_addr = '0x00800000' + self.load_addr = '0x00000000' + + class I386Config(BoardConfig): # define bootloader BOOTLOADER_CMD = 'grub-install' @@ -1751,6 +1777,7 @@ board_configs = { 'efikamx': EfikamxConfig, 'efikasb': EfikasbConfig, 'fastmodel': FastModelConfig, + 'highbank': HighBankConfig, 'i386': I386Config, 'igep': IgepConfig, 'mx51evk': Mx51evkConfig, diff --git a/linaro_image_tools/media_create/partitions.py b/linaro_image_tools/media_create/partitions.py index 1335a85..9f881f5 100644 --- a/linaro_image_tools/media_create/partitions.py +++ b/linaro_image_tools/media_create/partitions.py @@ -164,10 +164,15 @@ def setup_partitions(board_config, media, image_size, bootfs_label, if should_format_bootfs: print "\nFormating boot partition\n" - proc = cmd_runner.run( - ['mkfs.vfat', '-F', str(board_config.fat_size), bootfs, '-n', - bootfs_label], - as_root=True) + mkfs = 'mkfs.%s' % board_config.bootfs_type + if board_config.bootfs_type == 'vfat': + proc = cmd_runner.run( + [mkfs, '-F', str(board_config.fat_size), bootfs, '-n', + bootfs_label], + as_root=True) + else: + proc = cmd_runner.run( + [mkfs, bootfs, '-L', bootfs_label], as_root=True) proc.wait() if should_format_rootfs: diff --git a/linaro_image_tools/media_create/tests/test_media_create.py b/linaro_image_tools/media_create/tests/test_media_create.py index 219770e..48f9740 100644 --- a/linaro_image_tools/media_create/tests/test_media_create.py +++ b/linaro_image_tools/media_create/tests/test_media_create.py @@ -1423,6 +1423,12 @@ class TestBootSteps(TestCaseWithFixtures): 'make_dtb', 'make_boot_script', 'make_boot_ini'] self.assertEqual(expected, self.funcs_calls) + def test_highbank_steps(self): + board_conf = boards.HighBankConfig() + board_conf.hwpack_format = HardwarepackHandler.FORMAT_1 + expected = [] + self.assertEqual(expected, self.funcs_calls) + class TestPopulateRawPartition(TestCaseWithFixtures): @@ -1544,6 +1550,11 @@ class TestPopulateRawPartition(TestCaseWithFixtures): expected = [] self.assertEqual(expected, self.funcs_calls) + def test_highbank_raw(self): + self.populate_raw_partition(boards.HighBankConfig()) + expected = [] + self.assertEqual(expected, self.funcs_calls) + class TestPopulateRawPartitionAndroid(TestCaseWithFixtures): @@ -1843,6 +1854,13 @@ class TestGetSfdiskCmd(TestCase): '1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-', board_conf.get_sfdisk_cmd()) + def test_highbank(self): + board_conf = get_board_config('highbank') + self.set_up_config(board_conf) + self.assertEquals( + '63,106432,0x83,*\n106496,,,-', + board_conf.get_sfdisk_cmd()) + def test_panda_android(self): self.assertEqual( '63,270272,0x0C,*\n270336,1048576,L\n1318912,524288,L\n' @@ -1958,6 +1976,13 @@ class TestGetSfdiskCmdV2(TestCase): '1,8191,0xDA\n8192,106496,0x0C,*\n114688,,,-', board_conf.get_sfdisk_cmd()) + def test_highbank(self): + board_conf = get_board_config('highbank') + board_conf.partition_layout = 'bootfs_rootfs' + self.assertEquals( + '63,106432,0x83,*\n106496,,,-', + board_conf.get_sfdisk_cmd()) + class TestGetBootCmd(TestCase): @@ -2202,6 +2227,20 @@ class TestGetBootCmd(TestCase): 'initrd_high': '0xffffffff'} self.assertEqual(expected, boot_commands) + def test_highbank(self): + board_conf = get_board_config('highbank') + boot_commands = board_conf._get_boot_env( + is_live=False, is_lowmem=False, consoles=[], + rootfs_id="UUID=deadbeef", i_img_data="initrd", d_img_data=None) + expected = { + 'bootargs': 'root=UUID=deadbeef rootwait ro', + 'bootcmd': 'ext2load scsi 0:1 0x00800000 uImage; ' + 'ext2load scsi 0:1 0x01000000 uInitrd; ' + 'bootm 0x00800000 0x01000000 0x00001000', + 'fdt_high': '0xffffffff', + 'initrd_high': '0xffffffff'} + self.assertEqual(expected, boot_commands) + class TestExtraBootCmd(TestCaseWithFixtures): |