diff options
Diffstat (limited to 'cmd/sbc_harness')
-rw-r--r-- | cmd/sbc_harness/config/config.h | 7 | ||||
-rw-r--r-- | cmd/sbc_harness/config/tusb_config.h | 14 | ||||
-rw-r--r-- | cmd/sbc_harness/main.c | 10 | ||||
-rw-r--r-- | cmd/sbc_harness/usb_keyboard.c | 1 |
4 files changed, 17 insertions, 15 deletions
diff --git a/cmd/sbc_harness/config/config.h b/cmd/sbc_harness/config/config.h index 3a75c14..6d2ea89 100644 --- a/cmd/sbc_harness/config/config.h +++ b/cmd/sbc_harness/config/config.h @@ -68,6 +68,13 @@ /* USB KEYBOARD ***************************************************************/ +/** + * Which USB port to use for the Root Hub. + * + * The RP2040 only has 1 port, so it's gotta be port #0. + */ +#define CONFIG_USB_COMMON_RHPORT 0 + #define CONFIG_USB_COMMON_DEBUG 1 /* bool */ /* COROUTINE ******************************************************************/ diff --git a/cmd/sbc_harness/config/tusb_config.h b/cmd/sbc_harness/config/tusb_config.h index fc963ac..a27c841 100644 --- a/cmd/sbc_harness/config/tusb_config.h +++ b/cmd/sbc_harness/config/tusb_config.h @@ -36,18 +36,6 @@ extern "C" { #endif //-------------------------------------------------------------------- -// TinyUSB Device (TUD) initialization for rp2040-based boards -//-------------------------------------------------------------------- - -// Which USB port to use for the RootHub. -// The rp2040 only has 1 port, so it's gotta be port #0. -#define BOARD_TUD_RHPORT 0 - -// RHPort max operational speed. -// Use OPT_MODE_DEFAULT_SPEED for max speed supported by MCU. -#define BOARD_TUD_MAX_SPEED OPT_MODE_DEFAULT_SPEED - -//-------------------------------------------------------------------- // Configuration: common //-------------------------------------------------------------------- @@ -72,7 +60,7 @@ extern "C" { #define CFG_TUSB_MEM_ALIGN [[gnu::aligned(4)]] #define CFG_TUD_ENABLED 1 -#define CFG_TUD_MAX_SPEED BOARD_TUD_MAX_SPEED +#define CFG_TUD_MAX_SPEED OPT_MODE_DEFAULT_SPEED //-------------------------------------------------------------------- // Configuration: TinyUSB Device (TUD) diff --git a/cmd/sbc_harness/main.c b/cmd/sbc_harness/main.c index 4683c72..9eacc81 100644 --- a/cmd/sbc_harness/main.c +++ b/cmd/sbc_harness/main.c @@ -21,6 +21,8 @@ #include "usb_keyboard.h" +#define ARRAY_LEN(arr) (sizeof(arr)/sizeof((arr)[0])) + COROUTINE hello_world_cr(void *_chan) { const char *msg = "Hello world!\n"; usb_keyboard_rpc_t *chan = _chan; @@ -50,8 +52,11 @@ struct { struct rp2040_hwspi dev_spi; struct w5500 dev_w5500; usb_keyboard_rpc_t keyboard_chan; + uint16_t usb_serial[sizeof(uint64_t)*2]; /* UTF-16 */ } globals; +const char *hexdig = "0123456789ABCDEF"; + COROUTINE init_cr(void *) { cr_begin(); @@ -86,7 +91,10 @@ COROUTINE init_cr(void *) { flash_id24[0], flash_id24[1], flash_id24[2], }})); - usb_common_earlyinit(); + static_assert(sizeof(flash_id64)*2 == ARRAY_LEN(globals.usb_serial)); + for (size_t i = 0; i < ARRAY_LEN(globals.usb_serial); i++) + globals.usb_serial[i] = hexdig[(flash_id64 >> ((sizeof(flash_id64)*8)-((i+1)*4))) & 0xF]; + usb_common_earlyinit(globals.usb_serial, sizeof(globals.usb_serial)); usb_keyboard_init(); usb_common_lateinit(); diff --git a/cmd/sbc_harness/usb_keyboard.c b/cmd/sbc_harness/usb_keyboard.c index 637921e..f4816c1 100644 --- a/cmd/sbc_harness/usb_keyboard.c +++ b/cmd/sbc_harness/usb_keyboard.c @@ -24,7 +24,6 @@ static uint8_t kbd_ifc = 0; void usb_keyboard_init() { if (kbd_ifc) return; - usb_common_earlyinit(); kbd_ifc = usb_add_interface(cfgnum_std, TUD_HID_DESC_LEN, (uint8_t[]){ /* USB-HID input-only descriptor for inclusion in the config descriptor; consisting of 3 parts: |