I think I need some advice here. I have interrupts going from the serial controller to the gate array which directly interfaces the IPL0-IPL2 on the 68030. The gate array allows the interrupt level to be programmed individually for each connected device (8 local, 8 vme and some special interrupt sources) as well as edge/flank, assert level etc.

I have setup the serial device *int_cb to call the fga device which in turn figures out the level and calls its *int_cb which is connected to the fccpu30 board driver handler which looks like this:
	LOGINT(("%s(%02x)\n", FUNCNAME, state));

	m_maincpu->set_input_line(INPUT_LINE_IRQ0, state & (1 << 0));
	m_maincpu->set_input_line(INPUT_LINE_IRQ1, state & (1 << 1));
	m_maincpu->set_input_line(INPUT_LINE_IRQ2, state & (1 << 2));

I get this far but: Firstly the state doesn't pass on the level, it is just asserted or not. So what is the best way pass the level?

Secondly, both the gate array and the serial device can provide the vector, how is the correct daisy_irq_ack() called?

Because I can