diff options
Diffstat (limited to 'drivers/ide/pci/cmd640.c')
-rw-r--r-- | drivers/ide/pci/cmd640.c | 29 |
1 files changed, 6 insertions, 23 deletions
diff --git a/drivers/ide/pci/cmd640.c b/drivers/ide/pci/cmd640.c index 1ad1e23e3105..e6c62006ca1a 100644 --- a/drivers/ide/pci/cmd640.c +++ b/drivers/ide/pci/cmd640.c | |||
@@ -181,11 +181,6 @@ static u8 recovery_counts[4] = {16, 16, 16, 16}; /* Recovery count (encoded) */ | |||
181 | static DEFINE_SPINLOCK(cmd640_lock); | 181 | static DEFINE_SPINLOCK(cmd640_lock); |
182 | 182 | ||
183 | /* | 183 | /* |
184 | * These are initialized to point at the devices we control | ||
185 | */ | ||
186 | static ide_hwif_t *cmd_hwif0, *cmd_hwif1; | ||
187 | |||
188 | /* | ||
189 | * Interface to access cmd640x registers | 184 | * Interface to access cmd640x registers |
190 | */ | 185 | */ |
191 | static unsigned int cmd640_key; | 186 | static unsigned int cmd640_key; |
@@ -717,8 +712,7 @@ static int __init cmd640x_init(void) | |||
717 | int second_port_cmd640 = 0, rc; | 712 | int second_port_cmd640 = 0, rc; |
718 | const char *bus_type, *port2; | 713 | const char *bus_type, *port2; |
719 | u8 b, cfr; | 714 | u8 b, cfr; |
720 | u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; | 715 | hw_regs_t hw[2], *hws[] = { NULL, NULL, NULL, NULL }; |
721 | hw_regs_t hw[2]; | ||
722 | 716 | ||
723 | if (cmd640_vlb && probe_for_cmd640_vlb()) { | 717 | if (cmd640_vlb && probe_for_cmd640_vlb()) { |
724 | bus_type = "VLB"; | 718 | bus_type = "VLB"; |
@@ -781,15 +775,10 @@ static int __init cmd640x_init(void) | |||
781 | printk(KERN_INFO "cmd640: buggy cmd640%c interface on %s, config=0x%02x" | 775 | printk(KERN_INFO "cmd640: buggy cmd640%c interface on %s, config=0x%02x" |
782 | "\n", 'a' + cmd640_chip_version - 1, bus_type, cfr); | 776 | "\n", 'a' + cmd640_chip_version - 1, bus_type, cfr); |
783 | 777 | ||
784 | cmd_hwif0 = ide_find_port(); | ||
785 | |||
786 | /* | 778 | /* |
787 | * Initialize data for primary port | 779 | * Initialize data for primary port |
788 | */ | 780 | */ |
789 | if (cmd_hwif0) { | 781 | hws[0] = &hw[0]; |
790 | ide_init_port_hw(cmd_hwif0, &hw[0]); | ||
791 | idx[0] = cmd_hwif0->index; | ||
792 | } | ||
793 | 782 | ||
794 | /* | 783 | /* |
795 | * Ensure compatibility by always using the slowest timings | 784 | * Ensure compatibility by always using the slowest timings |
@@ -829,13 +818,9 @@ static int __init cmd640x_init(void) | |||
829 | /* | 818 | /* |
830 | * Initialize data for secondary cmd640 port, if enabled | 819 | * Initialize data for secondary cmd640 port, if enabled |
831 | */ | 820 | */ |
832 | if (second_port_cmd640) { | 821 | if (second_port_cmd640) |
833 | cmd_hwif1 = ide_find_port(); | 822 | hws[1] = &hw[1]; |
834 | if (cmd_hwif1) { | 823 | |
835 | ide_init_port_hw(cmd_hwif1, &hw[1]); | ||
836 | idx[1] = cmd_hwif1->index; | ||
837 | } | ||
838 | } | ||
839 | printk(KERN_INFO "cmd640: %sserialized, secondary interface %s\n", | 824 | printk(KERN_INFO "cmd640: %sserialized, secondary interface %s\n", |
840 | second_port_cmd640 ? "" : "not ", port2); | 825 | second_port_cmd640 ? "" : "not ", port2); |
841 | 826 | ||
@@ -843,9 +828,7 @@ static int __init cmd640x_init(void) | |||
843 | cmd640_dump_regs(); | 828 | cmd640_dump_regs(); |
844 | #endif | 829 | #endif |
845 | 830 | ||
846 | ide_device_add(idx, &cmd640_port_info); | 831 | return ide_host_add(&cmd640_port_info, hws, NULL); |
847 | |||
848 | return 1; | ||
849 | } | 832 | } |
850 | 833 | ||
851 | module_param_named(probe_vlb, cmd640_vlb, bool, 0); | 834 | module_param_named(probe_vlb, cmd640_vlb, bool, 0); |