xilinx: fru: Replace spaces with \0 in detected name
authorMichal Simek <michal.simek@xilinx.com>
Thu, 12 Aug 2021 09:03:49 +0000 (11:03 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Thu, 26 Aug 2021 06:14:42 +0000 (08:14 +0200)
FRU spec expected \0 for unused symbols but unfortunately a lot of boards
are using spaces instead of \0. That's why after saving it to desc->name
name is checked again and all spaces are converted to \0. This will ensure
that names can be used for string manipulations like concatenation.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
board/xilinx/common/board.c

index 90c87ba..1458b31 100644 (file)
@@ -168,7 +168,7 @@ static bool xilinx_detect_legacy(u8 *buffer)
 static int xilinx_read_eeprom_fru(struct udevice *dev, char *name,
                                  struct xilinx_board_description *desc)
 {
-       int ret, eeprom_size;
+       int i, ret, eeprom_size;
        u8 *fru_content;
 
        /* FIXME this is shortcut - if eeprom type is wrong it will fail */
@@ -207,6 +207,10 @@ static int xilinx_read_eeprom_fru(struct udevice *dev, char *name,
                sizeof(desc->manufacturer));
        strncpy(desc->name, (char *)fru_data.brd.product_name,
                sizeof(desc->name));
+       for (i = 0; i < sizeof(desc->name); i++) {
+               if (desc->name[i] == ' ')
+                       desc->name[i] = '\0';
+       }
        strncpy(desc->revision, (char *)fru_data.brd.rev,
                sizeof(desc->revision));
        strncpy(desc->serial, (char *)fru_data.brd.serial_number,