From 30400ff28785c156264fb97069b127e8dbfb7491 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sun, 24 Jun 2012 07:25:22 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4342 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/platforms/STM32/sdc_lld.c | 9 ++++++--- os/hal/platforms/STM32/sdc_lld.h | 8 ++++++++ os/hal/platforms/STM32F1xx/stm32_isr.h | 6 ++++++ os/hal/platforms/STM32F2xx/stm32_isr.h | 6 ++++++ os/hal/platforms/STM32F4xx/stm32_isr.h | 6 ++++++ 5 files changed, 32 insertions(+), 3 deletions(-) (limited to 'os/hal/platforms') diff --git a/os/hal/platforms/STM32/sdc_lld.c b/os/hal/platforms/STM32/sdc_lld.c index 9f56b8d59..84eb66b0b 100644 --- a/os/hal/platforms/STM32/sdc_lld.c +++ b/os/hal/platforms/STM32/sdc_lld.c @@ -277,6 +277,9 @@ static void sdc_lld_error_cleanup(SDCDriver *sdcp, /* Driver interrupt handlers. */ /*===========================================================================*/ +#if !defined(STM32_SDIO_HANDLER) +#error "STM32_SDIO_HANDLER not defined" +#endif /** * @brief SDIO IRQ handler. * @details It just wakes transaction thread. All error handling performs in @@ -284,7 +287,7 @@ static void sdc_lld_error_cleanup(SDCDriver *sdcp, * * @isr */ -CH_IRQ_HANDLER(SDIO_IRQHandler) { +CH_IRQ_HANDLER(STM32_SDIO_HANDLER) { CH_IRQ_PROLOGUE(); @@ -352,7 +355,7 @@ void sdc_lld_start(SDCDriver *sdcp) { #if (defined(STM32F4XX) || defined(STM32F2XX)) dmaStreamSetFIFO(sdcp->dma, STM32_DMA_FCR_DMDIS | STM32_DMA_FCR_FTH_FULL); #endif - nvicEnableVector(SDIO_IRQn, + nvicEnableVector(STM32_SDIO_NUMBER, CORTEX_PRIORITY_MASK(STM32_SDC_SDIO_IRQ_PRIORITY)); rccEnableSDIO(FALSE); } @@ -380,7 +383,7 @@ void sdc_lld_stop(SDCDriver *sdcp) { SDIO->DTIMER = 0; /* Clock deactivation.*/ - nvicDisableVector(SDIO_IRQn); + nvicDisableVector(STM32_SDIO_NUMBER); dmaStreamRelease(sdcp->dma); rccDisableSDIO(FALSE); } diff --git a/os/hal/platforms/STM32/sdc_lld.h b/os/hal/platforms/STM32/sdc_lld.h index 7511bf581..79eac638a 100644 --- a/os/hal/platforms/STM32/sdc_lld.h +++ b/os/hal/platforms/STM32/sdc_lld.h @@ -121,6 +121,14 @@ #error "SDIO not present in the selected device" #endif +#if !CORTEX_IS_VALID_KERNEL_PRIORITY(STM32_SDC_SDIO_IRQ_PRIORITY) +#error "Invalid IRQ priority assigned to SDIO" +#endif + +#if !STM32_DMA_IS_VALID_PRIORITY(STM32_SDC_SDIO_DMA_PRIORITY) +#error "Invalid DMA priority assigned to SDIO" +#endif + #if !defined(STM32_DMA_REQUIRED) #define STM32_DMA_REQUIRED #endif diff --git a/os/hal/platforms/STM32F1xx/stm32_isr.h b/os/hal/platforms/STM32F1xx/stm32_isr.h index 27e837ce8..e79efd155 100644 --- a/os/hal/platforms/STM32F1xx/stm32_isr.h +++ b/os/hal/platforms/STM32F1xx/stm32_isr.h @@ -58,6 +58,12 @@ #define STM32_CAN2_RX1_NUMBER CAN2_RX1_IRQn #define STM32_CAN2_SCE_NUMBER CAN2_SCE_IRQn +/* + * SDIO unit. + */ +#define STM32_SDIO_HANDLER SDIO_IRQHandler +#define STM32_SDIO_NUMBER SDIO_IRQn + /* * TIM units. */ diff --git a/os/hal/platforms/STM32F2xx/stm32_isr.h b/os/hal/platforms/STM32F2xx/stm32_isr.h index 480b28396..18ead99e1 100644 --- a/os/hal/platforms/STM32F2xx/stm32_isr.h +++ b/os/hal/platforms/STM32F2xx/stm32_isr.h @@ -58,6 +58,12 @@ #define STM32_CAN2_RX1_NUMBER CAN2_RX1_IRQn #define STM32_CAN2_SCE_NUMBER CAN2_SCE_IRQn +/* + * SDIO unit. + */ +#define STM32_SDIO_HANDLER SDIO_IRQHandler +#define STM32_SDIO_NUMBER SDIO_IRQn + /* * TIM units. */ diff --git a/os/hal/platforms/STM32F4xx/stm32_isr.h b/os/hal/platforms/STM32F4xx/stm32_isr.h index f0b1ad14c..23f9fc19d 100644 --- a/os/hal/platforms/STM32F4xx/stm32_isr.h +++ b/os/hal/platforms/STM32F4xx/stm32_isr.h @@ -58,6 +58,12 @@ #define STM32_CAN2_RX1_NUMBER CAN2_RX1_IRQn #define STM32_CAN2_SCE_NUMBER CAN2_SCE_IRQn +/* + * SDIO unit. + */ +#define STM32_SDIO_HANDLER SDIO_IRQHandler +#define STM32_SDIO_NUMBER SDIO_IRQn + /* * TIM units. */ -- cgit v1.2.3