[PATCH][bisected]pcmcia:yenta_socket.c fix broken wireless cards.

Justin P. Mattock justinmattock at gmail.com
Wed May 19 17:08:04 EDT 2010

I've an old dell inspiron 1200(amazingly still works), that use's
a D-Link DWL-G650, and/or a Dell Wireless 1350 for it's wireless

With using opensuse11.2(kernel:2.6.32*), the card(s) work fine, but as soon
as I pulled the latest HEAD, all hell broke loose. So after doing a
days worth of bisecting with this machine(painfully slow), it finally
came down to this commit:

commit 28ca8dd71fc170090edca62cb8129625d01b7760
Author: Jens K<C3><BC>nzer <Jens.Kuenzer at fpga.homeip.net>
Date:   Sat Mar 6 07:46:16 2010 +0100

    pcmcia: honor saved flags in yenta_socket's I365_CSCINT register
    Instead of overwriting the I365_CSCINT register, save the old value and
    merely change the bits we care about.
    Part 1 of a series to allow the ISA irq to be used for Cardbus devices
    if the socket's PCI irq is unusable.
    [linux at dominikbrodowski.net: split up the original patch, commit message]
    Signed-off-by: Jens Kuenzer <Jens.Kuenzer at fpga.homeip.net>
    Signed-off-by: Dominik Brodowski <linux at dominikbrodowski.net>
so after fussing around with this commit, and yenta_socket.c
I come up with something, that does get my cards
powered up, and all good(hopefully).

Anyways please have a look, if you need me to test something
different let me know. 
 Signed-off-by: Justin P. Mattock <justinmattock at gmail.com>

 drivers/pcmcia/yenta_socket.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/pcmcia/yenta_socket.c b/drivers/pcmcia/yenta_socket.c
index 83ace27..7d6f43b 100644
--- a/drivers/pcmcia/yenta_socket.c
+++ b/drivers/pcmcia/yenta_socket.c
@@ -989,7 +989,7 @@ static int yenta_probe_cb_irq(struct yenta_socket *socket)
 	/* generate interrupt, wait */
-	reg = exca_readb(socket, I365_CSCINT);
+	reg = exca_readb(socket, I365_CSCINT | I365_CSC_ANY);
 	exca_writeb(socket, I365_CSCINT, reg | I365_CSC_STSCHG);
 	cb_writel(socket, CB_SOCKET_EVENT, -1);
 	cb_writel(socket, CB_SOCKET_MASK, CB_CSTSMASK);

More information about the linux-pcmcia mailing list