From: Kristoffer E. <kri...@gm...> - 2007-10-06 19:50:40
|
Greetings, Well, I've gotten a better graps of the problem. Here's how it should work : please note that Im not if demux runs before or after Int 78 (I presume before). Card inserted -> Int 36 (HD64461) -> demux -> Int 78 -> demux -> Int 79 -> Interrupt -> disable IRQ Int 78 is set using request_irq while Int 79 just sets irq_desc[79] = &hd64461_ss_type; to manage disable IRQ. Now, I cannot register 79 as a proper IRQ, since the dev_id would be the same(?). Best wishes Kristoffer Ericson On Fri, 5 Oct 2007 19:29:02 -0700 Kristoffer Ericson <Kri...@gm...> wrote: > Greetings, > > Thoughts appreciated. > > IRQ 36 is main hd64461 IRQ (all IRQ between 64->80 ends up here) > IRQ 78 is setup to be used as a pcmcia_bridge. > IRQ 79 is aquired to handle PCMCIA events. > > A demux is put in place to take 78 IRQ's (since that is basicly the only thing that will happen) and transform them > into 79 IF interrupt was generated by pcmcia change. > > extracts from code: > note. irq = 78, io_irq = 79, irq_flags = IRQF_DISABLED > > request_irq(irq, hd64461_interrupt, irq_flags, "hd64461_ss-irq",sp)) > irq_desc[io_irq].chip = &hd64461_ss_irq_type; > hd64461_register_irq_demux(sp->irq, hd64461_pcmcia_irq_demux, sp); > > Now whenever I insert a pcmcia card I get: > 'unexpected IRQ trap at vector 4f' > 'irq 79, desc:8d2b8a20, depth 1, count: 0, unhandled: 0' > 'handle_irq(): 8d031180, handle_bad_irq+0x0/0x2d0' > 'chip(): 9d2e2af8, 0x8d2e2af8' > 'action() : 00000000' > 'IRQ_DISABLED set' > > Due to printk's I can see that it did run through the hd64461_pcmcia_irq_demux and there quite correctly made 78 -> 79. > > /Kristoffer > > |