diff options
author | Stefan Agner <stefan.agner@toradex.com> | 2014-12-19 13:54:40 +0100 |
---|---|---|
committer | Stefan Agner <stefan.agner@toradex.com> | 2014-12-19 13:54:40 +0100 |
commit | f7e57f71da1eecbf1ac28339868d15492c929925 (patch) | |
tree | c7b6cf430f5bbc893a5f230f6695a387c536062f /board/toradex/common/configblock.c | |
parent | d69e7bbceb14e09f0af2cddeb68ee5734a1c2d45 (diff) |
colibri_vf: set USB vendor and product ID when using DFUColibri_VF_LinuxImageV2.3Beta5_20141219Colibri_T30_LinuxImageV2.3Beta5_20141219Apalis_T30_LinuxImageV2.3Beta5_20141219
Set USB vendor and product ID of the module when using DFU. This
allows to identify the module over USB and act accordingly if
necessary (e.g. flash different version or root filesystem or
similar use cases).
Also the serial number of the USB device is visible by using the
lsusb utility:
$ lsusb -d 1b67: -v
Bus 002 Device 092: ID 1b67:0018
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 2 Communications
bDeviceSubClass 2 Abstract (modem)
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x1b67
idProduct 0x0018
bcdDevice 2.21
iManufacturer 1 Toradex
iProduct 2 USB download gadget
iSerial 3 4799890
...
Diffstat (limited to 'board/toradex/common/configblock.c')
-rw-r--r-- | board/toradex/common/configblock.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/board/toradex/common/configblock.c b/board/toradex/common/configblock.c index 0d333d5a67b..7843e0aa8bf 100644 --- a/board/toradex/common/configblock.c +++ b/board/toradex/common/configblock.c @@ -186,4 +186,33 @@ err: config_block = NULL; return err; } + +void get_board_serial_char(char *serialnr) +{ + unsigned int serial = 0; + unsigned int serial_offset = 11; + + if (config_block == NULL) { + strcpy(serialnr, "UNKNOWN"); + return; + } + + /* Get MAC address from config block */ + memcpy(&serial, config_block + serial_offset, 3); + serial = ntohl(serial); + serial >>= 8; + + sprintf(serialnr, "%u", serial); +} + +void get_board_product_number(unsigned short *prodnr) +{ + unsigned int prodnr_offset = 25; + + if (config_block == NULL) + return; + + memcpy(prodnr, config_block + prodnr_offset, 2); + *prodnr = ntohs(*prodnr); +} #endif /* CONFIG_TRDX_CFG_BLOCK */ |