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
drivers
ide
ide-legacy.c
Go to the documentation of this file.
1
#include <linux/kernel.h>
2
#include <linux/export.h>
3
#include <
linux/ide.h
>
4
5
static
void
ide_legacy_init_one(
struct
ide_hw
**hws,
struct
ide_hw
*
hw
,
6
u8
port_no
,
const
struct
ide_port_info
*
d
,
7
unsigned
long
config
)
8
{
9
unsigned
long
base
,
ctl
;
10
int
irq
;
11
12
if
(port_no == 0) {
13
base = 0x1f0;
14
ctl = 0x3f6;
15
irq = 14;
16
}
else
{
17
base = 0x170;
18
ctl = 0x376;
19
irq = 15;
20
}
21
22
if
(!
request_region
(base, 8, d->
name
)) {
23
printk
(
KERN_ERR
"%s: I/O resource 0x%lX-0x%lX not free.\n"
,
24
d->
name
, base, base + 7);
25
return
;
26
}
27
28
if
(!
request_region
(ctl, 1, d->
name
)) {
29
printk
(
KERN_ERR
"%s: I/O resource 0x%lX not free.\n"
,
30
d->
name
, ctl);
31
release_region
(base, 8);
32
return
;
33
}
34
35
ide_std_init_ports(hw, base, ctl);
36
hw->
irq
= irq;
37
hw->
config
=
config
;
38
39
hws[
port_no
] =
hw
;
40
}
41
42
int
ide_legacy_device_add
(
const
struct
ide_port_info
*d,
unsigned
long
config)
43
{
44
struct
ide_hw
hw[2], *hws[] = {
NULL
,
NULL
};
45
46
memset
(&hw, 0,
sizeof
(hw));
47
48
if
((d->
host_flags
&
IDE_HFLAG_QD_2ND_PORT
) == 0)
49
ide_legacy_init_one(hws, &hw[0], 0, d, config);
50
ide_legacy_init_one(hws, &hw[1], 1, d, config);
51
52
if
(hws[0] ==
NULL
&& hws[1] ==
NULL
&&
53
(d->
host_flags
&
IDE_HFLAG_SINGLE
))
54
return
-
ENOENT
;
55
56
return
ide_host_add
(d, hws, 2,
NULL
);
57
}
58
EXPORT_SYMBOL_GPL
(
ide_legacy_device_add
);
Generated on Thu Jan 10 2013 13:36:14 for Linux Kernel by
1.8.2