Commit e035b590 authored by Elena Ufimtseva's avatar Elena Ufimtseva Committed by Greg Kroah-Hartman

Staging: ced1401: Fixes 'open brace should be on the previous line'.

Fixes checkpatch warnings 'open brace should be on the previous line'.
Signed-off-by: default avatarElena Ufimtseva <ufimtseva@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d9f8374b
...@@ -118,8 +118,7 @@ int SendString(DEVICE_EXTENSION *pdx, const char __user *pData, ...@@ -118,8 +118,7 @@ int SendString(DEVICE_EXTENSION *pdx, const char __user *pData,
buffer[n] = 0; /* terminate for debug purposes */ buffer[n] = 0; /* terminate for debug purposes */
mutex_lock(&pdx->io_mutex); /* Protect disconnect from new i/o */ mutex_lock(&pdx->io_mutex); /* Protect disconnect from new i/o */
if (n > 0) /* do nothing if nowt to do! */ if (n > 0) { /* do nothing if nowt to do! */
{
dev_dbg(&pdx->interface->dev, "%s n=%d>%s<", __func__, n, dev_dbg(&pdx->interface->dev, "%s n=%d>%s<", __func__, n,
buffer); buffer);
iReturn = PutChars(pdx, buffer, n); iReturn = PutChars(pdx, buffer, n);
...@@ -198,8 +197,7 @@ int Get1401State(DEVICE_EXTENSION *pdx, __u32 *state, __u32 *error) ...@@ -198,8 +197,7 @@ int Get1401State(DEVICE_EXTENSION *pdx, __u32 *state, __u32 *error)
*error = pdx->statBuf[1]; *error = pdx->statBuf[1];
nDevice = pdx->udev->descriptor.bcdDevice >> 8; /* 1401 type code value */ nDevice = pdx->udev->descriptor.bcdDevice >> 8; /* 1401 type code value */
switch (nDevice) /* so we can clean up current state */ switch (nDevice) { /* so we can clean up current state */
{
case 0: case 0:
pdx->sCurrentState = U14ERR_U1401; pdx->sCurrentState = U14ERR_U1401;
break; break;
...@@ -232,8 +230,7 @@ int ReadWrite_Cancel(DEVICE_EXTENSION *pdx) ...@@ -232,8 +230,7 @@ int ReadWrite_Cancel(DEVICE_EXTENSION *pdx)
/* We can fill this in when we know how we will implement the staged transfer stuff */ /* We can fill this in when we know how we will implement the staged transfer stuff */
spin_lock_irq(&pdx->stagedLock); spin_lock_irq(&pdx->stagedLock);
if (pdx->bStagedUrbPending) /* anything to be cancelled? May need more... */ if (pdx->bStagedUrbPending) { /* anything to be cancelled? May need more... */
{
dev_info(&pdx->interface - dev, dev_info(&pdx->interface - dev,
"ReadWrite_Cancel about to cancel Urb"); "ReadWrite_Cancel about to cancel Urb");
/* Clear the staging done flag */ /* Clear the staging done flag */
...@@ -321,20 +318,17 @@ bool Is1401(DEVICE_EXTENSION *pdx) ...@@ -321,20 +318,17 @@ bool Is1401(DEVICE_EXTENSION *pdx)
/* release the io_mutex because if we don't, we will deadlock due to system */ /* release the io_mutex because if we don't, we will deadlock due to system */
/* calls back into the driver. */ /* calls back into the driver. */
mutex_unlock(&pdx->io_mutex); /* locked, so we will not get system calls */ mutex_unlock(&pdx->io_mutex); /* locked, so we will not get system calls */
if (iReturn >= 0) /* if we failed */ if (iReturn >= 0) { /* if we failed */
{
iReturn = usb_reset_device(pdx->udev); /* try to do the reset */ iReturn = usb_reset_device(pdx->udev); /* try to do the reset */
usb_unlock_device(pdx->udev); /* undo the lock */ usb_unlock_device(pdx->udev); /* undo the lock */
} }
mutex_lock(&pdx->io_mutex); /* hold stuff off while we wait */ mutex_lock(&pdx->io_mutex); /* hold stuff off while we wait */
pdx->dwDMAFlag = MODE_CHAR; /* Clear DMA mode flag regardless! */ pdx->dwDMAFlag = MODE_CHAR; /* Clear DMA mode flag regardless! */
if (iReturn == 0) /* if all is OK still */ if (iReturn == 0) { /* if all is OK still */
{
unsigned int state; unsigned int state;
iReturn = InSelfTest(pdx, &state); /* see if likely in self test */ iReturn = InSelfTest(pdx, &state); /* see if likely in self test */
if (iReturn > 0) /* do we need to wait for self-test? */ if (iReturn > 0) { /* do we need to wait for self-test? */
{
unsigned long ulTimeOut = jiffies + 30 * HZ; /* when to give up */ unsigned long ulTimeOut = jiffies + 30 * HZ; /* when to give up */
while ((iReturn > 0) && time_before(jiffies, ulTimeOut)) { while ((iReturn > 0) && time_before(jiffies, ulTimeOut)) {
schedule(); /* let other stuff run */ schedule(); /* let other stuff run */
...@@ -380,26 +374,23 @@ bool QuickCheck(DEVICE_EXTENSION *pdx, bool bTestBuff, bool bCanReset) ...@@ -380,26 +374,23 @@ bool QuickCheck(DEVICE_EXTENSION *pdx, bool bTestBuff, bool bCanReset)
bTestBuff, bShortTest); bTestBuff, bShortTest);
if ((bTestBuff) && /* Buffer check requested, and... */ if ((bTestBuff) && /* Buffer check requested, and... */
(pdx->dwNumInput || pdx->dwNumOutput)) /* ...characters were in the buffer? */ (pdx->dwNumInput || pdx->dwNumOutput)) { /* ...characters were in the buffer? */
{
bShortTest = false; /* Then do the full test */ bShortTest = false; /* Then do the full test */
dev_dbg(&pdx->interface->dev, dev_dbg(&pdx->interface->dev,
"%s will reset as buffers not empty", __func__); "%s will reset as buffers not empty", __func__);
} }
if (bShortTest || !bCanReset) /* Still OK to try the short test? */ if (bShortTest || !bCanReset) { /* Still OK to try the short test? */
{ /* Always test if no reset - we want state update */ /* Always test if no reset - we want state update */
unsigned int state, error; unsigned int state, error;
dev_dbg(&pdx->interface->dev, "%s->Get1401State", __func__); dev_dbg(&pdx->interface->dev, "%s->Get1401State", __func__);
if (Get1401State(pdx, &state, &error) == U14ERR_NOERROR) /* Check on the 1401 state */ if (Get1401State(pdx, &state, &error) == U14ERR_NOERROR) { /* Check on the 1401 state */
{
if ((state & 0xFF) == 0) /* If call worked, check the status value */ if ((state & 0xFF) == 0) /* If call worked, check the status value */
bRet = true; /* If that was zero, all is OK, no reset needed */ bRet = true; /* If that was zero, all is OK, no reset needed */
} }
} }
if (!bRet && bCanReset) /* If all not OK, then */ if (!bRet && bCanReset) { /* If all not OK, then */
{
dev_info(&pdx->interface->dev, "%s->Is1401 %d %d %d %d", dev_info(&pdx->interface->dev, "%s->Is1401 %d %d %d %d",
__func__, bShortTest, pdx->sCurrentState, bTestBuff, __func__, bShortTest, pdx->sCurrentState, bTestBuff,
pdx->bForceReset); pdx->bForceReset);
...@@ -439,8 +430,7 @@ int GetChar(DEVICE_EXTENSION *pdx) ...@@ -439,8 +430,7 @@ int GetChar(DEVICE_EXTENSION *pdx)
SendChars(pdx); /* and send any buffered chars */ SendChars(pdx); /* and send any buffered chars */
spin_lock_irq(&pdx->charInLock); spin_lock_irq(&pdx->charInLock);
if (pdx->dwNumInput > 0) /* worth looking */ if (pdx->dwNumInput > 0) { /* worth looking */
{
iReturn = pdx->inputBuffer[pdx->dwInBuffGet++]; iReturn = pdx->inputBuffer[pdx->dwInBuffGet++];
if (pdx->dwInBuffGet >= INBUF_SZ) if (pdx->dwInBuffGet >= INBUF_SZ)
pdx->dwInBuffGet = 0; pdx->dwInBuffGet = 0;
...@@ -482,8 +472,7 @@ int GetString(DEVICE_EXTENSION *pdx, char __user *pUser, int n) ...@@ -482,8 +472,7 @@ int GetString(DEVICE_EXTENSION *pdx, char __user *pUser, int n)
if (nAvailable > n) /* read max of space in pUser... */ if (nAvailable > n) /* read max of space in pUser... */
nAvailable = n; /* ...or input characters */ nAvailable = n; /* ...or input characters */
if (nAvailable > 0) /* worth looking? */ if (nAvailable > 0) { /* worth looking? */
{
char buffer[INBUF_SZ + 1]; /* space for a linear copy of data */ char buffer[INBUF_SZ + 1]; /* space for a linear copy of data */
int nGot = 0; int nGot = 0;
int nCopyToUser; /* number to copy to user */ int nCopyToUser; /* number to copy to user */
...@@ -497,12 +486,10 @@ int GetString(DEVICE_EXTENSION *pdx, char __user *pUser, int n) ...@@ -497,12 +486,10 @@ int GetString(DEVICE_EXTENSION *pdx, char __user *pUser, int n)
pdx->dwInBuffGet = 0; /* wrap buffer pointer */ pdx->dwInBuffGet = 0; /* wrap buffer pointer */
buffer[nGot++] = cData; /* save the output */ buffer[nGot++] = cData; /* save the output */
} } while ((nGot < nAvailable) && cData);
while ((nGot < nAvailable) && cData);
nCopyToUser = nGot; /* what to copy... */ nCopyToUser = nGot; /* what to copy... */
if (cData) /* do we need null */ if (cData) { /* do we need null */
{
buffer[nGot] = (char)0; /* make it tidy */ buffer[nGot] = (char)0; /* make it tidy */
if (nGot < n) /* if space in user buffer... */ if (nGot < n) /* if space in user buffer... */
++nCopyToUser; /* ...copy the 0 as well. */ ++nCopyToUser; /* ...copy the 0 as well. */
...@@ -556,8 +543,7 @@ int LineCount(DEVICE_EXTENSION *pdx) ...@@ -556,8 +543,7 @@ int LineCount(DEVICE_EXTENSION *pdx)
SendChars(pdx); /* and send any buffered chars */ SendChars(pdx); /* and send any buffered chars */
spin_lock_irq(&pdx->charInLock); /* Get protection */ spin_lock_irq(&pdx->charInLock); /* Get protection */
if (pdx->dwNumInput > 0) /* worth looking? */ if (pdx->dwNumInput > 0) { /* worth looking? */
{
unsigned int dwIndex = pdx->dwInBuffGet; /* start at first available */ unsigned int dwIndex = pdx->dwInBuffGet; /* start at first available */
unsigned int dwEnd = pdx->dwInBuffPut; /* Position for search end */ unsigned int dwEnd = pdx->dwInBuffPut; /* Position for search end */
do { do {
...@@ -566,8 +552,7 @@ int LineCount(DEVICE_EXTENSION *pdx) ...@@ -566,8 +552,7 @@ int LineCount(DEVICE_EXTENSION *pdx)
if (dwIndex >= INBUF_SZ) /* see if we fall off buff */ if (dwIndex >= INBUF_SZ) /* see if we fall off buff */
dwIndex = 0; dwIndex = 0;
} } while (dwIndex != dwEnd); /* go to last available */
while (dwIndex != dwEnd); /* go to last available */
} }
spin_unlock_irq(&pdx->charInLock); spin_unlock_irq(&pdx->charInLock);
...@@ -645,8 +630,7 @@ int ClearArea(DEVICE_EXTENSION *pdx, int nArea) ...@@ -645,8 +630,7 @@ int ClearArea(DEVICE_EXTENSION *pdx, int nArea)
} }
spin_unlock_irq(&pdx->stagedLock); spin_unlock_irq(&pdx->stagedLock);
if (pPages) /* if we decided to release the memory */ if (pPages) { /* if we decided to release the memory */
{
/* Now we must undo the pinning down of the pages. We will assume the worst and mark */ /* Now we must undo the pinning down of the pages. We will assume the worst and mark */
/* all the pages as dirty. Don't be tempted to move this up above as you must not be */ /* all the pages as dirty. Don't be tempted to move this up above as you must not be */
/* holding a spin lock to do this stuff as it is not atomic. */ /* holding a spin lock to do this stuff as it is not atomic. */
...@@ -714,8 +698,7 @@ static int SetArea(DEVICE_EXTENSION *pdx, int nArea, char __user *puBuf, ...@@ -714,8 +698,7 @@ static int SetArea(DEVICE_EXTENSION *pdx, int nArea, char __user *puBuf,
up_read(&current->mm->mmap_sem); /* release the semaphore */ up_read(&current->mm->mmap_sem); /* release the semaphore */
dev_dbg(&pdx->interface->dev, "%s nPages = %d", __func__, nPages); dev_dbg(&pdx->interface->dev, "%s nPages = %d", __func__, nPages);
if (nPages > 0) /* if we succeeded */ if (nPages > 0) { /* if we succeeded */
{
/* If you are tempted to use page_address (form LDD3), forget it. You MUST use */ /* If you are tempted to use page_address (form LDD3), forget it. You MUST use */
/* kmap() or kmap_atomic() to get a virtual address. page_address will give you */ /* kmap() or kmap_atomic() to get a virtual address. page_address will give you */
/* (null) or at least it does in this context with an x86 machine. */ /* (null) or at least it does in this context with an x86 machine. */
...@@ -814,8 +797,7 @@ int SetEvent(DEVICE_EXTENSION *pdx, TRANSFEREVENT __user *pTE) ...@@ -814,8 +797,7 @@ int SetEvent(DEVICE_EXTENSION *pdx, TRANSFEREVENT __user *pTE)
TRANSAREA *pTA = &pdx->rTransDef[te.wAreaNum]; TRANSAREA *pTA = &pdx->rTransDef[te.wAreaNum];
mutex_lock(&pdx->io_mutex); /* make sure we have no competitor */ mutex_lock(&pdx->io_mutex); /* make sure we have no competitor */
spin_lock_irq(&pdx->stagedLock); spin_lock_irq(&pdx->stagedLock);
if (pTA->bUsed) /* area must be in use */ if (pTA->bUsed) { /* area must be in use */
{
pTA->dwEventSt = te.dwStart; /* set area regions */ pTA->dwEventSt = te.dwStart; /* set area regions */
pTA->dwEventSz = te.dwLength; /* set size (0 cancels it) */ pTA->dwEventSz = te.dwLength; /* set size (0 cancels it) */
pTA->bEventToHost = te.wFlags & 1; /* set the direction */ pTA->bEventToHost = te.wFlags & 1; /* set the direction */
...@@ -1030,8 +1012,8 @@ int CheckSelfTest(DEVICE_EXTENSION *pdx, TGET_SELFTEST __user *pGST) ...@@ -1030,8 +1012,8 @@ int CheckSelfTest(DEVICE_EXTENSION *pdx, TGET_SELFTEST __user *pGST)
if (iReturn == U14ERR_NOERROR) /* Only accept zero if it happens twice */ if (iReturn == U14ERR_NOERROR) /* Only accept zero if it happens twice */
iReturn = Get1401State(pdx, &state, &error); iReturn = Get1401State(pdx, &state, &error);
if (iReturn != U14ERR_NOERROR) /* Self-test can cause comms errors */ if (iReturn != U14ERR_NOERROR) { /* Self-test can cause comms errors */
{ /* so we assume still testing */ /* so we assume still testing */
dev_err(&pdx->interface->dev, dev_err(&pdx->interface->dev,
"%s Get1401State=%d, assuming still testing", __func__, "%s Get1401State=%d, assuming still testing", __func__,
iReturn); iReturn);
...@@ -1040,8 +1022,7 @@ int CheckSelfTest(DEVICE_EXTENSION *pdx, TGET_SELFTEST __user *pGST) ...@@ -1040,8 +1022,7 @@ int CheckSelfTest(DEVICE_EXTENSION *pdx, TGET_SELFTEST __user *pGST)
iReturn = U14ERR_NOERROR; iReturn = U14ERR_NOERROR;
} }
if ((state == -1) && (error == -1)) /* If Get1401State had problems */ if ((state == -1) && (error == -1)) { /* If Get1401State had problems */
{
dev_err(&pdx->interface->dev, dev_err(&pdx->interface->dev,
"%s Get1401State failed, assuming still testing", "%s Get1401State failed, assuming still testing",
__func__); __func__);
...@@ -1049,17 +1030,14 @@ int CheckSelfTest(DEVICE_EXTENSION *pdx, TGET_SELFTEST __user *pGST) ...@@ -1049,17 +1030,14 @@ int CheckSelfTest(DEVICE_EXTENSION *pdx, TGET_SELFTEST __user *pGST)
error = 0; error = 0;
} }
if ((state & 0xFF) == 0x80) /* If we are still in self-test */ if ((state & 0xFF) == 0x80) { /* If we are still in self-test */
{ if (state & 0x00FF0000) { /* Have we got an error? */
if (state & 0x00FF0000) /* Have we got an error? */
{
gst.code = (state & 0x00FF0000) >> 16; /* read the error code */ gst.code = (state & 0x00FF0000) >> 16; /* read the error code */
gst.x = error & 0x0000FFFF; /* Error data X */ gst.x = error & 0x0000FFFF; /* Error data X */
gst.y = (error & 0xFFFF0000) >> 16; /* and data Y */ gst.y = (error & 0xFFFF0000) >> 16; /* and data Y */
dev_dbg(&pdx->interface->dev, "Self-test error code %d", dev_dbg(&pdx->interface->dev, "Self-test error code %d",
gst.code); gst.code);
} else /* No error, check for timeout */ } else { /* No error, check for timeout */
{
unsigned long ulNow = jiffies; /* get current time */ unsigned long ulNow = jiffies; /* get current time */
if (time_after(ulNow, pdx->ulSelfTestTime)) { if (time_after(ulNow, pdx->ulSelfTestTime)) {
gst.code = -2; /* Flag the timeout */ gst.code = -2; /* Flag the timeout */
...@@ -1074,8 +1052,8 @@ int CheckSelfTest(DEVICE_EXTENSION *pdx, TGET_SELFTEST __user *pGST) ...@@ -1074,8 +1052,8 @@ int CheckSelfTest(DEVICE_EXTENSION *pdx, TGET_SELFTEST __user *pGST)
dev_dbg(&pdx->interface->dev, "Self-test done"); dev_dbg(&pdx->interface->dev, "Self-test done");
} }
if (gst.code < 0) /* If we have a problem or finished */ if (gst.code < 0) { /* If we have a problem or finished */
{ /* If using the 2890 we should reset properly */ /* If using the 2890 we should reset properly */
if ((pdx->nPipes == 4) && (pdx->s1401Type <= TYPEPOWER)) if ((pdx->nPipes == 4) && (pdx->s1401Type <= TYPEPOWER))
Is1401(pdx); /* Get 1401 reset and OK */ Is1401(pdx); /* Get 1401 reset and OK */
else else
...@@ -1384,16 +1362,13 @@ int GetCircBlock(DEVICE_EXTENSION *pdx, TCIRCBLOCK __user *pCB) ...@@ -1384,16 +1362,13 @@ int GetCircBlock(DEVICE_EXTENSION *pdx, TCIRCBLOCK __user *pCB)
cb.dwOffset = 0; /* set default result (nothing) */ cb.dwOffset = 0; /* set default result (nothing) */
cb.dwSize = 0; cb.dwSize = 0;
if (nArea < MAX_TRANSAREAS) /* The area number must be OK */ if (nArea < MAX_TRANSAREAS) { /* The area number must be OK */
{
TRANSAREA *pArea = &pdx->rTransDef[nArea]; /* Pointer to relevant info */ TRANSAREA *pArea = &pdx->rTransDef[nArea]; /* Pointer to relevant info */
spin_lock_irq(&pdx->stagedLock); /* Lock others out */ spin_lock_irq(&pdx->stagedLock); /* Lock others out */
if ((pArea->bUsed) && (pArea->bCircular) && /* Must be circular area */ if ((pArea->bUsed) && (pArea->bCircular) && /* Must be circular area */
(pArea->bCircToHost)) /* For now at least must be to host */ (pArea->bCircToHost)) { /* For now at least must be to host */
{ if (pArea->aBlocks[0].dwSize > 0) { /* Got anything? */
if (pArea->aBlocks[0].dwSize > 0) /* Got anything? */
{
cb.dwOffset = pArea->aBlocks[0].dwOffset; cb.dwOffset = pArea->aBlocks[0].dwOffset;
cb.dwSize = pArea->aBlocks[0].dwSize; cb.dwSize = pArea->aBlocks[0].dwSize;
dev_dbg(&pdx->interface->dev, dev_dbg(&pdx->interface->dev,
...@@ -1438,25 +1413,20 @@ int FreeCircBlock(DEVICE_EXTENSION *pdx, TCIRCBLOCK __user *pCB) ...@@ -1438,25 +1413,20 @@ int FreeCircBlock(DEVICE_EXTENSION *pdx, TCIRCBLOCK __user *pCB)
cb.dwOffset = 0; /* then set default result (nothing) */ cb.dwOffset = 0; /* then set default result (nothing) */
cb.dwSize = 0; cb.dwSize = 0;
if (nArea < MAX_TRANSAREAS) /* The area number must be OK */ if (nArea < MAX_TRANSAREAS) { /* The area number must be OK */
{
TRANSAREA *pArea = &pdx->rTransDef[nArea]; /* Pointer to relevant info */ TRANSAREA *pArea = &pdx->rTransDef[nArea]; /* Pointer to relevant info */
spin_lock_irq(&pdx->stagedLock); /* Lock others out */ spin_lock_irq(&pdx->stagedLock); /* Lock others out */
if ((pArea->bUsed) && (pArea->bCircular) && /* Must be circular area */ if ((pArea->bUsed) && (pArea->bCircular) && /* Must be circular area */
(pArea->bCircToHost)) /* For now at least must be to host */ (pArea->bCircToHost)) { /* For now at least must be to host */
{
bool bWaiting = false; bool bWaiting = false;
if ((pArea->aBlocks[0].dwSize >= uSize) && /* Got anything? */ if ((pArea->aBlocks[0].dwSize >= uSize) && /* Got anything? */
(pArea->aBlocks[0].dwOffset == uStart)) /* Must be legal data */ (pArea->aBlocks[0].dwOffset == uStart)) { /* Must be legal data */
{
pArea->aBlocks[0].dwSize -= uSize; pArea->aBlocks[0].dwSize -= uSize;
pArea->aBlocks[0].dwOffset += uSize; pArea->aBlocks[0].dwOffset += uSize;
if (pArea->aBlocks[0].dwSize == 0) /* Have we emptied this block? */ if (pArea->aBlocks[0].dwSize == 0) { /* Have we emptied this block? */
{ if (pArea->aBlocks[1].dwSize) { /* Is there a second block? */
if (pArea->aBlocks[1].dwSize) /* Is there a second block? */
{
pArea->aBlocks[0] = pArea->aBlocks[1]; /* Copy down block 2 data */ pArea->aBlocks[0] = pArea->aBlocks[1]; /* Copy down block 2 data */
pArea->aBlocks[1].dwSize = 0; /* and mark the second block as unused */ pArea->aBlocks[1].dwSize = 0; /* and mark the second block as unused */
pArea->aBlocks[1].dwOffset = 0; pArea->aBlocks[1].dwOffset = 0;
...@@ -1472,8 +1442,7 @@ int FreeCircBlock(DEVICE_EXTENSION *pdx, TCIRCBLOCK __user *pCB) ...@@ -1472,8 +1442,7 @@ int FreeCircBlock(DEVICE_EXTENSION *pdx, TCIRCBLOCK __user *pCB)
pdx->bXFerWaiting); pdx->bXFerWaiting);
/* Return the next available block of memory as well */ /* Return the next available block of memory as well */
if (pArea->aBlocks[0].dwSize > 0) /* Got anything? */ if (pArea->aBlocks[0].dwSize > 0) { /* Got anything? */
{
cb.dwOffset = cb.dwOffset =
pArea->aBlocks[0].dwOffset; pArea->aBlocks[0].dwOffset;
cb.dwSize = pArea->aBlocks[0].dwSize; cb.dwSize = pArea->aBlocks[0].dwSize;
...@@ -1496,8 +1465,7 @@ int FreeCircBlock(DEVICE_EXTENSION *pdx, TCIRCBLOCK __user *pCB) ...@@ -1496,8 +1465,7 @@ int FreeCircBlock(DEVICE_EXTENSION *pdx, TCIRCBLOCK __user *pCB)
} }
/* If we have one, kick off pending transfer */ /* If we have one, kick off pending transfer */
if (bWaiting) /* Got a block xfer waiting? */ if (bWaiting) { /* Got a block xfer waiting? */
{
int RWMStat = int RWMStat =
ReadWriteMem(pdx, !pdx->rDMAInfo.bOutWard, ReadWriteMem(pdx, !pdx->rDMAInfo.bOutWard,
pdx->rDMAInfo.wIdent, pdx->rDMAInfo.wIdent,
......
...@@ -298,8 +298,7 @@ static void ced_writechar_callback(struct urb *pUrb) ...@@ -298,8 +298,7 @@ static void ced_writechar_callback(struct urb *pUrb)
if (pdx->dwOutBuffGet >= OUTBUF_SZ) /* Can't do this any earlier as data could be overwritten */ if (pdx->dwOutBuffGet >= OUTBUF_SZ) /* Can't do this any earlier as data could be overwritten */
pdx->dwOutBuffGet = 0; pdx->dwOutBuffGet = 0;
if (pdx->dwNumOutput > 0) /* if more to be done... */ if (pdx->dwNumOutput > 0) { /* if more to be done... */
{
int nPipe = 0; /* The pipe number to use */ int nPipe = 0; /* The pipe number to use */
int iReturn; int iReturn;
char *pDat = &pdx->outputBuffer[pdx->dwOutBuffGet]; char *pDat = &pdx->outputBuffer[pdx->dwOutBuffGet];
...@@ -347,8 +346,7 @@ int SendChars(DEVICE_EXTENSION *pdx) ...@@ -347,8 +346,7 @@ int SendChars(DEVICE_EXTENSION *pdx)
if ((!pdx->bSendCharsPending) && /* Not currently sending */ if ((!pdx->bSendCharsPending) && /* Not currently sending */
(pdx->dwNumOutput > 0) && /* has characters to output */ (pdx->dwNumOutput > 0) && /* has characters to output */
(CanAcceptIoRequests(pdx))) /* and current activity is OK */ (CanAcceptIoRequests(pdx))) { /* and current activity is OK */
{
unsigned int dwCount = pdx->dwNumOutput; /* Get a copy of the character count */ unsigned int dwCount = pdx->dwNumOutput; /* Get a copy of the character count */
pdx->bSendCharsPending = true; /* Set flag to lock out other threads */ pdx->bSendCharsPending = true; /* Set flag to lock out other threads */
...@@ -543,8 +541,7 @@ static void staged_callback(struct urb *pUrb) ...@@ -543,8 +541,7 @@ static void staged_callback(struct urb *pUrb)
pdx->StagedDone, pdx->StagedLength); pdx->StagedDone, pdx->StagedLength);
if ((pdx->StagedDone == pdx->StagedLength) || /* If no more to do */ if ((pdx->StagedDone == pdx->StagedLength) || /* If no more to do */
(bCancel)) /* or this IRP was cancelled */ (bCancel)) { /* or this IRP was cancelled */
{
TRANSAREA *pArea = &pdx->rTransDef[pdx->StagedId]; /* Transfer area info */ TRANSAREA *pArea = &pdx->rTransDef[pdx->StagedId]; /* Transfer area info */
dev_dbg(&pdx->interface->dev, dev_dbg(&pdx->interface->dev,
"%s transfer done, bytes %d, cancel %d", __func__, "%s transfer done, bytes %d, cancel %d", __func__,
...@@ -555,10 +552,8 @@ static void staged_callback(struct urb *pUrb) ...@@ -555,10 +552,8 @@ static void staged_callback(struct urb *pUrb)
/* add this to the end of a growing block or to use it to start a new block unless the code */ /* add this to the end of a growing block or to use it to start a new block unless the code */
/* that calculates the offset to use (in ReadWriteMem) is totally duff. */ /* that calculates the offset to use (in ReadWriteMem) is totally duff. */
if ((pArea->bCircular) && (pArea->bCircToHost) && (!bCancel) && /* Time to sort out circular buffer info? */ if ((pArea->bCircular) && (pArea->bCircToHost) && (!bCancel) && /* Time to sort out circular buffer info? */
(pdx->StagedRead)) /* Only for tohost transfers for now */ (pdx->StagedRead)) { /* Only for tohost transfers for now */
{ if (pArea->aBlocks[1].dwSize > 0) { /* If block 1 is in use we must append to it */
if (pArea->aBlocks[1].dwSize > 0) /* If block 1 is in use we must append to it */
{
if (pdx->StagedOffset == if (pdx->StagedOffset ==
(pArea->aBlocks[1].dwOffset + (pArea->aBlocks[1].dwOffset +
pArea->aBlocks[1].dwSize)) { pArea->aBlocks[1].dwSize)) {
...@@ -580,10 +575,9 @@ static void staged_callback(struct urb *pUrb) ...@@ -580,10 +575,9 @@ static void staged_callback(struct urb *pUrb)
pArea->aBlocks[1].dwSize, pArea->aBlocks[1].dwSize,
pArea->aBlocks[1].dwOffset); pArea->aBlocks[1].dwOffset);
} }
} else /* If block 1 is not used, we try to add to block 0 */ } else { /* If block 1 is not used, we try to add to block 0 */
{ if (pArea->aBlocks[0].dwSize > 0) { /* Got stored block 0 information? */
if (pArea->aBlocks[0].dwSize > 0) /* Got stored block 0 information? */ /* Must append onto the existing block 0 */
{ /* Must append onto the existing block 0 */
if (pdx->StagedOffset == if (pdx->StagedOffset ==
(pArea->aBlocks[0].dwOffset + (pArea->aBlocks[0].dwOffset +
pArea->aBlocks[0].dwSize)) { pArea->aBlocks[0].dwSize)) {
...@@ -594,8 +588,7 @@ static void staged_callback(struct urb *pUrb) ...@@ -594,8 +588,7 @@ static void staged_callback(struct urb *pUrb)
dwSize, dwSize,
pArea->aBlocks[0]. pArea->aBlocks[0].
dwOffset); dwOffset);
} else /* If it doesn't append, put into new block 1 */ } else { /* If it doesn't append, put into new block 1 */
{
pArea->aBlocks[1].dwOffset = pArea->aBlocks[1].dwOffset =
pdx->StagedOffset; pdx->StagedOffset;
pArea->aBlocks[1].dwSize = pArea->aBlocks[1].dwSize =
...@@ -607,8 +600,7 @@ static void staged_callback(struct urb *pUrb) ...@@ -607,8 +600,7 @@ static void staged_callback(struct urb *pUrb)
pArea->aBlocks[1]. pArea->aBlocks[1].
dwOffset); dwOffset);
} }
} else /* No info stored yet, just save in block 0 */ } else { /* No info stored yet, just save in block 0 */
{
pArea->aBlocks[0].dwOffset = pArea->aBlocks[0].dwOffset =
pdx->StagedOffset; pdx->StagedOffset;
pArea->aBlocks[0].dwSize = pArea->aBlocks[0].dwSize =
...@@ -621,21 +613,19 @@ static void staged_callback(struct urb *pUrb) ...@@ -621,21 +613,19 @@ static void staged_callback(struct urb *pUrb)
} }
} }
if (!bCancel) /* Don't generate an event if cancelled */ if (!bCancel) { /* Don't generate an event if cancelled */
{
dev_dbg(&pdx->interface->dev, dev_dbg(&pdx->interface->dev,
"RWM_Complete, bCircular %d, bToHost %d, eStart %d, eSize %d", "RWM_Complete, bCircular %d, bToHost %d, eStart %d, eSize %d",
pArea->bCircular, pArea->bEventToHost, pArea->bCircular, pArea->bEventToHost,
pArea->dwEventSt, pArea->dwEventSz); pArea->dwEventSt, pArea->dwEventSz);
if ((pArea->dwEventSz) && /* Set a user-mode event... */ if ((pArea->dwEventSz) && /* Set a user-mode event... */
(pdx->StagedRead == pArea->bEventToHost)) /* ...on transfers in this direction? */ (pdx->StagedRead == pArea->bEventToHost)) { /* ...on transfers in this direction? */
{
int iWakeUp = 0; /* assume */ int iWakeUp = 0; /* assume */
/* If we have completed the right sort of DMA transfer then set the event to notify */ /* If we have completed the right sort of DMA transfer then set the event to notify */
/* the user code to wake up anyone that is waiting. */ /* the user code to wake up anyone that is waiting. */
if ((pArea->bCircular) && /* Circular areas use a simpler test */ if ((pArea->bCircular) && /* Circular areas use a simpler test */
(pArea->bCircToHost)) /* only in supported direction */ (pArea->bCircToHost)) { /* only in supported direction */
{ /* Is total data waiting up to size limit? */ /* Is total data waiting up to size limit? */
unsigned int dwTotal = unsigned int dwTotal =
pArea->aBlocks[0].dwSize + pArea->aBlocks[0].dwSize +
pArea->aBlocks[1].dwSize; pArea->aBlocks[1].dwSize;
...@@ -661,11 +651,9 @@ static void staged_callback(struct urb *pUrb) ...@@ -661,11 +651,9 @@ static void staged_callback(struct urb *pUrb)
pdx->dwDMAFlag = MODE_CHAR; /* Switch back to char mode before ReadWriteMem call */ pdx->dwDMAFlag = MODE_CHAR; /* Switch back to char mode before ReadWriteMem call */
if (!bCancel) /* Don't look for waiting transfer if cancelled */ if (!bCancel) { /* Don't look for waiting transfer if cancelled */
{
/* If we have a transfer waiting, kick it off */ /* If we have a transfer waiting, kick it off */
if (pdx->bXFerWaiting) /* Got a block xfer waiting? */ if (pdx->bXFerWaiting) { /* Got a block xfer waiting? */
{
int iReturn; int iReturn;
dev_info(&pdx->interface->dev, dev_info(&pdx->interface->dev,
"*** RWM_Complete *** pending transfer will now be set up!!!"); "*** RWM_Complete *** pending transfer will now be set up!!!");
...@@ -719,8 +707,7 @@ static int StageChunk(DEVICE_EXTENSION *pdx) ...@@ -719,8 +707,7 @@ static int StageChunk(DEVICE_EXTENSION *pdx)
if (nPipe < 0) /* and trap case that should never happen */ if (nPipe < 0) /* and trap case that should never happen */
return U14ERR_FAIL; return U14ERR_FAIL;
if (!CanAcceptIoRequests(pdx)) /* got sudden remove? */ if (!CanAcceptIoRequests(pdx)) { /* got sudden remove? */
{
dev_info(&pdx->interface->dev, "%s sudden remove, giving up", dev_info(&pdx->interface->dev, "%s sudden remove, giving up",
__func__); __func__);
return U14ERR_FAIL; /* could do with a better error */ return U14ERR_FAIL; /* could do with a better error */
...@@ -777,8 +764,7 @@ int ReadWriteMem(DEVICE_EXTENSION *pdx, bool Read, unsigned short wIdent, ...@@ -777,8 +764,7 @@ int ReadWriteMem(DEVICE_EXTENSION *pdx, bool Read, unsigned short wIdent,
{ {
TRANSAREA *pArea = &pdx->rTransDef[wIdent]; /* Transfer area info */ TRANSAREA *pArea = &pdx->rTransDef[wIdent]; /* Transfer area info */
if (!CanAcceptIoRequests(pdx)) /* Are we in a state to accept new requests? */ if (!CanAcceptIoRequests(pdx)) { /* Are we in a state to accept new requests? */
{
dev_err(&pdx->interface->dev, "%s can't accept requests", dev_err(&pdx->interface->dev, "%s can't accept requests",
__func__); __func__);
return U14ERR_FAIL; return U14ERR_FAIL;
...@@ -798,36 +784,32 @@ int ReadWriteMem(DEVICE_EXTENSION *pdx, bool Read, unsigned short wIdent, ...@@ -798,36 +784,32 @@ int ReadWriteMem(DEVICE_EXTENSION *pdx, bool Read, unsigned short wIdent,
return U14ERR_NOERROR; return U14ERR_NOERROR;
} }
if (dwLen == 0) /* allow 0-len read or write; just return success */ if (dwLen == 0) { /* allow 0-len read or write; just return success */
{
dev_dbg(&pdx->interface->dev, dev_dbg(&pdx->interface->dev,
"%s OK; zero-len read/write request", __func__); "%s OK; zero-len read/write request", __func__);
return U14ERR_NOERROR; return U14ERR_NOERROR;
} }
if ((pArea->bCircular) && /* Circular transfer? */ if ((pArea->bCircular) && /* Circular transfer? */
(pArea->bCircToHost) && (Read)) /* In a supported direction */ (pArea->bCircToHost) && (Read)) { /* In a supported direction */
{ /* If so, we sort out offset ourself */ /* If so, we sort out offset ourself */
bool bWait = false; /* Flag for transfer having to wait */ bool bWait = false; /* Flag for transfer having to wait */
dev_dbg(&pdx->interface->dev, dev_dbg(&pdx->interface->dev,
"Circular buffers are %d at %d and %d at %d", "Circular buffers are %d at %d and %d at %d",
pArea->aBlocks[0].dwSize, pArea->aBlocks[0].dwOffset, pArea->aBlocks[0].dwSize, pArea->aBlocks[0].dwOffset,
pArea->aBlocks[1].dwSize, pArea->aBlocks[1].dwOffset); pArea->aBlocks[1].dwSize, pArea->aBlocks[1].dwOffset);
if (pArea->aBlocks[1].dwSize > 0) /* Using the second block already? */ if (pArea->aBlocks[1].dwSize > 0) { /* Using the second block already? */
{
dwOffs = pArea->aBlocks[1].dwOffset + pArea->aBlocks[1].dwSize; /* take offset from that */ dwOffs = pArea->aBlocks[1].dwOffset + pArea->aBlocks[1].dwSize; /* take offset from that */
bWait = (dwOffs + dwLen) > pArea->aBlocks[0].dwOffset; /* Wait if will overwrite block 0? */ bWait = (dwOffs + dwLen) > pArea->aBlocks[0].dwOffset; /* Wait if will overwrite block 0? */
bWait |= (dwOffs + dwLen) > pArea->dwLength; /* or if it overflows the buffer */ bWait |= (dwOffs + dwLen) > pArea->dwLength; /* or if it overflows the buffer */
} else /* Area 1 not in use, try to use area 0 */ } else { /* Area 1 not in use, try to use area 0 */
{
if (pArea->aBlocks[0].dwSize == 0) /* Reset block 0 if not in use */ if (pArea->aBlocks[0].dwSize == 0) /* Reset block 0 if not in use */
pArea->aBlocks[0].dwOffset = 0; pArea->aBlocks[0].dwOffset = 0;
dwOffs = dwOffs =
pArea->aBlocks[0].dwOffset + pArea->aBlocks[0].dwOffset +
pArea->aBlocks[0].dwSize; pArea->aBlocks[0].dwSize;
if ((dwOffs + dwLen) > pArea->dwLength) /* Off the end of the buffer? */ if ((dwOffs + dwLen) > pArea->dwLength) { /* Off the end of the buffer? */
{
pArea->aBlocks[1].dwOffset = 0; /* Set up to use second block */ pArea->aBlocks[1].dwOffset = 0; /* Set up to use second block */
dwOffs = 0; dwOffs = 0;
bWait = (dwOffs + dwLen) > pArea->aBlocks[0].dwOffset; /* Wait if will overwrite block 0? */ bWait = (dwOffs + dwLen) > pArea->aBlocks[0].dwOffset; /* Wait if will overwrite block 0? */
...@@ -835,8 +817,7 @@ int ReadWriteMem(DEVICE_EXTENSION *pdx, bool Read, unsigned short wIdent, ...@@ -835,8 +817,7 @@ int ReadWriteMem(DEVICE_EXTENSION *pdx, bool Read, unsigned short wIdent,
} }
} }
if (bWait) /* This transfer will have to wait? */ if (bWait) { /* This transfer will have to wait? */
{
pdx->bXFerWaiting = true; /* Flag we are waiting */ pdx->bXFerWaiting = true; /* Flag we are waiting */
dev_dbg(&pdx->interface->dev, dev_dbg(&pdx->interface->dev,
"%s xfer waiting for circular buffer space", "%s xfer waiting for circular buffer space",
...@@ -877,8 +858,7 @@ static bool ReadChar(unsigned char *pChar, char *pBuf, unsigned int *pdDone, ...@@ -877,8 +858,7 @@ static bool ReadChar(unsigned char *pChar, char *pBuf, unsigned int *pdDone,
bool bRead = false; bool bRead = false;
unsigned int dDone = *pdDone; unsigned int dDone = *pdDone;
if (dDone < dGot) /* If there is more data */ if (dDone < dGot) { /* If there is more data */
{
*pChar = (unsigned char)pBuf[dDone]; /* Extract the next char */ *pChar = (unsigned char)pBuf[dDone]; /* Extract the next char */
dDone++; /* Increment the done count */ dDone++; /* Increment the done count */
*pdDone = dDone; *pdDone = dDone;
...@@ -1057,13 +1037,12 @@ static int Handle1401Esc(DEVICE_EXTENSION *pdx, char *pCh, ...@@ -1057,13 +1037,12 @@ static int Handle1401Esc(DEVICE_EXTENSION *pdx, char *pCh,
/* I have no idea what this next test is about. '?' is 0x3f, which is area 3, code */ /* I have no idea what this next test is about. '?' is 0x3f, which is area 3, code */
/* 15. At the moment, this is not used, so it does no harm, but unless someone can */ /* 15. At the moment, this is not used, so it does no harm, but unless someone can */
/* tell me what this is for, it should be removed from this and the Windows driver. */ /* tell me what this is for, it should be removed from this and the Windows driver. */
if (pCh[0] == '?') /* Is this an information response */ if (pCh[0] == '?') { /* Is this an information response */
{ /* Parse and save the information */ /* Parse and save the information */
} else { } else {
spin_lock(&pdx->stagedLock); /* Lock others out */ spin_lock(&pdx->stagedLock); /* Lock others out */
if (ReadDMAInfo(&pdx->rDMAInfo, pdx, pCh, dwCount)) /* Get DMA parameters */ if (ReadDMAInfo(&pdx->rDMAInfo, pdx, pCh, dwCount)) { /* Get DMA parameters */
{
unsigned short wTransType = pdx->rDMAInfo.wTransType; /* check transfer type */ unsigned short wTransType = pdx->rDMAInfo.wTransType; /* check transfer type */
dev_dbg(&pdx->interface->dev, dev_dbg(&pdx->interface->dev,
...@@ -1071,8 +1050,8 @@ static int Handle1401Esc(DEVICE_EXTENSION *pdx, char *pCh, ...@@ -1071,8 +1050,8 @@ static int Handle1401Esc(DEVICE_EXTENSION *pdx, char *pCh,
pdx->rDMAInfo.bOutWard ? "1401" : "host", pdx->rDMAInfo.bOutWard ? "1401" : "host",
pdx->rDMAInfo.dwOffset, pdx->rDMAInfo.dwSize); pdx->rDMAInfo.dwOffset, pdx->rDMAInfo.dwSize);
if (pdx->bXFerWaiting) /* Check here for badly out of kilter... */ if (pdx->bXFerWaiting) { /* Check here for badly out of kilter... */
{ /* This can never happen, really */ /* This can never happen, really */
dev_err(&pdx->interface->dev, dev_err(&pdx->interface->dev,
"ERROR: DMA setup while transfer still waiting"); "ERROR: DMA setup while transfer still waiting");
spin_unlock(&pdx->stagedLock); spin_unlock(&pdx->stagedLock);
...@@ -1115,8 +1094,7 @@ static void ced_readchar_callback(struct urb *pUrb) ...@@ -1115,8 +1094,7 @@ static void ced_readchar_callback(struct urb *pUrb)
DEVICE_EXTENSION *pdx = pUrb->context; DEVICE_EXTENSION *pdx = pUrb->context;
int nGot = pUrb->actual_length; /* what we transferred */ int nGot = pUrb->actual_length; /* what we transferred */
if (pUrb->status) /* Do we have a problem to handle? */ if (pUrb->status) { /* Do we have a problem to handle? */
{
int nPipe = pdx->nPipes == 4 ? 1 : 0; /* The pipe number to use for error */ int nPipe = pdx->nPipes == 4 ? 1 : 0; /* The pipe number to use for error */
/* sync/async unlink faults aren't errors... just saying device removed or stopped */ /* sync/async unlink faults aren't errors... just saying device removed or stopped */
if (! if (!
...@@ -1138,8 +1116,7 @@ static void ced_readchar_callback(struct urb *pUrb) ...@@ -1138,8 +1116,7 @@ static void ced_readchar_callback(struct urb *pUrb)
spin_lock(&pdx->charInLock); /* already at irq level */ spin_lock(&pdx->charInLock); /* already at irq level */
pdx->bPipeError[nPipe] = 1; /* Flag an error for later */ pdx->bPipeError[nPipe] = 1; /* Flag an error for later */
} else { } else {
if ((nGot > 1) && ((pdx->pCoherCharIn[0] & 0x7f) == 0x1b)) /* Esc sequence? */ if ((nGot > 1) && ((pdx->pCoherCharIn[0] & 0x7f) == 0x1b)) { /* Esc sequence? */
{
Handle1401Esc(pdx, &pdx->pCoherCharIn[1], nGot - 1); /* handle it */ Handle1401Esc(pdx, &pdx->pCoherCharIn[1], nGot - 1); /* handle it */
spin_lock(&pdx->charInLock); /* already at irq level */ spin_lock(&pdx->charInLock); /* already at irq level */
} else { } else {
...@@ -1197,8 +1174,8 @@ int Allowi(DEVICE_EXTENSION *pdx) ...@@ -1197,8 +1174,8 @@ int Allowi(DEVICE_EXTENSION *pdx)
(pdx->dwNumInput < (INBUF_SZ / 2)) && /* and there is some space */ (pdx->dwNumInput < (INBUF_SZ / 2)) && /* and there is some space */
(pdx->dwDMAFlag == MODE_CHAR) && /* not doing any DMA */ (pdx->dwDMAFlag == MODE_CHAR) && /* not doing any DMA */
(!pdx->bXFerWaiting) && /* no xfer waiting to start */ (!pdx->bXFerWaiting) && /* no xfer waiting to start */
(CanAcceptIoRequests(pdx))) /* and activity is generally OK */ (CanAcceptIoRequests(pdx))) { /* and activity is generally OK */
{ /* then off we go */ /* then off we go */
unsigned int nMax = INBUF_SZ - pdx->dwNumInput; /* max we could read */ unsigned int nMax = INBUF_SZ - pdx->dwNumInput; /* max we could read */
int nPipe = pdx->nPipes == 4 ? 1 : 0; /* The pipe number to use */ int nPipe = pdx->nPipes == 4 ? 1 : 0; /* The pipe number to use */
...@@ -1394,8 +1371,7 @@ static int ced_probe(struct usb_interface *interface, ...@@ -1394,8 +1371,7 @@ static int ced_probe(struct usb_interface *interface,
if (!pdx) if (!pdx)
goto error; goto error;
for (i = 0; i < MAX_TRANSAREAS; ++i) /* Initialise the wait queues */ for (i = 0; i < MAX_TRANSAREAS; ++i) { /* Initialise the wait queues */
{
init_waitqueue_head(&pdx->rTransDef[i].wqEvent); init_waitqueue_head(&pdx->rTransDef[i].wqEvent);
} }
...@@ -1471,8 +1447,7 @@ static int ced_probe(struct usb_interface *interface, ...@@ -1471,8 +1447,7 @@ static int ced_probe(struct usb_interface *interface,
pdx->bInterval); pdx->bInterval);
} }
/* Detect USB2 by checking last ep size (64 if USB1) */ /* Detect USB2 by checking last ep size (64 if USB1) */
if (i == pdx->nPipes - 1) /* if this is the last ep (bulk) */ if (i == pdx->nPipes - 1) { /* if this is the last ep (bulk) */
{
pdx->bIsUSB2 = pdx->bIsUSB2 =
le16_to_cpu(endpoint->wMaxPacketSize) > 64; le16_to_cpu(endpoint->wMaxPacketSize) > 64;
dev_info(&pdx->interface->dev, "USB%d", dev_info(&pdx->interface->dev, "USB%d",
......
...@@ -93,16 +93,14 @@ ...@@ -93,16 +93,14 @@
#define CR_CHAR_80 0x8d /* and with bit 7 set */ #define CR_CHAR_80 0x8d /* and with bit 7 set */
/* A structure holding information about a block of memory for use in circular transfers */ /* A structure holding information about a block of memory for use in circular transfers */
typedef struct circBlk typedef struct circBlk {
{
volatile UINT dwOffset; /* Offset within area of block start */ volatile UINT dwOffset; /* Offset within area of block start */
volatile UINT dwSize; /* Size of the block, in bytes (0 = unused) */ volatile UINT dwSize; /* Size of the block, in bytes (0 = unused) */
} CIRCBLK; } CIRCBLK;
/* A structure holding all of the information about a transfer area - an area of */ /* A structure holding all of the information about a transfer area - an area of */
/* memory set up for use either as a source or destination in DMA transfers. */ /* memory set up for use either as a source or destination in DMA transfers. */
typedef struct transarea typedef struct transarea {
{
void *lpvBuff; /* User address of xfer area saved for completeness */ void *lpvBuff; /* User address of xfer area saved for completeness */
UINT dwBaseOffset; /* offset to start of xfer area in first page */ UINT dwBaseOffset; /* offset to start of xfer area in first page */
UINT dwLength; /* Length of xfer area, in bytes */ UINT dwLength; /* Length of xfer area, in bytes */
...@@ -121,8 +119,7 @@ typedef struct transarea ...@@ -121,8 +119,7 @@ typedef struct transarea
/* The DMADESC structure is used to hold information on the transfer in progress. It */ /* The DMADESC structure is used to hold information on the transfer in progress. It */
/* is set up by ReadDMAInfo, using information sent by the 1401 in an escape sequence. */ /* is set up by ReadDMAInfo, using information sent by the 1401 in an escape sequence. */
typedef struct dmadesc typedef struct dmadesc {
{
unsigned short wTransType; /* transfer type as TM_xxx above */ unsigned short wTransType; /* transfer type as TM_xxx above */
unsigned short wIdent; /* identifier word */ unsigned short wIdent; /* identifier word */
unsigned int dwSize; /* bytes to transfer */ unsigned int dwSize; /* bytes to transfer */
...@@ -136,8 +133,7 @@ typedef struct dmadesc ...@@ -136,8 +133,7 @@ typedef struct dmadesc
/* Structure to hold all of our device specific stuff. We are making this as similar as we */ /* Structure to hold all of our device specific stuff. We are making this as similar as we */
/* can to the Windows driver to help in our understanding of what is going on. */ /* can to the Windows driver to help in our understanding of what is going on. */
typedef struct _DEVICE_EXTENSION typedef struct _DEVICE_EXTENSION {
{
char inputBuffer[INBUF_SZ]; /* The two buffers */ char inputBuffer[INBUF_SZ]; /* The two buffers */
char outputBuffer[OUTBUF_SZ]; /* accessed by the host functions */ char outputBuffer[OUTBUF_SZ]; /* accessed by the host functions */
volatile unsigned int dwNumInput; /* num of chars in input buffer */ volatile unsigned int dwNumInput; /* num of chars in input buffer */
......
...@@ -269,8 +269,7 @@ typedef union /* to communicate with 1401 driver status & control funcs */ ...@@ -269,8 +269,7 @@ typedef union /* to communicate with 1401 driver status & control funcs */
typedef TCSBLOCK* LPTCSBLOCK; typedef TCSBLOCK* LPTCSBLOCK;
typedef struct paramBlk typedef struct paramBlk {
{
short sState; short sState;
TCSBLOCK csBlock; TCSBLOCK csBlock;
} PARAMBLK; } PARAMBLK;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment