Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1764516AbXJRDc1 (ORCPT ); Wed, 17 Oct 2007 23:32:27 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753292AbXJRDcT (ORCPT ); Wed, 17 Oct 2007 23:32:19 -0400 Received: from rtr.ca ([76.10.145.34]:4389 "EHLO mail.rtr.ca" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757548AbXJRDcS (ORCPT ); Wed, 17 Oct 2007 23:32:18 -0400 Message-ID: <4716D3C0.20808@rtr.ca> Date: Wed, 17 Oct 2007 23:32:16 -0400 From: Mark Lord User-Agent: Thunderbird 2.0.0.6 (X11/20070728) MIME-Version: 1.0 To: kristen.c.accardi@intel.com Cc: Linux Kernel , Andrew Morton , "Theodore Ts'o" , greg@kroah.com, pcihpd-discuss@lists.sourceforge.net Subject: [PATCH 1/3] pciehp: hotplug: deal with pre-inserted ExpressCards References: <4716CB9D.6080503@rtr.ca> In-Reply-To: <4716CB9D.6080503@rtr.ca> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2154 Lines: 49 (repost to conform with akpm's subject line conventions) One of three patches to fix PCIe Hotplug so that it works with ExpressCard slots on Dell notebooks (and others?) in conjunction with modparam of pciehp_force=1. Fix pciehp_probe() to deal with ExpressCard cards that were inserted prior to the driver being loaded. Signed-off-by: Mark Lord --- --- a/drivers/pci/hotplug/pciehp_ctrl.c 2007-10-17 22:30:19.000000000 -0400 +++ b/drivers/pci/hotplug/pciehp_ctrl.c 2007-10-17 22:29:59.000000000 -0400 @@ -37,7 +37,6 @@ #include "pciehp.h" static void interrupt_event_handler(struct work_struct *work); -static int pciehp_enable_slot(struct slot *p_slot); static int pciehp_disable_slot(struct slot *p_slot); static int queue_interrupt_event(struct slot *p_slot, u32 event_type) --- git12/drivers/pci/hotplug/pciehp.h 2007-10-17 22:30:19.000000000 -0400 +++ linux/drivers/pci/hotplug/pciehp.h 2007-10-17 22:29:59.000000000 -0400 @@ -161,6 +161,7 @@ extern int pciehp_unconfigure_device(struct slot *p_slot); extern void pciehp_queue_pushbutton_work(struct work_struct *work); int pcie_init(struct controller *ctrl, struct pcie_device *dev); +int pciehp_enable_slot(struct slot *p_slot); static inline struct slot *pciehp_find_slot(struct controller *ctrl, u8 device) { --- git12/drivers/pci/hotplug/pciehp_core.c 2007-10-17 22:30:19.000000000 -0400 +++ linux/drivers/pci/hotplug/pciehp_core.c 2007-10-17 22:36:06.000000000 -0400 @@ -471,6 +471,11 @@ t_slot = pciehp_find_slot(ctrl, ctrl->slot_device_offset); t_slot->hpc_ops->get_adapter_status(t_slot, &value); /* Check if slot is occupied */ + if (value) { + rc = pciehp_enable_slot(t_slot); + if (rc) /* -ENODEV: shouldn't happen, but deal with it */ + value = 0; + } if ((POWER_CTRL(ctrl->ctrlcap)) && !value) { rc = t_slot->hpc_ops->power_off_slot(t_slot); /* Power off slot if not occupied*/ if (rc) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/