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
255 static int encode_reqs(struct qaic_device *qdev, struct bo_slice *slice, in encode_reqs() argument
390 static int qaic_map_one_slice(struct qaic_device *qdev, struct qaic_bo *bo, in qaic_map_one_slice() argument
397 ret = clone_range_of_sgt_for_slice(qdev, &sgt, bo->sgt, slice_ent->size, slice_ent->offset); in qaic_map_one_slice()
421 ret = encode_reqs(qdev, slice, slice_ent); in qaic_map_one_slice()
443 static int create_sgt(struct qaic_device *qdev, struct sg_table **sgt_out, u64 size) in create_sgt() argument
557 static int qaic_validate_req(struct qaic_device *qdev, struct qaic_attach_slice_entry *slice_ent, in qaic_validate_req() argument
685 struct qaic_device *qdev; in qaic_create_bo_ioctl() local
705 qdev = usr->qddev->qdev; in qaic_create_bo_ioctl()
706 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in qaic_create_bo_ioctl()
707 if (qdev->dev_state != QAIC_ONLINE) { in qaic_create_bo_ioctl()
722 ret = create_sgt(qdev, &bo->sgt, size); in qaic_create_bo_ioctl()
735 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_create_bo_ioctl()
743 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_create_bo_ioctl()
754 struct qaic_device *qdev; in qaic_mmap_bo_ioctl() local
765 qdev = usr->qddev->qdev; in qaic_mmap_bo_ioctl()
766 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in qaic_mmap_bo_ioctl()
767 if (qdev->dev_state != QAIC_ONLINE) { in qaic_mmap_bo_ioctl()
783 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_mmap_bo_ioctl()
855 static int qaic_prepare_export_bo(struct qaic_device *qdev, struct qaic_bo *bo, in qaic_prepare_export_bo() argument
860 ret = dma_map_sgtable(&qdev->pdev->dev, bo->sgt, hdr->dir, 0); in qaic_prepare_export_bo()
867 static int qaic_prepare_bo(struct qaic_device *qdev, struct qaic_bo *bo, in qaic_prepare_bo() argument
875 ret = qaic_prepare_export_bo(qdev, bo, hdr); in qaic_prepare_bo()
877 bo->dbc = &qdev->dbc[hdr->dbc_id]; in qaic_prepare_bo()
889 static void qaic_unprepare_export_bo(struct qaic_device *qdev, struct qaic_bo *bo) in qaic_unprepare_export_bo() argument
891 dma_unmap_sgtable(&qdev->pdev->dev, bo->sgt, bo->dir, 0); in qaic_unprepare_export_bo()
894 static void qaic_unprepare_bo(struct qaic_device *qdev, struct qaic_bo *bo) in qaic_unprepare_bo() argument
899 qaic_unprepare_export_bo(qdev, bo); in qaic_unprepare_bo()
917 static int qaic_attach_slicing_bo(struct qaic_device *qdev, struct qaic_bo *bo, in qaic_attach_slicing_bo() argument
924 ret = qaic_map_one_slice(qdev, bo, &slice_ent[i]); in qaic_attach_slicing_bo()
946 struct qaic_device *qdev; in qaic_attach_slice_bo_ioctl() local
973 qdev = usr->qddev->qdev; in qaic_attach_slice_bo_ioctl()
974 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in qaic_attach_slice_bo_ioctl()
975 if (qdev->dev_state != QAIC_ONLINE) { in qaic_attach_slice_bo_ioctl()
980 if (args->hdr.dbc_id >= qdev->num_dbc) { in qaic_attach_slice_bo_ioctl()
1005 ret = qaic_validate_req(qdev, slice_ent, args->hdr.count, obj->size); in qaic_attach_slice_bo_ioctl()
1019 dbc = &qdev->dbc[args->hdr.dbc_id]; in qaic_attach_slice_bo_ioctl()
1026 ret = qaic_prepare_bo(qdev, bo, &args->hdr); in qaic_attach_slice_bo_ioctl()
1030 ret = qaic_attach_slicing_bo(qdev, bo, &args->hdr, slice_ent); in qaic_attach_slice_bo_ioctl()
1035 dma_sync_sgtable_for_cpu(&qdev->pdev->dev, bo->sgt, args->hdr.dir); in qaic_attach_slice_bo_ioctl()
1042 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_attach_slice_bo_ioctl()
1048 qaic_unprepare_bo(qdev, bo); in qaic_attach_slice_bo_ioctl()
1058 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_attach_slice_bo_ioctl()
1074 static inline int copy_exec_reqs(struct qaic_device *qdev, struct bo_slice *slice, u32 dbc_id, in copy_exec_reqs() argument
1077 struct dma_bridge_chan *dbc = &qdev->dbc[dbc_id]; in copy_exec_reqs()
1103 static inline int copy_partial_exec_reqs(struct qaic_device *qdev, struct bo_slice *slice, in copy_partial_exec_reqs() argument
1170 static int send_bo_list_to_device(struct qaic_device *qdev, struct drm_file *file_priv, in send_bo_list_to_device() argument
1225 ret = copy_partial_exec_reqs(qdev, slice, 0, dbc, head, tail); in send_bo_list_to_device()
1228 ret = copy_partial_exec_reqs(qdev, slice, in send_bo_list_to_device()
1232 ret = copy_exec_reqs(qdev, slice, dbc->id, head, tail); in send_bo_list_to_device()
1241 dma_sync_sgtable_for_device(&qdev->pdev->dev, bo->sgt, bo->dir); in send_bo_list_to_device()
1258 dma_sync_sgtable_for_cpu(&qdev->pdev->dev, bo->sgt, bo->dir); in send_bo_list_to_device()
1301 struct qaic_device *qdev; in __qaic_execute_bo_ioctl() local
1339 qdev = usr->qddev->qdev; in __qaic_execute_bo_ioctl()
1340 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in __qaic_execute_bo_ioctl()
1341 if (qdev->dev_state != QAIC_ONLINE) { in __qaic_execute_bo_ioctl()
1346 if (args->hdr.dbc_id >= qdev->num_dbc) { in __qaic_execute_bo_ioctl()
1351 dbc = &qdev->dbc[args->hdr.dbc_id]; in __qaic_execute_bo_ioctl()
1370 ret = send_bo_list_to_device(qdev, file_priv, exec, args->hdr.count, is_partial, dbc, in __qaic_execute_bo_ioctl()
1388 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in __qaic_execute_bo_ioctl()
1480 if (!dbc->qdev->single_msi) in dbc_irq_handler()
1497 if (dbc->qdev->dev_state != QAIC_ONLINE) { in irq_polling_work()
1541 struct qaic_device *qdev; in dbc_irq_threaded_fn() local
1552 qdev = dbc->qdev; in dbc_irq_threaded_fn()
1594 pci_dbg(qdev->pdev, "req_id %d failed with status %d\n", req_id, status); in dbc_irq_threaded_fn()
1615 dma_sync_sgtable_for_cpu(&qdev->pdev->dev, bo->sgt, bo->dir); in dbc_irq_threaded_fn()
1637 if (!qdev->single_msi && likely(!datapath_polling)) in dbc_irq_threaded_fn()
1644 if (!qdev->single_msi && likely(!datapath_polling)) in dbc_irq_threaded_fn()
1653 if (!qdev->single_msi && likely(!datapath_polling)) in dbc_irq_threaded_fn()
1667 struct qaic_device *qdev; in qaic_wait_bo_ioctl() local
1684 qdev = usr->qddev->qdev; in qaic_wait_bo_ioctl()
1685 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in qaic_wait_bo_ioctl()
1686 if (qdev->dev_state != QAIC_ONLINE) { in qaic_wait_bo_ioctl()
1691 if (args->dbc_id >= qdev->num_dbc) { in qaic_wait_bo_ioctl()
1696 dbc = &qdev->dbc[args->dbc_id]; in qaic_wait_bo_ioctl()
1729 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_wait_bo_ioctl()
1741 struct qaic_device *qdev; in qaic_perf_stats_bo_ioctl() local
1753 qdev = usr->qddev->qdev; in qaic_perf_stats_bo_ioctl()
1754 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in qaic_perf_stats_bo_ioctl()
1755 if (qdev->dev_state != QAIC_ONLINE) { in qaic_perf_stats_bo_ioctl()
1760 if (args->hdr.dbc_id >= qdev->num_dbc) { in qaic_perf_stats_bo_ioctl()
1807 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_perf_stats_bo_ioctl()
1813 static void detach_slice_bo(struct qaic_device *qdev, struct qaic_bo *bo) in detach_slice_bo() argument
1816 qaic_unprepare_bo(qdev, bo); in detach_slice_bo()
1828 struct qaic_device *qdev; in qaic_detach_slice_bo_ioctl() local
1844 qdev = usr->qddev->qdev; in qaic_detach_slice_bo_ioctl()
1845 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock); in qaic_detach_slice_bo_ioctl()
1846 if (qdev->dev_state != QAIC_ONLINE) { in qaic_detach_slice_bo_ioctl()
1883 detach_slice_bo(qdev, bo); in qaic_detach_slice_bo_ioctl()
1892 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id); in qaic_detach_slice_bo_ioctl()
1898 static void empty_xfer_list(struct qaic_device *qdev, struct dma_bridge_chan *dbc) in empty_xfer_list() argument
1914 dma_sync_sgtable_for_cpu(&qdev->pdev->dev, bo->sgt, bo->dir); in empty_xfer_list()
1922 int disable_dbc(struct qaic_device *qdev, u32 dbc_id, struct qaic_user *usr) in disable_dbc() argument
1924 if (!qdev->dbc[dbc_id].usr || qdev->dbc[dbc_id].usr->handle != usr->handle) in disable_dbc()
1927 qdev->dbc[dbc_id].usr = NULL; in disable_dbc()
1928 synchronize_srcu(&qdev->dbc[dbc_id].ch_lock); in disable_dbc()
1940 void enable_dbc(struct qaic_device *qdev, u32 dbc_id, struct qaic_user *usr) in enable_dbc() argument
1942 qdev->dbc[dbc_id].usr = usr; in enable_dbc()
1945 void wakeup_dbc(struct qaic_device *qdev, u32 dbc_id) in wakeup_dbc() argument
1947 struct dma_bridge_chan *dbc = &qdev->dbc[dbc_id]; in wakeup_dbc()
1950 empty_xfer_list(qdev, dbc); in wakeup_dbc()
1956 empty_xfer_list(qdev, dbc); in wakeup_dbc()
1959 void release_dbc(struct qaic_device *qdev, u32 dbc_id) in release_dbc() argument
1964 dbc = &qdev->dbc[dbc_id]; in release_dbc()
1968 wakeup_dbc(qdev, dbc_id); in release_dbc()
1970 dma_free_coherent(&qdev->pdev->dev, dbc->total_size, dbc->req_q_base, dbc->dma_addr); in release_dbc()
1980 detach_slice_bo(qdev, bo); in release_dbc()