Lines Matching defs:pCmd

110 static void HPTLIBAPI fOsCommandDone(_VBUS_ARG PCommand pCmd);
117 static void handleEdmaError(_VBUS_ARG PCommand pCmd);
127 static int HPTLIBAPI fOsBuildSgl(_VBUS_ARG PCommand pCmd, FPSCAT_GATH pSg,
203 handleEdmaError(_VBUS_ARG PCommand pCmd)
205 PDevice pDevice = &pCmd->pVDevice->u.disk;
210 pCmd->Result = RETURN_BAD_DEVICE;
211 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
215 if (pCmd->RetryCount++>5) {
218 failDevice(pCmd->pVDevice);
219 pCmd->Result = RETURN_IDE_ERROR;
220 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
231 fDeviceSendCommand(_VBUS_P pCmd);
1652 PCommand pCmd = (PCommand) commandId;
1653 _VBUS_INST(pCmd->pVDevice->pVBus)
1655 if (pCmd->uScratch.sata_param.prdAddr)
1656 FreePRDTable(pMvSataAdapter->IALData,pCmd->uScratch.sata_param.prdAddr);
1661 pCmd->Result = RETURN_SUCCESS;
1664 pCmd->Result = RETURN_BUS_RESET;
1683 pCmd->uScratch.sata_param.responseFlags = responseFlags;
1684 pCmd->uScratch.sata_param.bIdeStatus = registerStruct->statusRegister;
1685 pCmd->uScratch.sata_param.errorRegister = registerStruct->errorRegister;
1686 pCmd->pVDevice->u.disk.QueueLength--;
1687 CallAfterReturn(_VBUS_P (DPC_PROC)handleEdmaError,pCmd);
1695 if (pCmd->uCmd.Ide.Command == IDE_COMMAND_VERIFY && pCmd->uScratch.sata_param.cmd_priv > 1) {
1696 pCmd->uScratch.sata_param.cmd_priv --;
1699 pCmd->pVDevice->u.disk.QueueLength--;
1700 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
1705 fDeviceSendCommand(_VBUS_ARG PCommand pCmd)
1710 PVDevice pVDevice = pCmd->pVDevice;
1712 LBA_T Lba = pCmd->uCmd.Ide.Lba;
1713 USHORT nSector = pCmd->uCmd.Ide.nSectors;
1728 pCmd->Result = RETURN_BAD_DEVICE;
1729 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
1733 pDevice->HeadPosition = pCmd->uCmd.Ide.Lba + pCmd->uCmd.Ide.nSectors;
1742 pCmd->Result = RETURN_INVALID_REQUEST;
1743 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
1754 switch (pCmd->uCmd.Ide.Command)
1767 pUdmaParams->commandId = (MV_VOID_PTR )pCmd;
1768 if(pCmd->uCmd.Ide.Command == IDE_COMMAND_READ)
1773 if (pCmd->pSgTable && pCmd->cf_physical_sg) {
1774 FPSCAT_GATH sg1=tmpSg, sg2=pCmd->pSgTable;
1778 if (!pCmd->pfnBuildSgl || !pCmd->pfnBuildSgl(_VBUS_P pCmd, tmpSg, 0)) {
1783 if (pCmd->pSgTable && pCmd->cf_physical_sg==0) {
1784 FPSCAT_GATH sg1=tmpSg, sg2=pCmd->pSgTable;
1788 if (!pCmd->pfnBuildSgl || !pCmd->pfnBuildSgl(_VBUS_P pCmd, tmpSg, 1)) {
1789 pCmd->Result = RETURN_NEED_LOGICAL_SG;
1798 pCmd->Result = RETURN_INVALID_REQUEST;
1802 (pCmd->cf_data_out)?MV_NON_UDMA_PROTOCOL_PIO_DATA_OUT:MV_NON_UDMA_PROTOCOL_PIO_DATA_IN,
1812 (MV_U8)(is48bit ? (pCmd->cf_data_in?IDE_COMMAND_READ_EXT:IDE_COMMAND_WRITE_EXT):pCmd->uCmd.Ide.Command)
1815 pCmd->Result = RETURN_IDE_ERROR;
1822 pCmd->Result = RETURN_SUCCESS;
1825 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
1833 pCmd->Result = RETURN_DEVICE_BUSY;
1834 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
1853 pCmd->uScratch.sata_param.prdAddr = (PVOID)pPRDTable;
1865 pCmd->Result = RETURN_IDE_ERROR;
1872 pCmd->Result = RETURN_IDE_ERROR;
1878 pCmd->Result = RETURN_DEVICE_BUSY;
1884 pCmd->Result = RETURN_IDE_ERROR;
1889 pCmd->Result = RETURN_IDE_ERROR;
1893 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
1902 pNoUdmaParams->commandId = (MV_VOID_PTR)pCmd;
1907 pCmd->uScratch.sata_param.cmd_priv = 1;
1941 pCmd->Result = RETURN_INVALID_REQUEST;
1942 CallAfterReturn(_VBUS_P (DPC_PROC)pCmd->pfnCompletion, pCmd);
2517 int HPTLIBAPI fOsBuildSgl(_VBUS_ARG PCommand pCmd, FPSCAT_GATH pSg, int logical)
2519 union ccb *ccb = (union ccb *)pCmd->pOrgCommand;
2628 PCommand pCmd = (PCommand)arg;
2629 union ccb *ccb = pCmd->pOrgCommand;
2634 FPSCAT_GATH psg = pCmd->pSgTable;
2638 HPT_ASSERT(pCmd->cf_physical_sg);
2654 if (pCmd->cf_data_in) {
2658 else if (pCmd->cf_data_out) {
2665 pVDev->pfnSendCommand(_VBUS_P pCmd);
2769 PCommand pCmd = AllocateCommand(_VBUS_P0);
2771 HPT_ASSERT(pCmd);
2792 pCmd->pOrgCommand = ccb;
2793 pCmd->pVDevice = pVDev;
2794 pCmd->pfnCompletion = fOsCommandDone;
2795 pCmd->pfnBuildSgl = fOsBuildSgl;
2796 pCmd->pSgTable = pmap->psg;
2803 pCmd->uCmd.Ide.Lba = ((ULONG)Cdb[1] << 16) | ((ULONG)Cdb[2] << 8) | (ULONG)Cdb[3];
2804 pCmd->uCmd.Ide.nSectors = (USHORT) Cdb[4];
2809 pCmd->uCmd.Ide.Lba =
2818 pCmd->uCmd.Ide.nSectors = (USHORT)Cdb[12] << 8 | (USHORT)Cdb[13];
2822 pCmd->uCmd.Ide.Lba = (ULONG)Cdb[5] | ((ULONG)Cdb[4] << 8) | ((ULONG)Cdb[3] << 16) | ((ULONG)Cdb[2] << 24);
2823 pCmd->uCmd.Ide.nSectors = (USHORT) Cdb[8] | ((USHORT)Cdb[7]<<8);
2832 pCmd->uCmd.Ide.Command = IDE_COMMAND_READ;
2833 pCmd->cf_data_in = 1;
2839 pCmd->uCmd.Ide.Command = IDE_COMMAND_WRITE;
2840 pCmd->cf_data_out = 1;
2844 pCmd->uCmd.Ide.Command = IDE_COMMAND_VERIFY;
2848 pCmd->cf_physical_sg = 1;
2853 pCmd, BUS_DMA_WAITOK
2858 FreeCommand(_VBUS_P pCmd);
2880 fOsCommandDone(_VBUS_ARG PCommand pCmd)
2882 union ccb *ccb = pCmd->pOrgCommand;
2886 KdPrint(("fOsCommandDone(pcmd=%p, result=%d)\n", pCmd, pCmd->Result));
2890 switch(pCmd->Result) {
2914 if (pCmd->cf_data_in) {
2917 else if (pCmd->cf_data_out) {
2923 FreeCommand(_VBUS_P pCmd);