diff options
author | Kenji Kaneshige <kaneshige.kenji@soft.fujitsu.com> | 2005-04-08 01:53:31 -0400 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-05-04 02:45:13 -0400 |
commit | ceb43744cd48a20212e2179e0c7ff2f450a3c97e (patch) | |
tree | f9554643bc9d70fe761840a603adce393c0e9f08 /drivers/pci/pci.c | |
parent | 8800cea62025a5209d110c5fa5990429239d6eee (diff) |
[PATCH] PCI: 'is_enabled' flag should be set/cleared when the device is actually enabled/disabled
I think 'is_enabled' flag in pci_dev structure should be set/cleared
when the device actually enabled/disabled. Especially about
pci_enable_device(), it can be failed. By this change, we will also
get the possibility of refering 'is_enabled' flag from the functions
called through pci_enable_device()/pci_disable_device().
Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/pci/pci.c')
-rw-r--r-- | drivers/pci/pci.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index bfbff8335268..fc8cc6c53778 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c | |||
@@ -398,10 +398,10 @@ pci_enable_device(struct pci_dev *dev) | |||
398 | { | 398 | { |
399 | int err; | 399 | int err; |
400 | 400 | ||
401 | dev->is_enabled = 1; | ||
402 | if ((err = pci_enable_device_bars(dev, (1 << PCI_NUM_RESOURCES) - 1))) | 401 | if ((err = pci_enable_device_bars(dev, (1 << PCI_NUM_RESOURCES) - 1))) |
403 | return err; | 402 | return err; |
404 | pci_fixup_device(pci_fixup_enable, dev); | 403 | pci_fixup_device(pci_fixup_enable, dev); |
404 | dev->is_enabled = 1; | ||
405 | return 0; | 405 | return 0; |
406 | } | 406 | } |
407 | 407 | ||
@@ -427,16 +427,15 @@ pci_disable_device(struct pci_dev *dev) | |||
427 | { | 427 | { |
428 | u16 pci_command; | 428 | u16 pci_command; |
429 | 429 | ||
430 | dev->is_enabled = 0; | ||
431 | dev->is_busmaster = 0; | ||
432 | |||
433 | pci_read_config_word(dev, PCI_COMMAND, &pci_command); | 430 | pci_read_config_word(dev, PCI_COMMAND, &pci_command); |
434 | if (pci_command & PCI_COMMAND_MASTER) { | 431 | if (pci_command & PCI_COMMAND_MASTER) { |
435 | pci_command &= ~PCI_COMMAND_MASTER; | 432 | pci_command &= ~PCI_COMMAND_MASTER; |
436 | pci_write_config_word(dev, PCI_COMMAND, pci_command); | 433 | pci_write_config_word(dev, PCI_COMMAND, pci_command); |
437 | } | 434 | } |
435 | dev->is_busmaster = 0; | ||
438 | 436 | ||
439 | pcibios_disable_device(dev); | 437 | pcibios_disable_device(dev); |
438 | dev->is_enabled = 0; | ||
440 | } | 439 | } |
441 | 440 | ||
442 | /** | 441 | /** |