Blame view

include/linux/io.h 3.15 KB
c27a0d75b   Bryan O'Sullivan   [PATCH] Introduce...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  /*
   * Copyright 2006 PathScale, Inc.  All Rights Reserved.
   *
   * This file is free software; you can redistribute it and/or modify
   * it under the terms of version 2 of the GNU General Public License
   * as published by the Free Software Foundation.
   *
   * This program is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   *
   * You should have received a copy of the GNU General Public License
   * along with this program; if not, write to the Free Software Foundation,
   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
   */
  
  #ifndef _LINUX_IO_H
  #define _LINUX_IO_H
cb1055fb1   Al Viro   [PATCH] linux/io....
20
  #include <linux/types.h>
c27a0d75b   Bryan O'Sullivan   [PATCH] Introduce...
21
  #include <asm/io.h>
74588d8ba   Haavard Skinnemoen   [PATCH] Generic i...
22
  #include <asm/page.h>
c27a0d75b   Bryan O'Sullivan   [PATCH] Introduce...
23

7f2537704   Andrew Morton   git-libata-all: f...
24
  struct device;
d47d5c819   Andi Kleen   asmlinkage: Make ...
25
  __visible void __iowrite32_copy(void __iomem *to, const void *from, size_t count);
22ae813b8   Brice Goglin   [PATCH] add __iow...
26
  void __iowrite64_copy(void __iomem *to, const void *from, size_t count);
c27a0d75b   Bryan O'Sullivan   [PATCH] Introduce...
27

218f0aaee   Paul Mundt   nommu: add iorema...
28
  #ifdef CONFIG_MMU
74588d8ba   Haavard Skinnemoen   [PATCH] Generic i...
29
  int ioremap_page_range(unsigned long addr, unsigned long end,
ffa71f33a   Kenji Kaneshige   x86, ioremap: Fix...
30
  		       phys_addr_t phys_addr, pgprot_t prot);
218f0aaee   Paul Mundt   nommu: add iorema...
31
32
  #else
  static inline int ioremap_page_range(unsigned long addr, unsigned long end,
ffa71f33a   Kenji Kaneshige   x86, ioremap: Fix...
33
  				     phys_addr_t phys_addr, pgprot_t prot)
218f0aaee   Paul Mundt   nommu: add iorema...
34
35
36
37
  {
  	return 0;
  }
  #endif
74588d8ba   Haavard Skinnemoen   [PATCH] Generic i...
38

9ac7849e3   Tejun Heo   devres: device re...
39
40
41
  /*
   * Managed iomap interface
   */
ce816fa88   Uwe Kleine-König   Kconfig: rename H...
42
  #ifdef CONFIG_HAS_IOPORT_MAP
9ac7849e3   Tejun Heo   devres: device re...
43
44
45
  void __iomem * devm_ioport_map(struct device *dev, unsigned long port,
  			       unsigned int nr);
  void devm_ioport_unmap(struct device *dev, void __iomem *addr);
93da28790   Russell King   Provide dummy dev...
46
47
48
49
50
51
52
53
54
55
56
57
  #else
  static inline void __iomem *devm_ioport_map(struct device *dev,
  					     unsigned long port,
  					     unsigned int nr)
  {
  	return NULL;
  }
  
  static inline void devm_ioport_unmap(struct device *dev, void __iomem *addr)
  {
  }
  #endif
9ac7849e3   Tejun Heo   devres: device re...
58

4f452e8aa   Kumar Gala   devres: support a...
59
  void __iomem *devm_ioremap(struct device *dev, resource_size_t offset,
9ac7849e3   Tejun Heo   devres: device re...
60
  			    unsigned long size);
4f452e8aa   Kumar Gala   devres: support a...
61
  void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset,
9ac7849e3   Tejun Heo   devres: device re...
62
63
  				    unsigned long size);
  void devm_iounmap(struct device *dev, void __iomem *addr);
cc2ea416b   Andrew Morton   uninline check_si...
64
65
  int check_signature(const volatile void __iomem *io_addr,
  			const unsigned char *signature, int length);
b41e5fffe   Emil Medve   [POWERPC] devres:...
66
  void devm_ioremap_release(struct device *dev, void *res);
e50190a83   Matthew Wilcox   [PATCH] Consolida...
67

e1612de9e   Haren Myneni   powerpc: Disable ...
68
69
70
71
72
73
74
75
  /*
   * Some systems do not have legacy ISA devices.
   * /dev/port is not a valid interface on these systems.
   * So for those archs, <asm/io.h> should define the following symbol.
   */
  #ifndef arch_has_dev_port
  #define arch_has_dev_port()     (1)
  #endif
d0d98eede   Andy Lutomirski   Add arch_phys_wc_...
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
  /*
   * Some systems (x86 without PAT) have a somewhat reliable way to mark a
   * physical address range such that uncached mappings will actually
   * end up write-combining.  This facility should be used in conjunction
   * with pgprot_writecombine, ioremap-wc, or set_memory_wc, since it has
   * no effect if the per-page mechanisms are functional.
   * (On x86 without PAT, these functions manipulate MTRRs.)
   *
   * arch_phys_del_wc(0) or arch_phys_del_wc(any error code) is guaranteed
   * to have no effect.
   */
  #ifndef arch_phys_wc_add
  static inline int __must_check arch_phys_wc_add(unsigned long base,
  						unsigned long size)
  {
  	return 0;  /* It worked (i.e. did nothing). */
  }
  
  static inline void arch_phys_wc_del(int handle)
  {
  }
  
  #define arch_phys_wc_add arch_phys_wc_add
  #endif
c27a0d75b   Bryan O'Sullivan   [PATCH] Introduce...
100
  #endif /* _LINUX_IO_H */