/linux-4.4.14/drivers/misc/mic/scif/ |
H A D | scif_map.h | 25 struct scif_dev *scifdev, size_t size, scif_alloc_coherent() 30 if (scifdev_self(scifdev)) { scif_alloc_coherent() 35 va = dma_alloc_coherent(&scifdev->sdev->dev, scif_alloc_coherent() 37 if (va && scifdev_is_p2p(scifdev)) scif_alloc_coherent() 38 *dma_handle = *dma_handle + scifdev->base_addr; scif_alloc_coherent() 45 struct scif_dev *scifdev, size_t size) scif_free_coherent() 47 if (scifdev_self(scifdev)) { scif_free_coherent() 50 if (scifdev_is_p2p(scifdev) && local > scifdev->base_addr) scif_free_coherent() 51 local = local - scifdev->base_addr; scif_free_coherent() 52 dma_free_coherent(&scifdev->sdev->dev, scif_free_coherent() 59 void *local, struct scif_dev *scifdev, size_t size) scif_map_single() 63 if (scifdev_self(scifdev)) { scif_map_single() 66 *dma_handle = dma_map_single(&scifdev->sdev->dev, scif_map_single() 68 if (dma_mapping_error(&scifdev->sdev->dev, *dma_handle)) scif_map_single() 70 else if (scifdev_is_p2p(scifdev)) scif_map_single() 71 *dma_handle = *dma_handle + scifdev->base_addr; scif_map_single() 79 scif_unmap_single(dma_addr_t local, struct scif_dev *scifdev, scif_unmap_single() argument 82 if (!scifdev_self(scifdev)) { scif_unmap_single() 83 if (scifdev_is_p2p(scifdev)) scif_unmap_single() 84 local = local - scifdev->base_addr; scif_unmap_single() 85 dma_unmap_single(&scifdev->sdev->dev, local, scif_unmap_single() 91 scif_ioremap(dma_addr_t phys, size_t size, struct scif_dev *scifdev) scif_ioremap() argument 94 struct scif_hw_dev *sdev = scifdev->sdev; scif_ioremap() 96 if (scifdev_self(scifdev)) scif_ioremap() 105 scif_iounmap(void *virt, size_t len, struct scif_dev *scifdev) scif_iounmap() argument 107 if (!scifdev_self(scifdev)) { scif_iounmap() 108 struct scif_hw_dev *sdev = scifdev->sdev; scif_iounmap() 116 struct scif_dev *scifdev) scif_map_page() 120 if (scifdev_self(scifdev)) { scif_map_page() 123 struct scif_hw_dev *sdev = scifdev->sdev; scif_map_page() 129 else if (scifdev_is_p2p(scifdev)) scif_map_page() 130 *dma_handle = *dma_handle + scifdev->base_addr; scif_map_page() 24 scif_alloc_coherent(dma_addr_t *dma_handle, struct scif_dev *scifdev, size_t size, gfp_t gfp) scif_alloc_coherent() argument 44 scif_free_coherent(void *va, dma_addr_t local, struct scif_dev *scifdev, size_t size) scif_free_coherent() argument 58 scif_map_single(dma_addr_t *dma_handle, void *local, struct scif_dev *scifdev, size_t size) scif_map_single() argument 115 scif_map_page(dma_addr_t *dma_handle, struct page *page, struct scif_dev *scifdev) scif_map_page() argument
|
H A D | scif_main.c | 43 struct scif_dev *scifdev = scif_intr_bh_handler() local 46 if (scifdev_self(scifdev)) scif_intr_bh_handler() 47 scif_loopb_msg_handler(scifdev, scifdev->qpairs); scif_intr_bh_handler() 49 scif_nodeqp_intrhandler(scifdev, scifdev->qpairs); scif_intr_bh_handler() 52 int scif_setup_intr_wq(struct scif_dev *scifdev) scif_setup_intr_wq() argument 54 if (!scifdev->intr_wq) { scif_setup_intr_wq() 55 snprintf(scifdev->intr_wqname, sizeof(scifdev->intr_wqname), scif_setup_intr_wq() 56 "SCIF INTR %d", scifdev->node); scif_setup_intr_wq() 57 scifdev->intr_wq = scif_setup_intr_wq() 58 alloc_ordered_workqueue(scifdev->intr_wqname, 0); scif_setup_intr_wq() 59 if (!scifdev->intr_wq) scif_setup_intr_wq() 61 INIT_WORK(&scifdev->intr_bh, scif_intr_bh_handler); scif_setup_intr_wq() 66 void scif_destroy_intr_wq(struct scif_dev *scifdev) scif_destroy_intr_wq() argument 68 if (scifdev->intr_wq) { scif_destroy_intr_wq() 69 destroy_workqueue(scifdev->intr_wq); scif_destroy_intr_wq() 70 scifdev->intr_wq = NULL; scif_destroy_intr_wq() 76 struct scif_dev *scifdev = data; scif_intr_handler() local 77 struct scif_hw_dev *sdev = scifdev->sdev; scif_intr_handler() 79 sdev->hw_ops->ack_interrupt(sdev, scifdev->db); scif_intr_handler() 80 queue_work(scifdev->intr_wq, &scifdev->intr_bh); scif_intr_handler() 86 struct scif_dev *scifdev = container_of(work, struct scif_dev, scif_qp_setup_handler() local 88 struct scif_hw_dev *sdev = scifdev->sdev; scif_qp_setup_handler() 96 scifdev->rdb = bp->h2c_scif_db; scif_qp_setup_handler() 101 scifdev->rdb = ioread8(&bp->c2h_scif_db); scif_qp_setup_handler() 104 err = scif_qp_response(da, scifdev); scif_qp_setup_handler() 106 dev_err(&scifdev->sdev->dev, scif_qp_setup_handler() 109 schedule_delayed_work(&scifdev->qp_dwork, scif_qp_setup_handler() 125 struct scif_dev *scifdev = &scif_dev[i]; scif_setup_scifdev() local 127 scifdev->node = i; scif_setup_scifdev() 128 scifdev->exit = OP_IDLE; scif_setup_scifdev() 129 init_waitqueue_head(&scifdev->disconn_wq); scif_setup_scifdev() 130 mutex_init(&scifdev->lock); scif_setup_scifdev() 131 INIT_WORK(&scifdev->peer_add_work, scif_add_peer_device); scif_setup_scifdev() 132 INIT_DELAYED_WORK(&scifdev->p2p_dwork, scif_setup_scifdev() 134 INIT_DELAYED_WORK(&scifdev->qp_dwork, scif_setup_scifdev() 136 INIT_LIST_HEAD(&scifdev->p2p); scif_setup_scifdev() 137 RCU_INIT_POINTER(scifdev->spdev, NULL); scif_setup_scifdev() 149 struct scif_dev *scifdev = &scif_dev[sdev->dnode]; scif_probe() local 153 scifdev->sdev = sdev; scif_probe() 164 rc = scif_setup_intr_wq(scifdev); scif_probe() 167 rc = scif_setup_qp(scifdev); scif_probe() 170 scifdev->db = sdev->hw_ops->next_db(sdev); scif_probe() 171 scifdev->cookie = sdev->hw_ops->request_irq(sdev, scif_intr_handler, scif_probe() 172 "SCIF_INTR", scifdev, scif_probe() 173 scifdev->db); scif_probe() 174 if (IS_ERR(scifdev->cookie)) { scif_probe() 175 rc = PTR_ERR(scifdev->cookie); scif_probe() 181 bp->c2h_scif_db = scifdev->db; scif_probe() 182 bp->scif_host_dma_addr = scifdev->qp_dma_addr; scif_probe() 186 iowrite8(scifdev->db, &bp->h2c_scif_db); scif_probe() 187 writeq(scifdev->qp_dma_addr, &bp->scif_card_dma_addr); scif_probe() 189 schedule_delayed_work(&scifdev->qp_dwork, scif_probe() 193 scif_free_qp(scifdev); scif_probe() 195 scif_destroy_intr_wq(scifdev); scif_probe() 203 void scif_stop(struct scif_dev *scifdev) scif_stop() argument 218 struct scif_dev *scifdev = &scif_dev[sdev->dnode]; scif_remove() local 232 scif_disconnect_node(scifdev->node, true); scif_remove() 235 scif_stop(scifdev); scif_remove() 239 if (scifdev->cookie) { scif_remove() 240 sdev->hw_ops->free_irq(sdev, scifdev->cookie, scifdev); scif_remove() 241 scifdev->cookie = NULL; scif_remove() 243 scif_destroy_intr_wq(scifdev); scif_remove() 244 cancel_delayed_work(&scifdev->qp_dwork); scif_remove() 245 scif_free_qp(scifdev); scif_remove() 246 scifdev->rdb = -1; scif_remove() 247 scifdev->sdev = NULL; scif_remove()
|
H A D | scif_peer_bus.c | 34 struct scif_dev *scifdev = &scif_dev[sdev->dnode]; scif_peer_release_dev() local 36 scif_cleanup_scifdev(scifdev); scif_peer_release_dev() 40 static int scif_peer_initialize_device(struct scif_dev *scifdev) scif_peer_initialize_device() argument 51 spdev->dev.parent = scifdev->sdev->dev.parent; scif_peer_initialize_device() 53 spdev->dnode = scifdev->node; scif_peer_initialize_device() 59 rcu_assign_pointer(scifdev->spdev, spdev); scif_peer_initialize_device() 67 dev_err(&scifdev->sdev->dev, scif_peer_initialize_device() 68 "dnode %d: initialize_device rc %d\n", scifdev->node, ret); scif_peer_initialize_device() 72 static int scif_peer_add_device(struct scif_dev *scifdev) scif_peer_add_device() argument 74 struct scif_peer_dev *spdev = rcu_dereference(scifdev->spdev); scif_peer_add_device() 81 dev_err(&scifdev->sdev->dev, scif_peer_add_device() 82 "dnode %d: peer device_add failed\n", scifdev->node); scif_peer_add_device() 87 scifdev->signal_pool = dmam_pool_create(pool_name, &scifdev->sdev->dev, scif_peer_add_device() 90 if (!scifdev->signal_pool) { scif_peer_add_device() 91 dev_err(&scifdev->sdev->dev, scif_peer_add_device() 92 "dnode %d: dmam_pool_create failed\n", scifdev->node); scif_peer_add_device() 101 RCU_INIT_POINTER(scifdev->spdev, NULL); scif_peer_add_device() 113 struct scif_dev *scifdev = container_of(work, struct scif_dev, scif_add_peer_device() local 116 scif_peer_add_device(scifdev); scif_add_peer_device() 131 void scif_peer_register_device(struct scif_dev *scifdev) scif_peer_register_device() argument 135 mutex_lock(&scifdev->lock); scif_peer_register_device() 136 ret = scif_peer_initialize_device(scifdev); scif_peer_register_device() 139 schedule_work(&scifdev->peer_add_work); scif_peer_register_device() 141 mutex_unlock(&scifdev->lock); scif_peer_register_device() 144 int scif_peer_unregister_device(struct scif_dev *scifdev) scif_peer_unregister_device() argument 148 mutex_lock(&scifdev->lock); scif_peer_unregister_device() 150 flush_work(&scifdev->peer_add_work); scif_peer_unregister_device() 153 * Continue holding scifdev->lock since theoretically unregister_device scif_peer_unregister_device() 156 spdev = rcu_dereference(scifdev->spdev); scif_peer_unregister_device() 158 mutex_unlock(&scifdev->lock); scif_peer_unregister_device() 162 RCU_INIT_POINTER(scifdev->spdev, NULL); scif_peer_unregister_device() 164 mutex_unlock(&scifdev->lock); scif_peer_unregister_device()
|
H A D | scif_nm.c | 60 void scif_free_qp(struct scif_dev *scifdev) scif_free_qp() argument 62 struct scif_qp *qp = scifdev->qpairs; scif_free_qp() 66 scif_unmap_single(qp->local_buf, scifdev, qp->inbound_q.size); scif_free_qp() 68 scif_unmap_single(qp->local_qp, scifdev, sizeof(struct scif_qp)); scif_free_qp() 69 kfree(scifdev->qpairs); scif_free_qp() 70 scifdev->qpairs = NULL; scif_free_qp() 155 struct scif_dev *scifdev = &scif_dev[node]; scif_handle_remove_node() local 157 if (scif_peer_unregister_device(scifdev)) scif_handle_remove_node() 158 scif_send_acks(scifdev); scif_handle_remove_node() 186 struct scif_dev *scifdev = &scif_dev[node_id]; scif_disconnect_node() local 191 atomic_set(&scifdev->disconn_rescnt, 0); scif_disconnect_node() 202 ret = wait_event_timeout(scifdev->disconn_wq, scif_disconnect_node() 203 (atomic_read(&scifdev->disconn_rescnt) scif_disconnect_node() 206 if (mgmt_initiated && _scifdev_alive(scifdev)) scif_disconnect_node() 211 scif_send_exit(scifdev); scif_disconnect_node() 212 atomic_set(&scifdev->disconn_rescnt, 0); scif_disconnect_node() 217 wait_event_timeout(scifdev->disconn_wq, scif_disconnect_node() 218 (atomic_read(&scifdev->disconn_rescnt) == 1), scif_disconnect_node()
|
H A D | scif_nodeqp.c | 106 int local_size, struct scif_dev *scifdev) scif_setup_qp_connect() 124 err = scif_map_single(&qp->local_buf, local_q, scifdev, local_size); scif_setup_qp_connect() 141 scifdev, sizeof(struct scif_qp)); scif_setup_qp_connect() 147 scif_unmap_single(qp->local_buf, scifdev, local_size); scif_setup_qp_connect() 157 struct scif_dev *scifdev) scif_setup_qp_accept() 168 remote_qp = scif_ioremap(phys, sizeof(struct scif_qp), scifdev); scif_setup_qp_accept() 178 remote_q = scif_ioremap(qp->remote_buf, remote_size, scifdev); scif_setup_qp_accept() 198 err = scif_map_single(&qp->local_buf, local_q, scifdev, local_size); scif_setup_qp_accept() 210 err = scif_map_single(qp_offset, qp, scifdev, scif_setup_qp_accept() 217 scif_unmap_single(qp->local_buf, scifdev, local_size); scif_setup_qp_accept() 222 scif_iounmap(remote_q, remote_size, scifdev); scif_setup_qp_accept() 225 scif_iounmap(qp->remote_qp, sizeof(struct scif_qp), scifdev); scif_setup_qp_accept() 230 int scif_setup_qp_connect_response(struct scif_dev *scifdev, scif_setup_qp_connect_response() argument 238 qp->remote_qp = scif_ioremap(payload, sizeof(struct scif_qp), scifdev); scif_setup_qp_connect_response() 246 dev_err(&scifdev->sdev->dev, scif_setup_qp_connect_response() 248 scif_dev[scif_info.nodeid].node, scifdev->node); scif_setup_qp_connect_response() 255 r_buf = scif_ioremap(tmp_phys, remote_size, scifdev); scif_setup_qp_connect_response() 285 scif_send_msg_intr(struct scif_dev *scifdev) scif_send_msg_intr() argument 287 struct scif_hw_dev *sdev = scifdev->sdev; scif_send_msg_intr() 289 if (scifdev_is_p2p(scifdev)) scif_send_msg_intr() 290 sdev->hw_ops->send_p2p_intr(sdev, scifdev->rdb, &scifdev->mmio); scif_send_msg_intr() 292 sdev->hw_ops->send_intr(sdev, scifdev->rdb); scif_send_msg_intr() 295 int scif_qp_response(phys_addr_t phys, struct scif_dev *scifdev) scif_qp_response() argument 300 err = scif_setup_qp_connect_response(scifdev, scifdev->qpairs, phys); scif_qp_response() 307 msg.dst.node = scifdev->node; scif_qp_response() 308 err = scif_nodeqp_send(scifdev, &msg); scif_qp_response() 313 void scif_send_exit(struct scif_dev *scifdev) scif_send_exit() argument 318 scifdev->exit = OP_IN_PROGRESS; scif_send_exit() 321 msg.dst.node = scifdev->node; scif_send_exit() 322 ret = scif_nodeqp_send(scifdev, &msg); scif_send_exit() 326 wait_event_timeout(scif_info.exitwq, scifdev->exit == OP_COMPLETED, scif_send_exit() 329 scifdev->exit = OP_IDLE; scif_send_exit() 332 int scif_setup_qp(struct scif_dev *scifdev) scif_setup_qp() argument 346 scifdev->qpairs = qp; scif_setup_qp() 347 err = scif_setup_qp_connect(qp, &scifdev->qp_dma_addr, scif_setup_qp() 348 local_size, scifdev); scif_setup_qp() 358 kfree(scifdev->qpairs); scif_setup_qp() 359 scifdev->qpairs = NULL; scif_setup_qp() 387 /* Init p2p mappings required to access peerdev from scifdev */ 389 scif_init_p2p_info(struct scif_dev *scifdev, struct scif_dev *peerdev) scif_init_p2p_info() argument 394 struct scif_hw_dev *sdev = scifdev->sdev; scif_init_p2p_info() 439 static void scif_deinit_p2p_info(struct scif_dev *scifdev, scif_deinit_p2p_info() argument 442 struct scif_hw_dev *sdev = scifdev->sdev; scif_deinit_p2p_info() 460 static void scif_node_connect(struct scif_dev *scifdev, int dst) scif_node_connect() argument 462 struct scif_dev *dev_j = scifdev; scif_node_connect() 517 dev_err(&scifdev->sdev->dev, scif_node_connect() 549 struct scif_dev *scifdev = &scif_dev[i]; scif_p2p_setup() local 553 scif_node_connect(scifdev, j); scif_p2p_setup() 601 scif_display_message(struct scif_dev *scifdev, struct scifmsg *msg, scif_display_message() argument 607 dev_err(&scifdev->sdev->dev, scif_display_message() 611 dev_info(&scifdev->sdev->dev, scif_display_message() 618 int _scif_nodeqp_send(struct scif_dev *scifdev, struct scifmsg *msg) _scif_nodeqp_send() argument 620 struct scif_qp *qp = scifdev->qpairs; _scif_nodeqp_send() 623 scif_display_message(scifdev, msg, "Sent"); _scif_nodeqp_send() 643 if (scifdev_self(scifdev)) _scif_nodeqp_send() 649 queue_work(scifdev->intr_wq, &scifdev->intr_bh); _scif_nodeqp_send() 651 scif_send_msg_intr(scifdev); _scif_nodeqp_send() 655 dev_dbg(&scifdev->sdev->dev, _scif_nodeqp_send() 663 * @scifdev: Scif Device. 666 int scif_nodeqp_send(struct scif_dev *scifdev, struct scifmsg *msg) scif_nodeqp_send() argument 673 if (OP_IDLE != scifdev->exit) scif_nodeqp_send() 675 spdev = scif_get_peer_dev(scifdev); scif_nodeqp_send() 681 err = _scif_nodeqp_send(scifdev, msg); scif_nodeqp_send() 707 * @scifdev: Remote SCIF device node 711 scif_init(struct scif_dev *scifdev, struct scifmsg *msg) scif_init() argument 717 flush_delayed_work(&scifdev->qp_dwork); scif_init() 719 scif_peer_register_device(scifdev); scif_init() 730 * @scifdev: Remote SCIF device node 738 scif_exit(struct scif_dev *scifdev, struct scifmsg *unused) scif_exit() argument 740 scifdev->exit_ack_pending = true; scif_exit() 742 scif_disconnect_node(scifdev->node, false); scif_exit() 744 scif_stop(scifdev); scif_exit() 745 schedule_delayed_work(&scifdev->qp_dwork, scif_exit() 751 * @scifdev: Remote SCIF device node 756 scif_exit_ack(struct scif_dev *scifdev, struct scifmsg *unused) scif_exit_ack() argument 758 scifdev->exit = OP_COMPLETED; scif_exit_ack() 764 * @scifdev: Remote SCIF device node 777 scif_node_add(struct scif_dev *scifdev, struct scifmsg *msg) scif_node_add() argument 784 dev_dbg(&scifdev->sdev->dev, scif_node_add() 786 scifdev->node, msg->dst.node, msg->src.node); scif_node_add() 787 dev_dbg(&scifdev->sdev->dev, scif_node_add() 796 dev_err(&scifdev->sdev->dev, scif_node_add() 802 dev_err(&scifdev->sdev->dev, scif_node_add() 818 dev_err(&scifdev->sdev->dev, scif_node_add() 847 dev_err(&scifdev->sdev->dev, scif_node_add() 887 * @scifdev: Remote SCIF device node 895 scif_node_add_ack(struct scif_dev *scifdev, struct scifmsg *msg) scif_node_add_ack() argument 901 dev_dbg(&scifdev->sdev->dev, scif_node_add_ack() 903 scifdev->node, msg->src.node, msg->dst.node); scif_node_add_ack() 904 dev_dbg(&scifdev->sdev->dev, scif_node_add_ack() 947 scif_node_add_nack(struct scif_dev *scifdev, struct scifmsg *msg) scif_node_add_nack() argument 952 dev_dbg(&scifdev->sdev->dev, scif_node_add_nack() 953 "SCIF_NODE_ADD_NACK received from %d\n", scifdev->node); scif_node_add_nack() 965 scif_node_remove(struct scif_dev *scifdev, struct scifmsg *msg) scif_node_remove() argument 981 scif_node_remove_ack(struct scif_dev *scifdev, struct scifmsg *msg) scif_node_remove_ack() argument 996 scif_get_node_info_resp(struct scif_dev *scifdev, struct scifmsg *msg) scif_get_node_info_resp() argument 1004 scif_nodeqp_send(scifdev, msg); scif_get_node_info_resp() 1018 scif_msg_unknown(struct scif_dev *scifdev, struct scifmsg *msg) scif_msg_unknown() argument 1021 dev_err(&scifdev->sdev->dev, scif_msg_unknown() 1022 "Unknown message 0x%xn scifdev->node 0x%x\n", scif_msg_unknown() 1023 msg->uop, scifdev->node); scif_msg_unknown() 1072 * @scifdev: Remote device to respond to 1082 scif_nodeqp_msg_handler(struct scif_dev *scifdev, scif_nodeqp_msg_handler() argument 1085 scif_display_message(scifdev, msg, "Rcvd"); scif_nodeqp_msg_handler() 1089 dev_err(&scifdev->sdev->dev, scif_nodeqp_msg_handler() 1090 "Unknown message 0x%xn scifdev->node 0x%x\n", scif_nodeqp_msg_handler() 1091 msg->uop, scifdev->node); scif_nodeqp_msg_handler() 1095 scif_intr_func[msg->uop](scifdev, msg); scif_nodeqp_msg_handler() 1100 * @scifdev: Remote device to respond to 1107 void scif_nodeqp_intrhandler(struct scif_dev *scifdev, struct scif_qp *qp) scif_nodeqp_intrhandler() argument 1116 scif_nodeqp_msg_handler(scifdev, qp, &msg); scif_nodeqp_intrhandler() 1139 struct scif_dev *scifdev = scif_info.loopb_dev; scif_loopb_wq_handler() local 1140 struct scif_qp *qp = scifdev->qpairs; scif_loopb_wq_handler() 1155 scif_nodeqp_msg_handler(scifdev, qp, &msg->msg); scif_loopb_wq_handler() 1163 * @scifdev: SCIF device 1194 scif_loopb_msg_handler(struct scif_dev *scifdev, struct scif_qp *qp) scif_loopb_msg_handler() argument 1221 * @scifdev: SCIF device 1225 int scif_setup_loopback_qp(struct scif_dev *scifdev) scif_setup_loopback_qp() argument 1231 err = scif_setup_intr_wq(scifdev); scif_setup_loopback_qp() 1236 "SCIF LOOPB %d", scifdev->node); scif_setup_loopback_qp() 1245 scifdev->qpairs = kzalloc(sizeof(*scifdev->qpairs), GFP_KERNEL); scif_setup_loopback_qp() 1246 if (!scifdev->qpairs) { scif_setup_loopback_qp() 1251 qp = scifdev->qpairs; scif_setup_loopback_qp() 1275 scif_info.nodeid = scifdev->node; scif_setup_loopback_qp() 1277 scif_peer_register_device(scifdev); scif_setup_loopback_qp() 1279 scif_info.loopb_dev = scifdev; scif_setup_loopback_qp() 1282 kfree(scifdev->qpairs); scif_setup_loopback_qp() 1286 scif_destroy_intr_wq(scifdev); scif_setup_loopback_qp() 1293 * @scifdev: SCIF device 1297 int scif_destroy_loopback_qp(struct scif_dev *scifdev) scif_destroy_loopback_qp() argument 1299 scif_peer_unregister_device(scifdev); scif_destroy_loopback_qp() 1301 scif_destroy_intr_wq(scifdev); scif_destroy_loopback_qp() 1302 kfree(scifdev->qpairs->outbound_q.rb_base); scif_destroy_loopback_qp() 1303 kfree(scifdev->qpairs); scif_destroy_loopback_qp() 1304 scifdev->sdev = NULL; scif_destroy_loopback_qp() 1309 void scif_destroy_p2p(struct scif_dev *scifdev) scif_destroy_p2p() argument 1318 list_for_each_safe(pos, tmp, &scifdev->p2p) { scif_destroy_p2p() 1320 dma_unmap_sg(&scifdev->sdev->dev, p2p->ppi_sg[SCIF_PPI_MMIO], scif_destroy_p2p() 1323 dma_unmap_sg(&scifdev->sdev->dev, p2p->ppi_sg[SCIF_PPI_APER], scif_destroy_p2p() 1337 if (p2p->ppi_peer_id == scifdev->node) { scif_destroy_p2p() 105 scif_setup_qp_connect(struct scif_qp *qp, dma_addr_t *qp_offset, int local_size, struct scif_dev *scifdev) scif_setup_qp_connect() argument 155 scif_setup_qp_accept(struct scif_qp *qp, dma_addr_t *qp_offset, dma_addr_t phys, int local_size, struct scif_dev *scifdev) scif_setup_qp_accept() argument
|
H A D | scif_nodeqp.h | 184 int scif_nodeqp_send(struct scif_dev *scifdev, struct scifmsg *msg); 185 int _scif_nodeqp_send(struct scif_dev *scifdev, struct scifmsg *msg); 186 void scif_nodeqp_intrhandler(struct scif_dev *scifdev, struct scif_qp *qp); 187 int scif_loopb_msg_handler(struct scif_dev *scifdev, struct scif_qp *qp); 188 int scif_setup_qp(struct scif_dev *scifdev); 191 int local_size, struct scif_dev *scifdev); 194 struct scif_dev *scifdev); 195 int scif_setup_qp_connect_response(struct scif_dev *scifdev, 197 int scif_setup_loopback_qp(struct scif_dev *scifdev); 198 int scif_destroy_loopback_qp(struct scif_dev *scifdev); 200 void scif_destroy_p2p(struct scif_dev *scifdev); 201 void scif_send_exit(struct scif_dev *scifdev); scif_get_peer_dev() 202 static inline struct device *scif_get_peer_dev(struct scif_dev *scifdev) scif_get_peer_dev() argument 208 spdev = rcu_dereference(scifdev->spdev); scif_get_peer_dev()
|
H A D | scif_epd.h | 77 * @remote_dev: scifdev used by this endpt to communicate with remote node. 194 void scif_cnctreq(struct scif_dev *scifdev, struct scifmsg *msg); 195 void scif_cnctgnt(struct scif_dev *scifdev, struct scifmsg *msg); 196 void scif_cnctgnt_ack(struct scif_dev *scifdev, struct scifmsg *msg); 197 void scif_cnctgnt_nack(struct scif_dev *scifdev, struct scifmsg *msg); 198 void scif_cnctrej(struct scif_dev *scifdev, struct scifmsg *msg); 199 void scif_discnct(struct scif_dev *scifdev, struct scifmsg *msg); 200 void scif_discnt_ack(struct scif_dev *scifdev, struct scifmsg *msg); 201 void scif_clientsend(struct scif_dev *scifdev, struct scifmsg *msg); 202 void scif_clientrcvd(struct scif_dev *scifdev, struct scifmsg *msg);
|
H A D | scif_epd.c | 128 void scif_cnctreq(struct scif_dev *scifdev, struct scifmsg *msg) scif_cnctreq() argument 174 void scif_cnctgnt(struct scif_dev *scifdev, struct scifmsg *msg) scif_cnctgnt() argument 199 void scif_cnctgnt_ack(struct scif_dev *scifdev, struct scifmsg *msg) scif_cnctgnt_ack() argument 221 void scif_cnctgnt_nack(struct scif_dev *scifdev, struct scifmsg *msg) scif_cnctgnt_nack() argument 238 void scif_cnctrej(struct scif_dev *scifdev, struct scifmsg *msg) scif_cnctrej() argument 263 void scif_discnct(struct scif_dev *scifdev, struct scifmsg *msg) scif_discnct() argument 317 void scif_discnt_ack(struct scif_dev *scifdev, struct scifmsg *msg) scif_discnt_ack() argument 333 void scif_clientsend(struct scif_dev *scifdev, struct scifmsg *msg) scif_clientsend() argument 349 void scif_clientrcvd(struct scif_dev *scifdev, struct scifmsg *msg) scif_clientrcvd() argument
|
H A D | scif_rma.h | 340 void scif_alloc_req(struct scif_dev *scifdev, struct scifmsg *msg); 341 void scif_alloc_gnt_rej(struct scif_dev *scifdev, struct scifmsg *msg); 342 void scif_free_virt(struct scif_dev *scifdev, struct scifmsg *msg); 343 void scif_recv_reg(struct scif_dev *scifdev, struct scifmsg *msg); 344 void scif_recv_unreg(struct scif_dev *scifdev, struct scifmsg *msg); 345 void scif_recv_reg_ack(struct scif_dev *scifdev, struct scifmsg *msg); 346 void scif_recv_reg_nack(struct scif_dev *scifdev, struct scifmsg *msg); 347 void scif_recv_unreg_ack(struct scif_dev *scifdev, struct scifmsg *msg); 348 void scif_recv_unreg_nack(struct scif_dev *scifdev, struct scifmsg *msg); 349 void scif_recv_munmap(struct scif_dev *scifdev, struct scifmsg *msg); 350 void scif_recv_mark(struct scif_dev *scifdev, struct scifmsg *msg); 351 void scif_recv_mark_resp(struct scif_dev *scifdev, struct scifmsg *msg); 352 void scif_recv_wait(struct scif_dev *scifdev, struct scifmsg *msg); 353 void scif_recv_wait_resp(struct scif_dev *scifdev, struct scifmsg *msg); 354 void scif_recv_sig_local(struct scif_dev *scifdev, struct scifmsg *msg); 355 void scif_recv_sig_remote(struct scif_dev *scifdev, struct scifmsg *msg); 356 void scif_recv_sig_resp(struct scif_dev *scifdev, struct scifmsg *msg);
|
H A D | scif_peer_bus.h | 28 int scif_peer_unregister_device(struct scif_dev *scifdev);
|
H A D | scif_main.h | 255 * @scifdev: The remote SCIF Device 260 static inline int _scifdev_alive(struct scif_dev *scifdev) _scifdev_alive() argument 265 spdev = rcu_dereference(scifdev->spdev); _scifdev_alive() 274 int scif_setup_intr_wq(struct scif_dev *scifdev); 275 void scif_destroy_intr_wq(struct scif_dev *scifdev); 281 void scif_stop(struct scif_dev *scifdev);
|
H A D | scif_rma.c | 480 scif_create_remote_window(struct scif_dev *scifdev, int nr_pages) scif_create_remote_window() argument 501 if (scif_create_remote_lookup(scifdev, window)) scif_create_remote_window() 1057 void scif_alloc_req(struct scif_dev *scifdev, struct scifmsg *msg) scif_alloc_req() argument 1063 window = scif_create_remote_window(scifdev, nr_pages); scif_alloc_req() 1073 err = scif_nodeqp_send(scifdev, msg); scif_alloc_req() 1079 dev_err(&scifdev->sdev->dev, scif_alloc_req() 1083 scif_nodeqp_send(scifdev, msg); scif_alloc_req() 1092 void scif_alloc_gnt_rej(struct scif_dev *scifdev, struct scifmsg *msg) scif_alloc_gnt_rej() argument 1116 void scif_free_virt(struct scif_dev *scifdev, struct scifmsg *msg) scif_free_virt() argument 1154 void scif_recv_reg(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_reg() argument 1190 void scif_recv_unreg(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_unreg() argument 1211 dev_err(&scifdev->sdev->dev, scif_recv_unreg() 1220 dev_err(&scifdev->sdev->dev, scif_recv_unreg() 1255 void scif_recv_reg_ack(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_reg_ack() argument 1274 void scif_recv_reg_nack(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_reg_nack() argument 1292 void scif_recv_unreg_ack(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_unreg_ack() argument 1311 void scif_recv_unreg_nack(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_unreg_nack() argument
|
H A D | scif_fence.c | 27 void scif_recv_mark(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_mark() argument 48 void scif_recv_mark_resp(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_mark_resp() argument 71 void scif_recv_wait(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_wait() argument 108 void scif_recv_wait_resp(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_wait_resp() argument 129 void scif_recv_sig_local(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_sig_local() argument 150 void scif_recv_sig_remote(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_sig_remote() argument 171 void scif_recv_sig_resp(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_sig_resp() argument
|
H A D | scif_mmap.c | 31 void scif_recv_munmap(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_munmap() argument 51 dev_err(&scifdev->sdev->dev, scif_recv_munmap() 207 struct scif_dev *scifdev = (struct scif_dev *)ep->remote_dev; scif_get_phys() local 208 struct scif_hw_dev *sdev = scifdev->sdev; scif_get_phys() 215 if (!scifdev_self(scifdev) && sdev->aper && sdev->card_rel_da) scif_get_phys()
|
H A D | scif_dma.c | 93 struct scif_dev *scifdev; scif_reserve_dma_chan() local 101 scifdev = &scif_dev[0]; scif_reserve_dma_chan() 103 scifdev = ep->remote_dev; scif_reserve_dma_chan() 104 sdev = scifdev->sdev; scif_reserve_dma_chan() 107 chan = sdev->dma_ch[scifdev->dma_ch_idx]; scif_reserve_dma_chan() 108 scifdev->dma_ch_idx = (scifdev->dma_ch_idx + 1) % sdev->num_dma_ch; scif_reserve_dma_chan()
|