static int configure_irq(const unsigned char *buf) { int len; u_int8_t c; int i; len=0; for (i=0;i<HPEE_IRQ_MAX_ENT;i++) { c = get_8(buf+len); printk("IRQ %d ", c & HPEE_IRQ_CHANNEL_MASK); if (c & HPEE_IRQ_TRIG_LEVEL) { eisa_make_irq_level(c & HPEE_IRQ_CHANNEL_MASK); } else { eisa_make_irq_edge(c & HPEE_IRQ_CHANNEL_MASK); } len+=2; /* hpux seems to allow for * two bytes of irq data but only defines one of * them, I think */ if (!(c & HPEE_IRQ_MORE)) { break; } } return len; }
static int configure_irq(const unsigned char *buf) { int len; u_int8_t c; int i; len=0; for (i=0;i<HPEE_IRQ_MAX_ENT;i++) { c = get_8(buf+len); printk("IRQ %d ", c & HPEE_IRQ_CHANNEL_MASK); if (c & HPEE_IRQ_TRIG_LEVEL) { eisa_make_irq_level(c & HPEE_IRQ_CHANNEL_MASK); } else { eisa_make_irq_edge(c & HPEE_IRQ_CHANNEL_MASK); } len+=2; if (!(c & HPEE_IRQ_MORE)) { break; } } return len; }