aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-07-24 12:55:18 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-07-24 12:55:18 -0400
commitff0c4ad2c3a75ccfe6adca916e50804eb45bb2d9 (patch)
tree574f2d38793f7a08af73c40a96d6dc76af9c6f46 /include
parentfcda12e7f6d58d61997681a9d41779e3fd2ffc94 (diff)
parent19f9d392365113f74286b1721c7c032c12cf5abd (diff)
Merge branch 'for-upstream' of git://openrisc.net/jonas/linux
* 'for-upstream' of git://openrisc.net/jonas/linux: (24 commits) OpenRISC: Add MAINTAINERS entry OpenRISC: Miscellaneous OpenRISC: Library routines OpenRISC: Headers OpenRISC: Traps OpenRISC: Module support OpenRISC: GPIO OpenRISC: Scheduling/Process management OpenRISC: Idle/Power management OpenRISC: System calls OpenRISC: IRQ OpenRISC: Timekeeping OpenRISC: DMA OpenRISC: PTrace OpenRISC: Build infrastructure OpenRISC: Signal handling OpenRISC: Memory management OpenRISC: Device tree OpenRISC: Boot code iomap: make IOPORT/PCI mapping functions conditional ...
Diffstat (limited to 'include')
-rw-r--r--include/asm-generic/delay.h37
-rw-r--r--include/asm-generic/io.h9
-rw-r--r--include/asm-generic/iomap.h4
3 files changed, 48 insertions, 2 deletions
diff --git a/include/asm-generic/delay.h b/include/asm-generic/delay.h
index 4586fec75ddb..0f79054ce7cd 100644
--- a/include/asm-generic/delay.h
+++ b/include/asm-generic/delay.h
@@ -1,9 +1,44 @@
1#ifndef __ASM_GENERIC_DELAY_H 1#ifndef __ASM_GENERIC_DELAY_H
2#define __ASM_GENERIC_DELAY_H 2#define __ASM_GENERIC_DELAY_H
3 3
4/* Undefined functions to get compile-time errors */
5extern void __bad_udelay(void);
6extern void __bad_ndelay(void);
7
4extern void __udelay(unsigned long usecs); 8extern void __udelay(unsigned long usecs);
9extern void __ndelay(unsigned long nsecs);
10extern void __const_udelay(unsigned long xloops);
5extern void __delay(unsigned long loops); 11extern void __delay(unsigned long loops);
6 12
7#define udelay(n) __udelay(n) 13/*
14 * The weird n/20000 thing suppresses a "comparison is always false due to
15 * limited range of data type" warning with non-const 8-bit arguments.
16 */
17
18/* 0x10c7 is 2**32 / 1000000 (rounded up) */
19#define udelay(n) \
20 ({ \
21 if (__builtin_constant_p(n)) { \
22 if ((n) / 20000 >= 1) \
23 __bad_udelay(); \
24 else \
25 __const_udelay((n) * 0x10c7ul); \
26 } else { \
27 __udelay(n); \
28 } \
29 })
30
31/* 0x5 is 2**32 / 1000000000 (rounded up) */
32#define ndelay(n) \
33 ({ \
34 if (__builtin_constant_p(n)) { \
35 if ((n) / 20000 >= 1) \
36 __bad_ndelay(); \
37 else \
38 __const_udelay((n) * 5ul); \
39 } else { \
40 __ndelay(n); \
41 } \
42 })
8 43
9#endif /* __ASM_GENERIC_DELAY_H */ 44#endif /* __ASM_GENERIC_DELAY_H */
diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h
index e0ffa3ddb02a..912088773a69 100644
--- a/include/asm-generic/io.h
+++ b/include/asm-generic/io.h
@@ -307,7 +307,11 @@ static inline void *phys_to_virt(unsigned long address)
307 307
308/* 308/*
309 * Change "struct page" to physical address. 309 * Change "struct page" to physical address.
310 *
311 * This implementation is for the no-MMU case only... if you have an MMU
312 * you'll need to provide your own definitions.
310 */ 313 */
314#ifndef CONFIG_MMU
311static inline void __iomem *ioremap(phys_addr_t offset, unsigned long size) 315static inline void __iomem *ioremap(phys_addr_t offset, unsigned long size)
312{ 316{
313 return (void __iomem*) (unsigned long)offset; 317 return (void __iomem*) (unsigned long)offset;
@@ -326,7 +330,9 @@ static inline void __iomem *ioremap(phys_addr_t offset, unsigned long size)
326static inline void iounmap(void *addr) 330static inline void iounmap(void *addr)
327{ 331{
328} 332}
333#endif /* CONFIG_MMU */
329 334
335#ifdef CONFIG_HAS_IOPORT
330#ifndef CONFIG_GENERIC_IOMAP 336#ifndef CONFIG_GENERIC_IOMAP
331static inline void __iomem *ioport_map(unsigned long port, unsigned int nr) 337static inline void __iomem *ioport_map(unsigned long port, unsigned int nr)
332{ 338{
@@ -340,9 +346,10 @@ static inline void ioport_unmap(void __iomem *p)
340extern void __iomem *ioport_map(unsigned long port, unsigned int nr); 346extern void __iomem *ioport_map(unsigned long port, unsigned int nr);
341extern void ioport_unmap(void __iomem *p); 347extern void ioport_unmap(void __iomem *p);
342#endif /* CONFIG_GENERIC_IOMAP */ 348#endif /* CONFIG_GENERIC_IOMAP */
349#endif /* CONFIG_HAS_IOPORT */
343 350
344#define xlate_dev_kmem_ptr(p) p 351#define xlate_dev_kmem_ptr(p) p
345#define xlate_dev_mem_ptr(p) ((void *) (p)) 352#define xlate_dev_mem_ptr(p) __va(p)
346 353
347#ifndef virt_to_bus 354#ifndef virt_to_bus
348static inline unsigned long virt_to_bus(volatile void *address) 355static inline unsigned long virt_to_bus(volatile void *address)
diff --git a/include/asm-generic/iomap.h b/include/asm-generic/iomap.h
index 76b0cc5637f8..c74ef2c6e633 100644
--- a/include/asm-generic/iomap.h
+++ b/include/asm-generic/iomap.h
@@ -56,17 +56,21 @@ extern void iowrite8_rep(void __iomem *port, const void *buf, unsigned long coun
56extern void iowrite16_rep(void __iomem *port, const void *buf, unsigned long count); 56extern void iowrite16_rep(void __iomem *port, const void *buf, unsigned long count);
57extern void iowrite32_rep(void __iomem *port, const void *buf, unsigned long count); 57extern void iowrite32_rep(void __iomem *port, const void *buf, unsigned long count);
58 58
59#ifdef CONFIG_HAS_IOPORT
59/* Create a virtual mapping cookie for an IO port range */ 60/* Create a virtual mapping cookie for an IO port range */
60extern void __iomem *ioport_map(unsigned long port, unsigned int nr); 61extern void __iomem *ioport_map(unsigned long port, unsigned int nr);
61extern void ioport_unmap(void __iomem *); 62extern void ioport_unmap(void __iomem *);
63#endif
62 64
63#ifndef ARCH_HAS_IOREMAP_WC 65#ifndef ARCH_HAS_IOREMAP_WC
64#define ioremap_wc ioremap_nocache 66#define ioremap_wc ioremap_nocache
65#endif 67#endif
66 68
69#ifdef CONFIG_PCI
67/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */ 70/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
68struct pci_dev; 71struct pci_dev;
69extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max); 72extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
70extern void pci_iounmap(struct pci_dev *dev, void __iomem *); 73extern void pci_iounmap(struct pci_dev *dev, void __iomem *);
74#endif
71 75
72#endif 76#endif