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
include
linux
nubus.h
Go to the documentation of this file.
1
/*
2
nubus.h: various definitions and prototypes for NuBus drivers to use.
3
4
Originally written by Alan Cox.
5
6
Hacked to death by C. Scott Ananian and David Huggins-Daines.
7
8
Some of the constants in here are from the corresponding
9
NetBSD/OpenBSD header file, by Allen Briggs. We figured out the
10
rest of them on our own. */
11
#ifndef LINUX_NUBUS_H
12
#define LINUX_NUBUS_H
13
14
#include <
asm/nubus.h
>
15
#include <
uapi/linux/nubus.h
>
16
17
struct
nubus_board
{
18
struct
nubus_board
*
next
;
19
struct
nubus_dev
*
first_dev
;
20
21
/* Only 9-E actually exist, though 0-8 are also theoretically
22
possible, and 0 is a special case which represents the
23
motherboard and onboard peripherals (Ethernet, video) */
24
int
slot
;
25
/* For slot 0, this is bogus. */
26
char
name
[64];
27
28
/* Format block */
29
unsigned
char
*
fblock
;
30
/* Root directory (does *not* always equal fblock + doffset!) */
31
unsigned
char
*
directory
;
32
33
unsigned
long
slot_addr
;
34
/* Offset to root directory (sometimes) */
35
unsigned
long
doffset
;
36
/* Length over which to compute the crc */
37
unsigned
long
rom_length
;
38
/* Completely useless most of the time */
39
unsigned
long
crc
;
40
unsigned
char
rev
;
41
unsigned
char
format
;
42
unsigned
char
lanes
;
43
};
44
45
struct
nubus_dev
{
46
/* Next link in device list */
47
struct
nubus_dev
*
next
;
48
/* Directory entry in /proc/bus/nubus */
49
struct
proc_dir_entry
*
procdir
;
50
51
/* The functional resource ID of this device */
52
unsigned
char
resid
;
53
/* These are mostly here for convenience; we could always read
54
them from the ROMs if we wanted to */
55
unsigned
short
category
;
56
unsigned
short
type
;
57
unsigned
short
dr_sw
;
58
unsigned
short
dr_hw
;
59
/* This is the device's name rather than the board's.
60
Sometimes they are different. Usually the board name is
61
more correct. */
62
char
name
[64];
63
/* MacOS driver (I kid you not) */
64
unsigned
char
*
driver
;
65
/* Actually this is an offset */
66
unsigned
long
iobase
;
67
unsigned
long
iosize
;
68
unsigned
char
flags
,
hwdevid
;
69
70
/* Functional directory */
71
unsigned
char
*
directory
;
72
/* Much of our info comes from here */
73
struct
nubus_board
*
board
;
74
};
75
76
/* This is all NuBus devices (used to find devices later on) */
77
extern
struct
nubus_dev
*
nubus_devices
;
78
/* This is all NuBus cards */
79
extern
struct
nubus_board
*
nubus_boards
;
80
81
/* Generic NuBus interface functions, modelled after the PCI interface */
82
void
nubus_scan_bus
(
void
);
83
extern
void
nubus_proc_init
(
void
);
84
int
get_nubus_list
(
char
*
buf
);
85
int
nubus_proc_attach_device
(
struct
nubus_dev
*
dev
);
86
int
nubus_proc_detach_device
(
struct
nubus_dev
*
dev
);
87
/* If we need more precision we can add some more of these */
88
struct
nubus_dev
*
nubus_find_device
(
unsigned
short
category
,
89
unsigned
short
type
,
90
unsigned
short
dr_hw
,
91
unsigned
short
dr_sw
,
92
const
struct
nubus_dev
*
from
);
93
struct
nubus_dev
*
nubus_find_type
(
unsigned
short
category
,
94
unsigned
short
type
,
95
const
struct
nubus_dev
*
from
);
96
/* Might have more than one device in a slot, you know... */
97
struct
nubus_dev
*
nubus_find_slot
(
unsigned
int
slot
,
98
const
struct
nubus_dev
*
from
);
99
100
/* These are somewhat more NuBus-specific. They all return 0 for
101
success and -1 for failure, as you'd expect. */
102
103
/* The root directory which contains the board and functional
104
directories */
105
int
nubus_get_root_dir
(
const
struct
nubus_board
*
board
,
106
struct
nubus_dir
* dir);
107
/* The board directory */
108
int
nubus_get_board_dir
(
const
struct
nubus_board
*
board
,
109
struct
nubus_dir
* dir);
110
/* The functional directory */
111
int
nubus_get_func_dir
(
const
struct
nubus_dev
*
dev
,
112
struct
nubus_dir
* dir);
113
114
/* These work on any directory gotten via the above */
115
int
nubus_readdir
(
struct
nubus_dir
* dir,
116
struct
nubus_dirent
*
ent
);
117
int
nubus_find_rsrc
(
struct
nubus_dir
* dir,
118
unsigned
char
rsrc_type,
119
struct
nubus_dirent
*
ent
);
120
int
nubus_rewinddir
(
struct
nubus_dir
* dir);
121
122
/* Things to do with directory entries */
123
int
nubus_get_subdir
(
const
struct
nubus_dirent
*
ent
,
124
struct
nubus_dir
* dir);
125
void
nubus_get_rsrc_mem
(
void
*
dest
,
126
const
struct
nubus_dirent
*
dirent
,
127
int
len);
128
void
nubus_get_rsrc_str
(
void
*
dest
,
129
const
struct
nubus_dirent
*
dirent
,
130
int
maxlen);
131
#endif
/* LINUX_NUBUS_H */
Generated on Thu Jan 10 2013 13:08:07 for Linux Kernel by
1.8.2