X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fsh%2Fdrivers%2Fpci%2Fdma-dreamcast.c;h=230d6ec0d2398df92d56525a9cbfbbc212e03d96;hb=refs%2Fheads%2Fvserver;hp=ff6169720f9641afbd8b42196b4accf6c043e9a7;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/arch/sh/drivers/pci/dma-dreamcast.c b/arch/sh/drivers/pci/dma-dreamcast.c index ff6169720..230d6ec0d 100644 --- a/arch/sh/drivers/pci/dma-dreamcast.c +++ b/arch/sh/drivers/pci/dma-dreamcast.c @@ -1,5 +1,5 @@ /* - * arch/sh/pci/dma-dreamcast.c + * arch/sh/drivers/pci/dma-dreamcast.c * * PCI DMA support for the Sega Dreamcast * @@ -15,7 +15,6 @@ * for more details. */ -#include #include #include #include @@ -23,6 +22,8 @@ #include #include #include +#include +#include #include #include @@ -30,18 +31,21 @@ static int gapspci_dma_used = 0; -void *__pci_alloc_consistent(struct pci_dev *hwdev, size_t size, - dma_addr_t * dma_handle) +void *dreamcast_consistent_alloc(struct device *dev, size_t size, + dma_addr_t *dma_handle, gfp_t flag) { unsigned long buf; - if (gapspci_dma_used+size > GAPSPCI_DMA_SIZE) + if (dev && dev->bus != &pci_bus_type) return NULL; - buf = GAPSPCI_DMA_BASE+gapspci_dma_used; + if (gapspci_dma_used + size > GAPSPCI_DMA_SIZE) + return ERR_PTR(-EINVAL); + + buf = GAPSPCI_DMA_BASE + gapspci_dma_used; gapspci_dma_used = PAGE_ALIGN(gapspci_dma_used+size); - + *dma_handle = (dma_addr_t)buf; buf = P2SEGADDR(buf); @@ -52,10 +56,15 @@ void *__pci_alloc_consistent(struct pci_dev *hwdev, size_t size, return (void *)buf; } -void __pci_free_consistent(struct pci_dev *hwdev, size_t size, +int dreamcast_consistent_free(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle) { + if (dev && dev->bus != &pci_bus_type) + return -EINVAL; + /* XXX */ gapspci_dma_used = 0; + + return 0; }