staging: sep: Add interfaces for the new functions
[This is picked out of the differences between the upstream driver and the staging driver. I'm resolving the differences as a series of updates -AC] Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
aca58ec828
Коммит
6ab80c2608
|
@ -3067,9 +3067,13 @@ static long sep_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|||
|
||||
switch (cmd) {
|
||||
case SEP_IOCSENDSEPCOMMAND:
|
||||
dev_dbg(&sep->pdev->dev,
|
||||
"[PID%d] SEP_IOCSENDSEPCOMMAND start\n",
|
||||
current->pid);
|
||||
if (1 == test_bit(SEP_LEGACY_SENDMSG_DONE_OFFSET,
|
||||
&call_status->status)) {
|
||||
dev_dbg(&sep->pdev->dev, "[PID%d] send msg already done\n",
|
||||
dev_warn(&sep->pdev->dev,
|
||||
"[PID%d] send msg already done\n",
|
||||
current->pid);
|
||||
error = -EPROTO;
|
||||
goto end_function;
|
||||
|
@ -3079,37 +3083,71 @@ static long sep_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|||
if (!error)
|
||||
set_bit(SEP_LEGACY_SENDMSG_DONE_OFFSET,
|
||||
&call_status->status);
|
||||
dev_dbg(&sep->pdev->dev, "[PID%d] SEP_IOCSENDSEPCOMMAND end\n",
|
||||
dev_dbg(&sep->pdev->dev,
|
||||
"[PID%d] SEP_IOCSENDSEPCOMMAND end\n",
|
||||
current->pid);
|
||||
break;
|
||||
case SEP_IOCENDTRANSACTION:
|
||||
dev_dbg(&sep->pdev->dev,
|
||||
"[PID%d] SEP_IOCENDTRANSACTION start\n",
|
||||
current->pid);
|
||||
error = sep_end_transaction_handler(sep, dma_ctx, call_status,
|
||||
my_queue_elem);
|
||||
dev_dbg(&sep->pdev->dev, "[PID%d] SEP_IOCENDTRANSACTION end\n",
|
||||
my_queue_elem);
|
||||
dev_dbg(&sep->pdev->dev,
|
||||
"[PID%d] SEP_IOCENDTRANSACTION end\n",
|
||||
current->pid);
|
||||
break;
|
||||
case SEP_IOCPREPAREDCB:
|
||||
dev_dbg(&sep->pdev->dev,
|
||||
"[PID%d] SEP_IOCPREPAREDCB start\n",
|
||||
current->pid);
|
||||
case SEP_IOCPREPAREDCB_SECURE_DMA:
|
||||
dev_dbg(&sep->pdev->dev,
|
||||
"[PID%d] SEP_IOCPREPAREDCB_SECURE_DMA start\n",
|
||||
current->pid);
|
||||
if (1 == test_bit(SEP_LEGACY_SENDMSG_DONE_OFFSET,
|
||||
&call_status->status)) {
|
||||
dev_dbg(&sep->pdev->dev,
|
||||
"[PID%d] dcb preparation needed before send msg\n",
|
||||
dev_warn(&sep->pdev->dev,
|
||||
"[PID%d] dcb prep needed before send msg\n",
|
||||
current->pid);
|
||||
error = -EPROTO;
|
||||
goto end_function;
|
||||
}
|
||||
|
||||
if (!arg) {
|
||||
dev_dbg(&sep->pdev->dev,
|
||||
"[PID%d] dcb prep null arg\n", current->pid);
|
||||
error = -EINVAL;
|
||||
dev_warn(&sep->pdev->dev,
|
||||
"[PID%d] dcb null arg\n", current->pid);
|
||||
error = EINVAL;
|
||||
goto end_function;
|
||||
}
|
||||
|
||||
error = sep_prepare_dcb_handler(sep, arg, false, dma_ctx);
|
||||
dev_dbg(&sep->pdev->dev, "[PID%d] SEP_IOCPREPAREDCB end\n",
|
||||
if (cmd == SEP_IOCPREPAREDCB) {
|
||||
/* No secure dma */
|
||||
dev_dbg(&sep->pdev->dev,
|
||||
"[PID%d] SEP_IOCPREPAREDCB (no secure_dma)\n",
|
||||
current->pid);
|
||||
|
||||
error = sep_prepare_dcb_handler(sep, arg, false,
|
||||
dma_ctx);
|
||||
} else {
|
||||
/* Secure dma */
|
||||
dev_dbg(&sep->pdev->dev,
|
||||
"[PID%d] SEP_IOC_POC (with secure_dma)\n",
|
||||
current->pid);
|
||||
|
||||
error = sep_prepare_dcb_handler(sep, arg, true,
|
||||
dma_ctx);
|
||||
}
|
||||
dev_dbg(&sep->pdev->dev, "[PID%d] dcb's end\n",
|
||||
current->pid);
|
||||
break;
|
||||
case SEP_IOCFREEDCB:
|
||||
dev_dbg(&sep->pdev->dev, "[PID%d] SEP_IOCFREEDCB start\n",
|
||||
current->pid);
|
||||
case SEP_IOCFREEDCB_SECURE_DMA:
|
||||
dev_dbg(&sep->pdev->dev,
|
||||
"[PID%d] SEP_IOCFREEDCB_SECURE_DMA start\n",
|
||||
current->pid);
|
||||
error = sep_free_dcb_handler(sep, dma_ctx);
|
||||
dev_dbg(&sep->pdev->dev, "[PID%d] SEP_IOCFREEDCB end\n",
|
||||
current->pid);
|
||||
|
|
Загрузка…
Ссылка в новой задаче