summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-12-22 03:09:25 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-12-22 03:09:25 +0000
commit0404da840332858afad5ecbfcba1290c191f0078 (patch)
treefe40fdff1be235e35eb9fda3125f5bc0564e7b24
parent0ef224f0edcdc24a123dd2f229256dac3a38c277 (diff)
downloadnuttx-0404da840332858afad5ecbfcba1290c191f0078.tar.gz
nuttx-0404da840332858afad5ecbfcba1290c191f0078.tar.bz2
nuttx-0404da840332858afad5ecbfcba1290c191f0078.zip
Disable interrupts while accessing the APB2RTSR register
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4212 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r--nuttx/arch/arm/src/stm32/stm32_adc.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/nuttx/arch/arm/src/stm32/stm32_adc.c b/nuttx/arch/arm/src/stm32/stm32_adc.c
index 5cd22582d..b71ef6df9 100644
--- a/nuttx/arch/arm/src/stm32/stm32_adc.c
+++ b/nuttx/arch/arm/src/stm32/stm32_adc.c
@@ -823,6 +823,7 @@ static void adc_startconv(struct stm32_dev_s *priv, bool enable)
static void adc_rccreset(struct stm32_dev_s *priv, bool reset)
{
+ irqstate_t flags;
uint32_t regval;
uint32_t adcbit;
@@ -860,6 +861,12 @@ static void adc_rccreset(struct stm32_dev_s *priv, bool reset)
adcbit = RCC_APB2RSTR_ADCRST;
#endif
+ /* Disable interrupts. This is necessary because the APB2RTSR register
+ * is used by several different drivers.
+ */
+
+ flags = irqsave();
+
/* Set or clear the selected bit in the APB2 reset register */
regval = getreg32(STM32_RCC_APB2RSTR);
@@ -876,6 +883,7 @@ static void adc_rccreset(struct stm32_dev_s *priv, bool reset)
regval &= ~adcbit;
}
putreg32(regval, STM32_RCC_APB2RSTR);
+ irqrestore(flags);
}
/*******************************************************************************