diff -r a1a6d7719f97 -r 7d9fb723fc4b master/fsm_soe.c --- a/master/fsm_soe.c Tue Jul 13 13:52:59 2010 +0200 +++ b/master/fsm_soe.c Tue Jul 20 10:52:31 2010 +0200 @@ -201,7 +201,8 @@ ec_soe_request_t *request = fsm->request; uint8_t *data; - EC_SLAVE_DBG(slave, 1, "Reading IDN 0x%04X.\n", request->idn); + EC_SLAVE_DBG(slave, 1, "Reading IDN 0x%04X of drive %u.\n", request->idn, + request->drive_no); if (!(slave->sii.mailbox_protocols & EC_MBOX_SOE)) { EC_SLAVE_ERR(slave, "Slave does not support SoE!\n"); @@ -218,7 +219,7 @@ return; } - EC_WRITE_U8(data, OPCODE_READ_REQUEST); + EC_WRITE_U8(data, OPCODE_READ_REQUEST | (request->drive_no & 0x07) << 5); EC_WRITE_U8(data + 1, 1 << 6); // request value EC_WRITE_U16(data + 2, request->idn); @@ -492,7 +493,8 @@ return; } - EC_WRITE_U8(data, OPCODE_WRITE_REQUEST | incomplete << 3); + EC_WRITE_U8(data, OPCODE_WRITE_REQUEST | incomplete << 3 | + (req->drive_no & 0x07) << 5); EC_WRITE_U8(data + 1, 1 << 6); // only value included EC_WRITE_U16(data + 2, incomplete ? fragments_left : req->idn); memcpy(data + 4, req->data + fsm->offset, fragment_size); @@ -517,8 +519,8 @@ ec_slave_t *slave = fsm->slave; ec_soe_request_t *req = fsm->request; - EC_SLAVE_DBG(slave, 1, "Writing IDN 0x%04X (%zu byte).\n", - req->idn, req->data_size); + EC_SLAVE_DBG(slave, 1, "Writing IDN 0x%04X of drive %u (%zu byte).\n", + req->idn, req->drive_no, req->data_size); if (!(slave->sii.mailbox_protocols & EC_MBOX_SOE)) { EC_SLAVE_ERR(slave, "Slave does not support SoE!\n");