diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2006-11-10 18:22:35 -0500 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2006-12-07 17:04:14 -0500 |
commit | 48cfae44b4d6c7ca843d611a93ed2f94b59bcb38 (patch) | |
tree | 84780f3022ca5c3dc0b82ac4eb7db553d6813f24 /drivers | |
parent | 58272c1c0330f5f899f130d45ce845ca085de044 (diff) |
ieee1394: ohci1394: add PPC_PMAC platform code to driver probe
Fixes http://bugzilla.kernel.org/show_bug.cgi?id=7431
iBook G3 threw a machine check exception and put the display backlight
to full brightness after ohci1394 was unloaded and reloaded.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ieee1394/ohci1394.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/ieee1394/ohci1394.c b/drivers/ieee1394/ohci1394.c index b8e922b65e2e..453d0be694e4 100644 --- a/drivers/ieee1394/ohci1394.c +++ b/drivers/ieee1394/ohci1394.c | |||
@@ -3215,6 +3215,19 @@ static int __devinit ohci1394_pci_probe(struct pci_dev *dev, | |||
3215 | struct ti_ohci *ohci; /* shortcut to currently handled device */ | 3215 | struct ti_ohci *ohci; /* shortcut to currently handled device */ |
3216 | resource_size_t ohci_base; | 3216 | resource_size_t ohci_base; |
3217 | 3217 | ||
3218 | #ifdef CONFIG_PPC_PMAC | ||
3219 | /* Necessary on some machines if ohci1394 was loaded/ unloaded before */ | ||
3220 | if (machine_is(powermac)) { | ||
3221 | struct device_node *of_node = pci_device_to_OF_node(dev); | ||
3222 | |||
3223 | if (of_node) { | ||
3224 | pmac_call_feature(PMAC_FTR_1394_CABLE_POWER, of_node, | ||
3225 | 0, 1); | ||
3226 | pmac_call_feature(PMAC_FTR_1394_ENABLE, of_node, 0, 1); | ||
3227 | } | ||
3228 | } | ||
3229 | #endif /* CONFIG_PPC_PMAC */ | ||
3230 | |||
3218 | if (pci_enable_device(dev)) | 3231 | if (pci_enable_device(dev)) |
3219 | FAIL(-ENXIO, "Failed to enable OHCI hardware"); | 3232 | FAIL(-ENXIO, "Failed to enable OHCI hardware"); |
3220 | pci_set_master(dev); | 3233 | pci_set_master(dev); |
@@ -3503,10 +3516,8 @@ static void ohci1394_pci_remove(struct pci_dev *pdev) | |||
3503 | #endif | 3516 | #endif |
3504 | 3517 | ||
3505 | #ifdef CONFIG_PPC_PMAC | 3518 | #ifdef CONFIG_PPC_PMAC |
3506 | /* On UniNorth, power down the cable and turn off the chip | 3519 | /* On UniNorth, power down the cable and turn off the chip clock |
3507 | * clock when the module is removed to save power on | 3520 | * to save power on laptops */ |
3508 | * laptops. Turning it back ON is done by the arch code when | ||
3509 | * pci_enable_device() is called */ | ||
3510 | { | 3521 | { |
3511 | struct device_node* of_node; | 3522 | struct device_node* of_node; |
3512 | 3523 | ||