344 if (master->debug_level) |
344 if (master->debug_level) |
345 EC_DBG("Writing EEPROM data to slave %i...\n", |
345 EC_DBG("Writing EEPROM data to slave %i...\n", |
346 slave->ring_position); |
346 slave->ring_position); |
347 fsm->eeprom_request = request; |
347 fsm->eeprom_request = request; |
348 fsm->eeprom_index = 0; |
348 fsm->eeprom_index = 0; |
349 ec_fsm_sii_write(&fsm->fsm_sii, request->slave, request->offset, |
349 ec_fsm_sii_write(&fsm->fsm_sii, request->slave, request->word_offset, |
350 request->words, EC_FSM_SII_NODE); |
350 request->data, EC_FSM_SII_NODE); |
351 fsm->state = ec_fsm_master_state_write_eeprom; |
351 fsm->state = ec_fsm_master_state_write_eeprom; |
352 fsm->state(fsm); // execute immediately |
352 fsm->state(fsm); // execute immediately |
353 return 1; |
353 return 1; |
354 } |
354 } |
355 |
355 |
969 fsm->state = ec_fsm_master_state_error; |
969 fsm->state = ec_fsm_master_state_error; |
970 return; |
970 return; |
971 } |
971 } |
972 |
972 |
973 fsm->eeprom_index++; |
973 fsm->eeprom_index++; |
974 if (fsm->eeprom_index < request->size) { |
974 if (fsm->eeprom_index < request->word_size) { |
975 ec_fsm_sii_write(&fsm->fsm_sii, slave, |
975 ec_fsm_sii_write(&fsm->fsm_sii, slave, |
976 request->offset + fsm->eeprom_index, |
976 request->word_offset + fsm->eeprom_index, |
977 request->words + fsm->eeprom_index, |
977 request->data + fsm->eeprom_index * 2, |
978 EC_FSM_SII_NODE); |
978 EC_FSM_SII_NODE); |
979 ec_fsm_sii_exec(&fsm->fsm_sii); // execute immediately |
979 ec_fsm_sii_exec(&fsm->fsm_sii); // execute immediately |
980 return; |
980 return; |
981 } |
981 } |
982 |
982 |
983 // finished writing EEPROM |
983 // finished writing EEPROM |
984 if (master->debug_level) |
984 if (master->debug_level) |
985 EC_DBG("Finished writing %u words of EEPROM data to slave %u.\n", |
985 EC_DBG("Finished writing %u words of EEPROM data to slave %u.\n", |
986 request->size, slave->ring_position); |
986 request->word_size, slave->ring_position); |
987 request->state = EC_REQUEST_COMPLETE; |
987 request->state = EC_REQUEST_COMPLETE; |
988 wake_up(&master->eeprom_queue); |
988 wake_up(&master->eeprom_queue); |
989 |
989 |
990 // TODO: Evaluate new EEPROM contents! |
990 // TODO: Evaluate new EEPROM contents! |
991 |
991 |