master/fsm_slave.c
changeset 771 9946a675f86e
parent 758 8fa6f825eb7d
child 792 3778920f61e4
equal deleted inserted replaced
770:efa5af306318 771:9946a675f86e
   406         off_t next_offset = 2UL + fsm->sii_offset + cat_size;
   406         off_t next_offset = 2UL + fsm->sii_offset + cat_size;
   407         if (next_offset >= EC_MAX_EEPROM_SIZE) {
   407         if (next_offset >= EC_MAX_EEPROM_SIZE) {
   408             EC_WARN("EEPROM size of slave %i exceeds"
   408             EC_WARN("EEPROM size of slave %i exceeds"
   409                     " %u words (0xffff limiter missing?).\n",
   409                     " %u words (0xffff limiter missing?).\n",
   410                     slave->ring_position, EC_MAX_EEPROM_SIZE);
   410                     slave->ring_position, EC_MAX_EEPROM_SIZE);
       
   411             // cut off category data...
   411             slave->eeprom_size = EC_FIRST_EEPROM_CATEGORY_OFFSET * 2;
   412             slave->eeprom_size = EC_FIRST_EEPROM_CATEGORY_OFFSET * 2;
   412             goto alloc_eeprom;
   413             goto alloc_eeprom;
   413         }
   414         }
   414         fsm->sii_offset = next_offset;
   415         fsm->sii_offset = next_offset;
   415         ec_fsm_sii_read(&fsm->fsm_sii, slave, fsm->sii_offset,
   416         ec_fsm_sii_read(&fsm->fsm_sii, slave, fsm->sii_offset,
   506         EC_READ_U16(slave->eeprom_data + 2 * 0x001A);
   507         EC_READ_U16(slave->eeprom_data + 2 * 0x001A);
   507     slave->sii_tx_mailbox_size =
   508     slave->sii_tx_mailbox_size =
   508         EC_READ_U16(slave->eeprom_data + 2 * 0x001B);
   509         EC_READ_U16(slave->eeprom_data + 2 * 0x001B);
   509     slave->sii_mailbox_protocols =
   510     slave->sii_mailbox_protocols =
   510         EC_READ_U16(slave->eeprom_data + 2 * 0x001C);
   511         EC_READ_U16(slave->eeprom_data + 2 * 0x001C);
       
   512 
       
   513     if (eeprom_word_size == EC_FIRST_EEPROM_CATEGORY_OFFSET) {
       
   514         // eeprom does not contain category data
       
   515         fsm->state = ec_fsm_slave_state_end;
       
   516         return;
       
   517     }
   511 
   518 
   512     if (eeprom_word_size < EC_FIRST_EEPROM_CATEGORY_OFFSET + 1) {
   519     if (eeprom_word_size < EC_FIRST_EEPROM_CATEGORY_OFFSET + 1) {
   513         EC_ERR("Unexpected end of EEPROM data in slave %u:"
   520         EC_ERR("Unexpected end of EEPROM data in slave %u:"
   514                 " First category header missing.\n",
   521                 " First category header missing.\n",
   515                 slave->ring_position);
   522                 slave->ring_position);