Added write support, next operation code 53 27.

svn path=/branches/GSoC_2016/AHCI/; revision=72002
This commit is contained in:
Aman Priyadarshi 2016-07-26 14:15:15 +00:00
parent e51f406055
commit c903cda7aa

View file

@ -849,7 +849,7 @@ AhciHwStartIo (
Srb->SrbStatus = DeviceRequestSense(AdapterExtension, Srb, cdb); Srb->SrbStatus = DeviceRequestSense(AdapterExtension, Srb, cdb);
break; break;
case SCSIOP_READ: case SCSIOP_READ:
//case SCSIOP_WRITE: case SCSIOP_WRITE:
Srb->SrbStatus = DeviceRequestReadWrite(AdapterExtension, Srb, cdb); Srb->SrbStatus = DeviceRequestReadWrite(AdapterExtension, Srb, cdb);
break; break;
default: default:
@ -1726,7 +1726,7 @@ UCHAR DeviceRequestSense (
ModeHeader->ModeDataLength = sizeof(MODE_PARAMETER_HEADER); ModeHeader->ModeDataLength = sizeof(MODE_PARAMETER_HEADER);
ModeHeader->MediumType = 0; ModeHeader->MediumType = 0;
ModeHeader->DeviceSpecificParameter = MODE_DSP_WRITE_PROTECT; ModeHeader->DeviceSpecificParameter = 0;
ModeHeader->BlockDescriptorLength = 0; ModeHeader->BlockDescriptorLength = 0;
if (Cdb->MODE_SENSE.PageCode == MODE_SENSE_CURRENT_VALUES) if (Cdb->MODE_SENSE.PageCode == MODE_SENSE_CURRENT_VALUES)
@ -1776,9 +1776,12 @@ UCHAR DeviceRequestReadWrite (
NT_ASSERT(BytesPerSector > 0); NT_ASSERT(BytesPerSector > 0);
ROUND_UP(DataTransferLength, BytesPerSector); //ROUND_UP(DataTransferLength, BytesPerSector);
SectorCount = DataTransferLength / BytesPerSector; SectorCount = DataTransferLength / BytesPerSector;
Srb->DataTransferLength = SectorCount * BytesPerSector;
StartOffset = AhciGetLba(Cdb, Srb->CdbLength); StartOffset = AhciGetLba(Cdb, Srb->CdbLength);
IsReading = (Cdb->CDB10.OperationCode == SCSIOP_READ); IsReading = (Cdb->CDB10.OperationCode == SCSIOP_READ);
@ -1796,7 +1799,8 @@ UCHAR DeviceRequestReadWrite (
else else
{ {
SrbExtension->Flags |= ATA_FLAGS_DATA_OUT; SrbExtension->Flags |= ATA_FLAGS_DATA_OUT;
NT_ASSERT(FALSE); SrbExtension->CommandReg = IDE_COMMAND_WRITE_DMA;
//NT_ASSERT(FALSE);
} }
SrbExtension->FeaturesLow = 0; SrbExtension->FeaturesLow = 0;