mirror of https://gitee.com/openkylin/linux.git
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha
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
This commit is contained in:
commit
9ce8654323
|
@ -211,6 +211,7 @@ config ALPHA_EIGER
|
||||||
config ALPHA_JENSEN
|
config ALPHA_JENSEN
|
||||||
bool "Jensen"
|
bool "Jensen"
|
||||||
depends on BROKEN
|
depends on BROKEN
|
||||||
|
select DMA_DIRECT_OPS
|
||||||
help
|
help
|
||||||
DEC PC 150 AXP (aka Jensen): This is a very old Digital system - one
|
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
|
of the first-generation Alpha systems. A number of these systems
|
||||||
|
|
|
@ -2,11 +2,15 @@
|
||||||
#ifndef _ALPHA_DMA_MAPPING_H
|
#ifndef _ALPHA_DMA_MAPPING_H
|
||||||
#define _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)
|
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 */
|
#endif /* _ALPHA_DMA_MAPPING_H */
|
||||||
|
|
|
@ -37,20 +37,20 @@ unsigned int ioread32(void __iomem *addr)
|
||||||
|
|
||||||
void iowrite8(u8 b, void __iomem *addr)
|
void iowrite8(u8 b, void __iomem *addr)
|
||||||
{
|
{
|
||||||
IO_CONCAT(__IO_PREFIX,iowrite8)(b, addr);
|
|
||||||
mb();
|
mb();
|
||||||
|
IO_CONCAT(__IO_PREFIX,iowrite8)(b, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void iowrite16(u16 b, void __iomem *addr)
|
void iowrite16(u16 b, void __iomem *addr)
|
||||||
{
|
{
|
||||||
IO_CONCAT(__IO_PREFIX,iowrite16)(b, addr);
|
|
||||||
mb();
|
mb();
|
||||||
|
IO_CONCAT(__IO_PREFIX,iowrite16)(b, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void iowrite32(u32 b, void __iomem *addr)
|
void iowrite32(u32 b, void __iomem *addr)
|
||||||
{
|
{
|
||||||
IO_CONCAT(__IO_PREFIX,iowrite32)(b, addr);
|
|
||||||
mb();
|
mb();
|
||||||
|
IO_CONCAT(__IO_PREFIX,iowrite32)(b, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(ioread8);
|
EXPORT_SYMBOL(ioread8);
|
||||||
|
@ -176,26 +176,26 @@ u64 readq(const volatile void __iomem *addr)
|
||||||
|
|
||||||
void writeb(u8 b, volatile void __iomem *addr)
|
void writeb(u8 b, volatile void __iomem *addr)
|
||||||
{
|
{
|
||||||
__raw_writeb(b, addr);
|
|
||||||
mb();
|
mb();
|
||||||
|
__raw_writeb(b, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void writew(u16 b, volatile void __iomem *addr)
|
void writew(u16 b, volatile void __iomem *addr)
|
||||||
{
|
{
|
||||||
__raw_writew(b, addr);
|
|
||||||
mb();
|
mb();
|
||||||
|
__raw_writew(b, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void writel(u32 b, volatile void __iomem *addr)
|
void writel(u32 b, volatile void __iomem *addr)
|
||||||
{
|
{
|
||||||
__raw_writel(b, addr);
|
|
||||||
mb();
|
mb();
|
||||||
|
__raw_writel(b, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void writeq(u64 b, volatile void __iomem *addr)
|
void writeq(u64 b, volatile void __iomem *addr)
|
||||||
{
|
{
|
||||||
__raw_writeq(b, addr);
|
|
||||||
mb();
|
mb();
|
||||||
|
__raw_writeq(b, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(readb);
|
EXPORT_SYMBOL(readb);
|
||||||
|
|
|
@ -102,36 +102,3 @@ SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn,
|
||||||
else
|
else
|
||||||
return -ENODEV;
|
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);
|
|
||||||
|
|
|
@ -950,6 +950,4 @@ const struct dma_map_ops alpha_pci_ops = {
|
||||||
.mapping_error = alpha_pci_mapping_error,
|
.mapping_error = alpha_pci_mapping_error,
|
||||||
.dma_supported = alpha_pci_supported,
|
.dma_supported = alpha_pci_supported,
|
||||||
};
|
};
|
||||||
|
EXPORT_SYMBOL(alpha_pci_ops);
|
||||||
const struct dma_map_ops *dma_ops = &alpha_pci_ops;
|
|
||||||
EXPORT_SYMBOL(dma_ops);
|
|
||||||
|
|
Loading…
Reference in New Issue