aboutsummaryrefslogtreecommitdiffstats
path: root/libmaple/usb
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2011-06-15 16:29:19 -0400
committerMarti Bolivar <mbolivar@leaflabs.com>2011-10-18 13:30:17 -0400
commit9e3c80a3ae38c111c138aa9e7c70f1abb5d1424f (patch)
tree9accce7b55bb9b680f4dee2010087eb3b566b248 /libmaple/usb
parentc023d179fa613f979d50a0d105f08b9b58c7ce6b (diff)
downloadlibrambutan-9e3c80a3ae38c111c138aa9e7c70f1abb5d1424f.tar.gz
librambutan-9e3c80a3ae38c111c138aa9e7c70f1abb5d1424f.zip
usb: Move some board-specific configuration to Wirish.
Create new BOARD_USB_DISC_DEV and BOARD_USB_DISC_BIT board-specific values. Use these as arguments to setupUSB() and disableUSB(). This helps make the USB stack more generic, and goes towards the resolution of an important FIXME. Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
Diffstat (limited to 'libmaple/usb')
-rw-r--r--libmaple/usb/usb.c10
-rw-r--r--libmaple/usb/usb.h5
-rw-r--r--libmaple/usb/usb_config.h42
3 files changed, 18 insertions, 39 deletions
diff --git a/libmaple/usb/usb.c b/libmaple/usb/usb.c
index 651b36e..9b70b6b 100644
--- a/libmaple/usb/usb.c
+++ b/libmaple/usb/usb.c
@@ -99,22 +99,22 @@ struct {
volatile uint8 bESOFcnt;
} ResumeS;
-void setupUSB (void) {
- gpio_set_mode(USB_DISC_DEV, USB_DISC_PIN, GPIO_OUTPUT_PP);
+void setupUSB (gpio_dev *disc_dev, uint8 disc_bit) {
+ gpio_set_mode(disc_dev, disc_bit, GPIO_OUTPUT_PP);
/* setup the apb1 clock for USB */
pRCC->APB1ENR |= 0x00800000;
/* initialize the usb application */
- gpio_write_bit(USB_DISC_DEV, USB_DISC_PIN, 0); // presents us to the host
+ gpio_write_bit(disc_dev, disc_bit, 0); // presents us to the host
USB_Init(); // low level init routine provided by the ST library
}
-void disableUSB (void) {
+void disableUSB (gpio_dev *disc_dev, uint8 disc_bit) {
// These are just guesses about how to do this
// TODO: real disable function
usbDsbISR();
- gpio_write_bit(USB_DISC_DEV, USB_DISC_PIN, 1);
+ gpio_write_bit(disc_dev, disc_bit, 1);
}
void usbSuspend(void) {
diff --git a/libmaple/usb/usb.h b/libmaple/usb/usb.h
index c724c54..0df3c8d 100644
--- a/libmaple/usb/usb.h
+++ b/libmaple/usb/usb.h
@@ -29,6 +29,7 @@
#include "usb_lib.h"
#include "libmaple.h"
+#include "gpio.h"
#ifdef __cplusplus
extern "C" {
@@ -56,8 +57,8 @@ typedef enum {
extern volatile uint32 bDeviceState;
-void setupUSB(void);
-void disableUSB(void);
+void setupUSB(gpio_dev*, uint8);
+void disableUSB(gpio_dev*, uint8);
void usbSuspend(void);
void usbResumeInit(void);
void usbResume(RESUME_STATE);
diff --git a/libmaple/usb/usb_config.h b/libmaple/usb/usb_config.h
index 62a6a71..6eb88a5 100644
--- a/libmaple/usb/usb_config.h
+++ b/libmaple/usb/usb_config.h
@@ -25,42 +25,20 @@
*****************************************************************************/
#define VCOM_ID_VENDOR 0x1EAF
+#define VCOM_ID_PRODUCT 0x0004
#define RESET_DELAY (100000)
#define USB_CONFIG_MAX_POWER (100 >> 1)
-#if defined(BOARD_maple) || defined(BOARD_maple_RET6)
+#if !(defined(BOARD_maple) || defined(BOARD_maple_RET6) || \
+ defined(BOARD_maple_mini) || defined(BOARD_maple_native))
- /* USB Identifier numbers */
- #define VCOM_ID_PRODUCT 0x0004
- #define USB_DISC_DEV GPIOC
- #define USB_DISC_PIN 12
-
-#elif defined(BOARD_maple_mini)
-
- #define VCOM_ID_PRODUCT 0x0004
- #define USB_DISC_DEV GPIOB
- #define USB_DISC_PIN 9
-
-#elif defined(BOARD_maple_native)
-
- #define VCOM_ID_PRODUCT 0x0004
- #define USB_DISC_DEV GPIOB
- #define USB_DISC_PIN 8
-
-#elif defined(BOARD_olimex_stm32_h103)
-
- #define VCOM_ID_PRODUCT 0x0004
- #define USB_DISC_DEV GPIOC
- #define USB_DISC_PIN 11
-
-#else
-
-#error ("Sorry! the USB stack relies on LeafLabs board-specific " \
- "configuration right now. If you want, you can pretend you're one " \
- "of our boards; i.e., #define BOARD_maple, BOARD_maple_mini, or " \
- "BOARD_maple_native according to what matches your MCU best. " \
- "You should also take a look at libmaple/usb/descriptors.c; we make " \
- "some assumptions there that you probably won't like.")
+#warning ("Warning! The USB stack relies on LeafLabs board-specific " \
+ "configuration right now. If you want, you can pretend " \
+ "you're one of our boards; i.e., #define BOARD_maple, " \
+ "BOARD_maple_mini, etc. according to what matches your MCU " \
+ "best. You should also take a look at " \
+ "libmaple/usb/descriptors.c; " \
+ "we make some assumptions there that you probably won't like.")
#endif