summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-ast2500/recipes-phosphor/fru/default-fru/create_fru.py
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openbmc-mods/meta-ast2500/recipes-phosphor/fru/default-fru/create_fru.py')
-rwxr-xr-xmeta-openbmc-mods/meta-ast2500/recipes-phosphor/fru/default-fru/create_fru.py154
1 files changed, 0 insertions, 154 deletions
diff --git a/meta-openbmc-mods/meta-ast2500/recipes-phosphor/fru/default-fru/create_fru.py b/meta-openbmc-mods/meta-ast2500/recipes-phosphor/fru/default-fru/create_fru.py
deleted file mode 100755
index 7f11cbf2d..000000000
--- a/meta-openbmc-mods/meta-ast2500/recipes-phosphor/fru/default-fru/create_fru.py
+++ /dev/null
@@ -1,154 +0,0 @@
-#!/usr/bin/python3
-
-"""
-This script generates a default baseboard fru file.
-"""
-
-
-def create_fru(name):
- if len(name) > 16:
- raise Exception('Product Name Too Large: {}'.format(name))
-
- fill_char = ord('.')
- eof = 0xC1
-
- filename = '{}.fru.bin'.format(name)
- name = name.encode('ascii')
-
- name_len = (0x3 << 6) | len(name)
-
- # internal area
- internal = [0x01] + ([0] * 6) + [0x01]
-
- # chassis area
- chassis = [0x01, # Chassis Info Area Format Version Bit Fields
- 0xFF, # Chassis Info Area Length (in multiples of 8 bytes)
- 0x17] # Chassis Type (Main Server Chassis)
-
- fill_len = 18
-
- # Chassis Part Number
- chassis += [0x3 << 6 | fill_len] + ([fill_char] * fill_len)
-
- # Chassis Serial Number
- chassis += [0x3 << 6 | fill_len] + ([fill_char] * fill_len)
-
- fill_len = 31
- chassis += [0x3 << 6 | fill_len] + ([fill_char] * fill_len) # Info AM1
- chassis += [0x3 << 6 | fill_len] + ([fill_char] * fill_len) # Info AM2
-
- chassis.append(eof)
-
- chassis.append(0) # need room for checksum
-
- while len(chassis) % 8: # pad
- chassis.append(0)
-
- chassis[1] = int(len(chassis) / 8) # populate length
- chassis[-1] = (256 - sum(chassis)) & 0xFF # populate checksum
-
- # board area
- board = [0x1, # Board Info Area Format Version Bit Fields
- 0xFF, # Board Info Area Length (in multiples of 8 bytes)
- 0x0, # Language Code
- 0x0, # Mfg. Date/Time
- 0x0, # Mfg. Date/Time
- 0x0, # Mfg. Date/Time
- 0xD1] # Product Manufacturer Name Len
-
- corp = b'Intel Corporation'
- board += bytearray(corp) # Manufacturer Name
-
- board.append(name_len)
- board += bytearray(name) # Board Product Name
-
- fill_len = 12
- board += [0x3 << 6 | fill_len] + ([fill_char] * fill_len) # board SN
-
- fill_len = 10
- board += [0x3 << 6 | fill_len] + ([fill_char] * fill_len) # board PN
-
- version = b'FRU Ver 0.01'
-
- board += [0x3 << 6 | len(version)] # FRU File version ID string
- board += bytearray(version)
-
- board.append(eof)
-
- board.append(0) # need room for checksum
-
- while len(board) % 8:
- board.append(0)
-
- board[1] = int(len(board) / 8) # populate length
- board[-1] = (256 - sum(board)) & 0xFF # populate checksum
-
- # product area
- product = [1, # Product Info Area Format Version Bit Fields
- 0xFF, # Product Info Area Length (in multiples of 8 bytes)
- 0x0, # Language Code
- 0xD1] # Product Manufacturer Name Len
-
- product += bytearray(corp) # Manufacturer Name
-
- product.append(name_len) # Product Name Len
- product += bytearray(name) # Product Name
-
- fill_len = 10
-
- # Product Part Number
- product += [0x3 << 6 | fill_len] + ([fill_char] * fill_len)
-
- # Product Version
- fill_len = 20
- product += [0x3 << 6 | fill_len] + ([fill_char] * fill_len)
-
- # Product Serial Number
- fill_len = 12
- product += [0x3 << 6 | fill_len] + ([fill_char] * fill_len)
-
- # Asset Tag
- fill_len = 20
- product += [0x3 << 6 | fill_len] + ([fill_char] * fill_len)
-
- product.append(0xC0) # FRU File ID (Not used)
- product.append(eof)
-
- product.append(0) # need room for checksum
-
- while len(product) % 8:
- product.append(0)
-
- product[1] = int(len(product) / 8)
- product[-1] = (256 - sum(product)) & 0xFF
-
- header = [0x1]
- length = 1 # internal
- header.append(length)
- length += int(len(internal) / 8)
- header.append(length)
- length += int(len(chassis) / 8)
- header.append(length)
- length += int(len(board) / 8)
- header.append(length)
- header.append(0)
- header.append(0)
- header.append((256 - sum(header)) & 0xFF)
-
- result = header + internal + chassis + board + product
-
- while len(result) < 0x1FF:
- result.append(0)
-
- result = bytearray(result)
-
- # print(result)
-
- with open(filename, 'wb') as out:
- out.write(result)
-
-
-if __name__ == '__main__':
- product_name = input('Enter Product Name: ')
- create_fru(product_name)
-