Lines Matching refs:scifdev

106 			  int local_size, struct scif_dev *scifdev)  in scif_setup_qp_connect()  argument
124 err = scif_map_single(&qp->local_buf, local_q, scifdev, local_size); in scif_setup_qp_connect()
141 scifdev, sizeof(struct scif_qp)); in scif_setup_qp_connect()
147 scif_unmap_single(qp->local_buf, scifdev, local_size); in scif_setup_qp_connect()
157 struct scif_dev *scifdev) in scif_setup_qp_accept() argument
168 remote_qp = scif_ioremap(phys, sizeof(struct scif_qp), scifdev); in scif_setup_qp_accept()
178 remote_q = scif_ioremap(qp->remote_buf, remote_size, scifdev); in scif_setup_qp_accept()
198 err = scif_map_single(&qp->local_buf, local_q, scifdev, local_size); in scif_setup_qp_accept()
210 err = scif_map_single(qp_offset, qp, scifdev, in scif_setup_qp_accept()
217 scif_unmap_single(qp->local_buf, scifdev, local_size); in scif_setup_qp_accept()
222 scif_iounmap(remote_q, remote_size, scifdev); in scif_setup_qp_accept()
225 scif_iounmap(qp->remote_qp, sizeof(struct scif_qp), scifdev); in scif_setup_qp_accept()
230 int scif_setup_qp_connect_response(struct scif_dev *scifdev, in scif_setup_qp_connect_response() argument
238 qp->remote_qp = scif_ioremap(payload, sizeof(struct scif_qp), scifdev); in scif_setup_qp_connect_response()
246 dev_err(&scifdev->sdev->dev, in scif_setup_qp_connect_response()
248 scif_dev[scif_info.nodeid].node, scifdev->node); in scif_setup_qp_connect_response()
255 r_buf = scif_ioremap(tmp_phys, remote_size, scifdev); in scif_setup_qp_connect_response()
285 scif_send_msg_intr(struct scif_dev *scifdev) in scif_send_msg_intr() argument
287 struct scif_hw_dev *sdev = scifdev->sdev; in scif_send_msg_intr()
289 if (scifdev_is_p2p(scifdev)) in scif_send_msg_intr()
290 sdev->hw_ops->send_p2p_intr(sdev, scifdev->rdb, &scifdev->mmio); in scif_send_msg_intr()
292 sdev->hw_ops->send_intr(sdev, scifdev->rdb); in scif_send_msg_intr()
295 int scif_qp_response(phys_addr_t phys, struct scif_dev *scifdev) in scif_qp_response() argument
300 err = scif_setup_qp_connect_response(scifdev, scifdev->qpairs, phys); in scif_qp_response()
307 msg.dst.node = scifdev->node; in scif_qp_response()
308 err = scif_nodeqp_send(scifdev, &msg); in scif_qp_response()
313 void scif_send_exit(struct scif_dev *scifdev) in scif_send_exit() argument
318 scifdev->exit = OP_IN_PROGRESS; in scif_send_exit()
321 msg.dst.node = scifdev->node; in scif_send_exit()
322 ret = scif_nodeqp_send(scifdev, &msg); in scif_send_exit()
326 wait_event_timeout(scif_info.exitwq, scifdev->exit == OP_COMPLETED, in scif_send_exit()
329 scifdev->exit = OP_IDLE; in scif_send_exit()
332 int scif_setup_qp(struct scif_dev *scifdev) in scif_setup_qp() argument
346 scifdev->qpairs = qp; in scif_setup_qp()
347 err = scif_setup_qp_connect(qp, &scifdev->qp_dma_addr, in scif_setup_qp()
348 local_size, scifdev); in scif_setup_qp()
358 kfree(scifdev->qpairs); in scif_setup_qp()
359 scifdev->qpairs = NULL; in scif_setup_qp()
389 scif_init_p2p_info(struct scif_dev *scifdev, struct scif_dev *peerdev) in scif_init_p2p_info() argument
394 struct scif_hw_dev *sdev = scifdev->sdev; in scif_init_p2p_info()
439 static void scif_deinit_p2p_info(struct scif_dev *scifdev, in scif_deinit_p2p_info() argument
442 struct scif_hw_dev *sdev = scifdev->sdev; in scif_deinit_p2p_info()
460 static void scif_node_connect(struct scif_dev *scifdev, int dst) in scif_node_connect() argument
462 struct scif_dev *dev_j = scifdev; in scif_node_connect()
517 dev_err(&scifdev->sdev->dev, in scif_node_connect()
549 struct scif_dev *scifdev = &scif_dev[i]; in scif_p2p_setup() local
553 scif_node_connect(scifdev, j); in scif_p2p_setup()
601 scif_display_message(struct scif_dev *scifdev, struct scifmsg *msg, in scif_display_message() argument
607 dev_err(&scifdev->sdev->dev, in scif_display_message()
611 dev_info(&scifdev->sdev->dev, in scif_display_message()
618 int _scif_nodeqp_send(struct scif_dev *scifdev, struct scifmsg *msg) in _scif_nodeqp_send() argument
620 struct scif_qp *qp = scifdev->qpairs; in _scif_nodeqp_send()
623 scif_display_message(scifdev, msg, "Sent"); in _scif_nodeqp_send()
643 if (scifdev_self(scifdev)) in _scif_nodeqp_send()
649 queue_work(scifdev->intr_wq, &scifdev->intr_bh); in _scif_nodeqp_send()
651 scif_send_msg_intr(scifdev); in _scif_nodeqp_send()
655 dev_dbg(&scifdev->sdev->dev, in _scif_nodeqp_send()
666 int scif_nodeqp_send(struct scif_dev *scifdev, struct scifmsg *msg) in scif_nodeqp_send() argument
673 if (OP_IDLE != scifdev->exit) in scif_nodeqp_send()
675 spdev = scif_get_peer_dev(scifdev); in scif_nodeqp_send()
681 err = _scif_nodeqp_send(scifdev, msg); in scif_nodeqp_send()
711 scif_init(struct scif_dev *scifdev, struct scifmsg *msg) in scif_init() argument
717 flush_delayed_work(&scifdev->qp_dwork); in scif_init()
719 scif_peer_register_device(scifdev); in scif_init()
738 scif_exit(struct scif_dev *scifdev, struct scifmsg *unused) in scif_exit() argument
740 scifdev->exit_ack_pending = true; in scif_exit()
742 scif_disconnect_node(scifdev->node, false); in scif_exit()
744 scif_stop(scifdev); in scif_exit()
745 schedule_delayed_work(&scifdev->qp_dwork, in scif_exit()
756 scif_exit_ack(struct scif_dev *scifdev, struct scifmsg *unused) in scif_exit_ack() argument
758 scifdev->exit = OP_COMPLETED; in scif_exit_ack()
777 scif_node_add(struct scif_dev *scifdev, struct scifmsg *msg) in scif_node_add() argument
784 dev_dbg(&scifdev->sdev->dev, in scif_node_add()
786 scifdev->node, msg->dst.node, msg->src.node); in scif_node_add()
787 dev_dbg(&scifdev->sdev->dev, in scif_node_add()
796 dev_err(&scifdev->sdev->dev, in scif_node_add()
802 dev_err(&scifdev->sdev->dev, in scif_node_add()
818 dev_err(&scifdev->sdev->dev, in scif_node_add()
847 dev_err(&scifdev->sdev->dev, in scif_node_add()
895 scif_node_add_ack(struct scif_dev *scifdev, struct scifmsg *msg) in scif_node_add_ack() argument
901 dev_dbg(&scifdev->sdev->dev, in scif_node_add_ack()
903 scifdev->node, msg->src.node, msg->dst.node); in scif_node_add_ack()
904 dev_dbg(&scifdev->sdev->dev, in scif_node_add_ack()
947 scif_node_add_nack(struct scif_dev *scifdev, struct scifmsg *msg) in scif_node_add_nack() argument
952 dev_dbg(&scifdev->sdev->dev, in scif_node_add_nack()
953 "SCIF_NODE_ADD_NACK received from %d\n", scifdev->node); in scif_node_add_nack()
965 scif_node_remove(struct scif_dev *scifdev, struct scifmsg *msg) in scif_node_remove() argument
981 scif_node_remove_ack(struct scif_dev *scifdev, struct scifmsg *msg) in scif_node_remove_ack() argument
996 scif_get_node_info_resp(struct scif_dev *scifdev, struct scifmsg *msg) in scif_get_node_info_resp() argument
1004 scif_nodeqp_send(scifdev, msg); in scif_get_node_info_resp()
1018 scif_msg_unknown(struct scif_dev *scifdev, struct scifmsg *msg) in scif_msg_unknown() argument
1021 dev_err(&scifdev->sdev->dev, in scif_msg_unknown()
1023 msg->uop, scifdev->node); in scif_msg_unknown()
1082 scif_nodeqp_msg_handler(struct scif_dev *scifdev, in scif_nodeqp_msg_handler() argument
1085 scif_display_message(scifdev, msg, "Rcvd"); in scif_nodeqp_msg_handler()
1089 dev_err(&scifdev->sdev->dev, in scif_nodeqp_msg_handler()
1091 msg->uop, scifdev->node); in scif_nodeqp_msg_handler()
1095 scif_intr_func[msg->uop](scifdev, msg); in scif_nodeqp_msg_handler()
1107 void scif_nodeqp_intrhandler(struct scif_dev *scifdev, struct scif_qp *qp) in scif_nodeqp_intrhandler() argument
1116 scif_nodeqp_msg_handler(scifdev, qp, &msg); in scif_nodeqp_intrhandler()
1139 struct scif_dev *scifdev = scif_info.loopb_dev; in scif_loopb_wq_handler() local
1140 struct scif_qp *qp = scifdev->qpairs; in scif_loopb_wq_handler()
1155 scif_nodeqp_msg_handler(scifdev, qp, &msg->msg); in scif_loopb_wq_handler()
1194 scif_loopb_msg_handler(struct scif_dev *scifdev, struct scif_qp *qp) in scif_loopb_msg_handler() argument
1225 int scif_setup_loopback_qp(struct scif_dev *scifdev) in scif_setup_loopback_qp() argument
1231 err = scif_setup_intr_wq(scifdev); in scif_setup_loopback_qp()
1236 "SCIF LOOPB %d", scifdev->node); in scif_setup_loopback_qp()
1245 scifdev->qpairs = kzalloc(sizeof(*scifdev->qpairs), GFP_KERNEL); in scif_setup_loopback_qp()
1246 if (!scifdev->qpairs) { in scif_setup_loopback_qp()
1251 qp = scifdev->qpairs; in scif_setup_loopback_qp()
1275 scif_info.nodeid = scifdev->node; in scif_setup_loopback_qp()
1277 scif_peer_register_device(scifdev); in scif_setup_loopback_qp()
1279 scif_info.loopb_dev = scifdev; in scif_setup_loopback_qp()
1282 kfree(scifdev->qpairs); in scif_setup_loopback_qp()
1286 scif_destroy_intr_wq(scifdev); in scif_setup_loopback_qp()
1297 int scif_destroy_loopback_qp(struct scif_dev *scifdev) in scif_destroy_loopback_qp() argument
1299 scif_peer_unregister_device(scifdev); in scif_destroy_loopback_qp()
1301 scif_destroy_intr_wq(scifdev); in scif_destroy_loopback_qp()
1302 kfree(scifdev->qpairs->outbound_q.rb_base); in scif_destroy_loopback_qp()
1303 kfree(scifdev->qpairs); in scif_destroy_loopback_qp()
1304 scifdev->sdev = NULL; in scif_destroy_loopback_qp()
1309 void scif_destroy_p2p(struct scif_dev *scifdev) in scif_destroy_p2p() argument
1318 list_for_each_safe(pos, tmp, &scifdev->p2p) { in scif_destroy_p2p()
1320 dma_unmap_sg(&scifdev->sdev->dev, p2p->ppi_sg[SCIF_PPI_MMIO], in scif_destroy_p2p()
1323 dma_unmap_sg(&scifdev->sdev->dev, p2p->ppi_sg[SCIF_PPI_APER], in scif_destroy_p2p()
1337 if (p2p->ppi_peer_id == scifdev->node) { in scif_destroy_p2p()