ChangeSet 1.1692.3.11, 2004/04/07 16:10:06-07:00, dlsy@snoqualmie.dp.intel.com [PATCH] PCI Hotplug: Fix interpretation of 0/1 for MRL in SHPC & PCI-E hot-plug This patch contains fixes for interpretation of 0/1 for MRL to match pcihpview, bus speed definition in shpchp_hpc.c etc. drivers/pci/hotplug/pci_hotplug.h | 2 +- drivers/pci/hotplug/pciehp_ctrl.c | 6 +++--- drivers/pci/hotplug/shpchp_ctrl.c | 10 +++++----- drivers/pci/hotplug/shpchp_hpc.c | 15 ++++++++------- 4 files changed, 17 insertions(+), 16 deletions(-) diff -Nru a/drivers/pci/hotplug/pci_hotplug.h b/drivers/pci/hotplug/pci_hotplug.h --- a/drivers/pci/hotplug/pci_hotplug.h Thu Apr 15 10:03:55 2004 +++ b/drivers/pci/hotplug/pci_hotplug.h Thu Apr 15 10:03:55 2004 @@ -43,7 +43,7 @@ PCI_SPEED_100MHz_PCIX_266 = 0x0a, PCI_SPEED_133MHz_PCIX_266 = 0x0b, PCI_SPEED_66MHz_PCIX_533 = 0x11, - PCI_SPEED_100MHz_PCIX_533 = 0X12, + PCI_SPEED_100MHz_PCIX_533 = 0x12, PCI_SPEED_133MHz_PCIX_533 = 0x13, PCI_SPEED_UNKNOWN = 0xff, }; diff -Nru a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c --- a/drivers/pci/hotplug/pciehp_ctrl.c Thu Apr 15 10:03:55 2004 +++ b/drivers/pci/hotplug/pciehp_ctrl.c Thu Apr 15 10:03:55 2004 @@ -135,7 +135,7 @@ p_slot->hpc_ops->get_adapter_status(p_slot, &(func->presence_save)); p_slot->hpc_ops->get_latch_status(p_slot, &getstatus); - if (!getstatus) { + if (getstatus) { /* * Switch opened */ @@ -1705,7 +1705,7 @@ } rc = p_slot->hpc_ops->get_latch_status(p_slot, &getstatus); - if (rc || !getstatus) { + if (rc || getstatus) { info("%s: latch open on slot(%x)\n", __FUNCTION__, p_slot->number); up(&p_slot->ctrl->crit_sect); return (0); @@ -1792,7 +1792,7 @@ } ret = p_slot->hpc_ops->get_latch_status(p_slot, &getstatus); - if (ret || !getstatus) { + if (ret || getstatus) { info("%s: latch open on slot(%x)\n", __FUNCTION__, p_slot->number); up(&p_slot->ctrl->crit_sect); return (0); diff -Nru a/drivers/pci/hotplug/shpchp_ctrl.c b/drivers/pci/hotplug/shpchp_ctrl.c --- a/drivers/pci/hotplug/shpchp_ctrl.c Thu Apr 15 10:03:55 2004 +++ b/drivers/pci/hotplug/shpchp_ctrl.c Thu Apr 15 10:03:55 2004 @@ -138,7 +138,7 @@ p_slot->hpc_ops->get_adapter_status(p_slot, &(func->presence_save)); p_slot->hpc_ops->get_latch_status(p_slot, &getstatus); - if (!getstatus) { + if (getstatus) { /* * Switch opened */ @@ -1219,7 +1219,7 @@ up(&ctrl->crit_sect); } } else { - if ((bus_speed > 0x4) || (max_bus_speed > 0x4)) { + if (bus_speed > 0x4) { err("%s: speed of bus %x and adapter %x mismatch\n", __FUNCTION__, bus_speed, adapter_speed); return WRONG_BUS_FREQUENCY; } @@ -1302,7 +1302,7 @@ up(&ctrl->crit_sect); } } else { - if ((bus_speed > 0x2) || (max_bus_speed > 0x2)) { + if (bus_speed > 0x2) { err("%s: speed of bus %x and adapter %x mismatch\n", __FUNCTION__, bus_speed, adapter_speed); return WRONG_BUS_FREQUENCY; } @@ -2107,7 +2107,7 @@ return (0); } rc = p_slot->hpc_ops->get_latch_status(p_slot, &getstatus); - if (rc || !getstatus) { + if (rc || getstatus) { info("%s: latch open on slot(%x)\n", __FUNCTION__, p_slot->number); up(&p_slot->ctrl->crit_sect); return (0); @@ -2192,7 +2192,7 @@ return (0); } ret = p_slot->hpc_ops->get_latch_status(p_slot, &getstatus); - if (ret || !getstatus) { + if (ret || getstatus) { info("%s: latch open on slot(%x)\n", __FUNCTION__, p_slot->number); up(&p_slot->ctrl->crit_sect); return (0); diff -Nru a/drivers/pci/hotplug/shpchp_hpc.c b/drivers/pci/hotplug/shpchp_hpc.c --- a/drivers/pci/hotplug/shpchp_hpc.c Thu Apr 15 10:03:55 2004 +++ b/drivers/pci/hotplug/shpchp_hpc.c Thu Apr 15 10:03:55 2004 @@ -104,12 +104,12 @@ #define PCIX_66MHZ_ECC 0x5 #define PCIX_100MHZ_ECC 0x6 #define PCIX_133MHZ_ECC 0x7 -#define PCIX_66MHZ_266 0x8 -#define PCIX_100MHZ_266 0x9 -#define PCIX_133MHZ_266 0x0a -#define PCIX_66MHZ_533 0x0b -#define PCIX_100MHZ_533 0x0c -#define PCIX_133MHZ_533 0x0d +#define PCIX_66MHZ_266 0x9 +#define PCIX_100MHZ_266 0xa +#define PCIX_133MHZ_266 0xb +#define PCIX_66MHZ_533 0x11 +#define PCIX_100MHZ_533 0x12 +#define PCIX_133MHZ_533 0x13 /* Slot Configuration */ #define SLOT_NUM 0x0000001F @@ -464,7 +464,8 @@ slot_reg = readl(php_ctlr->creg + SLOT1 + 4*(slot->hp_slot)); slot_status = (u16)slot_reg; - *status = ((slot_status & 0x0100) == 0) ? 1 : 0; + *status = ((slot_status & 0x0100) == 0) ? 0 : 1; /* 0 -> close; 1 -> open */ + DBG_LEAVE_ROUTINE return 0;