Lines Matching refs:qdev

172 static int clone_range_of_sgt_for_slice(struct qaic_device *qdev, struct sg_table **sgt_out,  in clone_range_of_sgt_for_slice()  argument
252 static int encode_reqs(struct qaic_device *qdev, struct bo_slice *slice, in encode_reqs() argument
387 static int qaic_map_one_slice(struct qaic_device *qdev, struct qaic_bo *bo, in qaic_map_one_slice() argument
394 ret = clone_range_of_sgt_for_slice(qdev, &sgt, bo->sgt, slice_ent->size, slice_ent->offset); in qaic_map_one_slice()
418 ret = encode_reqs(qdev, slice, slice_ent); in qaic_map_one_slice()
440 static int create_sgt(struct qaic_device *qdev, struct sg_table **sgt_out, u64 size) in create_sgt() argument
554 static int qaic_validate_req(struct qaic_device *qdev, struct qaic_attach_slice_entry *slice_ent, in qaic_validate_req() argument
680 struct qaic_device *qdev; in qaic_create_bo_ioctl() local
700 qdev = usr->qddev->qdev; in qaic_create_bo_ioctl()
701 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in qaic_create_bo_ioctl()
702 if (qdev->dev_state != QAIC_ONLINE) { in qaic_create_bo_ioctl()
717 ret = create_sgt(qdev, &bo->sgt, size); in qaic_create_bo_ioctl()
731 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_create_bo_ioctl()
739 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_create_bo_ioctl()
750 struct qaic_device *qdev; in qaic_mmap_bo_ioctl() local
761 qdev = usr->qddev->qdev; in qaic_mmap_bo_ioctl()
762 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in qaic_mmap_bo_ioctl()
763 if (qdev->dev_state != QAIC_ONLINE) { in qaic_mmap_bo_ioctl()
779 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_mmap_bo_ioctl()
851 static int qaic_prepare_export_bo(struct qaic_device *qdev, struct qaic_bo *bo, in qaic_prepare_export_bo() argument
856 ret = dma_map_sgtable(&qdev->pdev->dev, bo->sgt, hdr->dir, 0); in qaic_prepare_export_bo()
863 static int qaic_prepare_bo(struct qaic_device *qdev, struct qaic_bo *bo, in qaic_prepare_bo() argument
871 ret = qaic_prepare_export_bo(qdev, bo, hdr); in qaic_prepare_bo()
873 bo->dbc = &qdev->dbc[hdr->dbc_id]; in qaic_prepare_bo()
885 static void qaic_unprepare_export_bo(struct qaic_device *qdev, struct qaic_bo *bo) in qaic_unprepare_export_bo() argument
887 dma_unmap_sgtable(&qdev->pdev->dev, bo->sgt, bo->dir, 0); in qaic_unprepare_export_bo()
890 static void qaic_unprepare_bo(struct qaic_device *qdev, struct qaic_bo *bo) in qaic_unprepare_bo() argument
895 qaic_unprepare_export_bo(qdev, bo); in qaic_unprepare_bo()
913 static int qaic_attach_slicing_bo(struct qaic_device *qdev, struct qaic_bo *bo, in qaic_attach_slicing_bo() argument
920 ret = qaic_map_one_slice(qdev, bo, &slice_ent[i]); in qaic_attach_slicing_bo()
942 struct qaic_device *qdev; in qaic_attach_slice_bo_ioctl() local
969 qdev = usr->qddev->qdev; in qaic_attach_slice_bo_ioctl()
970 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in qaic_attach_slice_bo_ioctl()
971 if (qdev->dev_state != QAIC_ONLINE) { in qaic_attach_slice_bo_ioctl()
976 if (args->hdr.dbc_id >= qdev->num_dbc) { in qaic_attach_slice_bo_ioctl()
1001 ret = qaic_validate_req(qdev, slice_ent, args->hdr.count, obj->size); in qaic_attach_slice_bo_ioctl()
1015 dbc = &qdev->dbc[args->hdr.dbc_id]; in qaic_attach_slice_bo_ioctl()
1022 ret = qaic_prepare_bo(qdev, bo, &args->hdr); in qaic_attach_slice_bo_ioctl()
1026 ret = qaic_attach_slicing_bo(qdev, bo, &args->hdr, slice_ent); in qaic_attach_slice_bo_ioctl()
1031 dma_sync_sgtable_for_cpu(&qdev->pdev->dev, bo->sgt, args->hdr.dir); in qaic_attach_slice_bo_ioctl()
1038 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_attach_slice_bo_ioctl()
1044 qaic_unprepare_bo(qdev, bo); in qaic_attach_slice_bo_ioctl()
1054 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_attach_slice_bo_ioctl()
1070 static inline int copy_exec_reqs(struct qaic_device *qdev, struct bo_slice *slice, u32 dbc_id, in copy_exec_reqs() argument
1073 struct dma_bridge_chan *dbc = &qdev->dbc[dbc_id]; in copy_exec_reqs()
1099 static inline int copy_partial_exec_reqs(struct qaic_device *qdev, struct bo_slice *slice, in copy_partial_exec_reqs() argument
1166 static int send_bo_list_to_device(struct qaic_device *qdev, struct drm_file *file_priv, in send_bo_list_to_device() argument
1221 ret = copy_partial_exec_reqs(qdev, slice, 0, dbc, head, tail); in send_bo_list_to_device()
1224 ret = copy_partial_exec_reqs(qdev, slice, in send_bo_list_to_device()
1228 ret = copy_exec_reqs(qdev, slice, dbc->id, head, tail); in send_bo_list_to_device()
1237 dma_sync_sgtable_for_device(&qdev->pdev->dev, bo->sgt, bo->dir); in send_bo_list_to_device()
1254 dma_sync_sgtable_for_cpu(&qdev->pdev->dev, bo->sgt, bo->dir); in send_bo_list_to_device()
1297 struct qaic_device *qdev; in __qaic_execute_bo_ioctl() local
1335 qdev = usr->qddev->qdev; in __qaic_execute_bo_ioctl()
1336 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in __qaic_execute_bo_ioctl()
1337 if (qdev->dev_state != QAIC_ONLINE) { in __qaic_execute_bo_ioctl()
1342 if (args->hdr.dbc_id >= qdev->num_dbc) { in __qaic_execute_bo_ioctl()
1347 dbc = &qdev->dbc[args->hdr.dbc_id]; in __qaic_execute_bo_ioctl()
1366 ret = send_bo_list_to_device(qdev, file_priv, exec, args->hdr.count, is_partial, dbc, in __qaic_execute_bo_ioctl()
1384 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in __qaic_execute_bo_ioctl()
1476 if (!dbc->qdev->single_msi) in dbc_irq_handler()
1493 if (dbc->qdev->dev_state != QAIC_ONLINE) { in irq_polling_work()
1537 struct qaic_device *qdev; in dbc_irq_threaded_fn() local
1548 qdev = dbc->qdev; in dbc_irq_threaded_fn()
1590 pci_dbg(qdev->pdev, "req_id %d failed with status %d\n", req_id, status); in dbc_irq_threaded_fn()
1611 dma_sync_sgtable_for_cpu(&qdev->pdev->dev, bo->sgt, bo->dir); in dbc_irq_threaded_fn()
1633 if (!qdev->single_msi && likely(!datapath_polling)) in dbc_irq_threaded_fn()
1640 if (!qdev->single_msi && likely(!datapath_polling)) in dbc_irq_threaded_fn()
1649 if (!qdev->single_msi && likely(!datapath_polling)) in dbc_irq_threaded_fn()
1663 struct qaic_device *qdev; in qaic_wait_bo_ioctl() local
1680 qdev = usr->qddev->qdev; in qaic_wait_bo_ioctl()
1681 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in qaic_wait_bo_ioctl()
1682 if (qdev->dev_state != QAIC_ONLINE) { in qaic_wait_bo_ioctl()
1687 if (args->dbc_id >= qdev->num_dbc) { in qaic_wait_bo_ioctl()
1692 dbc = &qdev->dbc[args->dbc_id]; in qaic_wait_bo_ioctl()
1725 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_wait_bo_ioctl()
1737 struct qaic_device *qdev; in qaic_perf_stats_bo_ioctl() local
1749 qdev = usr->qddev->qdev; in qaic_perf_stats_bo_ioctl()
1750 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in qaic_perf_stats_bo_ioctl()
1751 if (qdev->dev_state != QAIC_ONLINE) { in qaic_perf_stats_bo_ioctl()
1756 if (args->hdr.dbc_id >= qdev->num_dbc) { in qaic_perf_stats_bo_ioctl()
1803 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_perf_stats_bo_ioctl()
1809 static void detach_slice_bo(struct qaic_device *qdev, struct qaic_bo *bo) in detach_slice_bo() argument
1812 qaic_unprepare_bo(qdev, bo); in detach_slice_bo()
1824 struct qaic_device *qdev; in qaic_detach_slice_bo_ioctl() local
1840 qdev = usr->qddev->qdev; in qaic_detach_slice_bo_ioctl()
1841 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in qaic_detach_slice_bo_ioctl()
1842 if (qdev->dev_state != QAIC_ONLINE) { in qaic_detach_slice_bo_ioctl()
1879 detach_slice_bo(qdev, bo); in qaic_detach_slice_bo_ioctl()
1888 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_detach_slice_bo_ioctl()
1894 static void empty_xfer_list(struct qaic_device *qdev, struct dma_bridge_chan *dbc) in empty_xfer_list() argument
1910 dma_sync_sgtable_for_cpu(&qdev->pdev->dev, bo->sgt, bo->dir); in empty_xfer_list()
1918 int disable_dbc(struct qaic_device *qdev, u32 dbc_id, struct qaic_user *usr) in disable_dbc() argument
1920 if (!qdev->dbc[dbc_id].usr || qdev->dbc[dbc_id].usr->handle != usr->handle) in disable_dbc()
1923 qdev->dbc[dbc_id].usr = NULL; in disable_dbc()
1924 synchronize_srcu(&qdev->dbc[dbc_id].ch_lock); in disable_dbc()
1936 void enable_dbc(struct qaic_device *qdev, u32 dbc_id, struct qaic_user *usr) in enable_dbc() argument
1938 qdev->dbc[dbc_id].usr = usr; in enable_dbc()
1941 void wakeup_dbc(struct qaic_device *qdev, u32 dbc_id) in wakeup_dbc() argument
1943 struct dma_bridge_chan *dbc = &qdev->dbc[dbc_id]; in wakeup_dbc()
1946 empty_xfer_list(qdev, dbc); in wakeup_dbc()
1952 empty_xfer_list(qdev, dbc); in wakeup_dbc()
1955 void release_dbc(struct qaic_device *qdev, u32 dbc_id) in release_dbc() argument
1960 dbc = &qdev->dbc[dbc_id]; in release_dbc()
1964 wakeup_dbc(qdev, dbc_id); in release_dbc()
1966 dma_free_coherent(&qdev->pdev->dev, dbc->total_size, dbc->req_q_base, dbc->dma_addr); in release_dbc()
1976 detach_slice_bo(qdev, bo); in release_dbc()