1 #include <linux/kernel.h>
2 #include <linux/export.h>
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
,
9 unsigned long base
, ctl
;
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);
28 if (!request_region(ctl
, 1, d
->name
)) {
29 printk(KERN_ERR
"%s: I/O resource 0x%lX not free.\n",
31 release_region(base
, 8);
35 ide_std_init_ports(hw
, base
, ctl
);
42 int ide_legacy_device_add(const struct ide_port_info
*d
, unsigned long config
)
44 struct ide_hw hw
[2], *hws
[] = { NULL
, NULL
};
46 memset(&hw
, 0, sizeof(hw
));
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
);
52 if (hws
[0] == NULL
&& hws
[1] == NULL
&&
53 (d
->host_flags
& IDE_HFLAG_SINGLE
))
56 return ide_host_add(d
, hws
, 2, NULL
);
58 EXPORT_SYMBOL_GPL(ide_legacy_device_add
);