OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [include/] [asm-or32/] [io.h] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 7 xianfeng
#ifndef _OR32_IO_H
2
#define _OR32_IO_H
3
 
4
#include <asm/page.h>   /* for __va, __pa */
5
 
6
 
7
/*
8
 * Change virtual addresses to physical addresses and vv.
9
 */
10
 
11
static inline unsigned long virt_to_phys(volatile void * address)
12
{
13
        return __pa(address);
14
}
15
 
16
static inline void * phys_to_virt(unsigned long address)
17
{
18
        return __va(address);
19
}
20
 
21
extern void * __ioremap(unsigned long offset, unsigned long size, unsigned long flags);
22
 
23
extern inline void * ioremap(unsigned long offset, unsigned long size)
24
{
25
        return __ioremap(offset, size, 0);
26
}
27
 
28
/* #define _PAGE_CI       0x002 */
29
extern inline void * ioremap_nocache(unsigned long offset, unsigned long size)
30
{
31
        return __ioremap(offset, size, 0x002);
32
}
33
 
34
extern void iounmap(void *addr);
35
 
36
#define page_to_phys(page)      ((page - mem_map) << PAGE_SHIFT)
37
 
38
/*
39
 * IO bus memory addresses are also 1:1 with the physical address
40
 */
41
#define virt_to_bus virt_to_phys
42
#define bus_to_virt phys_to_virt
43
 
44
/*
45
 * readX/writeX() are used to access memory mapped devices. On some
46
 * architectures the memory mapped IO stuff needs to be accessed
47
 * differently. On the or32 architecture, we just read/write the
48
 * memory location directly.
49
 */
50
#define readb(addr) (*(volatile unsigned char *) (addr))
51
#define readw(addr) (*(volatile unsigned short *) (addr))
52
#define readl(addr) (*(volatile unsigned int *) (addr))
53
 
54
#define writeb(b,addr) ((*(volatile unsigned char *) (addr)) = (b))
55
#define writew(b,addr) ((*(volatile unsigned short *) (addr)) = (b))
56
#define writel(b,addr) ((*(volatile unsigned int *) (addr)) = (b))
57
#define __raw_writel writel /*RGD*/
58
 
59
#define memset_io(a,b,c)        memset((void *)(a),(b),(c))
60
#define memcpy_fromio(a,b,c)    memcpy((a),(void *)(b),(c))
61
#define memcpy_toio(a,b,c)      memcpy((void *)(a),(b),(c))
62
 
63
/*
64
 * Again, or32 does not require mem IO specific function.
65
 */
66
 
67
#define eth_io_copy_and_sum(a,b,c,d)    eth_copy_and_sum((a),(void *)(b),(c),(d))
68
 
69
#define IO_BASE                 0x0
70
#define IO_SPACE_LIMIT          0xffffffff
71
 
72
#define inb(port)               (*(volatile unsigned char *) (port+IO_BASE))
73
#define outb(value,port)        ((*(volatile unsigned char *) (port+IO_BASE)) = (value))        
74
 
75
#define inb_p(port)             inb((port))
76
#define outb_p(val, port)       outb((val), (port))
77
 
78
/*
79
 * Convert a physical pointer to a virtual kernel pointer for /dev/mem
80
 * access
81
 */
82
#define xlate_dev_mem_ptr(p)    __va(p)
83
 
84
/*
85
 * Convert a virtual cached pointer to an uncached pointer
86
 */
87
#define xlate_dev_kmem_ptr(p)   p
88
 
89
 
90
/* Create a virtual mapping cookie for an IO port range */
91
extern void __iomem *ioport_map(unsigned long port, unsigned int nr);
92
extern void ioport_unmap(void __iomem *);
93
 
94
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.