From 1267e45bf887ea7e0619767001ac7ce75be0de37 Mon Sep 17 00:00:00 2001 From: Knud Baastrup Date: Thu, 30 Oct 2014 08:47:27 +0100 Subject: [PATCH] Applied base-0025-Ignore-mailbox-settings-if-corrupted-sii-file Ignore SII specified mailbox settings if they appear to be from a blank EEPROM. --- master/fsm_slave_scan.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/master/fsm_slave_scan.c b/master/fsm_slave_scan.c index 66a7795d..643419c6 100644 --- a/master/fsm_slave_scan.c +++ b/master/fsm_slave_scan.c @@ -776,6 +776,23 @@ void ec_fsm_slave_scan_state_sii_data(ec_fsm_slave_scan_t *fsm " Disabling mailbox communication."); } + // clear mailbox settings if invalid values due to invalid sii file + if ((slave->sii.boot_rx_mailbox_offset == 0xFFFF) || + (slave->sii.boot_tx_mailbox_offset == 0xFFFF) || + (slave->sii.std_rx_mailbox_offset == 0xFFFF) || + (slave->sii.std_tx_mailbox_offset == 0xFFFF)) { + slave->sii.boot_rx_mailbox_offset = 0; + slave->sii.boot_tx_mailbox_offset = 0; + slave->sii.boot_rx_mailbox_size = 0; + slave->sii.boot_tx_mailbox_size = 0; + slave->sii.std_rx_mailbox_offset = 0; + slave->sii.std_tx_mailbox_offset = 0; + slave->sii.std_rx_mailbox_size = 0; + slave->sii.std_tx_mailbox_size = 0; + slave->sii.mailbox_protocols = 0; + EC_SLAVE_ERR(slave, "Unexpected mailbox offset in SII data.\n"); + } + if (slave->sii_nwords == EC_FIRST_SII_CATEGORY_OFFSET) { // sii does not contain category data fsm->state = ec_fsm_slave_scan_state_end;