Blame view
drivers/ide/rapide.c
2 KB
1da177e4c Linux-2.6.12-rc2 |
1 |
/* |
1da177e4c Linux-2.6.12-rc2 |
2 3 4 5 |
* Copyright (c) 1996-2002 Russell King. */ #include <linux/module.h> |
1da177e4c Linux-2.6.12-rc2 |
6 7 8 9 10 11 |
#include <linux/blkdev.h> #include <linux/errno.h> #include <linux/ide.h> #include <linux/init.h> #include <asm/ecard.h> |
1137fb670 arm ide breakage |
12 |
static const struct ide_port_info rapide_port_info = { |
9a5ae1faa rapide: use struc... |
13 |
.host_flags = IDE_HFLAG_MMIO | IDE_HFLAG_NO_DMA, |
29e52cf79 ide: remove chips... |
14 |
.chipset = ide_generic, |
9a5ae1faa rapide: use struc... |
15 |
}; |
9f36d3143 ide: remove hw_re... |
16 |
static void rapide_setup_ports(struct ide_hw *hw, void __iomem *base, |
57c802e84 ide: add ide_init... |
17 |
void __iomem *ctrl, unsigned int sz, int irq) |
1da177e4c Linux-2.6.12-rc2 |
18 19 |
{ unsigned long port = (unsigned long)base; |
baa8f3e94 ide: add ide_find... |
20 |
int i; |
1da177e4c Linux-2.6.12-rc2 |
21 |
|
4c3032d8a ide: add struct i... |
22 23 |
for (i = 0; i <= 7; i++) { hw->io_ports_array[i] = port; |
1da177e4c Linux-2.6.12-rc2 |
24 25 |
port += sz; } |
4c3032d8a ide: add struct i... |
26 |
hw->io_ports.ctl_addr = (unsigned long)ctrl; |
57c802e84 ide: add ide_init... |
27 |
hw->irq = irq; |
1da177e4c Linux-2.6.12-rc2 |
28 |
} |
fe31edc8a Drivers: ide: rem... |
29 |
static int rapide_probe(struct expansion_card *ec, const struct ecard_id *id) |
1da177e4c Linux-2.6.12-rc2 |
30 |
{ |
1da177e4c Linux-2.6.12-rc2 |
31 |
void __iomem *base; |
48c3c1072 ide: add struct i... |
32 |
struct ide_host *host; |
1da177e4c Linux-2.6.12-rc2 |
33 |
int ret; |
9f36d3143 ide: remove hw_re... |
34 |
struct ide_hw hw, *hws[] = { &hw }; |
1da177e4c Linux-2.6.12-rc2 |
35 36 37 38 |
ret = ecard_request_resources(ec); if (ret) goto out; |
10bdaaa0f [ARM] ecard: add ... |
39 |
base = ecardm_iomap(ec, ECARD_RES_MEMC, 0, 0); |
1da177e4c Linux-2.6.12-rc2 |
40 41 42 43 |
if (!base) { ret = -ENOMEM; goto release; } |
47bc7e742 rapide: fix rapid... |
44 45 |
memset(&hw, 0, sizeof(hw)); rapide_setup_ports(&hw, base, base + 0x818, 1 << 6, ec->irq); |
47bc7e742 rapide: fix rapid... |
46 |
hw.dev = &ec->dev; |
57c802e84 ide: add ide_init... |
47 |
|
dca398305 ide: pass number ... |
48 |
ret = ide_host_add(&rapide_port_info, hws, 1, &host); |
6f904d015 ide: add ide_host... |
49 |
if (ret) |
47bc7e742 rapide: fix rapid... |
50 |
goto release; |
8447d9d52 ide: add ide_devi... |
51 |
|
48c3c1072 ide: add struct i... |
52 |
ecard_set_drvdata(ec, host); |
47bc7e742 rapide: fix rapid... |
53 |
goto out; |
1da177e4c Linux-2.6.12-rc2 |
54 |
|
1da177e4c Linux-2.6.12-rc2 |
55 56 57 58 59 |
release: ecard_release_resources(ec); out: return ret; } |
fe31edc8a Drivers: ide: rem... |
60 |
static void rapide_remove(struct expansion_card *ec) |
1da177e4c Linux-2.6.12-rc2 |
61 |
{ |
48c3c1072 ide: add struct i... |
62 |
struct ide_host *host = ecard_get_drvdata(ec); |
1da177e4c Linux-2.6.12-rc2 |
63 64 |
ecard_set_drvdata(ec, NULL); |
48c3c1072 ide: add struct i... |
65 |
ide_host_remove(host); |
fadd11c71 au1xxx-ide/rapide... |
66 |
|
1da177e4c Linux-2.6.12-rc2 |
67 68 69 70 71 72 73 74 75 76 |
ecard_release_resources(ec); } static struct ecard_id rapide_ids[] = { { MANU_YELLOWSTONE, PROD_YELLOWSTONE_RAPIDE32 }, { 0xffff, 0xffff } }; static struct ecard_driver rapide_driver = { .probe = rapide_probe, |
fe31edc8a Drivers: ide: rem... |
77 |
.remove = rapide_remove, |
1da177e4c Linux-2.6.12-rc2 |
78 79 80 81 82 83 84 85 86 87 |
.id_table = rapide_ids, .drv = { .name = "rapide", }, }; static int __init rapide_init(void) { return ecard_register_driver(&rapide_driver); } |
37c5ef569 rapide: add modul... |
88 89 |
static void __exit rapide_exit(void) { |
1137fb670 arm ide breakage |
90 |
ecard_remove_driver(&rapide_driver); |
37c5ef569 rapide: add modul... |
91 |
} |
1da177e4c Linux-2.6.12-rc2 |
92 93 94 95 |
MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Yellowstone RAPIDE driver"); module_init(rapide_init); |
37c5ef569 rapide: add modul... |
96 |
module_exit(rapide_exit); |