From 9e3c80a3ae38c111c138aa9e7c70f1abb5d1424f Mon Sep 17 00:00:00 2001 From: Marti Bolivar Date: Wed, 15 Jun 2011 16:29:19 -0400 Subject: 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 --- libmaple/usb/usb.c | 10 +++++----- libmaple/usb/usb.h | 5 +++-- libmaple/usb/usb_config.h | 42 ++++++++++-------------------------------- 3 files changed, 18 insertions(+), 39 deletions(-) (limited to 'libmaple/usb') 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 -- cgit v1.2.3