void via_irq_enable(int irq) { int irq_src = IRQ_SRC(irq); int irq_idx = IRQ_IDX(irq); #ifdef DEBUG_IRQUSE printk(KERN_DEBUG "via_irq_enable(%d)\n", irq); #endif if (irq_src == 1) { via1[vIER] = IER_SET_BIT(irq_idx); } else if (irq_src == 2) { if (irq != IRQ_MAC_NUBUS || nubus_disabled == 0) via2[gIER] = IER_SET_BIT(irq_idx); } else if (irq_src == 7) { switch (macintosh_config->via_type) { case MAC_VIA_II: case MAC_VIA_QUADRA: nubus_disabled &= ~(1 << irq_idx); /* Enable the CA1 interrupt when no slot is disabled. */ if (!nubus_disabled) via2[gIER] = IER_SET_BIT(1); break; case MAC_VIA_IICI: /* On RBV, enable the slot interrupt. * SIER works like IER. */ via2[rSIER] = IER_SET_BIT(irq_idx); break; } } }
void via_irq_enable(int irq) { int irq_src = IRQ_SRC(irq); int irq_idx = IRQ_IDX(irq); int irq_bit = 1 << irq_idx; #ifdef DEBUG_IRQUSE printk(KERN_DEBUG "via_irq_enable(%d)\n", irq); #endif if (irq_src == 1) { via1[vIER] = irq_bit | 0x80; } else if (irq_src == 2) { /* * Set vPCR for SCSI interrupts (but not on RBV) */ if ((irq_idx == 0) && !rbv_present) { if (macintosh_config->scsi_type == MAC_SCSI_OLD) { /* CB2 (IRQ) indep. input, positive edge */ /* CA2 (DRQ) indep. input, positive edge */ via2[vPCR] = 0x66; } else { /* CB2 (IRQ) indep. input, negative edge */ /* CA2 (DRQ) indep. input, negative edge */ via2[vPCR] = 0x22; } } via2[gIER] = irq_bit | 0x80; } else if (irq_src == 7) { if (rbv_present) { /* enable the slot interrupt. SIER works like IER. */ via2[rSIER] = IER_SET_BIT(irq_idx); } else { /* Make sure the bit is an input, to enable the irq */ /* But not on PowerBooks, that's ADB... */ if ((macintosh_config->adb_type != MAC_ADB_PB1) && (macintosh_config->adb_type != MAC_ADB_PB2)) { switch(macintosh_config->ident) { case MAC_MODEL_II: case MAC_MODEL_IIX: case MAC_MODEL_IICX: case MAC_MODEL_SE30: via2[vDirA] &= (~irq_bit | 0xc0); break; default: via2[vDirA] &= ~irq_bit; } } } nubus_active |= irq_bit; } }
void via_irq_enable(int irq) { int irq_src = IRQ_SRC(irq); int irq_idx = IRQ_IDX(irq); #ifdef DEBUG_IRQUSE printk(KERN_DEBUG "via_irq_enable(%d)\n", irq); #endif if (irq_src == 1) { via1[vIER] = IER_SET_BIT(irq_idx); } else if (irq_src == 2) { if (irq != IRQ_MAC_NUBUS || nubus_disabled == 0) via2[gIER] = IER_SET_BIT(irq_idx); } else if (irq_src == 7) { switch (macintosh_config->via_type) { case MAC_VIA_II: nubus_disabled &= ~(1 << irq_idx); /* Enable the CA1 interrupt when no slot is disabled. */ if (!nubus_disabled) via2[gIER] = IER_SET_BIT(1); break; case MAC_VIA_IIci: /* On RBV, enable the slot interrupt. * SIER works like IER. */ via2[rSIER] = IER_SET_BIT(irq_idx); break; case MAC_VIA_QUADRA: /* Make the port A line an input to enable the slot irq. * But not on PowerBooks, that's ADB. */ if ((macintosh_config->adb_type != MAC_ADB_PB1) && (macintosh_config->adb_type != MAC_ADB_PB2)) via2[vDirA] &= ~(1 << irq_idx); break; } } }
void via_irq_enable(int irq) { int irq_src = IRQ_SRC(irq); int irq_idx = IRQ_IDX(irq); int irq_bit = 1 << irq_idx; #ifdef DEBUG_IRQUSE printk("via_irq_enable(%d)\n", irq); #endif if (irq_src == 1) { via1[vIER] = irq_bit | 0x80; } else if (irq_src == 2) { /* * Set vPCR for SCSI interrupts (but not on RBV) */ if ((irq_idx == 0) && !rbv_present) { if (macintosh_config->scsi_type == MAC_SCSI_OLD) { /* CB2 (IRQ) indep. input, positive edge */ /* CA2 (DRQ) indep. input, positive edge */ via2[vPCR] = 0x66; } else { /* CB2 (IRQ) indep. input, negative edge */ /* CA2 (DRQ) indep. input, negative edge */ via2[vPCR] = 0x22; } } via2[gIER] = irq_bit | 0x80; } else if (irq_src == 7) { if (rbv_present) { /* enable the slot interrupt. SIER works like IER. */ via2[rSIER] = IER_SET_BIT(irq_idx); } else { /* Make sure the bit is an input, to enable the irq */ via2[vDirA] &= ~irq_bit; } nubus_active |= irq_bit; } }