diff options
Diffstat (limited to 'drivers/ide/pci/cmd640.c')
-rw-r--r-- | drivers/ide/pci/cmd640.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/ide/pci/cmd640.c b/drivers/ide/pci/cmd640.c index 4aa48104e0c1..da3565e0071f 100644 --- a/drivers/ide/pci/cmd640.c +++ b/drivers/ide/pci/cmd640.c | |||
@@ -706,9 +706,9 @@ static int pci_conf2(void) | |||
706 | } | 706 | } |
707 | 707 | ||
708 | /* | 708 | /* |
709 | * Probe for a cmd640 chipset, and initialize it if found. Called from ide.c | 709 | * Probe for a cmd640 chipset, and initialize it if found. |
710 | */ | 710 | */ |
711 | int __init ide_probe_for_cmd640x (void) | 711 | static int __init cmd640x_init(void) |
712 | { | 712 | { |
713 | #ifdef CONFIG_BLK_DEV_CMD640_ENHANCED | 713 | #ifdef CONFIG_BLK_DEV_CMD640_ENHANCED |
714 | int second_port_toggled = 0; | 714 | int second_port_toggled = 0; |
@@ -717,6 +717,7 @@ int __init ide_probe_for_cmd640x (void) | |||
717 | const char *bus_type, *port2; | 717 | const char *bus_type, *port2; |
718 | unsigned int index; | 718 | unsigned int index; |
719 | u8 b, cfr; | 719 | u8 b, cfr; |
720 | u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; | ||
720 | 721 | ||
721 | if (cmd640_vlb && probe_for_cmd640_vlb()) { | 722 | if (cmd640_vlb && probe_for_cmd640_vlb()) { |
722 | bus_type = "VLB"; | 723 | bus_type = "VLB"; |
@@ -769,6 +770,8 @@ int __init ide_probe_for_cmd640x (void) | |||
769 | cmd_hwif0->set_pio_mode = &cmd640_set_pio_mode; | 770 | cmd_hwif0->set_pio_mode = &cmd640_set_pio_mode; |
770 | #endif /* CONFIG_BLK_DEV_CMD640_ENHANCED */ | 771 | #endif /* CONFIG_BLK_DEV_CMD640_ENHANCED */ |
771 | 772 | ||
773 | idx[0] = cmd_hwif0->index; | ||
774 | |||
772 | /* | 775 | /* |
773 | * Ensure compatibility by always using the slowest timings | 776 | * Ensure compatibility by always using the slowest timings |
774 | * for access to the drive's command register block, | 777 | * for access to the drive's command register block, |
@@ -826,6 +829,8 @@ int __init ide_probe_for_cmd640x (void) | |||
826 | cmd_hwif1->pio_mask = ATA_PIO5; | 829 | cmd_hwif1->pio_mask = ATA_PIO5; |
827 | cmd_hwif1->set_pio_mode = &cmd640_set_pio_mode; | 830 | cmd_hwif1->set_pio_mode = &cmd640_set_pio_mode; |
828 | #endif /* CONFIG_BLK_DEV_CMD640_ENHANCED */ | 831 | #endif /* CONFIG_BLK_DEV_CMD640_ENHANCED */ |
832 | |||
833 | idx[1] = cmd_hwif1->index; | ||
829 | } | 834 | } |
830 | printk(KERN_INFO "%s: %sserialized, secondary interface %s\n", cmd_hwif1->name, | 835 | printk(KERN_INFO "%s: %sserialized, secondary interface %s\n", cmd_hwif1->name, |
831 | cmd_hwif0->serialized ? "" : "not ", port2); | 836 | cmd_hwif0->serialized ? "" : "not ", port2); |
@@ -872,6 +877,13 @@ int __init ide_probe_for_cmd640x (void) | |||
872 | #ifdef CMD640_DUMP_REGS | 877 | #ifdef CMD640_DUMP_REGS |
873 | cmd640_dump_regs(); | 878 | cmd640_dump_regs(); |
874 | #endif | 879 | #endif |
880 | |||
881 | ide_device_add(idx); | ||
882 | |||
875 | return 1; | 883 | return 1; |
876 | } | 884 | } |
877 | 885 | ||
886 | module_param_named(probe_vlb, cmd640_vlb, bool, 0); | ||
887 | MODULE_PARM_DESC(probe_vlb, "probe for VLB version of CMD640 chipset"); | ||
888 | |||
889 | module_init(cmd640x_init); | ||