Lines Matching defs:device_info
89 struct dmabounce_device_info *device_info = dev->archdata.dmabounce;
91 device_info->small.allocs,
92 device_info->large.allocs,
93 device_info->total_allocs - device_info->small.allocs -
94 device_info->large.allocs,
95 device_info->total_allocs,
96 device_info->map_op_count,
97 device_info->bounce_count);
106 alloc_safe_buffer(struct dmabounce_device_info *device_info, void *ptr,
111 struct device *dev = device_info->dev;
117 if (size <= device_info->small.size) {
118 pool = &device_info->small;
119 } else if (size <= device_info->large.size) {
120 pool = &device_info->large;
155 device_info->total_allocs++;
158 write_lock_irqsave(&device_info->lock, flags);
159 list_add(&buf->node, &device_info->safe_buffers);
160 write_unlock_irqrestore(&device_info->lock, flags);
167 find_safe_buffer(struct dmabounce_device_info *device_info, dma_addr_t safe_dma_addr)
172 read_lock_irqsave(&device_info->lock, flags);
174 list_for_each_entry(b, &device_info->safe_buffers, node)
181 read_unlock_irqrestore(&device_info->lock, flags);
186 free_safe_buffer(struct dmabounce_device_info *device_info, struct safe_buffer *buf)
190 dev_dbg(device_info->dev, "%s(buf=%p)\n", __func__, buf);
192 write_lock_irqsave(&device_info->lock, flags);
196 write_unlock_irqrestore(&device_info->lock, flags);
201 dma_free_coherent(device_info->dev, buf->size, buf->safe,
248 struct dmabounce_device_info *device_info = dev->archdata.dmabounce;
251 if (device_info)
252 DO_STATS ( device_info->map_op_count++ );
254 buf = alloc_safe_buffer(device_info, ptr, size, dir);
486 struct dmabounce_device_info *device_info;
489 device_info = kmalloc(sizeof(struct dmabounce_device_info), GFP_ATOMIC);
490 if (!device_info) {
496 ret = dmabounce_init_pool(&device_info->small, dev,
506 ret = dmabounce_init_pool(&device_info->large, dev,
517 device_info->dev = dev;
518 INIT_LIST_HEAD(&device_info->safe_buffers);
519 rwlock_init(&device_info->lock);
520 device_info->needs_bounce = needs_bounce_fn;
523 device_info->total_allocs = 0;
524 device_info->map_op_count = 0;
525 device_info->bounce_count = 0;
526 device_info->attr_res = device_create_file(dev, &dev_attr_dmabounce_stats);
529 dev->archdata.dmabounce = device_info;
537 dma_pool_destroy(device_info->small.pool);
539 kfree(device_info);
546 struct dmabounce_device_info *device_info = dev->archdata.dmabounce;
551 if (!device_info) {
558 if (!list_empty(&device_info->safe_buffers)) {
564 if (device_info->small.pool)
565 dma_pool_destroy(device_info->small.pool);
566 if (device_info->large.pool)
567 dma_pool_destroy(device_info->large.pool);
570 if (device_info->attr_res == 0)
574 kfree(device_info);