diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-05-21 09:16:53 -0400 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-06-07 12:20:02 -0400 |
commit | 02caa56e4b789b80ae7e0f0f0789f94b44ad32ef (patch) | |
tree | d65920de25fc746cace1988fddcf9ada8fd5feeb /drivers/pcmcia | |
parent | e44a21b7268a022c7749f521c06214145bd161e4 (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')
-rw-r--r-- | drivers/pcmcia/yenta_socket.c | 5 |
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 */ |
976 | static int yenta_probe_cb_irq(struct yenta_socket *socket) | 976 | static 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); |