if (!dev || dev->bus != &sh_bus_types[SH_BUS_VIRT] ||
(dev->bus == &sh_bus_types[SH_BUS_VIRT] &&
shdev->dev_id != SH_DEV_ID_USB_OHCI))
- return NULL;
+ return consistent_alloc(flag, size, handle);
start = OHCI_SRAM_START + OHCI_HCCA_SIZE;
entry = kmalloc(sizeof(struct voya_alloc_entry), GFP_ATOMIC);
if (!entry)
- return ERR_PTR(-ENOMEM);
+ return NULL;
entry->len = (size + 15) & ~15;
kfree(entry);
spin_unlock_irqrestore(&voya_list_lock, flags);
- return ERR_PTR(-EINVAL);
+ return NULL;
}
-int voyagergx_consistent_free(struct device *dev, size_t size,
- void *vaddr, dma_addr_t handle)
+void voyagergx_consistent_free(struct device *dev, size_t size,
+ void *vaddr, dma_addr_t handle)
{
struct voya_alloc_entry *entry;
struct sh_dev *shdev = to_sh_dev(dev);
if (!dev || dev->bus != &sh_bus_types[SH_BUS_VIRT] ||
(dev->bus == &sh_bus_types[SH_BUS_VIRT] &&
- shdev->dev_id != SH_DEV_ID_USB_OHCI))
- return -EINVAL;
+ shdev->dev_id != SH_DEV_ID_USB_OHCI)) {
+ consistent_free(vaddr, size);
+ return;
+ }
spin_lock_irqsave(&voya_list_lock, flags);
list_for_each_entry(entry, &voya_alloc_list, list) {
break;
}
spin_unlock_irqrestore(&voya_list_lock, flags);
-
- return 0;
}
EXPORT_SYMBOL(voyagergx_consistent_alloc);