Lines Matching refs:scifdev

43 	struct scif_dev *scifdev =  in scif_intr_bh_handler()  local
46 if (scifdev_self(scifdev)) in scif_intr_bh_handler()
47 scif_loopb_msg_handler(scifdev, scifdev->qpairs); in scif_intr_bh_handler()
49 scif_nodeqp_intrhandler(scifdev, scifdev->qpairs); in scif_intr_bh_handler()
52 int scif_setup_intr_wq(struct scif_dev *scifdev) in scif_setup_intr_wq() argument
54 if (!scifdev->intr_wq) { in scif_setup_intr_wq()
55 snprintf(scifdev->intr_wqname, sizeof(scifdev->intr_wqname), in scif_setup_intr_wq()
56 "SCIF INTR %d", scifdev->node); in scif_setup_intr_wq()
57 scifdev->intr_wq = in scif_setup_intr_wq()
58 alloc_ordered_workqueue(scifdev->intr_wqname, 0); in scif_setup_intr_wq()
59 if (!scifdev->intr_wq) in scif_setup_intr_wq()
61 INIT_WORK(&scifdev->intr_bh, scif_intr_bh_handler); in scif_setup_intr_wq()
66 void scif_destroy_intr_wq(struct scif_dev *scifdev) in scif_destroy_intr_wq() argument
68 if (scifdev->intr_wq) { in scif_destroy_intr_wq()
69 destroy_workqueue(scifdev->intr_wq); in scif_destroy_intr_wq()
70 scifdev->intr_wq = NULL; in scif_destroy_intr_wq()
76 struct scif_dev *scifdev = data; in scif_intr_handler() local
77 struct scif_hw_dev *sdev = scifdev->sdev; in scif_intr_handler()
79 sdev->hw_ops->ack_interrupt(sdev, scifdev->db); in scif_intr_handler()
80 queue_work(scifdev->intr_wq, &scifdev->intr_bh); in scif_intr_handler()
86 struct scif_dev *scifdev = container_of(work, struct scif_dev, in scif_qp_setup_handler() local
88 struct scif_hw_dev *sdev = scifdev->sdev; in scif_qp_setup_handler()
96 scifdev->rdb = bp->h2c_scif_db; in scif_qp_setup_handler()
101 scifdev->rdb = ioread8(&bp->c2h_scif_db); in scif_qp_setup_handler()
104 err = scif_qp_response(da, scifdev); in scif_qp_setup_handler()
106 dev_err(&scifdev->sdev->dev, in scif_qp_setup_handler()
109 schedule_delayed_work(&scifdev->qp_dwork, in scif_qp_setup_handler()
125 struct scif_dev *scifdev = &scif_dev[i]; in scif_setup_scifdev() local
127 scifdev->node = i; in scif_setup_scifdev()
128 scifdev->exit = OP_IDLE; in scif_setup_scifdev()
129 init_waitqueue_head(&scifdev->disconn_wq); in scif_setup_scifdev()
130 mutex_init(&scifdev->lock); in scif_setup_scifdev()
131 INIT_WORK(&scifdev->peer_add_work, scif_add_peer_device); in scif_setup_scifdev()
132 INIT_DELAYED_WORK(&scifdev->p2p_dwork, in scif_setup_scifdev()
134 INIT_DELAYED_WORK(&scifdev->qp_dwork, in scif_setup_scifdev()
136 INIT_LIST_HEAD(&scifdev->p2p); in scif_setup_scifdev()
137 RCU_INIT_POINTER(scifdev->spdev, NULL); in scif_setup_scifdev()
149 struct scif_dev *scifdev = &scif_dev[sdev->dnode]; in scif_probe() local
153 scifdev->sdev = sdev; in scif_probe()
164 rc = scif_setup_intr_wq(scifdev); in scif_probe()
167 rc = scif_setup_qp(scifdev); in scif_probe()
170 scifdev->db = sdev->hw_ops->next_db(sdev); in scif_probe()
171 scifdev->cookie = sdev->hw_ops->request_irq(sdev, scif_intr_handler, in scif_probe()
172 "SCIF_INTR", scifdev, in scif_probe()
173 scifdev->db); in scif_probe()
174 if (IS_ERR(scifdev->cookie)) { in scif_probe()
175 rc = PTR_ERR(scifdev->cookie); in scif_probe()
181 bp->c2h_scif_db = scifdev->db; in scif_probe()
182 bp->scif_host_dma_addr = scifdev->qp_dma_addr; in scif_probe()
186 iowrite8(scifdev->db, &bp->h2c_scif_db); in scif_probe()
187 writeq(scifdev->qp_dma_addr, &bp->scif_card_dma_addr); in scif_probe()
189 schedule_delayed_work(&scifdev->qp_dwork, in scif_probe()
193 scif_free_qp(scifdev); in scif_probe()
195 scif_destroy_intr_wq(scifdev); in scif_probe()
203 void scif_stop(struct scif_dev *scifdev) in scif_stop() argument
218 struct scif_dev *scifdev = &scif_dev[sdev->dnode]; in scif_remove() local
232 scif_disconnect_node(scifdev->node, true); in scif_remove()
235 scif_stop(scifdev); in scif_remove()
239 if (scifdev->cookie) { in scif_remove()
240 sdev->hw_ops->free_irq(sdev, scifdev->cookie, scifdev); in scif_remove()
241 scifdev->cookie = NULL; in scif_remove()
243 scif_destroy_intr_wq(scifdev); in scif_remove()
244 cancel_delayed_work(&scifdev->qp_dwork); in scif_remove()
245 scif_free_qp(scifdev); in scif_remove()
246 scifdev->rdb = -1; in scif_remove()
247 scifdev->sdev = NULL; in scif_remove()