uint32_t len;
//uint32_t block, num_blocks;
uint8_t sderr = 0;
+ uint32_t block_size = 512;
data = iotd->iotd_Req.io_Data;
len = iotd->iotd_Req.io_Length;
+ WRITESHORT(PISCSI_CMD_DRVNUM, u->unit_num);
+ READLONG(PISCSI_CMD_BLOCKSIZE, block_size);
+
if (data == 0) {
return IOERR_BADADDRESS;
}
- if (len < PISCSI_BLOCK_SIZE) {
+ if (len < block_size) {
iostd->io_Actual = 0;
return IOERR_BADLENGTH;
}
break;
case TD_FORMAT:
case CMD_WRITE:
- WRITELONG(PISCSI_CMD_ADDR1, (iostd->io_Offset >> 9));
+ WRITELONG(PISCSI_CMD_ADDR1, iostd->io_Offset);
WRITELONG(PISCSI_CMD_ADDR2, len);
WRITELONG(PISCSI_CMD_ADDR3, (uint32_t)data);
- WRITESHORT(PISCSI_CMD_WRITE, u->unit_num);
+ WRITESHORT(PISCSI_CMD_WRITEBYTES, u->unit_num);
break;
case CMD_READ:
- WRITELONG(PISCSI_CMD_ADDR1, (iostd->io_Offset >> 9));
+ WRITELONG(PISCSI_CMD_ADDR1, iostd->io_Offset);
WRITELONG(PISCSI_CMD_ADDR2, len);
WRITELONG(PISCSI_CMD_ADDR3, (uint32_t)data);
- WRITESHORT(PISCSI_CMD_READ, u->unit_num);
+ WRITESHORT(PISCSI_CMD_READBYTES, u->unit_num);
break;
}
uint32_t i, block = 0, blocks = 0, maxblocks = 0;
uint8_t err = 0;
uint8_t write = 0;
+ uint32_t block_size = 512;
+
+ WRITESHORT(PISCSI_CMD_DRVNUM, u->unit_num);
+ READLONG(PISCSI_CMD_BLOCKSIZE, block_size);
debugval(PISCSI_DBG_VAL1, iostd->io_Length);
debugval(PISCSI_DBG_VAL2, scsi->scsi_Command[0]);
WRITESHORT(PISCSI_CMD_DRVNUM, (u->scsi_num));
READLONG(PISCSI_CMD_BLOCKS, blocks);
((uint32_t*)data)[0] = blocks - 1;
- ((uint32_t*)data)[1] = PISCSI_BLOCK_SIZE;
+ ((uint32_t*)data)[1] = block_size;
scsi->scsi_Actual = 8;
err = 0;
(blocks = (maxblocks - 1) & 0xFFFFFF);
*((uint32_t *)&data[4]) = blocks;
- *((uint32_t *)&data[8]) = PISCSI_BLOCK_SIZE;
+ *((uint32_t *)&data[8]) = block_size;
switch (((UWORD)scsi->scsi_Command[2] << 8) | scsi->scsi_Command[3]) {
case 0x0300: { // Format Device Mode
*((uint32_t *)&datext[4]) = 0;
*((uint32_t *)&datext[8]) = 0;
*((uint16_t *)&datext[10]) = u->s;
- *((uint16_t *)&datext[12]) = PISCSI_BLOCK_SIZE;
+ *((uint16_t *)&datext[12]) = block_size;
datext[14] = 0x00;
datext[15] = 0x01;
*((uint32_t *)&datext[16]) = 0;