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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-i386/] [sl811-hw.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
2
File: include/asm-i386/sl811-hw.h
3
 
4
19.09.2003 hne@ist1.de
5
Use Kernel 2.4.20 and this source from 2.4.22
6
Splitt hardware depens into file sl811-x86.h and sl811-arm.h.
7
Functions are inline.
8
 
9
Handle multi instances. For two controller on one board.
10
"hc->data_io" not used for x86 arch.
11
 
12
22.09.2003 hne
13
Alternate IO-Base for second Controller (CF/USB1).
14
 
15
23.09.2003 hne
16
Move Hardware depend header sl811-x86.h into include/asm-i386/sl811-hw.h.
17
 
18
03.10.2003 hne
19
Low level only for port io into hardware-include.
20
*/
21
 
22
#ifndef __LINUX_SL811_HW_H
23
#define __LINUX_SL811_HW_H
24
 
25
#define MAX_CONTROLERS  2       /* Max number of SL811 controllers per module */
26
 
27
static int io[MAX_CONTROLERS] = { 0x220, 0x222 };       /* IO ports for controllers */
28
static int irq[MAX_CONTROLERS] = { 12, 12 };            /* Interrupt list */
29
 
30
MODULE_PARM(io, "1-" __MODULE_STRING(MAX_CONTROLERS) "i");
31
MODULE_PARM_DESC(io, "I/O base address(es), 0x220,0x222 default");
32
MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_CONTROLERS) "i");
33
MODULE_PARM_DESC(irq, "IRQ number(s), 12,12 default");
34
 
35
#define OFFSET_DATA_REG         1       /* Offset from ADDR_IO to DATA_IO */
36
                                        /* Do not change this! */
37
#define SIZEOF_IO_REGION        2       /* Size for request/release region */
38
 
39
/*
40
 * Low level: Read from Data port [x86]
41
 */
42
static __u8 inline sl811_read_data (struct sl811_hc *hc)
43
{
44
        return ((__u8) inb (hc->addr_io+OFFSET_DATA_REG));
45
}
46
 
47
/*
48
 * Low level: Write to index register [x86]
49
 */
50
static void inline sl811_write_index (struct sl811_hc *hc, __u8 index)
51
{
52
        outb (index, hc->addr_io);
53
}
54
 
55
/*
56
 * Low level: Write to Data port [x86]
57
 */
58
static void inline sl811_write_data (struct sl811_hc *hc, __u8 data)
59
{
60
        outb (data, hc->addr_io+OFFSET_DATA_REG);
61
}
62
 
63
/*
64
 * Low level: Write to index register and data port [x86]
65
 */
66
static void inline sl811_write_index_data (struct sl811_hc *hc, __u8 index, __u8 data)
67
{
68
        outw (index|(((__u16)data) << 8), hc->addr_io);
69
}
70
 
71
/*
72
 * This function is board specific.  It sets up the interrupt to
73
 * be an edge trigger and trigger on the rising edge
74
 */
75
static void inline sl811_init_irq(void)
76
{
77
        /* nothing for x86 */
78
}
79
 
80
 
81
/*****************************************************************
82
 *
83
 * Function Name: release_regions [x86]
84
 *
85
 * This function is board specific. It release all io address
86
 * from memory (if can).
87
 *
88
 * Input: struct sl811_hc * *
89
 *
90
 * Return value  : 0 = OK
91
 *
92
 *****************************************************************/
93
static void inline sl811_release_regions(struct sl811_hc *hc)
94
{
95
        if (hc->addr_io)
96
                release_region(hc->addr_io, SIZEOF_IO_REGION);
97
        hc->addr_io = 0;
98
 
99
        /* data_io unused for x86 */
100
        /* ...
101
        if (hc->data_io)
102
                release_region(hc->data_io, SIZEOF_IO_REGION);
103
        hc->data_io = 0;
104
        ... */
105
}
106
 
107
/*****************************************************************
108
 *
109
 * Function Name: request_regions [x86]
110
 *
111
 * This function is board specific. It request all io address and
112
 * maps into memory (if can).
113
 *
114
 * Input: struct sl811_hc *
115
 *
116
 * Return value  : 0 = OK
117
 *
118
 *****************************************************************/
119
static int inline sl811_request_regions (struct sl811_hc *hc, int addr_io, int data_io, const char *name)
120
{
121
        if (!request_region(addr_io, SIZEOF_IO_REGION, name)) {
122
                PDEBUG(3, "request address %d failed", addr_io);
123
                return -EBUSY;
124
        }
125
        hc->addr_io =   addr_io;
126
 
127
        /* data_io unused for x86 */
128
        /* hc->data_io = data_io; */
129
 
130
        return 0;
131
}
132
 
133
#endif // __LINUX_SL811_HW_H

powered by: WebSVN 2.1.0

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