diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-16 14:33:40 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-16 14:33:40 -0400 |
commit | f333f92bf9040fb63d13c184295629c7a0ff449f (patch) | |
tree | a05386ed3ec9e1b0eacaef969d98e62b1b8ef31c /drivers/ide/legacy/ide-4drives.c | |
parent | a536f326a2223c951818e199e23847c2ac5e483b (diff) |
ide_4drives: use struct ide_port_info
Convert the driver to use struct ide_port_info - as a nice side-effect
this fixes hwif->channel initialization.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/legacy/ide-4drives.c')
-rw-r--r-- | drivers/ide/legacy/ide-4drives.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/drivers/ide/legacy/ide-4drives.c b/drivers/ide/legacy/ide-4drives.c index ecae916a3385..5cd6ce537eea 100644 --- a/drivers/ide/legacy/ide-4drives.c +++ b/drivers/ide/legacy/ide-4drives.c | |||
@@ -11,6 +11,23 @@ static int probe_4drives; | |||
11 | module_param_named(probe, probe_4drives, bool, 0); | 11 | module_param_named(probe, probe_4drives, bool, 0); |
12 | MODULE_PARM_DESC(probe, "probe for generic IDE chipset with 4 drives/port"); | 12 | MODULE_PARM_DESC(probe, "probe for generic IDE chipset with 4 drives/port"); |
13 | 13 | ||
14 | static void ide_4drives_port_init_devs(ide_hwif_t *hwif) | ||
15 | { | ||
16 | if (hwif->channel) { | ||
17 | hwif->drives[0].select.all ^= 0x20; | ||
18 | hwif->drives[1].select.all ^= 0x20; | ||
19 | } | ||
20 | } | ||
21 | |||
22 | static const struct ide_port_ops ide_4drives_port_ops = { | ||
23 | .port_init_devs = ide_4drives_port_init_devs, | ||
24 | }; | ||
25 | |||
26 | static const struct ide_port_info ide_4drives_port_info = { | ||
27 | .port_ops = &ide_4drives_port_ops, | ||
28 | .host_flags = IDE_HFLAG_SERIALIZE | IDE_HFLAG_NO_DMA, | ||
29 | }; | ||
30 | |||
14 | static int __init ide_4drives_init(void) | 31 | static int __init ide_4drives_init(void) |
15 | { | 32 | { |
16 | ide_hwif_t *hwif, *mate; | 33 | ide_hwif_t *hwif, *mate; |
@@ -49,18 +66,10 @@ static int __init ide_4drives_init(void) | |||
49 | mate = ide_find_port(); | 66 | mate = ide_find_port(); |
50 | if (mate) { | 67 | if (mate) { |
51 | ide_init_port_hw(mate, &hw); | 68 | ide_init_port_hw(mate, &hw); |
52 | mate->drives[0].select.all ^= 0x20; | ||
53 | mate->drives[1].select.all ^= 0x20; | ||
54 | idx[1] = mate->index; | 69 | idx[1] = mate->index; |
55 | |||
56 | if (hwif) { | ||
57 | hwif->mate = mate; | ||
58 | mate->mate = hwif; | ||
59 | hwif->serialized = mate->serialized = 1; | ||
60 | } | ||
61 | } | 70 | } |
62 | 71 | ||
63 | ide_device_add(idx, NULL); | 72 | ide_device_add(idx, &ide_4drives_port_info); |
64 | 73 | ||
65 | return 0; | 74 | return 0; |
66 | } | 75 | } |