Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6db61543 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Matt Turner
Browse files

alpha: use dma_direct_ops for jensen



The generic dma_direct implementation does the same thing as the alpha
pci-noop implementation, just with more bells and whistles.  And unlike
the current code it at least has a theoretical chance to actually compile.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarMatt Turner <mattst88@gmail.com>
parent c61a56ab
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -211,6 +211,7 @@ config ALPHA_EIGER
config ALPHA_JENSEN
	bool "Jensen"
	depends on BROKEN
	select DMA_DIRECT_OPS
	help
	  DEC PC 150 AXP (aka Jensen): This is a very old Digital system - one
	  of the first-generation Alpha systems. A number of these systems
+4 −0
Original line number Diff line number Diff line
@@ -6,7 +6,11 @@ extern const struct dma_map_ops *dma_ops;

static inline const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus)
{
#ifdef CONFIG_ALPHA_JENSEN
	return &dma_direct_ops;
#else
	return dma_ops;
#endif
}

#endif	/* _ALPHA_DMA_MAPPING_H */
+0 −33
Original line number Diff line number Diff line
@@ -102,36 +102,3 @@ SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn,
	else
		return -ENODEV;
}

static void *alpha_noop_alloc_coherent(struct device *dev, size_t size,
				       dma_addr_t *dma_handle, gfp_t gfp,
				       unsigned long attrs)
{
	void *ret;

	if (!dev || *dev->dma_mask >= 0xffffffffUL)
		gfp &= ~GFP_DMA;
	ret = (void *)__get_free_pages(gfp, get_order(size));
	if (ret) {
		memset(ret, 0, size);
		*dma_handle = virt_to_phys(ret);
	}
	return ret;
}

static int alpha_noop_supported(struct device *dev, u64 mask)
{
	return mask < 0x00ffffffUL ? 0 : 1;
}

const struct dma_map_ops alpha_noop_ops = {
	.alloc			= alpha_noop_alloc_coherent,
	.free			= dma_noop_free_coherent,
	.map_page		= dma_noop_map_page,
	.map_sg			= dma_noop_map_sg,
	.mapping_error		= dma_noop_mapping_error,
	.dma_supported		= alpha_noop_supported,
};

const struct dma_map_ops *dma_ops = &alpha_noop_ops;
EXPORT_SYMBOL(dma_ops);