Commit f4a86b65 authored by Luca Ellero's avatar Luca Ellero Committed by Greg Kroah-Hartman

staging: ced1401: fix ced_free_circ_block()

Rename camel case arguments and locals in function ced_free_circ_block()
Signed-off-by: default avatarLuca Ellero <luca.ellero@brickedbrain.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 7b7f6020
...@@ -1456,79 +1456,90 @@ int ced_get_circ_block(struct ced_data *ced, TCIRCBLOCK __user *ucb) ...@@ -1456,79 +1456,90 @@ int ced_get_circ_block(struct ced_data *ced, TCIRCBLOCK __user *ucb)
** **
** Frees a block of circularly-transferred data and returns the next one. ** Frees a block of circularly-transferred data and returns the next one.
****************************************************************************/ ****************************************************************************/
int ced_free_circ_block(struct ced_data *ced, TCIRCBLOCK __user *pCB) int ced_free_circ_block(struct ced_data *ced, TCIRCBLOCK __user *ucb)
{ {
int iReturn = U14ERR_NOERROR; int ret = U14ERR_NOERROR;
unsigned int nArea, uStart, uSize; unsigned int area, start, size;
TCIRCBLOCK cb; TCIRCBLOCK cb;
dev_dbg(&ced->interface->dev, "%s\n", __func__); dev_dbg(&ced->interface->dev, "%s\n", __func__);
if (copy_from_user(&cb, pCB, sizeof(cb))) if (copy_from_user(&cb, ucb, sizeof(cb)))
return -EFAULT; return -EFAULT;
mutex_lock(&ced->io_mutex); mutex_lock(&ced->io_mutex);
nArea = cb.nArea; /* Retrieve parameters first */ area = cb.nArea; /* Retrieve parameters first */
uStart = cb.dwOffset; start = cb.dwOffset;
uSize = cb.dwSize; size = cb.dwSize;
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 (area < MAX_TRANSAREAS) { /* The area number must be OK */
/* Pointer to relevant info */ /* Pointer to relevant info */
struct transarea *pArea = &ced->trans_def[nArea]; struct transarea *ta = &ced->trans_def[area];
spin_lock_irq(&ced->staged_lock); /* Lock others out */ spin_lock_irq(&ced->staged_lock); /* Lock others out */
if ((pArea->used) && (pArea->circular) && /* Must be circular area */ if ((ta->used) && (ta->circular) && /* Must be circular area */
(pArea->circ_to_host)) { /* For now at least must be to host */ (ta->circ_to_host)) { /* For now at least must be to host */
bool bWaiting = false; bool waiting = false;
if ((pArea->blocks[0].size >= uSize) && /* Got anything? */ if ((ta->blocks[0].size >= size) && /* Got anything? */
(pArea->blocks[0].offset == uStart)) { /* Must be legal data */ (ta->blocks[0].offset == start)) { /* Must be legal data */
pArea->blocks[0].size -= uSize; ta->blocks[0].size -= size;
pArea->blocks[0].offset += uSize; ta->blocks[0].offset += size;
if (pArea->blocks[0].size == 0) { /* Have we emptied this block? */
if (pArea->blocks[1].size) { /* Is there a second block? */ /* Have we emptied this block? */
pArea->blocks[0] = pArea->blocks[1]; /* Copy down block 2 data */ if (ta->blocks[0].size == 0) {
pArea->blocks[1].size = 0; /* and mark the second block as unused */ /* Is there a second block? */
pArea->blocks[1].offset = 0; if (ta->blocks[1].size) {
/* Copy down block 2 data */
ta->blocks[0] = ta->blocks[1];
/* and mark the second */
/* block as unused */
ta->blocks[1].size = 0;
ta->blocks[1].offset = 0;
} else } else
pArea->blocks[0].offset = 0; ta->blocks[0].offset = 0;
} }
dev_dbg(&ced->interface->dev, dev_dbg(&ced->interface->dev,
"%s: free %d bytes at %d, return %d bytes at %d, wait=%d\n", "%s: free %d bytes at %d, "
__func__, uSize, uStart, "return %d bytes at %d, wait=%d\n",
pArea->blocks[0].size, __func__, size, start,
pArea->blocks[0].offset, ta->blocks[0].size,
ta->blocks[0].offset,
ced->xfer_waiting); ced->xfer_waiting);
/* Return the next available block of memory as well */ /* Return the next available block of */
if (pArea->blocks[0].size > 0) { /* Got anything? */ /* memory as well */
if (ta->blocks[0].size > 0) {/* Got anything? */
cb.dwOffset = cb.dwOffset =
pArea->blocks[0].offset; ta->blocks[0].offset;
cb.dwSize = pArea->blocks[0].size; cb.dwSize = ta->blocks[0].size;
} }
bWaiting = ced->xfer_waiting; waiting = ced->xfer_waiting;
if (bWaiting && ced->staged_urb_pending) { if (waiting && ced->staged_urb_pending) {
dev_err(&ced->interface->dev, dev_err(&ced->interface->dev,
"%s: ERROR: waiting xfer and staged Urb pending!\n", "%s: ERROR: waiting xfer and "
"staged Urb pending!\n",
__func__); __func__);
bWaiting = false; waiting = false;
} }
} else { } else {
dev_err(&ced->interface->dev, dev_err(&ced->interface->dev,
"%s: ERROR: freeing %d bytes at %d, block 0 is %d bytes at %d\n", "%s: ERROR: freeing %d bytes at %d, "
__func__, uSize, uStart, "block 0 is %d bytes at %d\n",
pArea->blocks[0].size, __func__, size, start,
pArea->blocks[0].offset); ta->blocks[0].size,
iReturn = U14ERR_NOMEMORY; ta->blocks[0].offset);
ret = U14ERR_NOMEMORY;
} }
/* If we have one, kick off pending transfer */ /* If we have one, kick off pending transfer */
if (bWaiting) { /* Got a block xfer waiting? */ if (waiting) { /* Got a block xfer waiting? */
int RWMStat = int RWMStat =
ced_read_write_mem(ced, ced_read_write_mem(ced,
!ced->dma_info.outward, !ced->dma_info.outward,
...@@ -1541,15 +1552,15 @@ int ced_free_circ_block(struct ced_data *ced, TCIRCBLOCK __user *pCB) ...@@ -1541,15 +1552,15 @@ int ced_free_circ_block(struct ced_data *ced, TCIRCBLOCK __user *pCB)
__func__, RWMStat); __func__, RWMStat);
} }
} else } else
iReturn = U14ERR_NOTSET; ret = U14ERR_NOTSET;
spin_unlock_irq(&ced->staged_lock); spin_unlock_irq(&ced->staged_lock);
} else } else
iReturn = U14ERR_BADAREA; ret = U14ERR_BADAREA;
if (copy_to_user(pCB, &cb, sizeof(cb))) if (copy_to_user(ucb, &cb, sizeof(cb)))
iReturn = -EFAULT; ret = -EFAULT;
mutex_unlock(&ced->io_mutex); mutex_unlock(&ced->io_mutex);
return iReturn; return ret;
} }
...@@ -254,7 +254,7 @@ extern int ced_dbg_stop_loop(struct ced_data *ced); ...@@ -254,7 +254,7 @@ extern int ced_dbg_stop_loop(struct ced_data *ced);
extern int ced_set_circular(struct ced_data *ced, extern int ced_set_circular(struct ced_data *ced,
struct transfer_area_desc __user *utd); struct transfer_area_desc __user *utd);
extern int ced_get_circ_block(struct ced_data *ced, TCIRCBLOCK __user *ucb); extern int ced_get_circ_block(struct ced_data *ced, TCIRCBLOCK __user *ucb);
extern int ced_free_circ_block(struct ced_data *ced, TCIRCBLOCK __user *pCB); extern int ced_free_circ_block(struct ced_data *ced, TCIRCBLOCK __user *ucb);
extern int ced_wait_event(struct ced_data *ced, int area, int time_out); extern int ced_wait_event(struct ced_data *ced, int area, int time_out);
extern int ced_test_event(struct ced_data *ced, int area); extern int ced_test_event(struct ced_data *ced, int area);
#endif #endif
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