Lines Matching full:resource

46  * Find the bridge that the resource is associated with.
48 static struct vme_bridge *find_bridge(struct vme_resource *resource) in find_bridge() argument
51 switch (resource->type) { in find_bridge()
53 return list_entry(resource->entry, struct vme_master_resource, in find_bridge()
56 return list_entry(resource->entry, struct vme_slave_resource, in find_bridge()
59 return list_entry(resource->entry, struct vme_dma_resource, in find_bridge()
62 return list_entry(resource->entry, struct vme_lm_resource, in find_bridge()
65 printk(KERN_ERR "Unknown resource type\n"); in find_bridge()
72 * @resource: Pointer to VME resource.
81 void *vme_alloc_consistent(struct vme_resource *resource, size_t size, in vme_alloc_consistent() argument
86 if (!resource) { in vme_alloc_consistent()
87 printk(KERN_ERR "No resource\n"); in vme_alloc_consistent()
91 bridge = find_bridge(resource); in vme_alloc_consistent()
114 * @resource: Pointer to VME resource.
121 void vme_free_consistent(struct vme_resource *resource, size_t size, in vme_free_consistent() argument
126 if (!resource) { in vme_free_consistent()
127 printk(KERN_ERR "No resource\n"); in vme_free_consistent()
131 bridge = find_bridge(resource); in vme_free_consistent()
154 * @resource: Pointer to VME slave or master resource.
158 * depending on the type of window resource handed to it.
162 size_t vme_get_size(struct vme_resource *resource) in vme_get_size() argument
169 switch (resource->type) { in vme_get_size()
171 retval = vme_master_get(resource, &enabled, &base, &size, in vme_get_size()
178 retval = vme_slave_get(resource, &enabled, &base, &size, in vme_get_size()
187 printk(KERN_ERR "Unknown resource type\n"); in vme_get_size()
271 * vme_slave_request - Request a VME slave window resource.
276 * Request use of a VME window resource capable of being set for the requested
279 * Return: Pointer to VME resource on success, NULL on failure.
288 struct vme_resource *resource = NULL; in vme_slave_request() local
302 printk(KERN_ERR "Registered NULL Slave resource\n"); in vme_slave_request()
324 resource = kmalloc(sizeof(*resource), GFP_KERNEL); in vme_slave_request()
325 if (!resource) in vme_slave_request()
328 resource->type = VME_SLAVE; in vme_slave_request()
329 resource->entry = &allocated_image->list; in vme_slave_request()
331 return resource; in vme_slave_request()
346 * @resource: Pointer to VME slave resource.
357 * device, if an invalid resource has been provided or invalid
361 int vme_slave_set(struct vme_resource *resource, int enabled, in vme_slave_set() argument
365 struct vme_bridge *bridge = find_bridge(resource); in vme_slave_set()
369 if (resource->type != VME_SLAVE) { in vme_slave_set()
370 printk(KERN_ERR "Not a slave resource\n"); in vme_slave_set()
374 image = list_entry(resource->entry, struct vme_slave_resource, list); in vme_slave_set()
398 * @resource: Pointer to VME slave resource.
409 * device or if an invalid resource has been provided.
411 int vme_slave_get(struct vme_resource *resource, int *enabled, in vme_slave_get() argument
415 struct vme_bridge *bridge = find_bridge(resource); in vme_slave_get()
418 if (resource->type != VME_SLAVE) { in vme_slave_get()
419 printk(KERN_ERR "Not a slave resource\n"); in vme_slave_get()
423 image = list_entry(resource->entry, struct vme_slave_resource, list); in vme_slave_get()
437 * @resource: Pointer to VME slave resource.
439 * Free the provided slave resource so that it may be reallocated.
441 void vme_slave_free(struct vme_resource *resource) in vme_slave_free() argument
445 if (resource->type != VME_SLAVE) { in vme_slave_free()
446 printk(KERN_ERR "Not a slave resource\n"); in vme_slave_free()
450 slave_image = list_entry(resource->entry, struct vme_slave_resource, in vme_slave_free()
453 printk(KERN_ERR "Can't find slave resource\n"); in vme_slave_free()
465 /* Free up resource memory */ in vme_slave_free()
466 kfree(resource); in vme_slave_free()
471 * vme_master_request - Request a VME master window resource.
477 * Request use of a VME window resource capable of being set for the requested
480 * Return: Pointer to VME resource on success, NULL on failure.
489 struct vme_resource *resource = NULL; in vme_master_request() local
503 printk(KERN_WARNING "Registered NULL master resource\n"); in vme_master_request()
522 /* Check to see if we found a resource */ in vme_master_request()
524 printk(KERN_ERR "Can't find a suitable resource\n"); in vme_master_request()
528 resource = kmalloc(sizeof(*resource), GFP_KERNEL); in vme_master_request()
529 if (!resource) in vme_master_request()
532 resource->type = VME_MASTER; in vme_master_request()
533 resource->entry = &allocated_image->list; in vme_master_request()
535 return resource; in vme_master_request()
550 * @resource: Pointer to VME master resource.
561 * device, if an invalid resource has been provided or invalid
565 int vme_master_set(struct vme_resource *resource, int enabled, in vme_master_set() argument
569 struct vme_bridge *bridge = find_bridge(resource); in vme_master_set()
573 if (resource->type != VME_MASTER) { in vme_master_set()
574 printk(KERN_ERR "Not a master resource\n"); in vme_master_set()
578 image = list_entry(resource->entry, struct vme_master_resource, list); in vme_master_set()
603 * @resource: Pointer to VME master resource.
614 * device or if an invalid resource has been provided.
616 int vme_master_get(struct vme_resource *resource, int *enabled, in vme_master_get() argument
620 struct vme_bridge *bridge = find_bridge(resource); in vme_master_get()
623 if (resource->type != VME_MASTER) { in vme_master_get()
624 printk(KERN_ERR "Not a master resource\n"); in vme_master_get()
628 image = list_entry(resource->entry, struct vme_master_resource, list); in vme_master_get()
642 * @resource: Pointer to VME master resource.
650 * Return: Number of bytes read, -EINVAL if resource is not a VME master
651 * resource or read operation is not supported. -EFAULT returned if
655 ssize_t vme_master_read(struct vme_resource *resource, void *buf, size_t count, in vme_master_read() argument
658 struct vme_bridge *bridge = find_bridge(resource); in vme_master_read()
663 printk(KERN_WARNING "Reading from resource not supported\n"); in vme_master_read()
667 if (resource->type != VME_MASTER) { in vme_master_read()
668 printk(KERN_ERR "Not a master resource\n"); in vme_master_read()
672 image = list_entry(resource->entry, struct vme_master_resource, list); in vme_master_read()
674 length = vme_get_size(resource); in vme_master_read()
691 * @resource: Pointer to VME master resource.
699 * Return: Number of bytes written, -EINVAL if resource is not a VME master
700 * resource or write operation is not supported. -EFAULT returned if
704 ssize_t vme_master_write(struct vme_resource *resource, void *buf, in vme_master_write() argument
707 struct vme_bridge *bridge = find_bridge(resource); in vme_master_write()
712 printk(KERN_WARNING "Writing to resource not supported\n"); in vme_master_write()
716 if (resource->type != VME_MASTER) { in vme_master_write()
717 printk(KERN_ERR "Not a master resource\n"); in vme_master_write()
721 image = list_entry(resource->entry, struct vme_master_resource, list); in vme_master_write()
723 length = vme_get_size(resource); in vme_master_write()
739 * @resource: Pointer to VME master resource.
752 * Return: Bytes written on success, -EINVAL if resource is not a VME master
753 * resource or RMW operation is not supported. Hardware specific
756 unsigned int vme_master_rmw(struct vme_resource *resource, unsigned int mask, in vme_master_rmw() argument
759 struct vme_bridge *bridge = find_bridge(resource); in vme_master_rmw()
763 printk(KERN_WARNING "Writing to resource not supported\n"); in vme_master_rmw()
767 if (resource->type != VME_MASTER) { in vme_master_rmw()
768 printk(KERN_ERR "Not a master resource\n"); in vme_master_rmw()
772 image = list_entry(resource->entry, struct vme_master_resource, list); in vme_master_rmw()
780 * @resource: Pointer to VME master resource.
785 * Return: Zero on success, -EINVAL if resource is not a VME master
786 * resource or -EFAULT if map exceeds window size. Other generic mmap
789 int vme_master_mmap(struct vme_resource *resource, struct vm_area_struct *vma) in vme_master_mmap() argument
795 if (resource->type != VME_MASTER) { in vme_master_mmap()
796 pr_err("Not a master resource\n"); in vme_master_mmap()
800 image = list_entry(resource->entry, struct vme_master_resource, list); in vme_master_mmap()
817 * @resource: Pointer to VME master resource.
819 * Free the provided master resource so that it may be reallocated.
821 void vme_master_free(struct vme_resource *resource) in vme_master_free() argument
825 if (resource->type != VME_MASTER) { in vme_master_free()
826 printk(KERN_ERR "Not a master resource\n"); in vme_master_free()
830 master_image = list_entry(resource->entry, struct vme_master_resource, in vme_master_free()
833 printk(KERN_ERR "Can't find master resource\n"); in vme_master_free()
845 /* Free up resource memory */ in vme_master_free()
846 kfree(resource); in vme_master_free()
858 * Return: Pointer to VME DMA resource on success, NULL on failure.
866 struct vme_resource *resource = NULL; in vme_dma_request() local
868 /* XXX Not checking resource attributes */ in vme_dma_request()
869 printk(KERN_ERR "No VME resource Attribute tests done\n"); in vme_dma_request()
882 printk(KERN_ERR "Registered NULL DMA resource\n"); in vme_dma_request()
899 /* Check to see if we found a resource */ in vme_dma_request()
903 resource = kmalloc(sizeof(*resource), GFP_KERNEL); in vme_dma_request()
904 if (!resource) in vme_dma_request()
907 resource->type = VME_DMA; in vme_dma_request()
908 resource->entry = &allocated_ctrlr->list; in vme_dma_request()
910 return resource; in vme_dma_request()
925 * @resource: Pointer to VME DMA resource.
931 * VME DMA resource.
933 struct vme_dma_list *vme_new_dma_list(struct vme_resource *resource) in vme_new_dma_list() argument
937 if (resource->type != VME_DMA) { in vme_new_dma_list()
938 printk(KERN_ERR "Not a DMA resource\n"); in vme_new_dma_list()
947 dma_list->parent = list_entry(resource->entry, in vme_new_dma_list()
1169 * Return: Zero on success, -EINVAL on invalid VME resource, -EBUSY if resource
1205 * vme_dma_free - Free a VME DMA resource.
1206 * @resource: Pointer to VME DMA resource.
1208 * Free the provided DMA resource so that it may be reallocated.
1210 * Return: Zero on success, -EINVAL on invalid VME resource, -EBUSY if resource
1213 int vme_dma_free(struct vme_resource *resource) in vme_dma_free() argument
1217 if (resource->type != VME_DMA) { in vme_dma_free()
1218 printk(KERN_ERR "Not a DMA resource\n"); in vme_dma_free()
1222 ctrlr = list_entry(resource->entry, struct vme_dma_resource, list); in vme_dma_free()
1225 printk(KERN_ERR "Resource busy, can't free\n"); in vme_dma_free()
1230 printk(KERN_WARNING "Resource still processing transfers\n"); in vme_dma_free()
1239 kfree(resource); in vme_dma_free()
1459 * Allocate a location monitor resource to the driver. A location monitor
1463 * Return: Pointer to a VME resource on success or NULL on failure.
1471 struct vme_resource *resource = NULL; in vme_lm_request() local
1484 printk(KERN_ERR "Registered NULL Location Monitor resource\n"); in vme_lm_request()
1499 /* Check to see if we found a resource */ in vme_lm_request()
1503 resource = kmalloc(sizeof(*resource), GFP_KERNEL); in vme_lm_request()
1504 if (!resource) in vme_lm_request()
1507 resource->type = VME_LM; in vme_lm_request()
1508 resource->entry = &allocated_lm->list; in vme_lm_request()
1510 return resource; in vme_lm_request()
1525 * @resource: Pointer to VME location monitor resource.
1532 * invalid location monitor resource.
1534 int vme_lm_count(struct vme_resource *resource) in vme_lm_count() argument
1538 if (resource->type != VME_LM) { in vme_lm_count()
1539 printk(KERN_ERR "Not a Location Monitor resource\n"); in vme_lm_count()
1543 lm = list_entry(resource->entry, struct vme_lm_resource, list); in vme_lm_count()
1551 * @resource: Pointer to VME location monitor resource.
1560 * monitor resource or function is not supported. Hardware specific
1563 int vme_lm_set(struct vme_resource *resource, unsigned long long lm_base, in vme_lm_set() argument
1566 struct vme_bridge *bridge = find_bridge(resource); in vme_lm_set()
1569 if (resource->type != VME_LM) { in vme_lm_set()
1570 printk(KERN_ERR "Not a Location Monitor resource\n"); in vme_lm_set()
1574 lm = list_entry(resource->entry, struct vme_lm_resource, list); in vme_lm_set()
1587 * @resource: Pointer to VME location monitor resource.
1596 * monitor resource or function is not supported. Hardware specific
1599 int vme_lm_get(struct vme_resource *resource, unsigned long long *lm_base, in vme_lm_get() argument
1602 struct vme_bridge *bridge = find_bridge(resource); in vme_lm_get()
1605 if (resource->type != VME_LM) { in vme_lm_get()
1606 printk(KERN_ERR "Not a Location Monitor resource\n"); in vme_lm_get()
1610 lm = list_entry(resource->entry, struct vme_lm_resource, list); in vme_lm_get()
1623 * @resource: Pointer to VME location monitor resource.
1633 * monitor resource or function is not supported. Hardware specific
1636 int vme_lm_attach(struct vme_resource *resource, int monitor, in vme_lm_attach() argument
1639 struct vme_bridge *bridge = find_bridge(resource); in vme_lm_attach()
1642 if (resource->type != VME_LM) { in vme_lm_attach()
1643 printk(KERN_ERR "Not a Location Monitor resource\n"); in vme_lm_attach()
1647 lm = list_entry(resource->entry, struct vme_lm_resource, list); in vme_lm_attach()
1660 * @resource: Pointer to VME location monitor resource.
1667 * monitor resource or function is not supported. Hardware specific
1670 int vme_lm_detach(struct vme_resource *resource, int monitor) in vme_lm_detach() argument
1672 struct vme_bridge *bridge = find_bridge(resource); in vme_lm_detach()
1675 if (resource->type != VME_LM) { in vme_lm_detach()
1676 printk(KERN_ERR "Not a Location Monitor resource\n"); in vme_lm_detach()
1680 lm = list_entry(resource->entry, struct vme_lm_resource, list); in vme_lm_detach()
1693 * @resource: Pointer to VME location monitor resource.
1701 * monitor resource.
1703 void vme_lm_free(struct vme_resource *resource) in vme_lm_free() argument
1707 if (resource->type != VME_LM) { in vme_lm_free()
1708 printk(KERN_ERR "Not a Location Monitor resource\n"); in vme_lm_free()
1712 lm = list_entry(resource->entry, struct vme_lm_resource, list); in vme_lm_free()
1725 kfree(resource); in vme_lm_free()