Lines Matching full:resource
50 * Find the bridge that the resource is associated with.
52 static struct vme_bridge *find_bridge(struct vme_resource *resource) in find_bridge() argument
55 switch (resource->type) { in find_bridge()
57 return list_entry(resource->entry, struct vme_master_resource, in find_bridge()
61 return list_entry(resource->entry, struct vme_slave_resource, in find_bridge()
65 return list_entry(resource->entry, struct vme_dma_resource, in find_bridge()
69 return list_entry(resource->entry, struct vme_lm_resource, in find_bridge()
73 printk(KERN_ERR "Unknown resource type\n"); in find_bridge()
81 * @resource: Pointer to VME resource.
90 void *vme_alloc_consistent(struct vme_resource *resource, size_t size, in vme_alloc_consistent() argument
95 if (!resource) { in vme_alloc_consistent()
96 printk(KERN_ERR "No resource\n"); in vme_alloc_consistent()
100 bridge = find_bridge(resource); in vme_alloc_consistent()
123 * @resource: Pointer to VME resource.
130 void vme_free_consistent(struct vme_resource *resource, size_t size, in vme_free_consistent() argument
135 if (!resource) { in vme_free_consistent()
136 printk(KERN_ERR "No resource\n"); in vme_free_consistent()
140 bridge = find_bridge(resource); in vme_free_consistent()
163 * @resource: Pointer to VME slave or master resource.
167 * depending on the type of window resource handed to it.
171 size_t vme_get_size(struct vme_resource *resource) in vme_get_size() argument
178 switch (resource->type) { in vme_get_size()
180 retval = vme_master_get(resource, &enabled, &base, &size, in vme_get_size()
188 retval = vme_slave_get(resource, &enabled, &base, &size, in vme_get_size()
199 printk(KERN_ERR "Unknown resource type\n"); in vme_get_size()
284 * vme_slave_request - Request a VME slave window resource.
289 * Request use of a VME window resource capable of being set for the requested
292 * Return: Pointer to VME resource on success, NULL on failure.
301 struct vme_resource *resource = NULL; in vme_slave_request() local
315 printk(KERN_ERR "Registered NULL Slave resource\n"); in vme_slave_request()
337 resource = kmalloc(sizeof(*resource), GFP_KERNEL); in vme_slave_request()
338 if (!resource) in vme_slave_request()
341 resource->type = VME_SLAVE; in vme_slave_request()
342 resource->entry = &allocated_image->list; in vme_slave_request()
344 return resource; in vme_slave_request()
359 * @resource: Pointer to VME slave resource.
370 * device, if an invalid resource has been provided or invalid
374 int vme_slave_set(struct vme_resource *resource, int enabled, in vme_slave_set() argument
378 struct vme_bridge *bridge = find_bridge(resource); in vme_slave_set()
382 if (resource->type != VME_SLAVE) { in vme_slave_set()
383 printk(KERN_ERR "Not a slave resource\n"); in vme_slave_set()
387 image = list_entry(resource->entry, struct vme_slave_resource, list); in vme_slave_set()
411 * @resource: Pointer to VME slave resource.
422 * device or if an invalid resource has been provided.
424 int vme_slave_get(struct vme_resource *resource, int *enabled, in vme_slave_get() argument
428 struct vme_bridge *bridge = find_bridge(resource); in vme_slave_get()
431 if (resource->type != VME_SLAVE) { in vme_slave_get()
432 printk(KERN_ERR "Not a slave resource\n"); in vme_slave_get()
436 image = list_entry(resource->entry, struct vme_slave_resource, list); in vme_slave_get()
450 * @resource: Pointer to VME slave resource.
452 * Free the provided slave resource so that it may be reallocated.
454 void vme_slave_free(struct vme_resource *resource) in vme_slave_free() argument
458 if (resource->type != VME_SLAVE) { in vme_slave_free()
459 printk(KERN_ERR "Not a slave resource\n"); in vme_slave_free()
463 slave_image = list_entry(resource->entry, struct vme_slave_resource, in vme_slave_free()
466 printk(KERN_ERR "Can't find slave resource\n"); in vme_slave_free()
478 /* Free up resource memory */ in vme_slave_free()
479 kfree(resource); in vme_slave_free()
484 * vme_master_request - Request a VME master window resource.
490 * Request use of a VME window resource capable of being set for the requested
493 * Return: Pointer to VME resource on success, NULL on failure.
502 struct vme_resource *resource = NULL; in vme_master_request() local
516 printk(KERN_WARNING "Registered NULL master resource\n"); in vme_master_request()
535 /* Check to see if we found a resource */ in vme_master_request()
537 printk(KERN_ERR "Can't find a suitable resource\n"); in vme_master_request()
541 resource = kmalloc(sizeof(*resource), GFP_KERNEL); in vme_master_request()
542 if (!resource) in vme_master_request()
545 resource->type = VME_MASTER; in vme_master_request()
546 resource->entry = &allocated_image->list; in vme_master_request()
548 return resource; in vme_master_request()
563 * @resource: Pointer to VME master resource.
574 * device, if an invalid resource has been provided or invalid
578 int vme_master_set(struct vme_resource *resource, int enabled, in vme_master_set() argument
582 struct vme_bridge *bridge = find_bridge(resource); in vme_master_set()
586 if (resource->type != VME_MASTER) { in vme_master_set()
587 printk(KERN_ERR "Not a master resource\n"); in vme_master_set()
591 image = list_entry(resource->entry, struct vme_master_resource, list); in vme_master_set()
616 * @resource: Pointer to VME master resource.
627 * device or if an invalid resource has been provided.
629 int vme_master_get(struct vme_resource *resource, int *enabled, in vme_master_get() argument
633 struct vme_bridge *bridge = find_bridge(resource); in vme_master_get()
636 if (resource->type != VME_MASTER) { in vme_master_get()
637 printk(KERN_ERR "Not a master resource\n"); in vme_master_get()
641 image = list_entry(resource->entry, struct vme_master_resource, list); in vme_master_get()
655 * @resource: Pointer to VME master resource.
663 * Return: Number of bytes read, -EINVAL if resource is not a VME master
664 * resource or read operation is not supported. -EFAULT returned if
668 ssize_t vme_master_read(struct vme_resource *resource, void *buf, size_t count, in vme_master_read() argument
671 struct vme_bridge *bridge = find_bridge(resource); in vme_master_read()
676 printk(KERN_WARNING "Reading from resource not supported\n"); in vme_master_read()
680 if (resource->type != VME_MASTER) { in vme_master_read()
681 printk(KERN_ERR "Not a master resource\n"); in vme_master_read()
685 image = list_entry(resource->entry, struct vme_master_resource, list); in vme_master_read()
687 length = vme_get_size(resource); in vme_master_read()
704 * @resource: Pointer to VME master resource.
712 * Return: Number of bytes written, -EINVAL if resource is not a VME master
713 * resource or write operation is not supported. -EFAULT returned if
717 ssize_t vme_master_write(struct vme_resource *resource, void *buf, in vme_master_write() argument
720 struct vme_bridge *bridge = find_bridge(resource); in vme_master_write()
725 printk(KERN_WARNING "Writing to resource not supported\n"); in vme_master_write()
729 if (resource->type != VME_MASTER) { in vme_master_write()
730 printk(KERN_ERR "Not a master resource\n"); in vme_master_write()
734 image = list_entry(resource->entry, struct vme_master_resource, list); in vme_master_write()
736 length = vme_get_size(resource); in vme_master_write()
752 * @resource: Pointer to VME master resource.
765 * Return: Bytes written on success, -EINVAL if resource is not a VME master
766 * resource or RMW operation is not supported. Hardware specific
769 unsigned int vme_master_rmw(struct vme_resource *resource, unsigned int mask, in vme_master_rmw() argument
772 struct vme_bridge *bridge = find_bridge(resource); in vme_master_rmw()
776 printk(KERN_WARNING "Writing to resource not supported\n"); in vme_master_rmw()
780 if (resource->type != VME_MASTER) { in vme_master_rmw()
781 printk(KERN_ERR "Not a master resource\n"); in vme_master_rmw()
785 image = list_entry(resource->entry, struct vme_master_resource, list); in vme_master_rmw()
793 * @resource: Pointer to VME master resource.
798 * Return: Zero on success, -EINVAL if resource is not a VME master
799 * resource or -EFAULT if map exceeds window size. Other generic mmap
802 int vme_master_mmap(struct vme_resource *resource, struct vm_area_struct *vma) in vme_master_mmap() argument
808 if (resource->type != VME_MASTER) { in vme_master_mmap()
809 pr_err("Not a master resource\n"); in vme_master_mmap()
813 image = list_entry(resource->entry, struct vme_master_resource, list); in vme_master_mmap()
830 * @resource: Pointer to VME master resource.
832 * Free the provided master resource so that it may be reallocated.
834 void vme_master_free(struct vme_resource *resource) in vme_master_free() argument
838 if (resource->type != VME_MASTER) { in vme_master_free()
839 printk(KERN_ERR "Not a master resource\n"); in vme_master_free()
843 master_image = list_entry(resource->entry, struct vme_master_resource, in vme_master_free()
846 printk(KERN_ERR "Can't find master resource\n"); in vme_master_free()
858 /* Free up resource memory */ in vme_master_free()
859 kfree(resource); in vme_master_free()
871 * Return: Pointer to VME DMA resource on success, NULL on failure.
879 struct vme_resource *resource = NULL; in vme_dma_request() local
881 /* XXX Not checking resource attributes */ in vme_dma_request()
882 printk(KERN_ERR "No VME resource Attribute tests done\n"); in vme_dma_request()
895 printk(KERN_ERR "Registered NULL DMA resource\n"); in vme_dma_request()
912 /* Check to see if we found a resource */ in vme_dma_request()
916 resource = kmalloc(sizeof(*resource), GFP_KERNEL); in vme_dma_request()
917 if (!resource) in vme_dma_request()
920 resource->type = VME_DMA; in vme_dma_request()
921 resource->entry = &allocated_ctrlr->list; in vme_dma_request()
923 return resource; in vme_dma_request()
938 * @resource: Pointer to VME DMA resource.
944 * VME DMA resource.
946 struct vme_dma_list *vme_new_dma_list(struct vme_resource *resource) in vme_new_dma_list() argument
950 if (resource->type != VME_DMA) { in vme_new_dma_list()
951 printk(KERN_ERR "Not a DMA resource\n"); in vme_new_dma_list()
960 dma_list->parent = list_entry(resource->entry, in vme_new_dma_list()
1182 * Return: Zero on success, -EINVAL on invalid VME resource, -EBUSY if resource
1218 * vme_dma_free - Free a VME DMA resource.
1219 * @resource: Pointer to VME DMA resource.
1221 * Free the provided DMA resource so that it may be reallocated.
1223 * Return: Zero on success, -EINVAL on invalid VME resource, -EBUSY if resource
1226 int vme_dma_free(struct vme_resource *resource) in vme_dma_free() argument
1230 if (resource->type != VME_DMA) { in vme_dma_free()
1231 printk(KERN_ERR "Not a DMA resource\n"); in vme_dma_free()
1235 ctrlr = list_entry(resource->entry, struct vme_dma_resource, list); in vme_dma_free()
1238 printk(KERN_ERR "Resource busy, can't free\n"); in vme_dma_free()
1243 printk(KERN_WARNING "Resource still processing transfers\n"); in vme_dma_free()
1252 kfree(resource); in vme_dma_free()
1472 * Allocate a location monitor resource to the driver. A location monitor
1476 * Return: Pointer to a VME resource on success or NULL on failure.
1484 struct vme_resource *resource = NULL; in vme_lm_request() local
1497 printk(KERN_ERR "Registered NULL Location Monitor resource\n"); in vme_lm_request()
1512 /* Check to see if we found a resource */ in vme_lm_request()
1516 resource = kmalloc(sizeof(*resource), GFP_KERNEL); in vme_lm_request()
1517 if (!resource) in vme_lm_request()
1520 resource->type = VME_LM; in vme_lm_request()
1521 resource->entry = &allocated_lm->list; in vme_lm_request()
1523 return resource; in vme_lm_request()
1538 * @resource: Pointer to VME location monitor resource.
1545 * invalid location monitor resource.
1547 int vme_lm_count(struct vme_resource *resource) in vme_lm_count() argument
1551 if (resource->type != VME_LM) { in vme_lm_count()
1552 printk(KERN_ERR "Not a Location Monitor resource\n"); in vme_lm_count()
1556 lm = list_entry(resource->entry, struct vme_lm_resource, list); in vme_lm_count()
1564 * @resource: Pointer to VME location monitor resource.
1573 * monitor resource or function is not supported. Hardware specific
1576 int vme_lm_set(struct vme_resource *resource, unsigned long long lm_base, in vme_lm_set() argument
1579 struct vme_bridge *bridge = find_bridge(resource); in vme_lm_set()
1582 if (resource->type != VME_LM) { in vme_lm_set()
1583 printk(KERN_ERR "Not a Location Monitor resource\n"); in vme_lm_set()
1587 lm = list_entry(resource->entry, struct vme_lm_resource, list); in vme_lm_set()
1600 * @resource: Pointer to VME location monitor resource.
1609 * monitor resource or function is not supported. Hardware specific
1612 int vme_lm_get(struct vme_resource *resource, unsigned long long *lm_base, in vme_lm_get() argument
1615 struct vme_bridge *bridge = find_bridge(resource); in vme_lm_get()
1618 if (resource->type != VME_LM) { in vme_lm_get()
1619 printk(KERN_ERR "Not a Location Monitor resource\n"); in vme_lm_get()
1623 lm = list_entry(resource->entry, struct vme_lm_resource, list); in vme_lm_get()
1636 * @resource: Pointer to VME location monitor resource.
1646 * monitor resource or function is not supported. Hardware specific
1649 int vme_lm_attach(struct vme_resource *resource, int monitor, in vme_lm_attach() argument
1652 struct vme_bridge *bridge = find_bridge(resource); in vme_lm_attach()
1655 if (resource->type != VME_LM) { in vme_lm_attach()
1656 printk(KERN_ERR "Not a Location Monitor resource\n"); in vme_lm_attach()
1660 lm = list_entry(resource->entry, struct vme_lm_resource, list); in vme_lm_attach()
1673 * @resource: Pointer to VME location monitor resource.
1680 * monitor resource or function is not supported. Hardware specific
1683 int vme_lm_detach(struct vme_resource *resource, int monitor) in vme_lm_detach() argument
1685 struct vme_bridge *bridge = find_bridge(resource); in vme_lm_detach()
1688 if (resource->type != VME_LM) { in vme_lm_detach()
1689 printk(KERN_ERR "Not a Location Monitor resource\n"); in vme_lm_detach()
1693 lm = list_entry(resource->entry, struct vme_lm_resource, list); in vme_lm_detach()
1706 * @resource: Pointer to VME location monitor resource.
1714 * monitor resource.
1716 void vme_lm_free(struct vme_resource *resource) in vme_lm_free() argument
1720 if (resource->type != VME_LM) { in vme_lm_free()
1721 printk(KERN_ERR "Not a Location Monitor resource\n"); in vme_lm_free()
1725 lm = list_entry(resource->entry, struct vme_lm_resource, list); in vme_lm_free()
1738 kfree(resource); in vme_lm_free()