Lines Matching refs:scifdev

34 	struct scif_dev *scifdev =  in scif_intr_bh_handler()  local
37 if (scifdev_self(scifdev)) in scif_intr_bh_handler()
38 scif_loopb_msg_handler(scifdev, scifdev->qpairs); in scif_intr_bh_handler()
40 scif_nodeqp_intrhandler(scifdev, scifdev->qpairs); in scif_intr_bh_handler()
43 int scif_setup_intr_wq(struct scif_dev *scifdev) in scif_setup_intr_wq() argument
45 if (!scifdev->intr_wq) { in scif_setup_intr_wq()
46 snprintf(scifdev->intr_wqname, sizeof(scifdev->intr_wqname), in scif_setup_intr_wq()
47 "SCIF INTR %d", scifdev->node); in scif_setup_intr_wq()
48 scifdev->intr_wq = in scif_setup_intr_wq()
49 alloc_ordered_workqueue(scifdev->intr_wqname, 0); in scif_setup_intr_wq()
50 if (!scifdev->intr_wq) in scif_setup_intr_wq()
52 INIT_WORK(&scifdev->intr_bh, scif_intr_bh_handler); in scif_setup_intr_wq()
57 void scif_destroy_intr_wq(struct scif_dev *scifdev) in scif_destroy_intr_wq() argument
59 if (scifdev->intr_wq) { in scif_destroy_intr_wq()
60 destroy_workqueue(scifdev->intr_wq); in scif_destroy_intr_wq()
61 scifdev->intr_wq = NULL; in scif_destroy_intr_wq()
67 struct scif_dev *scifdev = data; in scif_intr_handler() local
68 struct scif_hw_dev *sdev = scifdev->sdev; in scif_intr_handler()
70 sdev->hw_ops->ack_interrupt(sdev, scifdev->db); in scif_intr_handler()
71 queue_work(scifdev->intr_wq, &scifdev->intr_bh); in scif_intr_handler()
77 struct scif_dev *scifdev = container_of(work, struct scif_dev, in scif_qp_setup_handler() local
79 struct scif_hw_dev *sdev = scifdev->sdev; in scif_qp_setup_handler()
87 scifdev->rdb = bp->h2c_scif_db; in scif_qp_setup_handler()
92 scifdev->rdb = ioread8(&bp->c2h_scif_db); in scif_qp_setup_handler()
95 err = scif_qp_response(da, scifdev); in scif_qp_setup_handler()
97 dev_err(&scifdev->sdev->dev, in scif_qp_setup_handler()
100 schedule_delayed_work(&scifdev->qp_dwork, in scif_qp_setup_handler()
116 struct scif_dev *scifdev = &scif_dev[i]; in scif_setup_scifdev() local
118 scifdev->node = i; in scif_setup_scifdev()
119 scifdev->exit = OP_IDLE; in scif_setup_scifdev()
120 init_waitqueue_head(&scifdev->disconn_wq); in scif_setup_scifdev()
121 mutex_init(&scifdev->lock); in scif_setup_scifdev()
122 INIT_WORK(&scifdev->peer_add_work, scif_add_peer_device); in scif_setup_scifdev()
123 INIT_DELAYED_WORK(&scifdev->p2p_dwork, in scif_setup_scifdev()
125 INIT_DELAYED_WORK(&scifdev->qp_dwork, in scif_setup_scifdev()
127 INIT_LIST_HEAD(&scifdev->p2p); in scif_setup_scifdev()
128 RCU_INIT_POINTER(scifdev->spdev, NULL); in scif_setup_scifdev()
141 struct scif_dev *scifdev = &scif_dev[sdev->dnode]; in scif_probe() local
145 scifdev->sdev = sdev; in scif_probe()
156 rc = scif_setup_intr_wq(scifdev); in scif_probe()
159 rc = scif_setup_qp(scifdev); in scif_probe()
162 scifdev->db = sdev->hw_ops->next_db(sdev); in scif_probe()
163 scifdev->cookie = sdev->hw_ops->request_irq(sdev, scif_intr_handler, in scif_probe()
164 "SCIF_INTR", scifdev, in scif_probe()
165 scifdev->db); in scif_probe()
166 if (IS_ERR(scifdev->cookie)) { in scif_probe()
167 rc = PTR_ERR(scifdev->cookie); in scif_probe()
173 bp->c2h_scif_db = scifdev->db; in scif_probe()
174 bp->scif_host_dma_addr = scifdev->qp_dma_addr; in scif_probe()
178 iowrite8(scifdev->db, &bp->h2c_scif_db); in scif_probe()
179 writeq(scifdev->qp_dma_addr, &bp->scif_card_dma_addr); in scif_probe()
181 schedule_delayed_work(&scifdev->qp_dwork, in scif_probe()
185 scif_free_qp(scifdev); in scif_probe()
187 scif_destroy_intr_wq(scifdev); in scif_probe()
195 void scif_stop(struct scif_dev *scifdev) in scif_stop() argument
210 struct scif_dev *scifdev = &scif_dev[sdev->dnode]; in scif_remove() local
224 scif_disconnect_node(scifdev->node, true); in scif_remove()
227 scif_stop(scifdev); in scif_remove()
231 if (scifdev->cookie) { in scif_remove()
232 sdev->hw_ops->free_irq(sdev, scifdev->cookie, scifdev); in scif_remove()
233 scifdev->cookie = NULL; in scif_remove()
235 scif_destroy_intr_wq(scifdev); in scif_remove()
236 cancel_delayed_work(&scifdev->qp_dwork); in scif_remove()
237 scif_free_qp(scifdev); in scif_remove()
238 scifdev->rdb = -1; in scif_remove()
239 scifdev->sdev = NULL; in scif_remove()