/*
 * ataints.c -- atari Linux interrupt handling code
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file README.legal in the main directory of this archive
 * for more details.
 *
 */

#include <linux/types.h>
#include <linux/config.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>

#include <asm/system.h>

#include <linux/atarihw.h>
#include <linux/atariints.h>

/*
 * void atari_init_INTS (void)
 *
 * Parameters:	None
 *
 * Returns:	Nothing
 *
 * This function should be called during kernel startup to initialize
 * the atari IRQ handling routines.
 */

static void
    ata_int1(struct intframe *, void *),     ata_int2(struct intframe *, void *),
    ata_int3(struct intframe *, void *),     ata_int4(struct intframe *, void *),
    ata_int5(struct intframe *, void *),     ata_int6(struct intframe *, void *),
    ata_int7(struct intframe *, void *), 
    /* Now Interrupts by MFP */
    ata_mfpint0(struct intframe *, void *),  ata_mfpint1(struct intframe *, void *),
    ata_mfpint2(struct intframe *, void *),  ata_mfpint3(struct intframe *, void *),
    ata_mfpint4(struct intframe *, void *),  ata_mfpint5(struct intframe *, void *),
    ata_mfpint6(struct intframe *, void *),  ata_mfpint7(struct intframe *, void *),
    ata_mfpint8(struct intframe *, void *),  ata_mfpint9(struct intframe *, void *),
    ata_mfpint10(struct intframe *, void *) ,ata_mfpint11(struct intframe *, void *),
    ata_mfpint12(struct intframe *, void *) ,ata_mfpint13(struct intframe *, void *),
    ata_mfpint14(struct intframe *, void *) ,ata_mfpint15(struct intframe *, void *);

void atari_init_INTS (void)
{

    int i;


    add_isr (IRQ1, ata_int1, 0, NULL);
    add_isr (IRQ2, ata_int2, 0, NULL);
    add_isr (IRQ3, ata_int3, 0, NULL);
    add_isr (IRQ4, ata_int4, 0, NULL);
    add_isr (IRQ5, ata_int5, 0, NULL);
    add_isr (IRQ6, ata_int6, 0, NULL);
    add_isr (IRQ7, ata_int7, 0, NULL);

		add_isr (IRQ_MFP_BUSY, ata_mfpint0, 0, NULL);
		add_isr (IRQ_MFP_DCD, ata_mfpint1, 0, NULL);
		add_isr (IRQ_MFP_CTS, ata_mfpint2, 0, NULL);
		add_isr (IRQ_MFP_GPU, ata_mfpint3, 0, NULL);
		add_isr (IRQ_MFP_TIMD, ata_mfpint4, 0, NULL);
		add_isr (IRQ_MFP_TIMC, ata_mfpint5, 0, NULL);
		add_isr (IRQ_MFP_ACIA, ata_mfpint6, 0, NULL);
		add_isr (IRQ_MFP_FDC, ata_mfpint7, 0, NULL);
		add_isr (IRQ_MFP_TIMB, ata_mfpint8, 0, NULL);
		add_isr (IRQ_MFP_SERERR, ata_mfpint9, 0, NULL);
		add_isr (IRQ_MFP_SEREMPT, ata_mfpint10, 0, NULL);
		add_isr (IRQ_MFP_RECERR, ata_mfpint11, 0, NULL);
		add_isr (IRQ_MFP_RECFULL, ata_mfpint12, 0, NULL);
		add_isr (IRQ_MFP_TIMA, ata_mfpint13, 0, NULL);
		add_isr (IRQ_MFP_RI, ata_mfpint14, 0, NULL);
 		add_isr (IRQ_MFP_MMD, ata_mfpint15, 0, NULL);

}


/*
 * The builtin atari hardware interrupt handlers.
 */
 
static void ata_int1 (struct intframe *fp, void *data)
 {
 }

static void ata_int2 (struct intframe *fp, void *data)
 {
 }

static void ata_int3 (struct intframe *fp, void *data)
 {
 }
 
static void ata_int4 (struct intframe *fp, void *data)
 {
 }

static void ata_int5 (struct intframe *fp, void *data)
 {
 }

static void ata_int6 (struct intframe *fp, void *data)
 {
 }
 
static void ata_int7 (struct intframe *fp, void *data)
 {
 }
 
/* MFP Non Autovector Interrupts */

static void ata_mfpint0 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint1 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint2 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint3 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint4 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint5 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint6 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint7 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint8 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint9 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint10 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint11 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint12 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint13 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint14 (struct intframe *fp, void *data)
 {
 }
 
static void ata_mfpint15 (struct intframe *fp, void *data)
 {
 }
 
 