Linux Audio

Check our new training course

Loading...
v5.14.15
 1// SPDX-License-Identifier: GPL-2.0
 2/*
 3 * ppc64 "iomap" interface implementation.
 4 *
 5 * (C) Copyright 2004 Linus Torvalds
 6 */
 
 7#include <linux/pci.h>
 8#include <linux/mm.h>
 9#include <linux/export.h>
10#include <asm/io.h>
11#include <asm/pci-bridge.h>
12#include <asm/isa-bridge.h>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
14void __iomem *ioport_map(unsigned long port, unsigned int len)
15{
16	return (void __iomem *) (port + _IO_BASE);
17}
 
 
 
 
 
18EXPORT_SYMBOL(ioport_map);
 
19
20#ifdef CONFIG_PCI
21void pci_iounmap(struct pci_dev *dev, void __iomem *addr)
22{
23	if (isa_vaddr_is_ioport(addr))
24		return;
25	if (pcibios_vaddr_is_ioport(addr))
26		return;
27	iounmap(addr);
28}
29
30EXPORT_SYMBOL(pci_iounmap);
31#endif /* CONFIG_PCI */
v3.5.6
 
  1/*
  2 * ppc64 "iomap" interface implementation.
  3 *
  4 * (C) Copyright 2004 Linus Torvalds
  5 */
  6#include <linux/init.h>
  7#include <linux/pci.h>
  8#include <linux/mm.h>
  9#include <linux/export.h>
 10#include <asm/io.h>
 11#include <asm/pci-bridge.h>
 12
 13/*
 14 * Here comes the ppc64 implementation of the IOMAP 
 15 * interfaces.
 16 */
 17unsigned int ioread8(void __iomem *addr)
 18{
 19	return readb(addr);
 20}
 21unsigned int ioread16(void __iomem *addr)
 22{
 23	return readw(addr);
 24}
 25unsigned int ioread16be(void __iomem *addr)
 26{
 27	return in_be16(addr);
 28}
 29unsigned int ioread32(void __iomem *addr)
 30{
 31	return readl(addr);
 32}
 33unsigned int ioread32be(void __iomem *addr)
 34{
 35	return in_be32(addr);
 36}
 37EXPORT_SYMBOL(ioread8);
 38EXPORT_SYMBOL(ioread16);
 39EXPORT_SYMBOL(ioread16be);
 40EXPORT_SYMBOL(ioread32);
 41EXPORT_SYMBOL(ioread32be);
 42
 43void iowrite8(u8 val, void __iomem *addr)
 44{
 45	writeb(val, addr);
 46}
 47void iowrite16(u16 val, void __iomem *addr)
 48{
 49	writew(val, addr);
 50}
 51void iowrite16be(u16 val, void __iomem *addr)
 52{
 53	out_be16(addr, val);
 54}
 55void iowrite32(u32 val, void __iomem *addr)
 56{
 57	writel(val, addr);
 58}
 59void iowrite32be(u32 val, void __iomem *addr)
 60{
 61	out_be32(addr, val);
 62}
 63EXPORT_SYMBOL(iowrite8);
 64EXPORT_SYMBOL(iowrite16);
 65EXPORT_SYMBOL(iowrite16be);
 66EXPORT_SYMBOL(iowrite32);
 67EXPORT_SYMBOL(iowrite32be);
 68
 69/*
 70 * These are the "repeat read/write" functions. Note the
 71 * non-CPU byte order. We do things in "IO byteorder"
 72 * here.
 73 *
 74 * FIXME! We could make these do EEH handling if we really
 75 * wanted. Not clear if we do.
 76 */
 77void ioread8_rep(void __iomem *addr, void *dst, unsigned long count)
 78{
 79	_insb((u8 __iomem *) addr, dst, count);
 80}
 81void ioread16_rep(void __iomem *addr, void *dst, unsigned long count)
 82{
 83	_insw_ns((u16 __iomem *) addr, dst, count);
 84}
 85void ioread32_rep(void __iomem *addr, void *dst, unsigned long count)
 86{
 87	_insl_ns((u32 __iomem *) addr, dst, count);
 88}
 89EXPORT_SYMBOL(ioread8_rep);
 90EXPORT_SYMBOL(ioread16_rep);
 91EXPORT_SYMBOL(ioread32_rep);
 92
 93void iowrite8_rep(void __iomem *addr, const void *src, unsigned long count)
 94{
 95	_outsb((u8 __iomem *) addr, src, count);
 96}
 97void iowrite16_rep(void __iomem *addr, const void *src, unsigned long count)
 98{
 99	_outsw_ns((u16 __iomem *) addr, src, count);
100}
101void iowrite32_rep(void __iomem *addr, const void *src, unsigned long count)
102{
103	_outsl_ns((u32 __iomem *) addr, src, count);
104}
105EXPORT_SYMBOL(iowrite8_rep);
106EXPORT_SYMBOL(iowrite16_rep);
107EXPORT_SYMBOL(iowrite32_rep);
108
109void __iomem *ioport_map(unsigned long port, unsigned int len)
110{
111	return (void __iomem *) (port + _IO_BASE);
112}
113
114void ioport_unmap(void __iomem *addr)
115{
116	/* Nothing to do */
117}
118EXPORT_SYMBOL(ioport_map);
119EXPORT_SYMBOL(ioport_unmap);
120
121#ifdef CONFIG_PCI
122void pci_iounmap(struct pci_dev *dev, void __iomem *addr)
123{
124	if (isa_vaddr_is_ioport(addr))
125		return;
126	if (pcibios_vaddr_is_ioport(addr))
127		return;
128	iounmap(addr);
129}
130
131EXPORT_SYMBOL(pci_iounmap);
132#endif /* CONFIG_PCI */