Lines Matching defs:pCmd
107 static void HPTLIBAPI fOsCommandDone(_VBUS_ARG PCommand pCmd);
114 static void handleEdmaError(_VBUS_ARG PCommand pCmd);
124 static int HPTLIBAPI fOsBuildSgl(_VBUS_ARG PCommand pCmd, FPSCAT_GATH pSg,
200 handleEdmaError(_VBUS_ARG PCommand pCmd)
202 PDevice pDevice = &pCmd->pVDevice->u.disk;
207 pCmd->Result = RETURN_BAD_DEVICE;
208 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
212 if (pCmd->RetryCount++>5) {
215 failDevice(pCmd->pVDevice);
216 pCmd->Result = RETURN_IDE_ERROR;
217 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
228 fDeviceSendCommand(_VBUS_P pCmd);
1649 PCommand pCmd = (PCommand) commandId;
1650 _VBUS_INST(pCmd->pVDevice->pVBus)
1652 if (pCmd->uScratch.sata_param.prdAddr)
1653 FreePRDTable(pMvSataAdapter->IALData,pCmd->uScratch.sata_param.prdAddr);
1658 pCmd->Result = RETURN_SUCCESS;
1661 pCmd->Result = RETURN_BUS_RESET;
1680 pCmd->uScratch.sata_param.responseFlags = responseFlags;
1681 pCmd->uScratch.sata_param.bIdeStatus = registerStruct->statusRegister;
1682 pCmd->uScratch.sata_param.errorRegister = registerStruct->errorRegister;
1683 pCmd->pVDevice->u.disk.QueueLength--;
1684 CallAfterReturn(_VBUS_P (DPC_PROC)handleEdmaError,pCmd);
1692 if (pCmd->uCmd.Ide.Command == IDE_COMMAND_VERIFY && pCmd->uScratch.sata_param.cmd_priv > 1) {
1693 pCmd->uScratch.sata_param.cmd_priv --;
1696 pCmd->pVDevice->u.disk.QueueLength--;
1697 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
1702 fDeviceSendCommand(_VBUS_ARG PCommand pCmd)
1707 PVDevice pVDevice = pCmd->pVDevice;
1709 LBA_T Lba = pCmd->uCmd.Ide.Lba;
1710 USHORT nSector = pCmd->uCmd.Ide.nSectors;
1725 pCmd->Result = RETURN_BAD_DEVICE;
1726 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
1730 pDevice->HeadPosition = pCmd->uCmd.Ide.Lba + pCmd->uCmd.Ide.nSectors;
1739 pCmd->Result = RETURN_INVALID_REQUEST;
1740 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
1751 switch (pCmd->uCmd.Ide.Command)
1764 pUdmaParams->commandId = (MV_VOID_PTR )pCmd;
1765 if(pCmd->uCmd.Ide.Command == IDE_COMMAND_READ)
1770 if (pCmd->pSgTable && pCmd->cf_physical_sg) {
1771 FPSCAT_GATH sg1=tmpSg, sg2=pCmd->pSgTable;
1775 if (!pCmd->pfnBuildSgl || !pCmd->pfnBuildSgl(_VBUS_P pCmd, tmpSg, 0)) {
1780 if (pCmd->pSgTable && pCmd->cf_physical_sg==0) {
1781 FPSCAT_GATH sg1=tmpSg, sg2=pCmd->pSgTable;
1785 if (!pCmd->pfnBuildSgl || !pCmd->pfnBuildSgl(_VBUS_P pCmd, tmpSg, 1)) {
1786 pCmd->Result = RETURN_NEED_LOGICAL_SG;
1795 pCmd->Result = RETURN_INVALID_REQUEST;
1799 (pCmd->cf_data_out)?MV_NON_UDMA_PROTOCOL_PIO_DATA_OUT:MV_NON_UDMA_PROTOCOL_PIO_DATA_IN,
1809 (MV_U8)(is48bit ? (pCmd->cf_data_in?IDE_COMMAND_READ_EXT:IDE_COMMAND_WRITE_EXT):pCmd->uCmd.Ide.Command)
1812 pCmd->Result = RETURN_IDE_ERROR;
1819 pCmd->Result = RETURN_SUCCESS;
1822 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
1830 pCmd->Result = RETURN_DEVICE_BUSY;
1831 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
1850 pCmd->uScratch.sata_param.prdAddr = (PVOID)pPRDTable;
1862 pCmd->Result = RETURN_IDE_ERROR;
1869 pCmd->Result = RETURN_IDE_ERROR;
1875 pCmd->Result = RETURN_DEVICE_BUSY;
1881 pCmd->Result = RETURN_IDE_ERROR;
1886 pCmd->Result = RETURN_IDE_ERROR;
1890 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
1899 pNoUdmaParams->commandId = (MV_VOID_PTR)pCmd;
1904 pCmd->uScratch.sata_param.cmd_priv = 1;
1938 pCmd->Result = RETURN_INVALID_REQUEST;
1939 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
2500 int HPTLIBAPI fOsBuildSgl(_VBUS_ARG PCommand pCmd, FPSCAT_GATH pSg, int logical)
2502 union ccb *ccb = (union ccb *)pCmd->pOrgCommand;
2611 PCommand pCmd = (PCommand)arg;
2612 union ccb *ccb = pCmd->pOrgCommand;
2617 FPSCAT_GATH psg = pCmd->pSgTable;
2621 HPT_ASSERT(pCmd->cf_physical_sg);
2637 if (pCmd->cf_data_in) {
2641 else if (pCmd->cf_data_out) {
2648 pVDev->pfnSendCommand(_VBUS_P pCmd);
2752 PCommand pCmd = AllocateCommand(_VBUS_P0);
2754 HPT_ASSERT(pCmd);
2775 pCmd->pOrgCommand = ccb;
2776 pCmd->pVDevice = pVDev;
2777 pCmd->pfnCompletion = fOsCommandDone;
2778 pCmd->pfnBuildSgl = fOsBuildSgl;
2779 pCmd->pSgTable = pmap->psg;
2786 pCmd->uCmd.Ide.Lba = ((ULONG)Cdb[1] << 16) | ((ULONG)Cdb[2] << 8) | (ULONG)Cdb[3];
2787 pCmd->uCmd.Ide.nSectors = (USHORT) Cdb[4];
2792 pCmd->uCmd.Ide.Lba =
2801 pCmd->uCmd.Ide.nSectors = (USHORT)Cdb[12] << 8 | (USHORT)Cdb[13];
2805 pCmd->uCmd.Ide.Lba = (ULONG)Cdb[5] | ((ULONG)Cdb[4] << 8) | ((ULONG)Cdb[3] << 16) | ((ULONG)Cdb[2] << 24);
2806 pCmd->uCmd.Ide.nSectors = (USHORT) Cdb[8] | ((USHORT)Cdb[7]<<8);
2815 pCmd->uCmd.Ide.Command = IDE_COMMAND_READ;
2816 pCmd->cf_data_in = 1;
2822 pCmd->uCmd.Ide.Command = IDE_COMMAND_WRITE;
2823 pCmd->cf_data_out = 1;
2827 pCmd->uCmd.Ide.Command = IDE_COMMAND_VERIFY;
2831 pCmd->cf_physical_sg = 1;
2836 pCmd, BUS_DMA_WAITOK
2841 FreeCommand(_VBUS_P pCmd);
2863 fOsCommandDone(_VBUS_ARG PCommand pCmd)
2865 union ccb *ccb = pCmd->pOrgCommand;
2869 KdPrint(("fOsCommandDone(pcmd=%p, result=%d)\n", pCmd, pCmd->Result));
2873 switch(pCmd->Result) {
2897 if (pCmd->cf_data_in) {
2900 else if (pCmd->cf_data_out) {
2906 FreeCommand(_VBUS_P pCmd);