[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

PCMCIA interrupts on PC104+



I am newbie to the embedded world in general and the PC104+ world in 
particular, although I have been using Linux in the PC world for some
time.

I think I understand how PCI interrupt routing works, and how Linux
gets the information about interrupts, but this one has me beat.

Lets start with the hardware.  The processor is an Em-i412, which is
a ZFX86 based board.  It has a few peripherals (that I am using) on the
board, such as ethernet (x2) and a serial port.  This is running 
Phoenix BIOS.

I then plug in an Em104P dual PCMCIA board, which is really a PCM-225
board.  It has lots of jumpers on it to decide where in the stack it resides
and which interrupts it uses.  These resolve into 16 different usable
configuraions.

When I bring Linux up on this system it comes up quite happily and
although there are some configurations where the ethernet chip
interrupts get interfered with, I found one that does not interfere with
any of the functions I need.  That uses interrupt lines A and B as the
two PCMCIA interrupts.  

The BIOS on the i412 has no summary which tells you which IRQs
are assigned to what, but it does have a configuration page which
allows you to mark some IRQs as being reserved for ISA devices
and also allows you to allocate the four (A,B, C & D) pc104+ IRQ
lines to PCI interrupts.  This allows you to set either a specific IRQ
or "auto" (or disabled, but that is not useful here).

So I left it to auto, and the book (which is not always entirely
accurate) says this will default to IRQ 11 and 13.  I am not 
entirely sure I believe this as 11 is used by the first ethernet port
and also the USB controller (which I am not using).  Now I know
that PCI IRQs are supposed to be sharable, but remember that
some of the configurations rendered the ethernet port unusable
by the linux driver, so I am not entirely sure that the card is 
sharing IRQs properly.

When I start up the system it finds the PCMCIA card 
correctly (it uses a TI1420 chip and it finds that), but it says
that no IRQ has been assigned.  This makes sense because
there is no way the BIOS can know that the jumpers on the
PCMCIA board are using lines A and B.  Even if I did not
use auto, but used explicit IRQs, the BIOS would still not
know which board in the stack used which lines and 
therefore which IRQs.

So are we back to the ISA world of having to configure
everything, or is there some means of doing this automatically?
If we are back to the ISA world, now do I specify which IRQs
are actually being used to the PCMCIA software in linux. 

If this is not the right place to ask this question I am sorry
for wasting your time, but I would ask that if you know
where I might get an answer you could point me in the 
right direction.

Thanks in advance

David



Reply to: