Lines Matching refs:vinput
23 void virtio_input_send(VirtIOInput *vinput, virtio_input_event *event) in virtio_input_send() argument
28 if (!vinput->active) { in virtio_input_send()
33 if (vinput->qindex == vinput->qsize) { in virtio_input_send()
34 vinput->qsize++; in virtio_input_send()
35 vinput->queue = g_realloc(vinput->queue, vinput->qsize * in virtio_input_send()
36 sizeof(vinput->queue[0])); in virtio_input_send()
38 vinput->queue[vinput->qindex++].event = *event; in virtio_input_send()
47 for (i = 0; i < vinput->qindex; i++) { in virtio_input_send()
48 elem = virtqueue_pop(vinput->evt, sizeof(VirtQueueElement)); in virtio_input_send()
51 virtqueue_unpop(vinput->evt, vinput->queue[i].elem, 0); in virtio_input_send()
53 vinput->qindex = 0; in virtio_input_send()
57 vinput->queue[i].elem = elem; in virtio_input_send()
61 for (i = 0; i < vinput->qindex; i++) { in virtio_input_send()
62 elem = vinput->queue[i].elem; in virtio_input_send()
64 0, &vinput->queue[i].event, sizeof(virtio_input_event)); in virtio_input_send()
65 virtqueue_push(vinput->evt, elem, len); in virtio_input_send()
68 virtio_notify(VIRTIO_DEVICE(vinput), vinput->evt); in virtio_input_send()
69 vinput->qindex = 0; in virtio_input_send()
80 VirtIOInput *vinput = VIRTIO_INPUT(vdev); in virtio_input_handle_sts() local
86 elem = virtqueue_pop(vinput->sts, sizeof(VirtQueueElement)); in virtio_input_handle_sts()
95 vic->handle_status(vinput, &event); in virtio_input_handle_sts()
97 virtqueue_push(vinput->sts, elem, len); in virtio_input_handle_sts()
100 virtio_notify(vdev, vinput->sts); in virtio_input_handle_sts()
103 virtio_input_config *virtio_input_find_config(VirtIOInput *vinput, in virtio_input_find_config() argument
109 QTAILQ_FOREACH(cfg, &vinput->cfg_list, node) { in virtio_input_find_config()
118 void virtio_input_add_config(VirtIOInput *vinput, in virtio_input_add_config() argument
123 if (virtio_input_find_config(vinput, config->select, config->subsel)) { in virtio_input_add_config()
132 QTAILQ_INSERT_TAIL(&vinput->cfg_list, cfg, node); in virtio_input_add_config()
135 void virtio_input_init_config(VirtIOInput *vinput, in virtio_input_init_config() argument
140 QTAILQ_INIT(&vinput->cfg_list); in virtio_input_init_config()
142 virtio_input_add_config(vinput, config + i); in virtio_input_init_config()
147 void virtio_input_idstr_config(VirtIOInput *vinput, in virtio_input_idstr_config() argument
158 virtio_input_add_config(vinput, &id); in virtio_input_idstr_config()
163 VirtIOInput *vinput = VIRTIO_INPUT(vdev); in virtio_input_get_config() local
166 config = virtio_input_find_config(vinput, vinput->cfg_select, in virtio_input_get_config()
167 vinput->cfg_subsel); in virtio_input_get_config()
169 memcpy(config_data, config, vinput->cfg_size); in virtio_input_get_config()
171 memset(config_data, 0, vinput->cfg_size); in virtio_input_get_config()
178 VirtIOInput *vinput = VIRTIO_INPUT(vdev); in virtio_input_set_config() local
181 vinput->cfg_select = config->select; in virtio_input_set_config()
182 vinput->cfg_subsel = config->subsel; in virtio_input_set_config()
195 VirtIOInput *vinput = VIRTIO_INPUT(vdev); in virtio_input_set_status() local
198 if (!vinput->active) { in virtio_input_set_status()
199 vinput->active = true; in virtio_input_set_status()
201 vic->change_active(vinput); in virtio_input_set_status()
210 VirtIOInput *vinput = VIRTIO_INPUT(vdev); in virtio_input_reset() local
212 if (vinput->active) { in virtio_input_reset()
213 vinput->active = false; in virtio_input_reset()
215 vic->change_active(vinput); in virtio_input_reset()
222 VirtIOInput *vinput = opaque; in virtio_input_post_load() local
223 VirtIOInputClass *vic = VIRTIO_INPUT_GET_CLASS(vinput); in virtio_input_post_load()
224 VirtIODevice *vdev = VIRTIO_DEVICE(vinput); in virtio_input_post_load()
226 vinput->active = vdev->status & VIRTIO_CONFIG_S_DRIVER_OK; in virtio_input_post_load()
228 vic->change_active(vinput); in virtio_input_post_load()
237 VirtIOInput *vinput = VIRTIO_INPUT(dev); in virtio_input_device_realize() local
249 virtio_input_idstr_config(vinput, VIRTIO_INPUT_CFG_ID_SERIAL, in virtio_input_device_realize()
250 vinput->serial); in virtio_input_device_realize()
252 QTAILQ_FOREACH(cfg, &vinput->cfg_list, node) { in virtio_input_device_realize()
253 if (vinput->cfg_size < cfg->config.size) { in virtio_input_device_realize()
254 vinput->cfg_size = cfg->config.size; in virtio_input_device_realize()
257 vinput->cfg_size += 8; in virtio_input_device_realize()
258 assert(vinput->cfg_size <= sizeof(virtio_input_config)); in virtio_input_device_realize()
260 virtio_init(vdev, VIRTIO_ID_INPUT, vinput->cfg_size); in virtio_input_device_realize()
261 vinput->evt = virtio_add_queue(vdev, 64, virtio_input_handle_evt); in virtio_input_device_realize()
262 vinput->sts = virtio_add_queue(vdev, 64, virtio_input_handle_sts); in virtio_input_device_realize()
267 VirtIOInput *vinput = VIRTIO_INPUT(obj); in virtio_input_finalize() local
270 QTAILQ_FOREACH_SAFE(cfg, &vinput->cfg_list, node, next) { in virtio_input_finalize()
271 QTAILQ_REMOVE(&vinput->cfg_list, cfg, node); in virtio_input_finalize()
275 g_free(vinput->queue); in virtio_input_finalize()
282 VirtIOInput *vinput = VIRTIO_INPUT(dev); in virtio_input_device_unrealize() local
287 virtio_delete_queue(vinput->evt); in virtio_input_device_unrealize()
288 virtio_delete_queue(vinput->sts); in virtio_input_device_unrealize()