diff options
Diffstat (limited to 'src/atsamd/chipid.c')
-rw-r--r-- | src/atsamd/chipid.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/atsamd/chipid.c b/src/atsamd/chipid.c index a4e378bcc..95aaf9bec 100644 --- a/src/atsamd/chipid.c +++ b/src/atsamd/chipid.c @@ -5,6 +5,7 @@ // This file may be distributed under the terms of the GNU GPLv3 license. #include "autoconf.h" // CONFIG_USB_SERIAL_NUMBER_CHIPID +#include "generic/canserial.h" // canserial_set_uuid #include "generic/usb_cdc.h" // usb_fill_serial #include "generic/usbstd.h" // usb_string_descriptor #include "sched.h" // DECL_INIT @@ -25,7 +26,7 @@ usbserial_get_serialid(void) void chipid_init(void) { - if (!CONFIG_USB_SERIAL_NUMBER_CHIPID) + if (!CONFIG_USB_SERIAL_NUMBER_CHIPID && !CONFIG_CANBUS) return; uint32_t id[4]; @@ -40,6 +41,11 @@ chipid_init(void) id[2] = *(uint32_t*)0x00806014; id[3] = *(uint32_t*)0x00806018; } - usb_fill_serial(&cdc_chipid.desc, ARRAY_SIZE(cdc_chipid.data), id); + + if (CONFIG_USB_SERIAL_NUMBER_CHIPID) + usb_fill_serial(&cdc_chipid.desc, ARRAY_SIZE(cdc_chipid.data), id); + + if (CONFIG_CANBUS) + canserial_set_uuid((void*)id, CHIP_UID_LEN); } DECL_INIT(chipid_init); |