diff options
Diffstat (limited to 'drivers/ide/pci/generic.c')
-rw-r--r-- | drivers/ide/pci/generic.c | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/drivers/ide/pci/generic.c b/drivers/ide/pci/generic.c index 965c43659e35..9f306880491a 100644 --- a/drivers/ide/pci/generic.c +++ b/drivers/ide/pci/generic.c | |||
@@ -40,6 +40,19 @@ | |||
40 | 40 | ||
41 | static int ide_generic_all; /* Set to claim all devices */ | 41 | static int ide_generic_all; /* Set to claim all devices */ |
42 | 42 | ||
43 | /* | ||
44 | * the module_param_named() was added for the modular case | ||
45 | * the __setup() is left as compatibility for existing setups | ||
46 | */ | ||
47 | #ifndef MODULE | ||
48 | static int __init ide_generic_all_on(char *unused) | ||
49 | { | ||
50 | ide_generic_all = 1; | ||
51 | printk(KERN_INFO "IDE generic will claim all unknown PCI IDE storage controllers.\n"); | ||
52 | return 1; | ||
53 | } | ||
54 | __setup("all-generic-ide", ide_generic_all_on); | ||
55 | #endif | ||
43 | module_param_named(all_generic_ide, ide_generic_all, bool, 0444); | 56 | module_param_named(all_generic_ide, ide_generic_all, bool, 0444); |
44 | MODULE_PARM_DESC(all_generic_ide, "IDE generic will claim all unknown PCI IDE storage controllers."); | 57 | MODULE_PARM_DESC(all_generic_ide, "IDE generic will claim all unknown PCI IDE storage controllers."); |
45 | 58 | ||
@@ -234,13 +247,17 @@ static int __devinit generic_init_one(struct pci_dev *dev, const struct pci_devi | |||
234 | (!(PCI_FUNC(dev->devfn) & 1))) | 247 | (!(PCI_FUNC(dev->devfn) & 1))) |
235 | goto out; | 248 | goto out; |
236 | 249 | ||
237 | if (dev->vendor == PCI_VENDOR_ID_JMICRON && PCI_FUNC(dev->devfn) != 1) | 250 | if (dev->vendor == PCI_VENDOR_ID_JMICRON) { |
238 | goto out; | 251 | if (dev->device != PCI_DEVICE_ID_JMICRON_JMB368 && PCI_FUNC(dev->devfn) != 1) |
252 | goto out; | ||
253 | } | ||
239 | 254 | ||
240 | pci_read_config_word(dev, PCI_COMMAND, &command); | 255 | if (dev->vendor != PCI_VENDOR_ID_JMICRON) { |
241 | if (!(command & PCI_COMMAND_IO)) { | 256 | pci_read_config_word(dev, PCI_COMMAND, &command); |
242 | printk(KERN_INFO "Skipping disabled %s IDE controller.\n", d->name); | 257 | if (!(command & PCI_COMMAND_IO)) { |
243 | goto out; | 258 | printk(KERN_INFO "Skipping disabled %s IDE controller.\n", d->name); |
259 | goto out; | ||
260 | } | ||
244 | } | 261 | } |
245 | ret = ide_setup_pci_device(dev, d); | 262 | ret = ide_setup_pci_device(dev, d); |
246 | out: | 263 | out: |