Skip to content

Commit 016f89c

Browse files
Merge pull request #1064 from LedgerHQ/spo-fix-legacy-usb-pid
[io/usb] handle HAVE_LEGACY_PID option, disable os io use if present.
2 parents 6ff586a + 82db0f1 commit 016f89c

File tree

5 files changed

+32
-2
lines changed

5 files changed

+32
-2
lines changed

Makefile.rules

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,11 @@ endif
3434

3535
ifneq ($(IS_STANDARD_APP),1)
3636
ifneq ($(DISABLE_OS_IO_STACK_USE), 1)
37+
ifeq (,$(filter $(DEFINES),HAVE_LEGACY_PID))
3738
DEFINES += USE_OS_IO_STACK
3839
endif
3940
endif
41+
endif
4042

4143
define uniq =
4244
$(eval seen :=)

Makefile.standard_app

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,10 @@ endif
127127
# OS IO STACK USE #
128128
#####################################################################
129129
ifneq ($(DISABLE_OS_IO_STACK_USE), 1)
130+
ifeq (,$(filter $(DEFINES),HAVE_LEGACY_PID))
130131
DEFINES += USE_OS_IO_STACK
131132
endif
133+
endif
132134

133135
#####################################################################
134136
# STANDARD DEFINES #

io_legacy/src/os_io_legacy.c

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,22 @@ void io_seproxyhal_init(void)
253253
os_io_init_t init_io;
254254

255255
io_os_legacy_apdu_type = APDU_TYPE_NONE;
256-
init_io.usb.pid = 0;
256+
#ifdef HAVE_LEGACY_PID
257+
#if defined(TARGET_NANOX)
258+
init_io.usb.pid = USBD_LEDGER_INVERTED_PRODUCT_NANOX;
259+
#endif // TARGET_NANOX
260+
#if defined(TARGET_NANOS2)
261+
init_io.usb.pid = USBD_LEDGER_INVERTED_PRODUCT_NANOS_PLUS;
262+
#endif // TARGET_NANOS2
263+
#if defined(TARGET_FATSTACKS) || defined(TARGET_STAX)
264+
init_io.usb.pid = USBD_LEDGER_INVERTED_PRODUCT_STAX;
265+
#endif // TARGET_FATSTACKS || TARGET_STAX
266+
#if defined(TARGET_FLEX)
267+
init_io.usb.pid = USBD_LEDGER_INVERTED_PRODUCT_FLEX;
268+
#endif // TARGET_FLEX
269+
#else // ! HAVE_LEGACY_PID
270+
init_io.usb.pid = 0;
271+
#endif // ! HAVE_LEGACY_PID
257272
init_io.usb.vid = 0;
258273
init_io.usb.class_mask = 0;
259274
memset(init_io.usb.name, 0, sizeof(init_io.usb.name));

lib_stusb/include/usbd_ledger.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,16 @@ typedef enum {
3434
USBD_LEDGER_PRODUCT_FLEX = 0x7000,
3535
} usbd_ledger_product_e;
3636

37+
typedef enum {
38+
USBD_LEDGER_INVERTED_PRODUCT_BLUE = 0x0000,
39+
USBD_LEDGER_INVERTED_PRODUCT_NANOS = 0x0001,
40+
USBD_LEDGER_INVERTED_PRODUCT_HW2 = 0x0003,
41+
USBD_LEDGER_INVERTED_PRODUCT_NANOX = 0x0004,
42+
USBD_LEDGER_INVERTED_PRODUCT_NANOS_PLUS = 0x0005,
43+
USBD_LEDGER_INVERTED_PRODUCT_STAX = 0x0006,
44+
USBD_LEDGER_INVERTED_PRODUCT_FLEX = 0x0007,
45+
} usbd_ledger_inverted_product_e;
46+
3747
typedef enum {
3848
USBD_LEDGER_CLASS_HID = 0x0001,
3949
USBD_LEDGER_CLASS_HID_KBD = 0x0002,

lib_stusb/src/usbd_ledger.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,8 @@ void USBD_LEDGER_start(void)
489489

490490
if ((usbd_ledger_data.state == USBD_LEDGER_STATE_INITIALIZED)
491491
|| (usbd_ledger_data.classes != usbd_ledger_init_data.class_mask)
492-
|| (usbd_ledger_init_data.vid && (usbd_ledger_data.vid != usbd_ledger_init_data.vid))) {
492+
|| (usbd_ledger_init_data.vid && (usbd_ledger_data.vid != usbd_ledger_init_data.vid))
493+
|| (usbd_ledger_init_data.pid && (usbd_ledger_data.pid != usbd_ledger_init_data.pid))) {
493494
// First time USB is started
494495
// or wanted classes have changed
495496
// or vendor ID has changed

0 commit comments

Comments
 (0)