parent
9f8f01dd5d
commit
23c5dc43a1
Binary file not shown.
@ -0,0 +1,68 @@ |
||||
eeprom = [ |
||||
0x50, # VID LSB (OpenMoko) |
||||
0x1d, # VID MSB (OpenMoko) |
||||
0x7a, # PID LSB |
||||
0x61, # PID MSB |
||||
0x32, # DID_LSB board revision (BCD format) |
||||
0x01, # DID_MSB board version (BCD format) |
||||
0b10010011, # CONFIG_BYTE_1: SELF_BUS_PWR = 1 (indicate self-powered, superseeded by DYNAMIC), reserved, HS_DISABLE = 0 (allow high speed), MTT_ENABLE = 1 (one TT per port), EOP_DISABLE = normal, CURRENT_SNS = Individual port-by-port, PORT_PWR = Individual port-by-port switching |
||||
0b10000000, # CONFIG_BYTE_2: DYNAMIC = Dynamic Auto-switching capable, Reserved, OC_TIMER = 00 = 0.1ms, COMPOUND = No, Reserved |
||||
0b000000011, # CONFIG_BYTE_3: PRTMAP_EN = Standard Mode, LED_MODE = Speed Indication Mode, STRING_EN = String Support Enabled |
||||
0x00, # NR_DEVICE = no non-removable devices |
||||
0x00, # PORT_DIS_SP = no port disable |
||||
0x00, # PORT_DIS_BP = no bus powered port disable |
||||
1, # MAX_PWR_SP = 2 mA |
||||
50, # MAX_PWR_BP = 100 mA (neede to charge all capacitor) |
||||
1, # HC_MAX_C_SP = MAX_PWR_SP |
||||
50, # HC_MAX_C_BP = MAX_PWR_BP |
||||
10, # POWER_ON_TIME = 20 ms |
||||
0x04, # LANG_ID_H = US |
||||
0x09, # LANG_ID_L = english |
||||
0, # MFR_STR_LEN will be encoded below |
||||
0, # PRD_STR_LEN will be encoded below |
||||
0, # SER_STR_LEN will be encoded below |
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # MFR_STR will be encoded below |
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # PRD_STR will be encoded below |
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # SER_STR will be encoded below |
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,# reserved |
||||
0x00, # BOOST_IOUT = no boost |
||||
0x00, # Boost_7:5 = no boost |
||||
0x00, # Boost_4:0 = no boost+ |
||||
0x00, # 0xf9 reserved (undocumented debug mode using LED pins) |
||||
0x00, # PRTSP = no port is swapped |
||||
0x00, # PRTR12 = no remap |
||||
0x00, # PRTR34 = no remap |
||||
0x00, # PRTR56 = no remap |
||||
0x00, # PRTR7 = no remap |
||||
0x00, # Status/Command (not used) |
||||
] |
||||
|
||||
# encode manufacturer |
||||
MANUFACTURER = "CuVoodoo" |
||||
MFR_STR_LEN = 0x13 |
||||
eeprom[MFR_STR_LEN] = MANUFACTURER.length |
||||
MFR_STR = 0x16 |
||||
MANUFACTURER_BYTES = MANUFACTURER.encode("UTF-16LE").unpack("C*") |
||||
eeprom[MFR_STR, MANUFACTURER_BYTES.length] = MANUFACTURER_BYTES |
||||
|
||||
# encode product |
||||
PRODUCT = "power USB hub" |
||||
PRD_STR_LEN = 0x14 |
||||
eeprom[PRD_STR_LEN] = PRODUCT.length |
||||
PRD_STR = 0x54 |
||||
PRODUCT_BYTES = PRODUCT.encode("UTF-16LE").unpack("C*") |
||||
eeprom[PRD_STR, PRODUCT_BYTES.length] = PRODUCT_BYTES |
||||
|
||||
# encode serial |
||||
SERIAL = "2022061601" |
||||
SER_STR_LEN = 0x15 |
||||
eeprom[SER_STR_LEN] = SERIAL.length |
||||
SER_STR = 0x92 |
||||
SERIAL_BYTES = SERIAL.encode("UTF-16LE").unpack("C*") |
||||
eeprom[SER_STR, SERIAL_BYTES.length] = SERIAL_BYTES |
||||
|
||||
# output epprom |
||||
raise "EEPROM length not 256" unless eeprom.length == 256 |
||||
File.open("eeprom.bin", "wb") do |file| |
||||
file.write eeprom.pack("C*") |
||||
end |
Loading…
Reference in new issue