Lines Matching defs:cctx

252 	struct fastrpc_channel_ctx *cctx;
286 struct fastrpc_channel_ctx *cctx;
297 struct fastrpc_channel_ctx *cctx;
319 int vmid = map->fl->cctx->vmperms[0].vmid;
455 struct device *rdev = &fl->cctx->rpdev->dev;
462 struct fastrpc_channel_ctx *cctx;
464 cctx = container_of(ref, struct fastrpc_channel_ctx, refcount);
466 kfree(cctx);
469 static void fastrpc_channel_ctx_get(struct fastrpc_channel_ctx *cctx)
471 kref_get(&cctx->refcount);
474 static void fastrpc_channel_ctx_put(struct fastrpc_channel_ctx *cctx)
476 kref_put(&cctx->refcount, fastrpc_channel_ctx_free);
482 struct fastrpc_channel_ctx *cctx;
487 cctx = ctx->cctx;
495 spin_lock_irqsave(&cctx->lock, flags);
496 idr_remove(&cctx->ctx_idr, ctx->ctxid >> 4);
497 spin_unlock_irqrestore(&cctx->lock, flags);
503 fastrpc_channel_ctx_put(cctx);
577 struct fastrpc_channel_ctx *cctx = user->cctx;
611 fastrpc_channel_ctx_get(cctx);
617 ctx->cctx = cctx;
625 spin_lock_irqsave(&cctx->lock, flags);
626 ret = idr_alloc_cyclic(&cctx->ctx_idr, ctx, 1,
629 spin_unlock_irqrestore(&cctx->lock, flags);
633 spin_unlock_irqrestore(&cctx->lock, flags);
642 fastrpc_channel_ctx_put(cctx);
814 dst_perms[1].vmid = fl->cctx->vmperms[0].vmid;
1108 struct fastrpc_channel_ctx *cctx;
1113 cctx = fl->cctx;
1127 ret = rpmsg_send(cctx->rpdev->ept, (void *)msg, sizeof(*msg));
1148 if (!fl->cctx->rpdev)
1205 list_add_tail(&buf->node, &fl->cctx->invoke_interrupted_mmaps);
1218 if (!fl->is_secure_dev && fl->cctx->secure) {
1224 if (!fl->cctx->unsigned_support || !unsigned_pd_request) {
1225 dev_err(&fl->cctx->rpdev->dev, "Error: Untrusted application trying to offload to signed PD");
1273 if (!fl->cctx->remote_heap) {
1275 &fl->cctx->remote_heap);
1280 if (fl->cctx->vmcount) {
1283 err = qcom_scm_assign_mem(fl->cctx->remote_heap->phys,
1284 (u64)fl->cctx->remote_heap->size,
1286 fl->cctx->vmperms, fl->cctx->vmcount);
1289 fl->cctx->remote_heap->phys, fl->cctx->remote_heap->size, err);
1308 pages[0].addr = fl->cctx->remote_heap->phys;
1309 pages[0].size = fl->cctx->remote_heap->size;
1326 if (fl->cctx->vmcount) {
1331 for (i = 0; i < fl->cctx->vmcount; i++)
1332 src_perms |= BIT(fl->cctx->vmperms[i].vmid);
1336 err = qcom_scm_assign_mem(fl->cctx->remote_heap->phys,
1337 (u64)fl->cctx->remote_heap->size,
1341 fl->cctx->remote_heap->phys, fl->cctx->remote_heap->size, err);
1344 fastrpc_buf_free(fl->cctx->remote_heap);
1470 struct fastrpc_channel_ctx *cctx)
1476 spin_lock_irqsave(&cctx->lock, flags);
1477 for (i = 0; i < cctx->sesscount; i++) {
1478 if (!cctx->session[i].used && cctx->session[i].valid) {
1479 cctx->session[i].used = true;
1480 session = &cctx->session[i];
1484 spin_unlock_irqrestore(&cctx->lock, flags);
1489 static void fastrpc_session_free(struct fastrpc_channel_ctx *cctx,
1494 spin_lock_irqsave(&cctx->lock, flags);
1496 spin_unlock_irqrestore(&cctx->lock, flags);
1518 struct fastrpc_channel_ctx *cctx = fl->cctx;
1526 spin_lock_irqsave(&cctx->lock, flags);
1528 spin_unlock_irqrestore(&cctx->lock, flags);
1546 fastrpc_session_free(cctx, fl->sctx);
1547 fastrpc_channel_ctx_put(cctx);
1558 struct fastrpc_channel_ctx *cctx;
1564 cctx = fdevice->cctx;
1571 fastrpc_channel_ctx_get(cctx);
1581 fl->cctx = cctx;
1584 fl->sctx = fastrpc_session_alloc(cctx);
1586 dev_err(&cctx->rpdev->dev, "No session available\n");
1593 spin_lock_irqsave(&cctx->lock, flags);
1594 list_add_tail(&fl->user, &cctx->users);
1595 spin_unlock_irqrestore(&cctx->lock, flags);
1714 struct fastrpc_channel_ctx *cctx = fl->cctx;
1721 spin_lock_irqsave(&cctx->lock, flags);
1723 if (cctx->valid_attributes) {
1724 spin_unlock_irqrestore(&cctx->lock, flags);
1727 spin_unlock_irqrestore(&cctx->lock, flags);
1735 dev_info(&cctx->rpdev->dev,
1740 dev_err(&cctx->rpdev->dev, "Error: dsp information is incorrect err: %d\n", err);
1745 spin_lock_irqsave(&cctx->lock, flags);
1746 memcpy(cctx->dsp_attributes, dsp_attributes, FASTRPC_MAX_DSP_ATTRIBUTES_LEN);
1747 cctx->valid_attributes = true;
1748 spin_unlock_irqrestore(&cctx->lock, flags);
1751 cap->capability = cctx->dsp_attributes[attribute_id];
1765 dev_err(&fl->cctx->rpdev->dev, "Error: Invalid domain id:%d, err:%d\n",
1772 dev_err(&fl->cctx->rpdev->dev, "Error: modem not supported %d\n", err);
1777 dev_err(&fl->cctx->rpdev->dev, "Error: invalid attribute: %d, err: %d\n",
1918 if (req.flags == ADSP_MMAP_REMOTE_HEAP_ADDR && fl->cctx->vmcount) {
1922 &src_perms, fl->cctx->vmperms, fl->cctx->vmcount);
2141 struct fastrpc_channel_ctx *cctx;
2148 cctx = dev_get_drvdata(dev->parent);
2149 if (!cctx)
2154 spin_lock_irqsave(&cctx->lock, flags);
2155 if (cctx->sesscount >= FASTRPC_MAX_SESSIONS) {
2157 spin_unlock_irqrestore(&cctx->lock, flags);
2160 sess = &cctx->session[cctx->sesscount++];
2173 if (cctx->sesscount >= FASTRPC_MAX_SESSIONS)
2175 dup_sess = &cctx->session[cctx->sesscount++];
2179 spin_unlock_irqrestore(&cctx->lock, flags);
2191 struct fastrpc_channel_ctx *cctx = dev_get_drvdata(pdev->dev.parent);
2196 spin_lock_irqsave(&cctx->lock, flags);
2198 if (cctx->session[i].sid == sess->sid) {
2199 cctx->session[i].valid = false;
2200 cctx->sesscount--;
2203 spin_unlock_irqrestore(&cctx->lock, flags);
2221 static int fastrpc_device_register(struct device *dev, struct fastrpc_channel_ctx *cctx,
2232 fdev->cctx = cctx;
2243 cctx->secure_fdevice = fdev;
2245 cctx->fdevice = fdev;
2372 struct fastrpc_channel_ctx *cctx = dev_get_drvdata(&rpdev->dev);
2378 spin_lock_irqsave(&cctx->lock, flags);
2379 cctx->rpdev = NULL;
2380 list_for_each_entry(user, &cctx->users, user)
2382 spin_unlock_irqrestore(&cctx->lock, flags);
2384 if (cctx->fdevice)
2385 misc_deregister(&cctx->fdevice->miscdev);
2387 if (cctx->secure_fdevice)
2388 misc_deregister(&cctx->secure_fdevice->miscdev);
2390 list_for_each_entry_safe(buf, b, &cctx->invoke_interrupted_mmaps, node)
2393 if (cctx->remote_heap)
2394 fastrpc_buf_free(cctx->remote_heap);
2398 fastrpc_channel_ctx_put(cctx);
2404 struct fastrpc_channel_ctx *cctx = dev_get_drvdata(&rpdev->dev);
2415 spin_lock_irqsave(&cctx->lock, flags);
2416 ctx = idr_find(&cctx->ctx_idr, ctxid);
2417 spin_unlock_irqrestore(&cctx->lock, flags);