Lines Matching refs:resource
46 * Find the bridge that the resource is associated with.
48 static struct vme_bridge *find_bridge(struct vme_resource *resource)
51 switch (resource->type) {
53 return list_entry(resource->entry, struct vme_master_resource,
57 return list_entry(resource->entry, struct vme_slave_resource,
61 return list_entry(resource->entry, struct vme_dma_resource,
65 return list_entry(resource->entry, struct vme_lm_resource,
69 printk(KERN_ERR "Unknown resource type\n");
77 * @resource: Pointer to VME resource.
86 void *vme_alloc_consistent(struct vme_resource *resource, size_t size,
91 if (!resource) {
92 printk(KERN_ERR "No resource\n");
96 bridge = find_bridge(resource);
119 * @resource: Pointer to VME resource.
126 void vme_free_consistent(struct vme_resource *resource, size_t size,
131 if (!resource) {
132 printk(KERN_ERR "No resource\n");
136 bridge = find_bridge(resource);
159 * @resource: Pointer to VME slave or master resource.
163 * depending on the type of window resource handed to it.
167 size_t vme_get_size(struct vme_resource *resource)
174 switch (resource->type) {
176 retval = vme_master_get(resource, &enabled, &base, &size,
184 retval = vme_slave_get(resource, &enabled, &base, &size,
195 printk(KERN_ERR "Unknown resource type\n");
280 * vme_slave_request - Request a VME slave window resource.
285 * Request use of a VME window resource capable of being set for the requested
288 * Return: Pointer to VME resource on success, NULL on failure.
297 struct vme_resource *resource = NULL;
311 printk(KERN_ERR "Registered NULL Slave resource\n");
333 resource = kmalloc(sizeof(*resource), GFP_KERNEL);
334 if (!resource)
337 resource->type = VME_SLAVE;
338 resource->entry = &allocated_image->list;
340 return resource;
355 * @resource: Pointer to VME slave resource.
366 * device, if an invalid resource has been provided or invalid
370 int vme_slave_set(struct vme_resource *resource, int enabled,
374 struct vme_bridge *bridge = find_bridge(resource);
378 if (resource->type != VME_SLAVE) {
379 printk(KERN_ERR "Not a slave resource\n");
383 image = list_entry(resource->entry, struct vme_slave_resource, list);
407 * @resource: Pointer to VME slave resource.
418 * device or if an invalid resource has been provided.
420 int vme_slave_get(struct vme_resource *resource, int *enabled,
424 struct vme_bridge *bridge = find_bridge(resource);
427 if (resource->type != VME_SLAVE) {
428 printk(KERN_ERR "Not a slave resource\n");
432 image = list_entry(resource->entry, struct vme_slave_resource, list);
446 * @resource: Pointer to VME slave resource.
448 * Free the provided slave resource so that it may be reallocated.
450 void vme_slave_free(struct vme_resource *resource)
454 if (resource->type != VME_SLAVE) {
455 printk(KERN_ERR "Not a slave resource\n");
459 slave_image = list_entry(resource->entry, struct vme_slave_resource,
462 printk(KERN_ERR "Can't find slave resource\n");
474 /* Free up resource memory */
475 kfree(resource);
480 * vme_master_request - Request a VME master window resource.
486 * Request use of a VME window resource capable of being set for the requested
489 * Return: Pointer to VME resource on success, NULL on failure.
498 struct vme_resource *resource = NULL;
512 printk(KERN_WARNING "Registered NULL master resource\n");
531 /* Check to see if we found a resource */
533 printk(KERN_ERR "Can't find a suitable resource\n");
537 resource = kmalloc(sizeof(*resource), GFP_KERNEL);
538 if (!resource)
541 resource->type = VME_MASTER;
542 resource->entry = &allocated_image->list;
544 return resource;
559 * @resource: Pointer to VME master resource.
570 * device, if an invalid resource has been provided or invalid
574 int vme_master_set(struct vme_resource *resource, int enabled,
578 struct vme_bridge *bridge = find_bridge(resource);
582 if (resource->type != VME_MASTER) {
583 printk(KERN_ERR "Not a master resource\n");
587 image = list_entry(resource->entry, struct vme_master_resource, list);
612 * @resource: Pointer to VME master resource.
623 * device or if an invalid resource has been provided.
625 int vme_master_get(struct vme_resource *resource, int *enabled,
629 struct vme_bridge *bridge = find_bridge(resource);
632 if (resource->type != VME_MASTER) {
633 printk(KERN_ERR "Not a master resource\n");
637 image = list_entry(resource->entry, struct vme_master_resource, list);
651 * @resource: Pointer to VME master resource.
659 * Return: Number of bytes read, -EINVAL if resource is not a VME master
660 * resource or read operation is not supported. -EFAULT returned if
664 ssize_t vme_master_read(struct vme_resource *resource, void *buf, size_t count,
667 struct vme_bridge *bridge = find_bridge(resource);
672 printk(KERN_WARNING "Reading from resource not supported\n");
676 if (resource->type != VME_MASTER) {
677 printk(KERN_ERR "Not a master resource\n");
681 image = list_entry(resource->entry, struct vme_master_resource, list);
683 length = vme_get_size(resource);
700 * @resource: Pointer to VME master resource.
708 * Return: Number of bytes written, -EINVAL if resource is not a VME master
709 * resource or write operation is not supported. -EFAULT returned if
713 ssize_t vme_master_write(struct vme_resource *resource, void *buf,
716 struct vme_bridge *bridge = find_bridge(resource);
721 printk(KERN_WARNING "Writing to resource not supported\n");
725 if (resource->type != VME_MASTER) {
726 printk(KERN_ERR "Not a master resource\n");
730 image = list_entry(resource->entry, struct vme_master_resource, list);
732 length = vme_get_size(resource);
748 * @resource: Pointer to VME master resource.
761 * Return: Bytes written on success, -EINVAL if resource is not a VME master
762 * resource or RMW operation is not supported. Hardware specific
765 unsigned int vme_master_rmw(struct vme_resource *resource, unsigned int mask,
768 struct vme_bridge *bridge = find_bridge(resource);
772 printk(KERN_WARNING "Writing to resource not supported\n");
776 if (resource->type != VME_MASTER) {
777 printk(KERN_ERR "Not a master resource\n");
781 image = list_entry(resource->entry, struct vme_master_resource, list);
789 * @resource: Pointer to VME master resource.
794 * Return: Zero on success, -EINVAL if resource is not a VME master
795 * resource or -EFAULT if map exceeds window size. Other generic mmap
798 int vme_master_mmap(struct vme_resource *resource, struct vm_area_struct *vma)
804 if (resource->type != VME_MASTER) {
805 pr_err("Not a master resource\n");
809 image = list_entry(resource->entry, struct vme_master_resource, list);
826 * @resource: Pointer to VME master resource.
828 * Free the provided master resource so that it may be reallocated.
830 void vme_master_free(struct vme_resource *resource)
834 if (resource->type != VME_MASTER) {
835 printk(KERN_ERR "Not a master resource\n");
839 master_image = list_entry(resource->entry, struct vme_master_resource,
842 printk(KERN_ERR "Can't find master resource\n");
854 /* Free up resource memory */
855 kfree(resource);
867 * Return: Pointer to VME DMA resource on success, NULL on failure.
875 struct vme_resource *resource = NULL;
877 /* XXX Not checking resource attributes */
878 printk(KERN_ERR "No VME resource Attribute tests done\n");
891 printk(KERN_ERR "Registered NULL DMA resource\n");
908 /* Check to see if we found a resource */
912 resource = kmalloc(sizeof(*resource), GFP_KERNEL);
913 if (!resource)
916 resource->type = VME_DMA;
917 resource->entry = &allocated_ctrlr->list;
919 return resource;
934 * @resource: Pointer to VME DMA resource.
940 * VME DMA resource.
942 struct vme_dma_list *vme_new_dma_list(struct vme_resource *resource)
946 if (resource->type != VME_DMA) {
947 printk(KERN_ERR "Not a DMA resource\n");
956 dma_list->parent = list_entry(resource->entry,
1178 * Return: Zero on success, -EINVAL on invalid VME resource, -EBUSY if resource
1214 * vme_dma_free - Free a VME DMA resource.
1215 * @resource: Pointer to VME DMA resource.
1217 * Free the provided DMA resource so that it may be reallocated.
1219 * Return: Zero on success, -EINVAL on invalid VME resource, -EBUSY if resource
1222 int vme_dma_free(struct vme_resource *resource)
1226 if (resource->type != VME_DMA) {
1227 printk(KERN_ERR "Not a DMA resource\n");
1231 ctrlr = list_entry(resource->entry, struct vme_dma_resource, list);
1248 kfree(resource);
1468 * Allocate a location monitor resource to the driver. A location monitor
1472 * Return: Pointer to a VME resource on success or NULL on failure.
1480 struct vme_resource *resource = NULL;
1493 printk(KERN_ERR "Registered NULL Location Monitor resource\n");
1508 /* Check to see if we found a resource */
1512 resource = kmalloc(sizeof(*resource), GFP_KERNEL);
1513 if (!resource)
1516 resource->type = VME_LM;
1517 resource->entry = &allocated_lm->list;
1519 return resource;
1534 * @resource: Pointer to VME location monitor resource.
1541 * invalid location monitor resource.
1543 int vme_lm_count(struct vme_resource *resource)
1547 if (resource->type != VME_LM) {
1548 printk(KERN_ERR "Not a Location Monitor resource\n");
1552 lm = list_entry(resource->entry, struct vme_lm_resource, list);
1560 * @resource: Pointer to VME location monitor resource.
1569 * monitor resource or function is not supported. Hardware specific
1572 int vme_lm_set(struct vme_resource *resource, unsigned long long lm_base,
1575 struct vme_bridge *bridge = find_bridge(resource);
1578 if (resource->type != VME_LM) {
1579 printk(KERN_ERR "Not a Location Monitor resource\n");
1583 lm = list_entry(resource->entry, struct vme_lm_resource, list);
1596 * @resource: Pointer to VME location monitor resource.
1605 * monitor resource or function is not supported. Hardware specific
1608 int vme_lm_get(struct vme_resource *resource, unsigned long long *lm_base,
1611 struct vme_bridge *bridge = find_bridge(resource);
1614 if (resource->type != VME_LM) {
1615 printk(KERN_ERR "Not a Location Monitor resource\n");
1619 lm = list_entry(resource->entry, struct vme_lm_resource, list);
1632 * @resource: Pointer to VME location monitor resource.
1642 * monitor resource or function is not supported. Hardware specific
1645 int vme_lm_attach(struct vme_resource *resource, int monitor,
1648 struct vme_bridge *bridge = find_bridge(resource);
1651 if (resource->type != VME_LM) {
1652 printk(KERN_ERR "Not a Location Monitor resource\n");
1656 lm = list_entry(resource->entry, struct vme_lm_resource, list);
1669 * @resource: Pointer to VME location monitor resource.
1676 * monitor resource or function is not supported. Hardware specific
1679 int vme_lm_detach(struct vme_resource *resource, int monitor)
1681 struct vme_bridge *bridge = find_bridge(resource);
1684 if (resource->type != VME_LM) {
1685 printk(KERN_ERR "Not a Location Monitor resource\n");
1689 lm = list_entry(resource->entry, struct vme_lm_resource, list);
1702 * @resource: Pointer to VME location monitor resource.
1710 * monitor resource.
1712 void vme_lm_free(struct vme_resource *resource)
1716 if (resource->type != VME_LM) {
1717 printk(KERN_ERR "Not a Location Monitor resource\n");
1721 lm = list_entry(resource->entry, struct vme_lm_resource, list);
1734 kfree(resource);