blob: d1b3f77ba909fd1e8c77b8ad7a024b5a6be6b327 [file] [log] [blame]
/*
* Copyright (c) 2017, Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "sys/alt_irq.h"
#include "altera_common.h"
#define ALTERA_MAX_IRQ 32
static alt_isr_func alt_hal_isr[ALTERA_MAX_IRQ];
#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT
int alt_ic_isr_register(alt_u32 ic_id, alt_u32 irq,
alt_isr_func isr, void *isr_context, void *flags)
{
if (irq <= ALTERA_MAX_IRQ)
{
alt_hal_isr[irq] = isr;
return 0;
}
else
{
return -EINVAL;
}
}
#else
int alt_irq_register(alt_u32 irq, void* context, alt_isr_func isr)
{
if (irq <= ALTERA_MAX_IRQ)
{
alt_hal_isr[irq] = isr;
return 0;
}
else
{
return -EINVAL;
}
}
#endif
void alt_handle_irq(void* base, alt_u32 id)
{
/* Null pointer check for handler function */
if (!alt_hal_isr[id])
return;
#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT
alt_hal_isr[id]((void*)base);
#else
alt_hal_isr[id]((void*)base, id);
#endif
}
/* Add Altera HAL extern function definations here */
/*
* alt_tick() should only be called by the system clock driver. This is used
* to notify the system that the system timer period has expired.
*/
void alt_tick (void)
{
}