From: Brian King <brking@linux.vnet.ibm.com>
To: paulus@samba.org
Cc: brking@linux.vnet.ibm.com, linuxppc-dev@ozlabs.org
Subject: [PATCH 1/1] powerpc: Export PCI slot reset API
Date: Fri, 12 Jan 2007 14:49:32 -0600 [thread overview]
Message-ID: <11686349711123-patch-mail.ibm.com> (raw)
Adds two new APIs to assert/deassert PCI reset to a given
device. This is needed for an ipr PCI-E adapter which does not
properly implement either BIST nor PCI-E hot reset, requiring
a PCI-E warm reset, which is what this implements.
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---
linux-2.6-bjking1/arch/powerpc/platforms/pseries/eeh.c | 41 +++++++++++++++++
linux-2.6-bjking1/include/asm-powerpc/ppc-pci.h | 3 +
2 files changed, 44 insertions(+)
diff -puN arch/powerpc/platforms/pseries/eeh.c~powerpc_slot_reset_api2 arch/powerpc/platforms/pseries/eeh.c
--- linux-2.6/arch/powerpc/platforms/pseries/eeh.c~powerpc_slot_reset_api2 2007-01-11 15:52:57.000000000 -0600
+++ linux-2.6-bjking1/arch/powerpc/platforms/pseries/eeh.c 2007-01-11 15:52:57.000000000 -0600
@@ -591,6 +591,47 @@ static void __rtas_set_slot_reset(struct
msleep (PCI_BUS_SETTLE_TIME_MSEC);
}
+/**
+ * pci_set_slot_reset - Assert PCI reset to the PCI slot
+ * @dev: pci device struct
+ *
+ * After asserting PCI reset, the caller should wait for
+ * 100 milliseconds or longer.
+ *
+ * Return value:
+ * 0 if success
+ **/
+int pci_set_slot_reset(struct pci_dev *dev)
+{
+ struct device_node *dn = pci_device_to_OF_node(dev);
+ struct pci_dn *pdn = PCI_DN(dn);
+
+ rtas_pci_slot_reset(pdn, 3);
+ return 0;
+}
+EXPORT_SYMBOL_GPL(pci_set_slot_reset);
+
+/**
+ * pci_clear_slot_reset - Clear PCI reset to the PCI slot
+ * @dev: pci device struct
+ *
+ * After clearing PCI reset, the caller should wait 1.8 seconds
+ * or longer for the bus to stabilize and the device to come
+ * ready.
+ *
+ * Return value:
+ * 0 if success
+ **/
+int pci_clear_slot_reset(struct pci_dev *dev)
+{
+ struct device_node *dn = pci_device_to_OF_node(dev);
+ struct pci_dn *pdn = PCI_DN(dn);
+
+ rtas_pci_slot_reset (pdn, 0);
+ return 0;
+}
+EXPORT_SYMBOL_GPL(pci_clear_slot_reset);
+
int rtas_set_slot_reset(struct pci_dn *pdn)
{
int i, rc;
diff -puN include/asm-powerpc/ppc-pci.h~powerpc_slot_reset_api2 include/asm-powerpc/ppc-pci.h
--- linux-2.6/include/asm-powerpc/ppc-pci.h~powerpc_slot_reset_api2 2007-01-11 15:52:57.000000000 -0600
+++ linux-2.6-bjking1/include/asm-powerpc/ppc-pci.h 2007-01-11 15:52:57.000000000 -0600
@@ -124,6 +124,9 @@ void eeh_clear_slot (struct device_node
/* Find the associated "Partiationable Endpoint" PE */
struct device_node * find_device_pe(struct device_node *dn);
+int pci_set_slot_reset(struct pci_dev *dev);
+int pci_clear_slot_reset(struct pci_dev *dev);
+
#endif
#endif /* __KERNEL__ */
_
next reply other threads:[~2007-01-12 20:49 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-12 20:49 Brian King [this message]
2007-01-23 23:28 ` [PATCH 1/1] powerpc: Export PCI slot reset API Brian King
-- strict thread matches above, loose matches on Subject: below --
2007-01-24 22:03 Brian King
2007-01-26 2:49 Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=11686349711123-patch-mail.ibm.com \
--to=brking@linux.vnet.ibm.com \
--cc=linuxppc-dev@ozlabs.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.