Lines Matching refs:virtio_dev
49 struct virtio_device *virtio_dev = &virtio_console_dev->virtio_dev; in virtio_console_send_ctrl() local
53 rt_base_t level = rt_spin_lock_irqsave(&virtio_dev->spinlock); in virtio_console_send_ctrl()
56 queue_ctrl_tx = &virtio_dev->queues[VIRTIO_CONSOLE_QUEUE_CTRL_TX]; in virtio_console_send_ctrl()
62 virtio_free_desc(virtio_dev, VIRTIO_CONSOLE_QUEUE_CTRL_TX, id); in virtio_console_send_ctrl()
64 virtio_fill_desc(virtio_dev, VIRTIO_CONSOLE_QUEUE_CTRL_TX, id, in virtio_console_send_ctrl()
67 virtio_submit_chain(virtio_dev, VIRTIO_CONSOLE_QUEUE_CTRL_TX, id); in virtio_console_send_ctrl()
69 virtio_queue_notify(virtio_dev, VIRTIO_CONSOLE_QUEUE_CTRL_TX); in virtio_console_send_ctrl()
71 virtio_alloc_desc(virtio_dev, VIRTIO_CONSOLE_QUEUE_CTRL_TX); in virtio_console_send_ctrl()
74 rt_spin_unlock_irqrestore(&virtio_dev->spinlock, level); in virtio_console_send_ctrl()
102 struct virtio_device *virtio_dev = &virtio_console_dev->virtio_dev; in virtio_console_port_create() local
104 …if (virtio_console_dev->port_nr > 0 && !virtio_has_feature(virtio_dev, VIRTIO_CONSOLE_F_MULTIPORT)) in virtio_console_port_create()
156 port_dev->queue_rx = &virtio_dev->queues[port_dev->queue_rx_index]; in virtio_console_port_create()
157 port_dev->queue_tx = &virtio_dev->queues[port_dev->queue_tx_index]; in virtio_console_port_create()
215 struct virtio_device *virtio_dev = &virtio_console_dev->virtio_dev; in virtio_console_port_init() local
221 queue_rx = &virtio_dev->queues[rx_queue_index]; in virtio_console_port_init()
222 queue_tx = &virtio_dev->queues[tx_queue_index]; in virtio_console_port_init()
224 virtio_alloc_desc_chain(virtio_dev, rx_queue_index, queue_rx->num, idx); in virtio_console_port_init()
225 virtio_alloc_desc_chain(virtio_dev, tx_queue_index, queue_tx->num, idx); in virtio_console_port_init()
231 virtio_fill_desc(virtio_dev, rx_queue_index, id, in virtio_console_port_init()
246 virtio_queue_notify(virtio_dev, rx_queue_index); in virtio_console_port_init()
248 if (virtio_has_feature(virtio_dev, VIRTIO_CONSOLE_F_MULTIPORT)) in virtio_console_port_init()
266 …if (port_dev->port_id == 0 && virtio_has_feature(&port_dev->console->virtio_dev, VIRTIO_CONSOLE_F_… in virtio_console_port_open()
304 struct virtio_device *virtio_dev = &port_dev->console->virtio_dev; in virtio_console_port_read() local
333 virtio_submit_chain(virtio_dev, queue_rx_index, id); in virtio_console_port_read()
335 virtio_queue_notify(virtio_dev, queue_rx_index); in virtio_console_port_read()
355 struct virtio_device *virtio_dev = &port_dev->console->virtio_dev; in virtio_console_port_write() local
381 virtio_free_desc(virtio_dev, queue_tx_index, id); in virtio_console_port_write()
383 virtio_fill_desc(virtio_dev, queue_tx_index, id, in virtio_console_port_write()
386 virtio_submit_chain(virtio_dev, queue_tx_index, id); in virtio_console_port_write()
388 virtio_queue_notify(virtio_dev, queue_tx_index); in virtio_console_port_write()
390 virtio_alloc_desc(virtio_dev, queue_tx_index); in virtio_console_port_write()
442 struct virtio_device *virtio_dev = &virtio_console_dev->virtio_dev; in virtio_console_init() local
444 if (virtio_has_feature(virtio_dev, VIRTIO_CONSOLE_F_MULTIPORT)) in virtio_console_init()
450 queue_ctrl_rx = &virtio_dev->queues[VIRTIO_CONSOLE_QUEUE_CTRL_RX]; in virtio_console_init()
451 queue_ctrl_tx = &virtio_dev->queues[VIRTIO_CONSOLE_QUEUE_CTRL_TX]; in virtio_console_init()
453 virtio_alloc_desc_chain(virtio_dev, VIRTIO_CONSOLE_QUEUE_CTRL_RX, queue_ctrl_rx->num, idx); in virtio_console_init()
454 virtio_alloc_desc_chain(virtio_dev, VIRTIO_CONSOLE_QUEUE_CTRL_TX, queue_ctrl_tx->num, idx); in virtio_console_init()
460 virtio_fill_desc(virtio_dev, VIRTIO_CONSOLE_QUEUE_CTRL_RX, id, in virtio_console_init()
480 virtio_queue_notify(virtio_dev, VIRTIO_CONSOLE_QUEUE_CTRL_RX); in virtio_console_init()
522 struct virtio_device *virtio_dev = &virtio_console_dev->virtio_dev; in virtio_console_isr() local
526 rt_base_t level = rt_spin_lock_irqsave(&virtio_dev->spinlock); in virtio_console_isr()
529 virtio_interrupt_ack(virtio_dev); in virtio_console_isr()
536 if (!virtio_has_feature(virtio_dev, VIRTIO_CONSOLE_F_MULTIPORT)) in virtio_console_isr()
541 queue_rx = &virtio_dev->queues[VIRTIO_CONSOLE_QUEUE_CTRL_RX]; in virtio_console_isr()
571 rt_spin_unlock_irqrestore(&virtio_dev->spinlock, level); in virtio_console_isr()
577 level = rt_spin_lock_irqsave(&virtio_dev->spinlock); in virtio_console_isr()
592 rt_spin_unlock_irqrestore(&virtio_dev->spinlock, level); in virtio_console_isr()
598 level = rt_spin_lock_irqsave(&virtio_dev->spinlock); in virtio_console_isr()
613 rt_spin_unlock_irqrestore(&virtio_dev->spinlock, level); in virtio_console_isr()
657 virtio_submit_chain(virtio_dev, queue_rx_index, id); in virtio_console_isr()
659 virtio_queue_notify(virtio_dev, queue_rx_index); in virtio_console_isr()
675 struct virtio_device *virtio_dev; in rt_virtio_console_init() local
687 virtio_dev = &virtio_console_dev->virtio_dev; in rt_virtio_console_init()
688 virtio_dev->irq = irq; in rt_virtio_console_init()
689 virtio_dev->mmio_base = mmio_base; in rt_virtio_console_init()
691 virtio_console_dev->config = (struct virtio_console_config *)virtio_dev->mmio_config->config; in rt_virtio_console_init()
694 rt_spin_lock_init(&virtio_dev->spinlock); in rt_virtio_console_init()
697 virtio_reset_device(virtio_dev); in rt_virtio_console_init()
698 virtio_status_acknowledge_driver(virtio_dev); in rt_virtio_console_init()
700 virtio_dev->mmio_config->driver_features = virtio_dev->mmio_config->device_features & ~( in rt_virtio_console_init()
704 virtio_status_driver_ok(virtio_dev); in rt_virtio_console_init()
706 if (!virtio_has_feature(virtio_dev, VIRTIO_CONSOLE_F_MULTIPORT)) in rt_virtio_console_init()
726 if (virtio_queues_alloc(virtio_dev, queues_num) != RT_EOK) in rt_virtio_console_init()
731 for (i = 0; i < virtio_dev->queues_num; ++i) in rt_virtio_console_init()
733 if (virtio_queue_init(virtio_dev, i, VIRTIO_CONSOLE_QUEUE_SIZE) != RT_EOK) in rt_virtio_console_init()
737 virtio_queue_destroy(virtio_dev, i); in rt_virtio_console_init()
773 virtio_queues_free(virtio_dev); in rt_virtio_console_init()