1 #include <linux/kernel.h>
4 static void ide_legacy_init_one(struct ide_hw
**hws
, struct ide_hw
*hw
,
5 u8 port_no
, const struct ide_port_info
*d
,
8 unsigned long base
, ctl
;
21 if (!request_region(base
, 8, d
->name
)) {
22 printk(KERN_ERR
"%s: I/O resource 0x%lX-0x%lX not free.\n",
23 d
->name
, base
, base
+ 7);
27 if (!request_region(ctl
, 1, d
->name
)) {
28 printk(KERN_ERR
"%s: I/O resource 0x%lX not free.\n",
30 release_region(base
, 8);
34 ide_std_init_ports(hw
, base
, ctl
);
41 int ide_legacy_device_add(const struct ide_port_info
*d
, unsigned long config
)
43 struct ide_hw hw
[2], *hws
[] = { NULL
, NULL
};
45 memset(&hw
, 0, sizeof(hw
));
47 if ((d
->host_flags
& IDE_HFLAG_QD_2ND_PORT
) == 0)
48 ide_legacy_init_one(hws
, &hw
[0], 0, d
, config
);
49 ide_legacy_init_one(hws
, &hw
[1], 1, d
, config
);
51 if (hws
[0] == NULL
&& hws
[1] == NULL
&&
52 (d
->host_flags
& IDE_HFLAG_SINGLE
))
55 return ide_host_add(d
, hws
, 2, NULL
);
57 EXPORT_SYMBOL_GPL(ide_legacy_device_add
);