diff options
author | Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> | 2006-05-03 10:34:17 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-06-19 17:13:23 -0400 |
commit | d49f2c49c39bbd0cb2069fe11c1630c709061037 (patch) | |
tree | 5fcf4ccaef04d1e3fe28bcbeecf1d58908108419 | |
parent | e7138723692e43b7d43578746ad21bf194847527 (diff) |
[PATCH] shpchp: Mask Global SERR and Intr at controller release time
Global SERR and Interrupt should be masked at shpchp driver unload time.
Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Cc: Kristen Accardi <kristen.c.accardi@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/pci/hotplug/shpchp_hpc.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/pci/hotplug/shpchp_hpc.c b/drivers/pci/hotplug/shpchp_hpc.c index e2a8671545f2..8b63f772a6f2 100644 --- a/drivers/pci/hotplug/shpchp_hpc.c +++ b/drivers/pci/hotplug/shpchp_hpc.c | |||
@@ -798,7 +798,7 @@ static void hpc_release_ctlr(struct controller *ctrl) | |||
798 | struct php_ctlr_state_s *php_ctlr = ctrl->hpc_ctlr_handle; | 798 | struct php_ctlr_state_s *php_ctlr = ctrl->hpc_ctlr_handle; |
799 | struct php_ctlr_state_s *p, *p_prev; | 799 | struct php_ctlr_state_s *p, *p_prev; |
800 | int i; | 800 | int i; |
801 | u32 slot_reg; | 801 | u32 slot_reg, serr_int; |
802 | 802 | ||
803 | DBG_ENTER_ROUTINE | 803 | DBG_ENTER_ROUTINE |
804 | 804 | ||
@@ -822,6 +822,15 @@ static void hpc_release_ctlr(struct controller *ctrl) | |||
822 | 822 | ||
823 | cleanup_slots(ctrl); | 823 | cleanup_slots(ctrl); |
824 | 824 | ||
825 | /* | ||
826 | * Mask SERR and System Interrut generation | ||
827 | */ | ||
828 | serr_int = shpc_readl(ctrl, SERR_INTR_ENABLE); | ||
829 | serr_int |= (GLOBAL_INTR_MASK | GLOBAL_SERR_MASK | | ||
830 | COMMAND_INTR_MASK | ARBITER_SERR_MASK); | ||
831 | serr_int &= ~SERR_INTR_RSVDZ_MASK; | ||
832 | shpc_writel(ctrl, SERR_INTR_ENABLE, serr_int); | ||
833 | |||
825 | if (shpchp_poll_mode) { | 834 | if (shpchp_poll_mode) { |
826 | del_timer(&php_ctlr->int_poll_timer); | 835 | del_timer(&php_ctlr->int_poll_timer); |
827 | } else { | 836 | } else { |