From 0e017ddf9f3f97198452a9593186d7944e6fcd29 Mon Sep 17 00:00:00 2001 From: Sergei Trofimov Date: Mon, 26 Feb 2018 16:23:34 +0000 Subject: [PATCH] module/vexpress: fix reboot for Juno - The autoboot message in the firmware has changed; detect both the old and the new messages. - Depending on where exactly the boot was interrupted, either a "reboot" or a "reset" may be required; so send both. --- devlib/module/vexpress.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/devlib/module/vexpress.py b/devlib/module/vexpress.py index b623d48..94d17a7 100644 --- a/devlib/module/vexpress.py +++ b/devlib/module/vexpress.py @@ -25,7 +25,8 @@ from devlib.utils.uefi import UefiMenu, UefiConfig from devlib.utils.uboot import UbootMenu -AUTOSTART_MESSAGE = 'Press Enter to stop auto boot...' +OLD_AUTOSTART_MESSAGE = 'Press Enter to stop auto boot...' +AUTOSTART_MESSAGE = 'Hit any key to stop autoboot:' POWERUP_MESSAGE = 'Powering up system...' DEFAULT_MCC_PROMPT = 'Cmd>' @@ -136,18 +137,20 @@ class VexpressBootModule(BootModule): def get_through_early_boot(self, tty): self.logger.debug('Establishing initial state...') tty.sendline('') - i = tty.expect([AUTOSTART_MESSAGE, POWERUP_MESSAGE, self.mcc_prompt]) - if i == 2: + i = tty.expect([AUTOSTART_MESSAGE, OLD_AUTOSTART_MESSAGE, POWERUP_MESSAGE, self.mcc_prompt]) + if i == 3: self.logger.debug('Saw MCC prompt.') time.sleep(self.short_delay) tty.sendline('reboot') - elif i == 1: + elif i == 2: self.logger.debug('Saw powering up message (assuming soft reboot).') else: self.logger.debug('Saw auto boot message.') tty.sendline('') time.sleep(self.short_delay) + # could be either depending on where in the boot we are tty.sendline('reboot') + tty.sendline('reset') def get_uefi_menu(self, tty): menu = UefiMenu(tty) @@ -324,7 +327,7 @@ class VersatileExpressFlashModule(FlashModule): baudrate=self.target.platform.baudrate, timeout=self.timeout, init_dtr=0) as tty: - i = tty.expect([self.mcc_prompt, AUTOSTART_MESSAGE]) + i = tty.expect([self.mcc_prompt, AUTOSTART_MESSAGE, OLD_AUTOSTART_MESSAGE]) if i: tty.sendline('') wait_for_vemsd(self.vemsd_mount, tty, self.mcc_prompt, self.short_delay)