aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pcmcia/yenta_socket.c
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.net>2010-05-21 09:16:53 -0400
committerDominik Brodowski <linux@dominikbrodowski.net>2010-06-07 12:20:02 -0400
commit02caa56e4b789b80ae7e0f0f0789f94b44ad32ef (patch)
treed65920de25fc746cace1988fddcf9ada8fd5feeb /drivers/pcmcia/yenta_socket.c
parente44a21b7268a022c7749f521c06214145bd161e4 (diff)
pcmcia: only keep saved I365_CSCINT flag if there is no PCI irq
Keeping the saved I365_CSCINT flag around breaks PCMCIA on some system, and is only needed on a few systems to get PCMCIA to work. This patch allows PCMCIA to work on both types, and it fixes https://bugzilla.kernel.org/show_bug.cgi?id=16015 Reported-by: Justin P. Mattock <justinmattock@gmail.com> CC: <stable@kernel.org> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'drivers/pcmcia/yenta_socket.c')
-rw-r--r--drivers/pcmcia/yenta_socket.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/pcmcia/yenta_socket.c b/drivers/pcmcia/yenta_socket.c
index 424e576f3acb..6bf8b2c06c7d 100644
--- a/drivers/pcmcia/yenta_socket.c
+++ b/drivers/pcmcia/yenta_socket.c
@@ -975,7 +975,7 @@ static irqreturn_t yenta_probe_handler(int irq, void *dev_id)
975/* probes the PCI interrupt, use only on override functions */ 975/* probes the PCI interrupt, use only on override functions */
976static int yenta_probe_cb_irq(struct yenta_socket *socket) 976static int yenta_probe_cb_irq(struct yenta_socket *socket)
977{ 977{
978 u8 reg; 978 u8 reg = 0;
979 979
980 if (!socket->cb_irq) 980 if (!socket->cb_irq)
981 return -1; 981 return -1;
@@ -989,7 +989,8 @@ static int yenta_probe_cb_irq(struct yenta_socket *socket)
989 } 989 }
990 990
991 /* generate interrupt, wait */ 991 /* generate interrupt, wait */
992 reg = exca_readb(socket, I365_CSCINT); 992 if (!socket->dev->irq)
993 reg = exca_readb(socket, I365_CSCINT);
993 exca_writeb(socket, I365_CSCINT, reg | I365_CSC_STSCHG); 994 exca_writeb(socket, I365_CSCINT, reg | I365_CSC_STSCHG);
994 cb_writel(socket, CB_SOCKET_EVENT, -1); 995 cb_writel(socket, CB_SOCKET_EVENT, -1);
995 cb_writel(socket, CB_SOCKET_MASK, CB_CSTSMASK); 996 cb_writel(socket, CB_SOCKET_MASK, CB_CSTSMASK);