Lines Matching refs:pdata
81 struct hv_uio_private_data *pdata = info->priv; in hv_uio_irqcontrol() local
82 struct hv_device *dev = pdata->device; in hv_uio_irqcontrol()
97 struct hv_uio_private_data *pdata = hv_get_drvdata(hv_dev); in hv_uio_channel_cb() local
102 uio_event_notify(&pdata->info); in hv_uio_channel_cb()
111 struct hv_uio_private_data *pdata = hv_get_drvdata(hv_dev); in hv_uio_rescind() local
117 pdata->info.irq = 0; in hv_uio_rescind()
120 uio_event_notify(&pdata->info); in hv_uio_rescind()
180 hv_uio_cleanup(struct hv_device *dev, struct hv_uio_private_data *pdata) in hv_uio_cleanup() argument
182 if (pdata->send_gpadl.gpadl_handle) { in hv_uio_cleanup()
183 vmbus_teardown_gpadl(dev->channel, &pdata->send_gpadl); in hv_uio_cleanup()
184 vfree(pdata->send_buf); in hv_uio_cleanup()
187 if (pdata->recv_gpadl.gpadl_handle) { in hv_uio_cleanup()
188 vmbus_teardown_gpadl(dev->channel, &pdata->recv_gpadl); in hv_uio_cleanup()
189 vfree(pdata->recv_buf); in hv_uio_cleanup()
197 struct hv_uio_private_data *pdata in hv_uio_open() local
199 struct hv_device *dev = pdata->device; in hv_uio_open()
202 if (atomic_inc_return(&pdata->refcnt) != 1) in hv_uio_open()
213 atomic_dec(&pdata->refcnt); in hv_uio_open()
222 struct hv_uio_private_data *pdata in hv_uio_release() local
224 struct hv_device *dev = pdata->device; in hv_uio_release()
227 if (atomic_dec_and_test(&pdata->refcnt)) in hv_uio_release()
238 struct hv_uio_private_data *pdata; in hv_uio_probe() local
248 pdata = devm_kzalloc(&dev->device, sizeof(*pdata), GFP_KERNEL); in hv_uio_probe()
249 if (!pdata) in hv_uio_probe()
260 pdata->info.name = "uio_hv_generic"; in hv_uio_probe()
261 pdata->info.version = DRIVER_VERSION; in hv_uio_probe()
262 pdata->info.irqcontrol = hv_uio_irqcontrol; in hv_uio_probe()
263 pdata->info.open = hv_uio_open; in hv_uio_probe()
264 pdata->info.release = hv_uio_release; in hv_uio_probe()
265 pdata->info.irq = UIO_IRQ_CUSTOM; in hv_uio_probe()
266 atomic_set(&pdata->refcnt, 0); in hv_uio_probe()
269 pdata->info.mem[TXRX_RING_MAP].name = "txrx_rings"; in hv_uio_probe()
271 pdata->info.mem[TXRX_RING_MAP].addr in hv_uio_probe()
273 pdata->info.mem[TXRX_RING_MAP].size in hv_uio_probe()
275 pdata->info.mem[TXRX_RING_MAP].memtype = UIO_MEM_IOVA; in hv_uio_probe()
277 pdata->info.mem[INT_PAGE_MAP].name = "int_page"; in hv_uio_probe()
278 pdata->info.mem[INT_PAGE_MAP].addr in hv_uio_probe()
280 pdata->info.mem[INT_PAGE_MAP].size = PAGE_SIZE; in hv_uio_probe()
281 pdata->info.mem[INT_PAGE_MAP].memtype = UIO_MEM_LOGICAL; in hv_uio_probe()
283 pdata->info.mem[MON_PAGE_MAP].name = "monitor_page"; in hv_uio_probe()
284 pdata->info.mem[MON_PAGE_MAP].addr in hv_uio_probe()
286 pdata->info.mem[MON_PAGE_MAP].size = PAGE_SIZE; in hv_uio_probe()
287 pdata->info.mem[MON_PAGE_MAP].memtype = UIO_MEM_LOGICAL; in hv_uio_probe()
289 pdata->recv_buf = vzalloc(RECV_BUFFER_SIZE); in hv_uio_probe()
290 if (pdata->recv_buf == NULL) { in hv_uio_probe()
295 ret = vmbus_establish_gpadl(channel, pdata->recv_buf, in hv_uio_probe()
296 RECV_BUFFER_SIZE, &pdata->recv_gpadl); in hv_uio_probe()
298 vfree(pdata->recv_buf); in hv_uio_probe()
303 snprintf(pdata->recv_name, sizeof(pdata->recv_name), in hv_uio_probe()
304 "recv:%u", pdata->recv_gpadl.gpadl_handle); in hv_uio_probe()
305 pdata->info.mem[RECV_BUF_MAP].name = pdata->recv_name; in hv_uio_probe()
306 pdata->info.mem[RECV_BUF_MAP].addr in hv_uio_probe()
307 = (uintptr_t)pdata->recv_buf; in hv_uio_probe()
308 pdata->info.mem[RECV_BUF_MAP].size = RECV_BUFFER_SIZE; in hv_uio_probe()
309 pdata->info.mem[RECV_BUF_MAP].memtype = UIO_MEM_VIRTUAL; in hv_uio_probe()
311 pdata->send_buf = vzalloc(SEND_BUFFER_SIZE); in hv_uio_probe()
312 if (pdata->send_buf == NULL) { in hv_uio_probe()
317 ret = vmbus_establish_gpadl(channel, pdata->send_buf, in hv_uio_probe()
318 SEND_BUFFER_SIZE, &pdata->send_gpadl); in hv_uio_probe()
320 vfree(pdata->send_buf); in hv_uio_probe()
324 snprintf(pdata->send_name, sizeof(pdata->send_name), in hv_uio_probe()
325 "send:%u", pdata->send_gpadl.gpadl_handle); in hv_uio_probe()
326 pdata->info.mem[SEND_BUF_MAP].name = pdata->send_name; in hv_uio_probe()
327 pdata->info.mem[SEND_BUF_MAP].addr in hv_uio_probe()
328 = (uintptr_t)pdata->send_buf; in hv_uio_probe()
329 pdata->info.mem[SEND_BUF_MAP].size = SEND_BUFFER_SIZE; in hv_uio_probe()
330 pdata->info.mem[SEND_BUF_MAP].memtype = UIO_MEM_VIRTUAL; in hv_uio_probe()
332 pdata->info.priv = pdata; in hv_uio_probe()
333 pdata->device = dev; in hv_uio_probe()
335 ret = uio_register_device(&dev->device, &pdata->info); in hv_uio_probe()
346 hv_set_drvdata(dev, pdata); in hv_uio_probe()
351 hv_uio_cleanup(dev, pdata); in hv_uio_probe()
361 struct hv_uio_private_data *pdata = hv_get_drvdata(dev); in hv_uio_remove() local
363 if (!pdata) in hv_uio_remove()
367 uio_unregister_device(&pdata->info); in hv_uio_remove()
368 hv_uio_cleanup(dev, pdata); in hv_uio_remove()