diff options
author | Tom Hughes <tomhughes@chromium.org> | 2022-09-21 14:08:36 -0700 |
---|---|---|
committer | Tom Hughes <tomhughes@chromium.org> | 2022-09-22 12:59:38 -0700 |
commit | c453fd704268ef72de871b0c5ac7a989de662334 (patch) | |
tree | fcf6ce5810f9ff9e3c8cce434812dd75492269ed /chip/stm32/usb.c | |
parent | 6c1587ca70f558b4f96b3f0b18ad8b027d3ba99d (diff) | |
parent | 28712dae9d7ed1e694f7622cc083afa71090d4d5 (diff) | |
download | chrome-ec-c453fd704268ef72de871b0c5ac7a989de662334.tar.gz |
Merge remote-tracking branch cros/main into firmware-fpmcu-dartmonkey-releasefirmware-fpmcu-dartmonkey-release
Generated by: ./util/update_release_branch.py --board dartmonkey --relevant_paths_file
./util/fingerprint-relevant-paths.txt firmware-fpmcu-dartmonkey-release
Relevant changes:
git log --oneline 6c1587ca70..28712dae9d -- board/nocturne_fp
board/dartmonkey common/fpsensor docs/fingerprint driver/fingerprint
util/getversion.sh
ded9307b79 util/getversion.sh: Fix version when not in a git repo
956055e692 board: change Google USB vendor info
71b2ef709d Update license boilerplate text in source code files
33e11afda0 Revert "fpsensor: Build fpsensor source file with C++"
c8d0360723 fpsensor: Build fpsensor source file with C++
bc113abd53 fpsensor: Fix g++ compiler error
150a58a0dc fpsensor: Fix fp_set_sensor_mode return type
b33b5ce85b fpsensor: Remove nested designators for C++ compatibility
2e864b2539 tree-wide: const-ify argv for console commands
56d8b360f9 test: Add test for get ikm failure when seed not set
3a3d6c3690 test: Add test for fpsensor trivial key failure
233e6bbd08 fpsensor_crypto: Abstract calls to hmac_SHA256
0a041b285b docs/fingerprint: Typo correction
c03fab67e2 docs/fingerprint: Fix the path of fputils.py
0b5d4baf5a util/getversion.sh: Fix empty file list handling
6e128fe760 FPMCU dev board environment with Satlab
3eb29b6aa5 builtin: Move ssize_t to sys/types.h
345d62ebd1 docs/fingerprint: Update power numbers for latest dartmonkey release
c25ffdb316 common: Conditionally support printf %l and %i modifiers
9a3c514b45 test: Add a test to check if the debugger is connected
54e603413f Move standard library tests to their own file
43fa6b4bf8 docs/fingerprint: Update power numbers for latest bloonchipper release
25536f9a84 driver/fingerprint/fpc/bep/fpc_sensor_spi.c: Format with clang-format
4face99efd driver/fingerprint/fpc/libfp/fpc_sensor_pal.h: Format with clang-format
738de2b575 trng: Rename rand to trng_rand
14b8270edd docs/fingerprint: Update dragonclaw power numbers
0b268f93d1 driver/fingerprint/fpc/libfp/fpc_private.c: Format with clang-format
f80da163f2 driver/fingerprint/fpc/libfp/fpc_private.h: Format with clang-format
a0751778f4 board/nocturne_fp/ro_workarounds.c: Format with clang-format
5e9c85c9b1 driver/fingerprint/fpc/libfp/fpc_sensor_pal.c: Format with clang-format
c1f9dd3cf8 driver/fingerprint/fpc/libfp/fpc_bio_algorithm.h: Format with clang-format
eb1e1bed8d driver/fingerprint/fpc/libfp/fpc1145_private.h: Format with clang-format
6e7b611821 driver/fingerprint/fpc/bep/fpc_bio_algorithm.h: Format with clang-format
e0589cd5e2 driver/fingerprint/fpc/bep/fpc1035_private.h: Format with clang-format
58f0246dbe board/nocturne_fp/board_ro.c: Format with clang-format
7905e556a0 common/fpsensor/fpsensor_crypto.c: Format with clang-format
21289d170c driver/fingerprint/fpc/bep/fpc1025_private.h: Format with clang-format
98a20f937e common/fpsensor/fpsensor_state.c: Format with clang-format
a2d255d8af common/fpsensor/fpsensor.c: Format with clang-format
84e53a65da board/nocturne_fp/board.h: Format with clang-format
73055eeb3f driver/fingerprint/fpc/bep/fpc_private.c: Format with clang-format
0f7b5cb509 common/fpsensor/fpsensor_private.h: Format with clang-format
1ceade6e65 driver/fingerprint/fpc/bep/fpc_private.h: Format with clang-format
dca9d74321 Revert "trng: Rename rand to trng_rand"
a6b0b3554f trng: Rename rand to trng_rand
28d0b75b70 third_party/boringssl: Remove unused header
BRANCH=None
BUG=b:244387210 b:242720240 b:215613183 b:242720910 b:236386294
BUG=b:234181908 b:244781166 b:234781655 b:234143158 b:234181908
BUG=b:237344361 b:236025198 b:234181908 b:180945056 chromium:1098010
BUG=b:246424843 b:234181908 b:131913998
TEST=`make -j buildall`
TEST=./util/run_device_tests.py --board dartmonkey
Test "aes": PASSED
Test "cec": PASSED
Test "cortexm_fpu": PASSED
Test "crc": PASSED
Test "flash_physical": PASSED
Test "flash_write_protect": PASSED
Test "fpsensor_hw": PASSED
Test "fpsensor_spi_ro": PASSED
Test "fpsensor_spi_rw": PASSED
Test "fpsensor_uart_ro": PASSED
Test "fpsensor_uart_rw": PASSED
Test "mpu_ro": PASSED
Test "mpu_rw": PASSED
Test "mutex": PASSED
Test "pingpong": PASSED
Test "printf": PASSED
Test "queue": PASSED
Test "rollback_region0": PASSED
Test "rollback_region1": PASSED
Test "rollback_entropy": PASSED
Test "rtc": PASSED
Test "sha256": PASSED
Test "sha256_unrolled": PASSED
Test "static_if": PASSED
Test "stdlib": PASSED
Test "system_is_locked_wp_on": PASSED
Test "system_is_locked_wp_off": PASSED
Test "timer_dos": PASSED
Test "utils": PASSED
Test "utils_str": PASSED
Test "panic_data_dartmonkey_v2.0.2887": PASSED
Test "panic_data_nocturne_fp_v2.2.64": PASSED
Test "panic_data_nami_fp_v2.2.144": PASSED
Force-Relevant-Builds: all
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: I2c312583a709fedae8fe11d92c22328c3b634bc7
Diffstat (limited to 'chip/stm32/usb.c')
-rw-r--r-- | chip/stm32/usb.c | 130 |
1 files changed, 61 insertions, 69 deletions
diff --git a/chip/stm32/usb.c b/chip/stm32/usb.c index a1f60e8906..1c621a32b3 100644 --- a/chip/stm32/usb.c +++ b/chip/stm32/usb.c @@ -1,4 +1,4 @@ -/* Copyright 2013 The Chromium OS Authors. All rights reserved. +/* Copyright 2013 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ @@ -21,7 +21,7 @@ #include "usb_hw.h" /* Console output macro */ -#define CPRINTF(format, args...) cprintf(CC_USB, format, ## args) +#define CPRINTF(format, args...) cprintf(CC_USB, format, ##args) #ifdef CONFIG_USB_BOS /* v2.10 (vs 2.00) BOS Descriptor provided */ @@ -73,11 +73,11 @@ const struct usb_config_descriptor USB_CONF_DESC(conf) = { .bConfigurationValue = 1, .iConfiguration = USB_STR_VERSION, .bmAttributes = 0x80 /* Reserved bit */ -#ifdef CONFIG_USB_SELF_POWERED /* bus or self powered */ - | 0x40 +#ifdef CONFIG_USB_SELF_POWERED /* bus or self powered */ + | 0x40 #endif #ifdef CONFIG_USB_REMOTE_WAKEUP - | 0x20 + | 0x20 #endif , .bMaxPower = (CONFIG_USB_MAXPOWER_MA / 2), @@ -85,8 +85,7 @@ const struct usb_config_descriptor USB_CONF_DESC(conf) = { const uint8_t usb_string_desc[] = { 4, /* Descriptor size */ - USB_DT_STRING, - 0x09, 0x04 /* LangID = 0x0409: U.S. English */ + USB_DT_STRING, 0x09, 0x04 /* LangID = 0x0409: U.S. English */ }; #ifdef CONFIG_USB_MS_EXTENDED_COMPAT_ID_DESCRIPTOR @@ -95,7 +94,8 @@ const uint8_t usb_string_desc[] = { * descriptor is used by Windows OS to know to request a Windows Compatible ID * OS Descriptor so that Windows will load the proper WINUSB driver. */ -const void *const usb_ms_os_string_descriptor = {USB_MS_STRING_DESC("MSFT100")}; +const void *const usb_ms_os_string_descriptor = { USB_MS_STRING_DESC( + "MSFT100") }; /* * Extended Compat ID OS Feature descriptor. This descriptor is used by Windows @@ -125,7 +125,7 @@ struct stm32_endpoint btable_ep[USB_EP_COUNT] __aligned(8) __usb_btable; static usb_uint ep0_buf_tx[USB_MAX_PACKET_SIZE / 2] __usb_ram; static usb_uint ep0_buf_rx[USB_MAX_PACKET_SIZE / 2] __usb_ram; -#define EP0_BUF_TX_SRAM_ADDR ((void *) usb_sram_addr(ep0_buf_tx)) +#define EP0_BUF_TX_SRAM_ADDR ((void *)usb_sram_addr(ep0_buf_tx)) static int set_addr; /* remaining size of descriptor data to transfer */ @@ -142,10 +142,10 @@ static int remote_wakeup_enabled; void usb_read_setup_packet(usb_uint *buffer, struct usb_setup_packet *packet) { packet->bmRequestType = buffer[0] & 0xff; - packet->bRequest = buffer[0] >> 8; - packet->wValue = buffer[1]; - packet->wIndex = buffer[2]; - packet->wLength = buffer[3]; + packet->bRequest = buffer[0] >> 8; + packet->wValue = buffer[1]; + packet->wIndex = buffer[2]; + packet->wLength = buffer[3]; } struct usb_descriptor_patch { @@ -155,8 +155,8 @@ struct usb_descriptor_patch { static struct usb_descriptor_patch desc_patches[USB_DESC_PATCH_COUNT]; -void set_descriptor_patch(enum usb_desc_patch_type type, - const void *address, uint16_t data) +void set_descriptor_patch(enum usb_desc_patch_type type, const void *address, + uint16_t data) { desc_patches[type].address = address; desc_patches[type].data = data; @@ -176,7 +176,8 @@ void *memcpy_to_usbram_ep0_patch(const void *src, size_t n) continue; memcpy_to_usbram((void *)(usb_sram_addr(ep0_buf_tx) + offset), - &desc_patches[i].data, sizeof(desc_patches[i].data)); + &desc_patches[i].data, + sizeof(desc_patches[i].data)); } return ret; @@ -246,7 +247,7 @@ static void ep0_rx(void) #ifdef CONFIG_USB_MS_EXTENDED_COMPAT_ID_DESCRIPTOR if (b_req == USB_MS_STRING_DESC_VENDOR_CODE && - w_index == USB_MS_EXT_COMPATIBLE_ID_INDEX) { + w_index == USB_MS_EXT_COMPATIBLE_ID_INDEX) { ep0_send_descriptor((uint8_t *)&winusb_desc, winusb_desc.dwLength, 0); return; @@ -310,8 +311,9 @@ static void ep0_rx(void) default: /* unhandled descriptor */ goto unknown_req; } - ep0_send_descriptor(desc, len, type == USB_DT_CONFIGURATION ? - USB_DESC_SIZE : 0); + ep0_send_descriptor( + desc, len, + type == USB_DT_CONFIGURATION ? USB_DESC_SIZE : 0); } else if (req == (USB_DIR_IN | (USB_REQ_GET_STATUS << 8))) { uint16_t data = 0; /* Get status */ @@ -325,14 +327,14 @@ static void ep0_rx(void) memcpy_to_usbram(EP0_BUF_TX_SRAM_ADDR, (void *)&data, 2); btable_ep[0].tx_count = 2; STM32_TOGGLE_EP(0, EP_TX_RX_MASK, EP_TX_RX_VALID, - EP_STATUS_OUT /*null OUT transaction */); + EP_STATUS_OUT /*null OUT transaction */); } else if ((req & 0xff) == USB_DIR_OUT) { switch (req >> 8) { case USB_REQ_SET_FEATURE: case USB_REQ_CLEAR_FEATURE: #ifdef CONFIG_USB_REMOTE_WAKEUP if (ep0_buf_rx[1] == - USB_REQ_FEATURE_DEVICE_REMOTE_WAKEUP) { + USB_REQ_FEATURE_DEVICE_REMOTE_WAKEUP) { remote_wakeup_enabled = ((req >> 8) == USB_REQ_SET_FEATURE); btable_ep[0].tx_count = 0; @@ -407,13 +409,12 @@ static void ep0_event(enum usb_ep_event evt) if (evt != USB_EVENT_RESET) return; - STM32_USB_EP(0) = BIT(9) /* control EP */ | - (2 << 4) /* TX NAK */ | + STM32_USB_EP(0) = BIT(9) /* control EP */ | (2 << 4) /* TX NAK */ | (3 << 12) /* RX VALID */; btable_ep[0].tx_addr = usb_sram_addr(ep0_buf_tx); btable_ep[0].rx_addr = usb_sram_addr(ep0_buf_rx); - btable_ep[0].rx_count = 0x8000 | ((USB_MAX_PACKET_SIZE/32-1) << 10); + btable_ep[0].rx_count = 0x8000 | ((USB_MAX_PACKET_SIZE / 32 - 1) << 10); btable_ep[0].tx_count = 0; } USB_DECLARE_EP(0, ep0_tx, ep0_rx, ep0_event); @@ -473,8 +474,8 @@ static volatile int sof_received; static void usb_resume_deferred(void) { - uint32_t state = (STM32_USB_FNR & STM32_USB_FNR_RXDP_RXDM_MASK) - >> STM32_USB_FNR_RXDP_RXDM_SHIFT; + uint32_t state = (STM32_USB_FNR & STM32_USB_FNR_RXDP_RXDM_MASK) >> + STM32_USB_FNR_RXDP_RXDM_SHIFT; CPRINTF("RSMd %d %04x %d\n", state, STM32_USB_CNTR, sof_received); if (sof_received == 0 && (state == 2 || state == 3)) @@ -496,8 +497,8 @@ static void usb_resume(void) /* USB is in use again */ disable_sleep(SLEEP_MASK_USB_DEVICE); - state = (STM32_USB_FNR & STM32_USB_FNR_RXDP_RXDM_MASK) - >> STM32_USB_FNR_RXDP_RXDM_SHIFT; + state = (STM32_USB_FNR & STM32_USB_FNR_RXDP_RXDM_MASK) >> + STM32_USB_FNR_RXDP_RXDM_SHIFT; CPRINTF("RSM %d %04x\n", state, STM32_USB_CNTR); @@ -534,8 +535,7 @@ static volatile int usb_wake_done = 1; */ static volatile int esof_count; -__attribute__((weak)) -void board_usb_wake(void) +__attribute__((weak)) void board_usb_wake(void) { /* Side-band USB wake, do nothing by default. */ } @@ -598,8 +598,8 @@ void usb_wake(void) /* STM32_USB_CNTR can also be updated from interrupt context. */ interrupt_disable(); - STM32_USB_CNTR |= STM32_USB_CNTR_RESUME | - STM32_USB_CNTR_ESOFM | STM32_USB_CNTR_SOFM; + STM32_USB_CNTR |= STM32_USB_CNTR_RESUME | STM32_USB_CNTR_ESOFM | + STM32_USB_CNTR_SOFM; interrupt_enable(); /* Try side-band wake as well. */ @@ -654,8 +654,8 @@ static void usb_interrupt_handle_wake(uint16_t status) STM32_USB_CNTR &= ~STM32_USB_CNTR_RESUME; /* Then count down until state is resumed. */ - state = (STM32_USB_FNR & STM32_USB_FNR_RXDP_RXDM_MASK) - >> STM32_USB_FNR_RXDP_RXDM_SHIFT; + state = (STM32_USB_FNR & STM32_USB_FNR_RXDP_RXDM_MASK) >> + STM32_USB_FNR_RXDP_RXDM_SHIFT; /* * state 2, or receiving an SOF, means resume @@ -670,13 +670,13 @@ static void usb_interrupt_handle_wake(uint16_t status) STM32_USB_CNTR &= ~STM32_USB_CNTR_ESOFM; usb_wake_done = 1; if (!good) { - CPRINTF("wake error: cnt=%d state=%d\n", - esof_count, state); + CPRINTF("wake error: cnt=%d state=%d\n", esof_count, + state); usb_suspend(); return; } - CPRINTF("RSMOK%d %d\n", -esof_count, state); + CPRINTF("RSMOK%d %d\n", -esof_count, state); for (ep = 1; ep < USB_EP_COUNT; ep++) usb_ep_event[ep](USB_EVENT_DEVICE_RESUME); @@ -703,7 +703,7 @@ static void usb_interrupt(void) #ifdef CONFIG_USB_REMOTE_WAKEUP if (status & (STM32_USB_ISTR_ESOF | STM32_USB_ISTR_SOF) && - !usb_wake_done) + !usb_wake_done) usb_interrupt_handle_wake(status); #endif @@ -759,12 +759,10 @@ void usb_init(void) /* Enable interrupt handlers */ task_enable_irq(STM32_IRQ_USB_LP); /* set interrupts mask : reset/correct transfer/errors */ - STM32_USB_CNTR = STM32_USB_CNTR_CTRM | - STM32_USB_CNTR_PMAOVRM | + STM32_USB_CNTR = STM32_USB_CNTR_CTRM | STM32_USB_CNTR_PMAOVRM | STM32_USB_CNTR_ERRM | #ifdef CONFIG_USB_SUSPEND - STM32_USB_CNTR_WKUPM | - STM32_USB_CNTR_SUSPM | + STM32_USB_CNTR_WKUPM | STM32_USB_CNTR_SUSPM | #endif STM32_USB_CNTR_RESETM; @@ -809,10 +807,10 @@ int usb_is_enabled(void) void *memcpy_to_usbram(void *dest, const void *src, size_t n) { - int unaligned = (((uintptr_t) dest) & 1); - usb_uint *d = &__usb_ram_start[((uintptr_t) dest) / 2]; - uint8_t *s = (uint8_t *) src; - int i; + int unaligned = (((uintptr_t)dest) & 1); + usb_uint *d = &__usb_ram_start[((uintptr_t)dest) / 2]; + uint8_t *s = (uint8_t *)src; + int i; /* * Handle unaligned leading byte via read/modify/write. @@ -839,10 +837,10 @@ void *memcpy_to_usbram(void *dest, const void *src, size_t n) void *memcpy_from_usbram(void *dest, const void *src, size_t n) { - int unaligned = (((uintptr_t) src) & 1); - usb_uint const *s = &__usb_ram_start[((uintptr_t) src) / 2]; - uint8_t *d = (uint8_t *) dest; - int i; + int unaligned = (((uintptr_t)src) & 1); + usb_uint const *s = &__usb_ram_start[((uintptr_t)src) / 2]; + uint8_t *d = (uint8_t *)dest; + int i; if (unaligned && n) { *d = *s >> 8; @@ -923,7 +921,7 @@ static int usb_save_serial(const char *serialno) return rv; } -static int command_serialno(int argc, char **argv) +static int command_serialno(int argc, const char **argv) { struct usb_string_desc *sd = usb_serialno_desc; char buf[CONFIG_SERIALNO_LEN]; @@ -931,12 +929,10 @@ static int command_serialno(int argc, char **argv) int i; if (argc != 1) { - if ((strcasecmp(argv[1], "set") == 0) && - (argc == 3)) { + if ((strcasecmp(argv[1], "set") == 0) && (argc == 3)) { ccprintf("Saving serial number\n"); rv = usb_save_serial(argv[2]); - } else if ((strcasecmp(argv[1], "load") == 0) && - (argc == 2)) { + } else if ((strcasecmp(argv[1], "load") == 0) && (argc == 2)) { ccprintf("Loading serial number\n"); rv = usb_load_serial(); } else @@ -949,11 +945,10 @@ static int command_serialno(int argc, char **argv) return rv; } -DECLARE_CONSOLE_COMMAND(serialno, command_serialno, - "load/set [value]", - "Read and write USB serial number"); +DECLARE_CONSOLE_COMMAND(serialno, command_serialno, "load/set [value]", + "Read and write USB serial number"); -#endif /* CONFIG_USB_SERIALNO */ +#endif /* CONFIG_USB_SERIALNO */ #ifdef CONFIG_MAC_ADDR @@ -980,18 +975,16 @@ static int usb_save_mac_addr(const char *mac_addr) } } -static int command_macaddr(int argc, char **argv) +static int command_macaddr(int argc, const char **argv) { - const char* buf; + const char *buf; int rv = EC_SUCCESS; if (argc != 1) { - if ((strcasecmp(argv[1], "set") == 0) && - (argc == 3)) { + if ((strcasecmp(argv[1], "set") == 0) && (argc == 3)) { ccprintf("Saving MAC address\n"); rv = usb_save_mac_addr(argv[2]); - } else if ((strcasecmp(argv[1], "load") == 0) && - (argc == 2)) { + } else if ((strcasecmp(argv[1], "load") == 0) && (argc == 2)) { ccprintf("Loading MAC address\n"); } else { return EC_ERROR_INVAL; @@ -1006,8 +999,7 @@ static int command_macaddr(int argc, char **argv) return rv; } -DECLARE_CONSOLE_COMMAND(macaddr, command_macaddr, - "load/set [value]", - "Read and write MAC address"); +DECLARE_CONSOLE_COMMAND(macaddr, command_macaddr, "load/set [value]", + "Read and write MAC address"); -#endif /* CONFIG_MAC_ADDR */ +#endif /* CONFIG_MAC_ADDR */ |