Lines Matching refs:vio
58 struct vio_driver_state vio; member
96 static inline struct vdc_port *to_vdc_port(struct vio_driver_state *vio) in to_vdc_port() argument
98 return container_of(vio, struct vdc_port, vio); in to_vdc_port()
111 return port->vio.ver.major == major && port->vio.ver.minor >= minor; in vdc_version_supported()
178 struct vio_dring_state *dr = &port->vio.drings[VIO_DRIVER_TX_RING]; in vdc_blk_queue_start()
188 static void vdc_finish(struct vio_driver_state *vio, int err, int waiting_for) in vdc_finish() argument
190 if (vio->cmp && in vdc_finish()
192 vio->cmp->waiting_for == waiting_for)) { in vdc_finish()
193 vio->cmp->err = err; in vdc_finish()
194 complete(&vio->cmp->com); in vdc_finish()
195 vio->cmp = NULL; in vdc_finish()
199 static void vdc_handshake_complete(struct vio_driver_state *vio) in vdc_handshake_complete() argument
201 struct vdc_port *port = to_vdc_port(vio); in vdc_handshake_complete()
204 vdc_finish(vio, 0, WAITING_FOR_LINK_UP); in vdc_handshake_complete()
216 ldc_disconnect(port->vio.lp); in vdc_handle_unknown()
221 static int vdc_send_attr(struct vio_driver_state *vio) in vdc_send_attr() argument
223 struct vdc_port *port = to_vdc_port(vio); in vdc_send_attr()
231 pkt.tag.sid = vio_send_sid(vio); in vdc_send_attr()
240 return vio_ldc_send(&port->vio, &pkt, sizeof(pkt)); in vdc_send_attr()
243 static int vdc_handle_attr(struct vio_driver_state *vio, void *arg) in vdc_handle_attr() argument
245 struct vdc_port *port = to_vdc_port(vio); in vdc_handle_attr()
263 vio->name, pkt->vdisk_type); in vdc_handle_attr()
270 vio->name, in vdc_handle_attr()
291 printk(KERN_ERR PFX "%s: Attribute NACK\n", vio->name); in vdc_handle_attr()
301 vdc_finish(&port->vio, -err, WAITING_FOR_GEN_CMD); in vdc_end_special()
314 ldc_unmap(port->vio.lp, desc->cookies, desc->ncookies); in vdc_end_one()
333 struct vio_dring_state *dr = &port->vio.drings[VIO_DRIVER_TX_RING]; in vdc_ack()
355 struct vio_driver_state *vio = &port->vio; in vdc_event() local
359 spin_lock_irqsave(&vio->lock, flags); in vdc_event()
362 vio_link_state_change(vio, event); in vdc_event()
368 vio_link_state_change(vio, event); in vdc_event()
384 err = ldc_read(vio->lp, &msgbuf, sizeof(msgbuf)); in vdc_event()
387 vio_conn_reset(vio); in vdc_event()
397 err = vio_validate_sid(vio, &msgbuf.tag); in vdc_event()
409 err = vio_control_pkt_engine(vio, &msgbuf); in vdc_event()
417 vdc_finish(&port->vio, err, WAITING_FOR_ANY); in vdc_event()
419 spin_unlock_irqrestore(&vio->lock, flags); in vdc_event()
424 struct vio_dring_state *dr = &port->vio.drings[VIO_DRIVER_TX_RING]; in __vdc_tx_trigger()
430 .sid = vio_send_sid(&port->vio), in __vdc_tx_trigger()
442 err = vio_ldc_send(&port->vio, &hdr, sizeof(hdr)); in __vdc_tx_trigger()
462 struct vio_dring_state *dr = &port->vio.drings[VIO_DRIVER_TX_RING]; in __send_request()
493 err = ldc_map_sg(port->vio.lp, sg, nsg, in __send_request()
541 dr = &port->vio.drings[VIO_DRIVER_TX_RING]; in vdc_queue_rq()
545 spin_lock_irqsave(&port->vio.lock, flags); in vdc_queue_rq()
551 spin_unlock_irqrestore(&port->vio.lock, flags); in vdc_queue_rq()
556 spin_unlock_irqrestore(&port->vio.lock, flags); in vdc_queue_rq()
562 spin_unlock_irqrestore(&port->vio.lock, flags); in vdc_queue_rq()
566 spin_unlock_irqrestore(&port->vio.lock, flags); in vdc_queue_rq()
652 spin_lock_irqsave(&port->vio.lock, flags); in generic_request()
654 dr = &port->vio.drings[VIO_DRIVER_TX_RING]; in generic_request()
661 err = ldc_map_single(port->vio.lp, req_buf, op_len, in generic_request()
665 spin_unlock_irqrestore(&port->vio.lock, flags); in generic_request()
672 port->vio.cmp = ∁ in generic_request()
693 spin_unlock_irqrestore(&port->vio.lock, flags); in generic_request()
698 port->vio.cmp = NULL; in generic_request()
699 spin_unlock_irqrestore(&port->vio.lock, flags); in generic_request()
712 struct vio_dring_state *dr = &port->vio.drings[VIO_DRIVER_TX_RING]; in vdc_alloc_tx_ring()
722 dring = ldc_alloc_exp_dring(port->vio.lp, len, in vdc_alloc_tx_ring()
742 struct vio_dring_state *dr = &port->vio.drings[VIO_DRIVER_TX_RING]; in vdc_free_tx_ring()
745 ldc_free_exp_dring(port->vio.lp, dr->base, in vdc_free_tx_ring()
763 port->vio.cmp = ∁ in vdc_port_up()
765 vio_port_up(&port->vio); in vdc_port_up()
772 ldc_disconnect(port->vio.lp); in vdc_port_down()
773 ldc_unbind(port->vio.lp); in vdc_port_down()
775 vio_ldc_free(&port->vio); in vdc_port_down()
843 port->vio.name); in probe_disk()
849 port->vio.name); in probe_disk()
863 g->first_minor = port->vio.vdev->dev_no << PARTITION_SHIFT; in probe_disk()
899 port->vio.ver.major, port->vio.ver.minor); in probe_disk()
901 device_add_disk(&port->vio.vdev->dev, g, NULL); in probe_disk()
1028 err = vio_driver_init(&port->vio, vdev, VDEV_DISK, in vdc_port_probe()
1038 err = vio_ldc_alloc(&port->vio, &vdc_ldc_cfg, port); in vdc_port_probe()
1063 vio_ldc_free(&port->vio); in vdc_port_probe()
1082 del_timer_sync(&port->vio.timer); in vdc_port_remove()
1090 vio_ldc_free(&port->vio); in vdc_port_remove()
1101 struct vio_dring_state *dr = &port->vio.drings[VIO_DRIVER_TX_RING]; in vdc_requeue_inflight()
1109 ldc_unmap(port->vio.lp, desc->cookies, desc->ncookies); in vdc_requeue_inflight()
1133 spin_unlock_irq(&port->vio.lock); in vdc_queue_drain()
1138 spin_lock_irq(&port->vio.lock); in vdc_queue_drain()
1147 struct vio_driver_state *vio; in vdc_ldc_reset_timer_work() local
1150 vio = &port->vio; in vdc_ldc_reset_timer_work()
1152 spin_lock_irq(&vio->lock); in vdc_ldc_reset_timer_work()
1153 if (!(port->vio.hs_state & VIO_HS_COMPLETE)) { in vdc_ldc_reset_timer_work()
1159 spin_unlock_irq(&vio->lock); in vdc_ldc_reset_timer_work()
1165 struct vio_driver_state *vio; in vdc_ldc_reset_work() local
1169 vio = &port->vio; in vdc_ldc_reset_work()
1171 spin_lock_irqsave(&vio->lock, flags); in vdc_ldc_reset_work()
1173 spin_unlock_irqrestore(&vio->lock, flags); in vdc_ldc_reset_work()
1180 assert_spin_locked(&port->vio.lock); in vdc_ldc_reset()
1187 err = vio_ldc_alloc(&port->vio, &vdc_ldc_cfg, port); in vdc_ldc_reset()
1202 mod_timer(&port->vio.timer, round_jiffies(jiffies + HZ)); in vdc_ldc_reset()
1206 vio_ldc_free(&port->vio); in vdc_ldc_reset()
1215 MODULE_DEVICE_TABLE(vio, vdc_port_match);