aboutsummaryrefslogtreecommitdiffstats
path: root/libmaple/usb/usb_hardware.c
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2011-06-15 17:11:41 -0400
committerMarti Bolivar <mbolivar@leaflabs.com>2011-10-18 13:30:17 -0400
commitd85462d0517baac39f3c316924162cca3d9c785a (patch)
tree08a3417acacbae3f4666f0ee0cad893cfe3f8a8c /libmaple/usb/usb_hardware.c
parentc6c959682084c8493a0c39754374e7dbe6cf1708 (diff)
downloadlibrambutan-d85462d0517baac39f3c316924162cca3d9c785a.tar.gz
librambutan-d85462d0517baac39f3c316924162cca3d9c785a.zip
usb: Replace duplicated code with nvic.h API.
Replace calls to usbEnbISR()/usbDsbISR() with nvic_irq_enable()/nvic_irq_disable(). Remove ST-style code. Use nvic_sys_reset() instead of systemHardReset(). Rename some conflicting #defines that including nvic.h created. Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
Diffstat (limited to 'libmaple/usb/usb_hardware.c')
-rw-r--r--libmaple/usb/usb_hardware.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/libmaple/usb/usb_hardware.c b/libmaple/usb/usb_hardware.c
index 9a7d12c..e7fd078 100644
--- a/libmaple/usb/usb_hardware.c
+++ b/libmaple/usb/usb_hardware.c
@@ -31,6 +31,7 @@
*
*/
+#include "nvic.h"
#include "usb_hardware.h"
void nvicInit(NVIC_InitTypeDef* NVIC_InitStruct) {
@@ -40,9 +41,7 @@ void nvicInit(NVIC_InitTypeDef* NVIC_InitStruct) {
u32 tmppre = 0;
u32 tmpsub = 0x0F;
- SCB_TypeDef* rSCB = (SCB_TypeDef *) SCB_BASE;
- NVIC_TypeDef* rNVIC = (NVIC_TypeDef *) NVIC_BASE;
-
+ SCB_TypeDef* rSCB = (SCB_TypeDef *) SCB_BASE_ADDR;
/* Compute the Corresponding IRQ Priority -------------------------------*/
tmppriority = (0x700 - (rSCB->AIRCR & (u32)0x700))>> 0x08;
@@ -57,33 +56,31 @@ void nvicInit(NVIC_InitTypeDef* NVIC_InitStruct) {
tmppriority = ((u32)tmppriority) <<
((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08);
- tmpreg = rNVIC->IPR[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)];
+ tmpreg = NVIC_BASE->IP[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)];
tmpmask = (u32)0xFF <<
((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08);
tmpreg &= ~tmpmask;
tmppriority &= tmpmask;
tmpreg |= tmppriority;
- rNVIC->IPR[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)] = tmpreg;
+ NVIC_BASE->IP[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)] = tmpreg;
/* Enable the Selected IRQ Channels -------------------------------------*/
- rNVIC->ISER[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
+ NVIC_BASE->ISER[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
(u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F);
}
void nvicDisableInterrupts() {
- NVIC_TypeDef* rNVIC = (NVIC_TypeDef *) NVIC_BASE;
- rNVIC->ICER[0] = 0xFFFFFFFF;
- rNVIC->ICER[1] = 0xFFFFFFFF;
- rNVIC->ICPR[0] = 0xFFFFFFFF;
- rNVIC->ICPR[1] = 0xFFFFFFFF;
+ nvic_irq_disable_all();
+ NVIC_BASE->ICPR[0] = 0xFFFFFFFF;
+ NVIC_BASE->ICPR[1] = 0xFFFFFFFF;
/* Disable the systick timer, which operates separately from NVIC */
SET_REG(STK_CTRL,0x04);
}
void systemHardReset(void) {
- SCB_TypeDef* rSCB = (SCB_TypeDef *) SCB_BASE;
+ SCB_TypeDef* rSCB = (SCB_TypeDef *) SCB_BASE_ADDR;
typedef void (*funcPtr)(void);
/* Reset */