Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
mips
dec
tc.c
Go to the documentation of this file.
1
/*
2
* TURBOchannel architecture calls.
3
*
4
* Copyright (c) Harald Koerfgen, 1998
5
* Copyright (c) 2001, 2003, 2005, 2006 Maciej W. Rozycki
6
* Copyright (c) 2005 James Simmons
7
*
8
* This file is subject to the terms and conditions of the GNU
9
* General Public License. See the file "COPYING" in the main
10
* directory of this archive for more details.
11
*/
12
#include <linux/compiler.h>
13
#include <linux/errno.h>
14
#include <
linux/init.h
>
15
#include <linux/string.h>
16
#include <
linux/tc.h
>
17
#include <linux/types.h>
18
19
#include <asm/addrspace.h>
20
#include <asm/bootinfo.h>
21
#include <
asm/paccess.h
>
22
23
#include <
asm/dec/interrupts.h
>
24
#include <
asm/dec/prom.h
>
25
#include <
asm/dec/system.h
>
26
27
/*
28
* Protected read byte from TURBOchannel slot space.
29
*/
30
int
tc_preadb
(
u8
*valp,
void
__iomem
*
addr
)
31
{
32
return
get_dbe
(*valp, (
u8
*)addr);
33
}
34
35
/*
36
* Get TURBOchannel bus information as specified by the spec, plus
37
* the slot space base address and the number of slots.
38
*/
39
int
__init
tc_bus_get_info
(
struct
tc_bus
*tbus)
40
{
41
if
(!
dec_tc_bus
)
42
return
-
ENXIO
;
43
44
memcpy
(&tbus->
info
,
rex_gettcinfo
(),
sizeof
(tbus->
info
));
45
tbus->
slot_base
=
CPHYSADDR
((
long
)
rex_slot_address
(0));
46
47
switch
(
mips_machtype
) {
48
case
MACH_DS5000_200
:
49
tbus->
num_tcslots
= 7;
50
break
;
51
case
MACH_DS5000_2X0
:
52
case
MACH_DS5900
:
53
tbus->
ext_slot_base
= 0x20000000;
54
tbus->
ext_slot_size
= 0x20000000;
55
/* fall through */
56
case
MACH_DS5000_1XX
:
57
tbus->
num_tcslots
= 3;
58
break
;
59
case
MACH_DS5000_XX
:
60
tbus->
num_tcslots
= 2;
61
default
:
62
break
;
63
}
64
return
0;
65
}
66
67
/*
68
* Get the IRQ for the specified slot.
69
*/
70
void
__init
tc_device_get_irq
(
struct
tc_dev
*tdev)
71
{
72
switch
(tdev->
slot
) {
73
case
0:
74
tdev->
interrupt
=
dec_interrupt
[
DEC_IRQ_TC0
];
75
break
;
76
case
1:
77
tdev->
interrupt
=
dec_interrupt
[
DEC_IRQ_TC1
];
78
break
;
79
case
2:
80
tdev->
interrupt
=
dec_interrupt
[
DEC_IRQ_TC2
];
81
break
;
82
/*
83
* Yuck! DS5000/200 onboard devices
84
*/
85
case
5:
86
tdev->
interrupt
=
dec_interrupt
[
DEC_IRQ_TC5
];
87
break
;
88
case
6:
89
tdev->
interrupt
=
dec_interrupt
[
DEC_IRQ_TC6
];
90
break
;
91
default
:
92
tdev->
interrupt
= -1;
93
break
;
94
}
95
}
Generated on Thu Jan 10 2013 13:09:15 for Linux Kernel by
1.8.2