HP Jornada 6xx PCMCIA driver
kristoffer.ericson at gmail.com
Tue Nov 20 11:44:05 EST 2007
On Mon, 19 Nov 2007 20:33:48 +0900
Paul Mundt <lethal at linux-sh.org> wrote:
> On Mon, Nov 19, 2007 at 09:49:41AM +0100, Dominik Brodowski wrote:
> > On Mon, Nov 19, 2007 at 01:19:00AM -0800, Kristoffer Ericson wrote:
> > > > Actually, why do you bother? The PCMCIA subsystem is capable of working with
> > > > shared IRQs...
> > > >
> > > So I should have same interrupt for both? Isn't it important to know
> > > where the IRQ came from? Thats what puzzles me.
> > Well, each IRQ handler needs to check whether it is indeed the one which was
> > called. So, inside hd6441_interrupt() you'd need to do the following
> > cscr = inb(cscr_reg);
> > if !(cscr & HD64461_PCCCSCR_IRQ)
> > return IRQ_NONE;
> > to avoid handling ("IRQ_HANDLED") an interrupt which wasn't caused by this
> > device.
> Yes, this with IRQF_SHARED is certainly the preferred approach. The
> current hd64461 IRQ demux is too bogus for words. The fact it doesn't
> work at present shouldn't really be a surprise to anyone.
> hd64465 PCMCIA probably wants the same treatment, though I haven't looked
> to see if there's any point in trying to unify them in to a common
> hd6446x PCMCIA driver or not. In any event, it would be nice to get both
> of those cleaned up. hd64465_ss is already in-tree, and equally confused.
I've ripped out the IRQ & DEMUX from the pcmcia driver and implemented whats needed inside HD64461.c. However now Im getting an
"irq 78: nobody cared (try booting with the "irqpoll" option".
I've added code inside the hd64461_interrupt to see wether interrupt comes from pcmcia_card or pcmcia_slot. If it comes from pcmcia_card it should return with IRQ_NONE (leaving the IRQ for pcmcia subsystem to handler through their handler).
So Im assuming that this means that the pcmcia subsystem haven't successfully aquired IRQ 78 (shared)?
Paul, Once I get this driver working, I could probably unify them both.
More information about the linux-pcmcia