PCMCIA support for 860
Marcus Sundberg
erammsu at kieraypc01.p.y.ki.era.ericsson.se
Thu Apr 6 22:23:41 EST 2000
Ruedi.Hofer at ascom.ch writes:
> Hi
>
> Kernel boot problem:
> Obviousely the kernel was too large. When reduce its size and put some
> extensions into modules, it starts up fine.
>
> But there are 2 other problems:
>
> Ethernet Card:
>
> - When I insert a Xircom Ethernet card, it is detected and the modules are loaded.
> But somehow it affects the NFS connection in such a bad way, that it looses connection
> to the server. Everything gets very slow. When I plug the pc card out, NFS works fine again.
Try changing the PCMCIA configuration files so that it doesn't
bring the interface up automaticly.
> >sh-2.03# cardmgr[30]: initializing socket 0
> >cardmgr[30]: socket 0: Xircom CE3-10/100 Fast Ethernet
> >cardmgr[30]: executing: 'insmod /lib/modules/2.2.13/pcmcia/xirc2ps_cs.o'
> >xirc2ps_cs.c 1.31 1998/12/09 19:32:55 (dd9jn+kvh)
> >eth1: Xircom: port 0x300, irq 9, hwaddr 00:80:C7:86:E4:DF
> >cardmgr[30]: executing: './network start eth1'
> >sh-2.03# eth1: media 10BaseT, silicon revision 7
> >sh-2.03# cardmgr[30]: + SIOCADDRT: File exists
> >sh-2.03# lsmod
> >nfs: server 10.1.20.2 not responding, still trying
> >nfs: task 1574 can't get a request slot
>
> I guess that too many interrupts knock the system out.
We have had even more problems with xirc2ps_cs.c, for some reason our
cards generate interrupts before the interface is brought up. This
diff will prevent that from causing problems:
diff -u -r1.1.1.3 xirc2ps_cs.c
--- clients/xirc2ps_cs.c 2000/03/13 14:33:04 1.1.1.3
+++ clients/xirc2ps_cs.c 2000/04/04 14:36:00
@@ -1397,9 +1397,16 @@
* is this something to worry about?
* -- on a laptop?
*/
+ static int badints = 0;
- if (!netif_device_present(dev))
- return;
+ if (!netif_device_present(dev)) {
+ if (badints < 5) {
+ badints++;
+ return;
+ }
+ } else {
+ badints = 0;
+ }
ioaddr = dev->base_addr;
if (lp->mohawk) { /* must disable the interrupt */
> ATA Flash card:
>
> - Even worse with the flash card: The system crashes!
>
> >sh-2.03# cardmgr[42]: initializing socket 0
> >cardmgr[42]: socket 0: ATA/IDE Fixed Disk
> >cardmgr[42]: executing: 'insmod /lib/modules/2.2.13/pcmcia/ide_cs.o'
> >hda: SunDisk SDP3B-40, ATA DISK drive
> >Kernel panic: request_irq
> >Rebooting in 180 seconds..
>
> - Is the request_irq related to the loaded module or to the IDE stuff in the kernel?
> ('Configure IDE for ATA on PCMCIA' is switched off!)
> - Is it right that every occurence of request_irq has to replaced with request_8xxirq?
Ah yes, when using serial or IDE cards the interrupt handler is
requested by drivers/char/serial.c and drivers/block/ide-probe.c
respectively, not by the PCMCIA modules.
You can either change include/asm-ppc/ide.h to use request_8xxirq(),
or you can do like we've done; change arch/ppc/kernel/ppc8xx_pic.c
so that request_irq() looks like this:
int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *),
unsigned long irqflags, const char * devname, void *dev_id)
{
#ifdef CONFIG_MBX
irq += i8259_pic.irq_offset;
#endif
return (request_8xxirq(irq, handler, irqflags, devname, dev_id));
}
//Marcus
--
Signature under construction, please come back later.
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list