diff -urN linux-2.4.19/drivers/pcmcia/sa1100_graphicsclient.c linux-2.4.19_rmk6_ads3/drivers/pcmcia/sa1100_graphicsclient.c --- linux-2.4.19/drivers/pcmcia/sa1100_graphicsclient.c Mon Feb 10 10:59:38 2003 +++ linux-2.4.19_rmk6_ads3/drivers/pcmcia/sa1100_graphicsclient.c Thu Mar 6 11:34:27 2003 @@ -102,6 +102,7 @@ *configure) { unsigned long flags; + static int sock_irq_disabled = 0; if(configure->sock>1) return -1; @@ -140,11 +141,16 @@ restore_flags(flags); - if (configure->irq) + if (configure->irq) { + sock_irq_disabled = 0; enable_irq(IRQ_GRAPHICSCLIENT_S0_STS); - else - disable_irq(IRQ_GRAPHICSCLIENT_S0_STS); - + } + else { + if (sock_irq_disabled == 0) { + disable_irq(IRQ_GRAPHICSCLIENT_S0_STS); + sock_irq_disabled = 1; + } + } return 0; } diff -urN linux-2.4.19/drivers/pcmcia/sa1111_generic.c linux-2.4.19_rmk6_ads3/drivers/pcmcia/sa1111_generic.c --- linux-2.4.19/drivers/pcmcia/sa1111_generic.c Fri Aug 2 20:39:44 2002 +++ linux-2.4.19_rmk6_ads3/drivers/pcmcia/sa1111_generic.c Wed Mar 5 15:54:00 2003 @@ -119,6 +119,7 @@ { unsigned int rst, flt, wait, pse, irq, pccr_mask; unsigned long flags; + static int sock_irq_disabled[2] = {0, 0}; switch (conf->sock) { case 0: @@ -170,10 +171,16 @@ PCCR = (PCCR & ~(pse | flt | wait | rst)) | pccr_mask; local_irq_restore(flags); - if (conf->irq) + if (conf->irq) { + sock_irq_disabled[conf->sock] = 0; enable_irq(irq); - else - disable_irq(irq); + } + else { + if (sock_irq_disabled[conf->sock] == 0) { + disable_irq(irq); + sock_irq_disabled[conf->sock] = 1; + } + } return 0; }