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

Commit 9ce86543 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull alpha fixes from Matt Turner:
 "A few small changes for alpha"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha:
  alpha: io: reorder barriers to guarantee writeX() and iowriteX() ordering #2
  alpha: simplify get_arch_dma_ops
  alpha: use dma_direct_ops for jensen
parents a048a07d 92d7223a
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
+6 −2
Original line number Diff line number Diff line
@@ -2,11 +2,15 @@
#ifndef _ALPHA_DMA_MAPPING_H
#define _ALPHA_DMA_MAPPING_H

extern const struct dma_map_ops *dma_ops;
extern const struct dma_map_ops alpha_pci_ops;

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

#endif	/* _ALPHA_DMA_MAPPING_H */
+7 −7
Original line number Diff line number Diff line
@@ -37,20 +37,20 @@ unsigned int ioread32(void __iomem *addr)

void iowrite8(u8 b, void __iomem *addr)
{
	IO_CONCAT(__IO_PREFIX,iowrite8)(b, addr);
	mb();
	IO_CONCAT(__IO_PREFIX,iowrite8)(b, addr);
}

void iowrite16(u16 b, void __iomem *addr)
{
	IO_CONCAT(__IO_PREFIX,iowrite16)(b, addr);
	mb();
	IO_CONCAT(__IO_PREFIX,iowrite16)(b, addr);
}

void iowrite32(u32 b, void __iomem *addr)
{
	IO_CONCAT(__IO_PREFIX,iowrite32)(b, addr);
	mb();
	IO_CONCAT(__IO_PREFIX,iowrite32)(b, addr);
}

EXPORT_SYMBOL(ioread8);
@@ -176,26 +176,26 @@ u64 readq(const volatile void __iomem *addr)

void writeb(u8 b, volatile void __iomem *addr)
{
	__raw_writeb(b, addr);
	mb();
	__raw_writeb(b, addr);
}

void writew(u16 b, volatile void __iomem *addr)
{
	__raw_writew(b, addr);
	mb();
	__raw_writew(b, addr);
}

void writel(u32 b, volatile void __iomem *addr)
{
	__raw_writel(b, addr);
	mb();
	__raw_writel(b, addr);
}

void writeq(u64 b, volatile void __iomem *addr)
{
	__raw_writeq(b, addr);
	mb();
	__raw_writeq(b, addr);
}

EXPORT_SYMBOL(readb);
+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);
+1 −3
Original line number Diff line number Diff line
@@ -950,6 +950,4 @@ const struct dma_map_ops alpha_pci_ops = {
	.mapping_error		= alpha_pci_mapping_error,
	.dma_supported		= alpha_pci_supported,
};

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