diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-11-12 12:43:28 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-11-12 12:43:28 +0000 |
commit | fe5d5048c6c3fae402c626f17e2e61979c768b55 (patch) | |
tree | 2a3a85bb8ea028d0d06b3d6bca6f392dfecf843a /c/src/lib/libcpu/powerpc/mpc55xx/include/irq.h | |
parent | 2010-11-11 Joel Sherrill <joel.sherrilL@OARcorp.com> (diff) | |
download | rtems-fe5d5048c6c3fae402c626f17e2e61979c768b55.tar.bz2 |
2010-11-12 Sebastian Huber <sebastian.huber@embedded-brains.de>
* mpc55xx/include/irq.h: Include missing <bspopts.h>. Format.
* mpc83xx/include/mpc83xx.h, mpc83xx/i2c/mpc83xx_i2cdrv.h,
mpc83xx/i2c/mpc83xx_i2cdrv.c: Changes to use this driver for the
MPC55XX familiy.
Diffstat (limited to 'c/src/lib/libcpu/powerpc/mpc55xx/include/irq.h')
-rw-r--r-- | c/src/lib/libcpu/powerpc/mpc55xx/include/irq.h | 184 |
1 files changed, 95 insertions, 89 deletions
diff --git a/c/src/lib/libcpu/powerpc/mpc55xx/include/irq.h b/c/src/lib/libcpu/powerpc/mpc55xx/include/irq.h index 811b246033..baa36d8844 100644 --- a/c/src/lib/libcpu/powerpc/mpc55xx/include/irq.h +++ b/c/src/lib/libcpu/powerpc/mpc55xx/include/irq.h @@ -24,6 +24,8 @@ #include <rtems/irq-extension.h> #include <rtems/irq.h> +#include <bspopts.h> + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ @@ -43,89 +45,86 @@ extern "C" { /* Software interrupts */ #define MPC55XX_IRQ_SOFTWARE_MIN 0U #define MPC55XX_IRQ_SOFTWARE_MAX 7U -#define MPC55XX_IRQ_SOFTWARE_GET_INDEX( v) (v) -#define MPC55XX_IRQ_SOFTWARE_GET_REQUEST( i) (i) +#define MPC55XX_IRQ_SOFTWARE_GET_INDEX(v) (v) +#define MPC55XX_IRQ_SOFTWARE_GET_REQUEST(i) (i) #define MPC55XX_IRQ_SOFTWARE_NUMBER (MPC55XX_IRQ_SOFTWARE_MAX + 1U) -#if ((MPC55XX_CHIP_TYPE >= 5510) && (MPC55XX_CHIP_TYPE <= 5517)) -#else /*((MPC55XX_CHIP_TYPE >= 5510) && (MPC55XX_CHIP_TYPE <= 5517))*/ -#endif /*((MPC55XX_CHIP_TYPE >= 5510) && (MPC55XX_CHIP_TYPE <= 5517))*/ - -#if ((MPC55XX_CHIP_TYPE >= 5510) && (MPC55XX_CHIP_TYPE <= 5517)) - -/* eDMA interrupts */ -#define MPC55XX_IRQ_EDMA_ERROR_LOW 10U -#define MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN 11U -#define MPC55XX_IRQ_EDMA_REQUEST_LOW_MAX 26U - -#define MPC55XX_IRQ_EDMA_GET_CHANNEL( v) \ - ((v) - MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN) -#define MPC55XX_IRQ_EDMA_GET_REQUEST( c) \ - ((c) + MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN) - -/* SIU external interrupts */ -#define MPC55XX_IRQ_SIU_EXTERNAL_0 53U -#define MPC55XX_IRQ_SIU_EXTERNAL_1 54U -#define MPC55XX_IRQ_SIU_EXTERNAL_2 55U -#define MPC55XX_IRQ_SIU_EXTERNAL_3 56U -#define MPC55XX_IRQ_SIU_EXTERNAL_4_15 57U - -/* eMIOS interrupts */ -#define MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN 58U -#define MPC55XX_IRQ_EMIOS_REQUEST_LOW_MAX 81U -#define MPC55XX_IRQ_EMIOS_GET_CHANNEL( v) \ - ((v) - MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN) -#define MPC55XX_IRQ_EMIOS_GET_REQUEST( c) \ - ((c) + MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN) - -#else /*((MPC55XX_CHIP_TYPE >= 5510) && (MPC55XX_CHIP_TYPE <= 5517))*/ - -/* eDMA interrupts */ -#define MPC55XX_IRQ_EDMA_ERROR_LOW 10U -#define MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN 11U -#define MPC55XX_IRQ_EDMA_REQUEST_LOW_MAX 42U - -#define MPC55XX_IRQ_EDMA_ERROR_HIGH 210U -#define MPC55XX_IRQ_EDMA_REQUEST_HIGH_MIN 211U -#define MPC55XX_IRQ_EDMA_REQUEST_HIGH_MAX 242U - -#define MPC55XX_IRQ_EDMA_GET_CHANNEL( v) \ - (((v) > MPC55XX_IRQ_EDMA_REQUEST_LOW_MAX) \ - ? ((v) + 32U - MPC55XX_IRQ_EDMA_REQUEST_HIGH_MIN) \ - : ((v) - MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN)) -#define MPC55XX_IRQ_EDMA_GET_REQUEST( c) \ - (((c) >= 32U) \ - ? ((c) - 32U + MPC55XX_IRQ_EDMA_REQUEST_HIGH_MIN) \ - : ((c) + MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN)) - -/* SIU external interrupts */ -#define MPC55XX_IRQ_SIU_EXTERNAL_0 46U -#define MPC55XX_IRQ_SIU_EXTERNAL_1 47U -#define MPC55XX_IRQ_SIU_EXTERNAL_2 48U -#define MPC55XX_IRQ_SIU_EXTERNAL_3 49U -#define MPC55XX_IRQ_SIU_EXTERNAL_4_15 50U - -/* eMIOS interrupts */ -#define MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN 51U -#define MPC55XX_IRQ_EMIOS_REQUEST_LOW_MAX 66U -#define MPC55XX_IRQ_EMIOS_REQUEST_HIGH_MIN 202U -#define MPC55XX_IRQ_EMIOS_REQUEST_HIGH_MAX 209U - -#define MPC55XX_IRQ_EMIOS_GET_CHANNEL( v) \ - (((v) > MPC55XX_IRQ_EMIOS_REQUEST_LOW_MAX) \ - ? ((v) + 16U - MPC55XX_IRQ_EMIOS_REQUEST_HIGH_MIN) \ - : ((v) - MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN)) - -#define MPC55XX_IRQ_EMIOS_GET_REQUEST( c) \ - (((c) >= 16U) \ - ? ((c) - 16U + MPC55XX_IRQ_EMIOS_REQUEST_HIGH_MIN) \ - : ((c) + MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN)) - -#endif /*((MPC55XX_CHIP_TYPE >= 5510) && (MPC55XX_CHIP_TYPE <= 5517))*/ +#if MPC55XX_CHIP_TYPE >= 5510 && MPC55XX_CHIP_TYPE <= 5517 + /* eDMA interrupts */ + #define MPC55XX_IRQ_EDMA_ERROR_LOW 10U + #define MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN 11U + #define MPC55XX_IRQ_EDMA_REQUEST_LOW_MAX 26U + + #define MPC55XX_IRQ_EDMA_GET_CHANNEL(v) \ + ((v) - MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN) + #define MPC55XX_IRQ_EDMA_GET_REQUEST(c) \ + ((c) + MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN) + + /* I2C interrupt */ + #define MPC55XX_IRQ_I2C 48U + + /* SIU external interrupts */ + #define MPC55XX_IRQ_SIU_EXTERNAL_0 53U + #define MPC55XX_IRQ_SIU_EXTERNAL_1 54U + #define MPC55XX_IRQ_SIU_EXTERNAL_2 55U + #define MPC55XX_IRQ_SIU_EXTERNAL_3 56U + #define MPC55XX_IRQ_SIU_EXTERNAL_4_15 57U + + /* eMIOS interrupts */ + #define MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN 58U + #define MPC55XX_IRQ_EMIOS_REQUEST_LOW_MAX 81U + #define MPC55XX_IRQ_EMIOS_GET_CHANNEL(v) \ + ((v) - MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN) + #define MPC55XX_IRQ_EMIOS_GET_REQUEST(c) \ + ((c) + MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN) +#elif MPC55XX_CHIP_TYPE >= 5554 && MPC55XX_CHIP_TYPE <= 5567 + /* eDMA interrupts */ + #define MPC55XX_IRQ_EDMA_ERROR_LOW 10U + #define MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN 11U + #define MPC55XX_IRQ_EDMA_REQUEST_LOW_MAX 42U + + #define MPC55XX_IRQ_EDMA_ERROR_HIGH 210U + #define MPC55XX_IRQ_EDMA_REQUEST_HIGH_MIN 211U + #define MPC55XX_IRQ_EDMA_REQUEST_HIGH_MAX 242U + + #define MPC55XX_IRQ_EDMA_GET_CHANNEL(v) \ + (((v) > MPC55XX_IRQ_EDMA_REQUEST_LOW_MAX) \ + ? ((v) + 32U - MPC55XX_IRQ_EDMA_REQUEST_HIGH_MIN) \ + : ((v) - MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN)) + #define MPC55XX_IRQ_EDMA_GET_REQUEST(c) \ + (((c) >= 32U) \ + ? ((c) - 32U + MPC55XX_IRQ_EDMA_REQUEST_HIGH_MIN) \ + : ((c) + MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN)) + + /* SIU external interrupts */ + #define MPC55XX_IRQ_SIU_EXTERNAL_0 46U + #define MPC55XX_IRQ_SIU_EXTERNAL_1 47U + #define MPC55XX_IRQ_SIU_EXTERNAL_2 48U + #define MPC55XX_IRQ_SIU_EXTERNAL_3 49U + #define MPC55XX_IRQ_SIU_EXTERNAL_4_15 50U + + /* eMIOS interrupts */ + #define MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN 51U + #define MPC55XX_IRQ_EMIOS_REQUEST_LOW_MAX 66U + #define MPC55XX_IRQ_EMIOS_REQUEST_HIGH_MIN 202U + #define MPC55XX_IRQ_EMIOS_REQUEST_HIGH_MAX 209U + + #define MPC55XX_IRQ_EMIOS_GET_CHANNEL(v) \ + (((v) > MPC55XX_IRQ_EMIOS_REQUEST_LOW_MAX) \ + ? ((v) + 16U - MPC55XX_IRQ_EMIOS_REQUEST_HIGH_MIN) \ + : ((v) - MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN)) + + #define MPC55XX_IRQ_EMIOS_GET_REQUEST(c) \ + (((c) >= 16U) \ + ? ((c) - 16U + MPC55XX_IRQ_EMIOS_REQUEST_HIGH_MIN) \ + : ((c) + MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN)) +#else + #error "unexpected chip type" +#endif /* Checks */ #define MPC55XX_IRQ_IS_VALID(v) \ - ((v) >= MPC55XX_IRQ_MIN && \ + ((v) >= MPC55XX_IRQ_MIN && \ (v) <= MPC55XX_IRQ_MAX) #define MPC55XX_IRQ_IS_SOFTWARE(v) \ ((v) >= MPC55XX_IRQ_SOFTWARE_MIN && \ @@ -140,24 +139,31 @@ extern "C" { #define MPC55XX_INTC_DISABLED_PRIORITY 0U #define MPC55XX_INTC_INVALID_PRIORITY (MPC55XX_INTC_MAX_PRIORITY + 1) #define MPC55XX_INTC_DEFAULT_PRIORITY (MPC55XX_INTC_MIN_PRIORITY + 1) -#define MPC55XX_INTC_IS_VALID_PRIORITY(p) ((p) >= MPC55XX_INTC_DISABLED_PRIORITY && (p) <= MPC55XX_INTC_MAX_PRIORITY) +#define MPC55XX_INTC_IS_VALID_PRIORITY(p) \ + ((p) >= MPC55XX_INTC_DISABLED_PRIORITY && (p) <= MPC55XX_INTC_MAX_PRIORITY) rtems_status_code mpc55xx_interrupt_handler_install( - rtems_vector_number vector, - const char *info, - rtems_option options, - unsigned priority, - rtems_interrupt_handler handler, - void *arg + rtems_vector_number vector, + const char *info, + rtems_option options, + unsigned priority, + rtems_interrupt_handler handler, + void *arg ); -rtems_status_code mpc55xx_intc_get_priority( rtems_vector_number vector, unsigned *priority); +rtems_status_code mpc55xx_intc_get_priority( + rtems_vector_number vector, + unsigned *priority +); -rtems_status_code mpc55xx_intc_set_priority( rtems_vector_number vector, unsigned priority); +rtems_status_code mpc55xx_intc_set_priority( + rtems_vector_number vector, + unsigned priority +); -rtems_status_code mpc55xx_intc_raise_software_irq( rtems_vector_number vector); +rtems_status_code mpc55xx_intc_raise_software_irq(rtems_vector_number vector); -rtems_status_code mpc55xx_intc_clear_software_irq( rtems_vector_number vector); +rtems_status_code mpc55xx_intc_clear_software_irq(rtems_vector_number vector); /** * @addtogroup bsp_interrupt |