usb_cdc: Allow USB endpoint ids to be board specific

It's common for boards to have restrictions on the type of each
endpoint.  So, make it possible for the board to select the endpoint
ids for each endpoint.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2018-08-03 21:26:49 -04:00
parent f4910e119a
commit 635a199a47
5 changed files with 26 additions and 9 deletions

View File

@ -6,12 +6,13 @@
#include <string.h> // memmove
#include "board/pgm.h" // PROGMEM
#include "board/usb_cdc.h" // usb_notify_setup
#include "board/usb_cdc_ep.h" // USB_CDC_EP_BULK_IN
#include "byteorder.h" // cpu_to_le16
#include "command.h" // output
#include "generic/usbstd.h" // struct usb_device_descriptor
#include "generic/usbstd_cdc.h" // struct usb_cdc_header_descriptor
#include "sched.h" // sched_wake_task
#include "usb_cdc.h" // usb_notify_setup
// XXX - move to Kconfig
#define CONFIG_USB_VENDOR_ID 0x2341

View File

@ -3,17 +3,11 @@
#include <stdint.h> // uint_fast8_t
// endpoint sizes
enum {
USB_CDC_EP0_SIZE = 16,
// XXX - endpoint ids may need to changed per-board
USB_CDC_EP_ACM = 1,
USB_CDC_EP_ACM_SIZE = 8,
USB_CDC_EP_BULK_OUT = 2,
USB_CDC_EP_BULK_OUT_SIZE = 64,
USB_CDC_EP_BULK_IN = 5,
USB_CDC_EP_BULK_IN_SIZE = 64,
};

11
src/generic/usb_cdc_ep.h Normal file
View File

@ -0,0 +1,11 @@
#ifndef __GENERIC_USB_CDC_EP_H
#define __GENERIC_USB_CDC_EP_H
// Default USB endpoint ids
enum {
USB_CDC_EP_ACM = 1,
USB_CDC_EP_BULK_OUT = 2,
USB_CDC_EP_BULK_IN = 3,
};
#endif // usb_cdc_ep.h

10
src/lpc176x/usb_cdc_ep.h Normal file
View File

@ -0,0 +1,10 @@
#ifndef __LPC176X_USB_CDC_EP_H
#define __LPC176X_USB_CDC_EP_H
enum {
USB_CDC_EP_ACM = 1,
USB_CDC_EP_BULK_OUT = 2,
USB_CDC_EP_BULK_IN = 5,
};
#endif // usb_cdc_ep.h

View File

@ -6,11 +6,12 @@
#include <string.h> // memcpy
#include "LPC17xx.h" // LPC_SC
#include "board/usb_cdc.h" // usb_notify_setup
#include "byteorder.h" // cpu_to_le32
#include "command.h" // output
#include "generic/usb_cdc.h" // usb_notify_setup
#include "internal.h" // gpio_peripheral
#include "sched.h" // DECL_INIT
#include "usb_cdc_ep.h" // USB_CDC_EP_BULK_IN
// Internal endpoint addresses
#define EP0OUT 0x00