mirror of
https://github.com/memtest86plus/memtest86plus.git
synced 2025-02-25 18:55:23 -06:00
parent
b12186b0aa
commit
2266151fe6
10
app/config.c
10
app/config.c
@ -73,7 +73,7 @@ static const char *cpu_mode_str[] = { "PAR", "SEQ", "RR " };
|
||||
|
||||
static uint16_t popup_save_buffer[POP_W * POP_H];
|
||||
|
||||
static bool smp_enabled = false;
|
||||
static bool smp_enabled = true;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Public Variables
|
||||
@ -93,9 +93,11 @@ cpu_state_t cpu_state[MAX_CPUS];
|
||||
bool enable_temperature = false;
|
||||
bool enable_trace = false;
|
||||
|
||||
bool pause_at_start = true;
|
||||
bool enable_sm = true;
|
||||
|
||||
power_save_t power_save = POWER_SAVE_HIGH;
|
||||
bool pause_at_start = false;
|
||||
|
||||
power_save_t power_save = POWER_SAVE_HIGH;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Private Functions
|
||||
@ -128,6 +130,8 @@ static void parse_option(const char *option, const char *params)
|
||||
smp_enabled = true;
|
||||
} else if (strncmp(option, "trace", 6) == 0) {
|
||||
enable_trace = true;
|
||||
} else if (strncmp(option, "nosm", 5) == 0) {
|
||||
enable_sm = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -48,6 +48,8 @@ extern cpu_state_t cpu_state[MAX_CPUS];
|
||||
extern bool enable_temperature;
|
||||
extern bool enable_trace;
|
||||
|
||||
extern bool enable_sm;
|
||||
|
||||
extern bool pause_at_start;
|
||||
|
||||
extern power_save_t power_save;
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "keyboard.h"
|
||||
#include "pmem.h"
|
||||
#include "smbios.h"
|
||||
#include "smbus.h"
|
||||
#include "temperature.h"
|
||||
#include "tsc.h"
|
||||
|
||||
@ -136,16 +137,21 @@ void display_init(void)
|
||||
display_memory_size(1024 * ((num_pm_pages + 128) / 256));
|
||||
}
|
||||
|
||||
print_smbios_startup_info();
|
||||
|
||||
scroll_message_row = ROW_SCROLL_T;
|
||||
}
|
||||
|
||||
void post_display_init(void)
|
||||
{
|
||||
print_smbios_startup_info();
|
||||
print_smbus_startup_info();
|
||||
}
|
||||
|
||||
void display_start_run(void)
|
||||
{
|
||||
if (!enable_trace) {
|
||||
if (!enable_trace && !enable_sm) {
|
||||
clear_message_area();
|
||||
}
|
||||
|
||||
clear_screen_region(7, 47, 7, 57); // run time
|
||||
clear_screen_region(8, 47, 8, 57); // pass number
|
||||
clear_screen_region(8, 66, 8, SCREEN_WIDTH - 1); // error count
|
||||
|
@ -21,7 +21,7 @@
|
||||
#include "test.h"
|
||||
|
||||
#define ROW_MESSAGE_T 10
|
||||
#define ROW_MESSAGE_B (SCREEN_HEIGHT - 3) // Temp change
|
||||
#define ROW_MESSAGE_B (SCREEN_HEIGHT - 2)
|
||||
|
||||
#define ROW_SCROLL_T (ROW_MESSAGE_T + 2)
|
||||
#define ROW_SCROLL_B (SCREEN_HEIGHT - 2)
|
||||
@ -177,6 +177,8 @@ extern int scroll_message_row;
|
||||
|
||||
void display_init(void);
|
||||
|
||||
void post_display_init(void);
|
||||
|
||||
void display_start_run(void);
|
||||
|
||||
void display_start_pass(void);
|
||||
|
@ -92,6 +92,8 @@ static int test_stage = 0;
|
||||
// Public Variables
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
efi_info_t saved_efi_info;
|
||||
|
||||
// These are exposed in test.h.
|
||||
|
||||
uint8_t chunk_index[MAX_CPUS];
|
||||
@ -250,6 +252,8 @@ static void global_init(void)
|
||||
display_pinned_message(0, 0,"CPU Trace");
|
||||
display_pinned_message(1, 0,"--- ----------------------------------------------------------------------------");
|
||||
set_scroll_lock(true);
|
||||
} else if (enable_sm) {
|
||||
post_display_init();
|
||||
}
|
||||
|
||||
size_t program_size = (_stacks - _start) + BSP_STACK_SIZE + (num_enabled_cpus - 1) * AP_STACK_SIZE;
|
||||
@ -272,6 +276,11 @@ static void global_init(void)
|
||||
reboot();
|
||||
}
|
||||
|
||||
boot_params_t *boot_params = (boot_params_t *)boot_params_addr;
|
||||
if(boot_params->efi_info.loader_signature){
|
||||
saved_efi_info = boot_params->efi_info;
|
||||
}
|
||||
|
||||
start_barrier = smp_alloc_barrier(1);
|
||||
run_barrier = smp_alloc_barrier(1);
|
||||
|
||||
|
28
boot/efi.h
28
boot/efi.h
@ -50,6 +50,13 @@
|
||||
#define EFI_CONVENTIONAL_MEMORY 7
|
||||
#define EFI_ACPI_RECLAIM_MEMORY 9
|
||||
|
||||
/**
|
||||
* EFI_RESET_TYPE values.
|
||||
*/
|
||||
#define EFI_RESET_COLD 0
|
||||
#define EFI_RESET_WARM 1
|
||||
#define EFI_RESET_SHUTDOWN 2
|
||||
|
||||
/**
|
||||
* EFI_GRAPHICS_PIXEL_FORMAT values.
|
||||
*/
|
||||
@ -59,6 +66,7 @@
|
||||
#define PIXEL_BLT_ONLY 3
|
||||
|
||||
#define EFI_SYSTEM_TABLE_SIGNATURE UINT64_C(0x5453595320494249)
|
||||
#define EFI_RUNTIME_SERVICES_SIGNATURE UINT64_C(0x5652453544e5552)
|
||||
|
||||
#define efiapi __attribute__((ms_abi))
|
||||
|
||||
@ -195,6 +203,24 @@ typedef struct {
|
||||
void *create_event_ex;
|
||||
} efi_boot_services_t;
|
||||
|
||||
typedef struct {
|
||||
efi_table_header_t header;
|
||||
unsigned long get_time;
|
||||
unsigned long set_time;
|
||||
unsigned long get_wakeup_time;
|
||||
unsigned long set_wakeup_time;
|
||||
unsigned long set_virtual_address_map;
|
||||
unsigned long convert_pointer;
|
||||
unsigned long get_variable;
|
||||
unsigned long get_next_variable;
|
||||
unsigned long set_variable;
|
||||
unsigned long get_next_high_mono_count;
|
||||
efi_status_t (efiapi *reset_system)(int, int, int);
|
||||
unsigned long update_capsule;
|
||||
unsigned long query_capsule_caps;
|
||||
unsigned long query_variable_info;
|
||||
} efi_runtime_services_t;
|
||||
|
||||
typedef struct {
|
||||
efi_guid_t guid;
|
||||
uint32_t table;
|
||||
@ -253,7 +279,7 @@ typedef struct {
|
||||
efi_simple_text_out_t *con_out;
|
||||
efi_handle_t std_err_handle;
|
||||
efi_simple_text_out_t *std_err;
|
||||
void *runtime_services;
|
||||
efi_runtime_services_t *runtime_services;
|
||||
efi_boot_services_t *boot_services;
|
||||
uintn_t num_config_tables;
|
||||
efi_config_table_t *config_tables;
|
||||
|
@ -52,6 +52,9 @@ static efi_system_table_t *sys_table = NULL;
|
||||
#define efi_call_bs(func, ...) \
|
||||
sys_table->boot_services->func(__VA_ARGS__)
|
||||
|
||||
#define efi_call_rs(func, ...) \
|
||||
sys_table->runtime_services->func(__VA_ARGS__)
|
||||
|
||||
#define efi_get_num_handles(size) \
|
||||
(int)((size) / sizeof(efi_handle_t))
|
||||
|
||||
|
@ -19,6 +19,7 @@ SYS_OBJS = system/cpuid.o \
|
||||
system/reloc.o \
|
||||
system/screen.o \
|
||||
system/smbios.o \
|
||||
system/smbus.o \
|
||||
system/smp.o \
|
||||
system/temperature.o \
|
||||
system/usbhcd.o \
|
||||
|
@ -19,6 +19,7 @@ SYS_OBJS = system/cpuid.o \
|
||||
system/reloc.o \
|
||||
system/screen.o \
|
||||
system/smbios.o \
|
||||
system/smbus.o \
|
||||
system/smp.o \
|
||||
system/temperature.o \
|
||||
system/usbhcd.o \
|
||||
|
@ -8,33 +8,67 @@
|
||||
// Released under version 2 of the Gnu Public License.
|
||||
// By Chris Brady
|
||||
|
||||
#include <stdint.h>
|
||||
#include "stddef.h"
|
||||
|
||||
#include "boot.h"
|
||||
#include "bootparams.h"
|
||||
#include "efi.h"
|
||||
|
||||
#include "io.h"
|
||||
|
||||
#include "hwctrl.h"
|
||||
#include "unistd.h"
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Public Functions
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
extern efi_info_t saved_efi_info;
|
||||
|
||||
static void efi_reset(void)
|
||||
{
|
||||
static efi_runtime_services_t *rs_table = NULL;
|
||||
|
||||
#ifdef __x86_64__
|
||||
if (saved_efi_info.loader_signature == EFI64_LOADER_SIGNATURE) {
|
||||
uintptr_t system_table_addr = ((uintptr_t)saved_efi_info.sys_tab_hi << 32) | saved_efi_info.sys_tab;
|
||||
if (system_table_addr != 0) {
|
||||
efi64_system_table_t *sys_table = (efi64_system_table_t *)system_table_addr;
|
||||
rs_table = (efi_runtime_services_t *)sys_table->runtime_services;
|
||||
rs_table->reset_system(EFI_RESET_COLD, 0, 0);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (saved_efi_info.loader_signature == EFI32_LOADER_SIGNATURE) {
|
||||
uintptr_t system_table_addr = saved_efi_info.sys_tab;
|
||||
if (system_table_addr != 0) {
|
||||
efi32_system_table_t *sys_table = (efi32_system_table_t *)system_table_addr;
|
||||
rs_table = (efi_runtime_services_t *)(uintptr_t)sys_table->runtime_services;
|
||||
rs_table->reset_system(EFI_RESET_COLD, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void reboot(void)
|
||||
{
|
||||
|
||||
if(saved_efi_info.loader_signature) {
|
||||
efi_reset();
|
||||
usleep(1000000);
|
||||
}
|
||||
|
||||
// Tell the BIOS to do a warm reboot.
|
||||
*((uint16_t *)0x472) = 0x1234;
|
||||
|
||||
// Pulse the system reset signal.
|
||||
outb(0xfe, 0x64);
|
||||
|
||||
|
||||
// If not working, use cf9 method after 100ms delay
|
||||
usleep(100000);
|
||||
usleep(15000);
|
||||
uint8_t cf9 = inb(0xcf9) & ~6;
|
||||
outb(cf9|2, 0xcf9); /* Request hard reset */
|
||||
outb(cf9|2, 0xcf9); // Request hard reset
|
||||
usleep(50);
|
||||
outb(cf9|6, 0xcf9); /* Actually do the reset */
|
||||
outb(cf9|6, 0xcf9); // Actually do the reset
|
||||
usleep(50);
|
||||
|
||||
}
|
||||
|
||||
void floppy_off()
|
||||
|
984
system/jedec_id.h
Normal file
984
system/jedec_id.h
Normal file
@ -0,0 +1,984 @@
|
||||
/* MemTest86+ V5 Specific code (GPL V2.0)
|
||||
* By Samuel DEMEULEMEESTER, sdemeule@memtest.org
|
||||
* http://www.canardpc.com - http://www.memtest.org
|
||||
* ------------------------------------------------
|
||||
* Based on JEDEC JEP106-AG - January 2012
|
||||
*/
|
||||
|
||||
struct spd_jedec_manufacturer {
|
||||
unsigned cont_code;
|
||||
unsigned hex_byte;
|
||||
char *name;
|
||||
};
|
||||
|
||||
static struct spd_jedec_manufacturer jep106[] = {
|
||||
{ 0, 0x01, "AMD"},
|
||||
{ 0, 0x02, "AMI"},
|
||||
{ 0, 0x83, "Fairchild"},
|
||||
{ 0, 0x04, "Fujitsu"},
|
||||
// { 0, 0x85, "GTE"},
|
||||
{ 0, 0x86, "Harris"},
|
||||
{ 0, 0x07, "Hitachi"},
|
||||
{ 0, 0x08, "Inmos"},
|
||||
{ 0, 0x89, "Intel"},
|
||||
{ 0, 0x8a, "I.T.T."},
|
||||
{ 0, 0x0b, "Intersil"},
|
||||
{ 0, 0x8c, "Monolithic Memories"},
|
||||
{ 0, 0x0d, "Mostek"},
|
||||
{ 0, 0x0e, "Freescale"},
|
||||
{ 0, 0x8f, "National"},
|
||||
{ 0, 0x10, "NEC"},
|
||||
{ 0, 0x91, "RCA"},
|
||||
{ 0, 0x92, "Raytheon"},
|
||||
{ 0, 0x13, "Conexant"},
|
||||
// { 0, 0x94, "Seeq"},
|
||||
{ 0, 0x15, "NXP"},
|
||||
{ 0, 0x16, "Synertek"},
|
||||
{ 0, 0x97, "Texas Instruments"},
|
||||
{ 0, 0x98, "Toshiba"},
|
||||
{ 0, 0x19, "Xicor"},
|
||||
{ 0, 0x1a, "Zilog"},
|
||||
// { 0, 0x9b, "Eurotechnique"},
|
||||
{ 0, 0x1c, "Mitsubishi"},
|
||||
{ 0, 0x9d, "Lucent (AT&T)"},
|
||||
// { 0, 0x9e, "Exel"},
|
||||
{ 0, 0x1f, "Atmel"},
|
||||
{ 0, 0x20, "SGS/Thomson"},
|
||||
// { 0, 0xa1, "Lattice Semi."},
|
||||
{ 0, 0xa2, "NCR"},
|
||||
// { 0, 0x23, "Wafer Scale Integration"},
|
||||
{ 0, 0xa4, "IBM"},
|
||||
{ 0, 0x25, "Tristar"},
|
||||
// { 0, 0x26, "Visic"},
|
||||
{ 0, 0xa7, "Intl. CMOS Technology"},
|
||||
// { 0, 0xa8, "SSSI"},
|
||||
{ 0, 0x29, "MicrochipTechnology"},
|
||||
// { 0, 0x2a, "Ricoh"},
|
||||
// { 0, 0xab, "VLSI"},
|
||||
{ 0, 0x2c, "Micron"},
|
||||
{ 0, 0xad, "Hynix"},
|
||||
{ 0, 0xae, "OKI Semiconductor"},
|
||||
// { 0, 0x2f, "ACTEL"},
|
||||
{ 0, 0xb0, "Sharp"},
|
||||
{ 0, 0x31, "Catalyst"},
|
||||
{ 0, 0x32, "Panasonic"},
|
||||
{ 0, 0xb3, "IDT"},
|
||||
{ 0, 0x34, "Cypress"},
|
||||
{ 0, 0xb5, "DEC"},
|
||||
{ 0, 0xb6, "LSI Logic"},
|
||||
// { 0, 0x37, "Zarlink (Plessey)"},
|
||||
{ 0, 0x38, "UTMC"},
|
||||
// { 0, 0xb9, "Thinking Machine"},
|
||||
{ 0, 0xba, "Thomson CSF"},
|
||||
// { 0, 0x3b, "Integrated CMOS (Vertex)"},
|
||||
// { 0, 0xbc, "Honeywell"},
|
||||
{ 0, 0x3d, "Tektronix"},
|
||||
// { 0, 0x3e, "Oracle"},
|
||||
// { 0, 0xbf, "Silicon Storage Technology"},
|
||||
{ 0, 0x40, "ProMos/Mosel"},
|
||||
{ 0, 0xc1, "Infineon"},
|
||||
// { 0, 0xc2, "Macronix"},
|
||||
{ 0, 0x43, "Xerox"},
|
||||
// { 0, 0xc4, "Plus Logic"},
|
||||
{ 0, 0x45, "SanDisk"},
|
||||
// { 0, 0x46, "Elan Circuit Tech."},
|
||||
// { 0, 0xc7, "European Silicon Str."},
|
||||
{ 0, 0xc8, "Apple Computer"},
|
||||
{ 0, 0x49, "Xilinx"},
|
||||
{ 0, 0x4a, "Compaq"},
|
||||
// { 0, 0xcb, "Protocol Engines"},
|
||||
// { 0, 0x4c, "SCI"},
|
||||
{ 0, 0xcd, "Seiko Instruments"},
|
||||
{ 0, 0xce, "Samsung"},
|
||||
// { 0, 0x4f, "I3 Design System"},
|
||||
// { 0, 0xd0, "Klic"},
|
||||
// { 0, 0x51, "Crosspoint Solutions"},
|
||||
// { 0, 0x52, "Alliance Semiconductor"},
|
||||
// { 0, 0xd3, "Tandem"},
|
||||
{ 0, 0x54, "Hewlett-Packard"},
|
||||
{ 0, 0xd5, "Integrated Silicon Solutions"},
|
||||
// { 0, 0xd6, "Brooktree"},
|
||||
// { 0, 0x57, "New Media"},
|
||||
// { 0, 0x58, "MHS Electronic"},
|
||||
// { 0, 0xd9, "Performance Semi."},
|
||||
{ 0, 0xda, "Winbond Electronic"},
|
||||
// { 0, 0x5b, "Kawasaki Steel"},
|
||||
// { 0, 0xdc, "Bright Micro"},
|
||||
// { 0, 0x5d, "TECMAR"},
|
||||
{ 0, 0x5e, "Exar"},
|
||||
// { 0, 0xdf, "PCMCIA"},
|
||||
{ 0, 0xe0, "LG"},
|
||||
// { 0, 0x61, "Northern Telecom"},
|
||||
{ 0, 0x62, "Sanyo"},
|
||||
// { 0, 0xe3, "Array Microsystems"},
|
||||
// { 0, 0x64, "Crystal Semiconductor"},
|
||||
{ 0, 0xe5, "Analog Devices"},
|
||||
// { 0, 0xe6, "PMC-Sierra"},
|
||||
// { 0, 0x67, "Asparix"},
|
||||
// { 0, 0x68, "Convex Computer"},
|
||||
// { 0, 0xe9, "Quality Semiconductor"},
|
||||
// { 0, 0xea, "Nimbus Technology"},
|
||||
// { 0, 0x6b, "Transwitch"},
|
||||
// { 0, 0xec, "Micronas (ITT Intermetall)"},
|
||||
{ 0, 0x6d, "Cannon"},
|
||||
// { 0, 0x6e, "Altera"},
|
||||
// { 0, 0xef, "NEXCOM"},
|
||||
// { 0, 0x70, "QUALCOMM"},
|
||||
{ 0, 0xf1, "Sony"},
|
||||
// { 0, 0xf2, "Cray Research"},
|
||||
// { 0, 0x73, "AMS(Austria Micro)"},
|
||||
// { 0, 0xf4, "Vitesse"},
|
||||
// { 0, 0x75, "Aster Electronics"},
|
||||
// { 0, 0x76, "Bay Networks (Synoptic)"},
|
||||
// { 0, 0xf7, "Zentrum/ZMD"},
|
||||
// { 0, 0xf8, "TRW"},
|
||||
// { 0, 0x79, "Thesys"},
|
||||
// { 0, 0x7a, "Solbourne Computer"},
|
||||
{ 0, 0xfb, "Allied-Signal"},
|
||||
{ 0, 0x7c, "Dialog"},
|
||||
{ 0, 0xfd, "Media Vision"},
|
||||
// { 0, 0xfe, "Numonyx"},
|
||||
{ 1, 0x01, "Cirrus Logic"},
|
||||
{ 1, 0x02, "National Instruments"},
|
||||
// { 1, 0x83, "ILC Data Device"},
|
||||
// { 1, 0x04, "Alcatel Mietec"},
|
||||
// { 1, 0x85, "Micro Linear"},
|
||||
// { 1, 0x86, "Univ. of NC"},
|
||||
// { 1, 0x07, "JTAG Technologies"},
|
||||
// { 1, 0x08, "BAE Systems (Loral)"},
|
||||
// { 1, 0x89, "Nchip"},
|
||||
// { 1, 0x8a, "Galileo Tech"},
|
||||
// { 1, 0x0b, "Bestlink Systems"},
|
||||
// { 1, 0x8c, "Graychip"},
|
||||
// { 1, 0x0d, "GENNUM"},
|
||||
// { 1, 0x0e, "VideoLogic"},
|
||||
// { 1, 0x8f, "Robert Bosch"},
|
||||
// { 1, 0x10, "Chip Express"},
|
||||
{ 1, 0x91, "DATARAM"},
|
||||
// { 1, 0x92, "United Microelectronics Corp."},
|
||||
// { 1, 0x13, "TCSI"},
|
||||
{ 1, 0x94, "Smart Modular"},
|
||||
// { 1, 0x15, "Hughes Aircraft"},
|
||||
// { 1, 0x16, "Lanstar Semiconductor"},
|
||||
// { 1, 0x97, "Qlogic"},
|
||||
{ 1, 0x98, "Kingston"},
|
||||
// { 1, 0x19, "Music Semi"},
|
||||
// { 1, 0x1a, "Ericsson Components"},
|
||||
// { 1, 0x9b, "SpaSE"},
|
||||
// { 1, 0x1c, "Eon Silicon Devices"},
|
||||
// { 1, 0x9d, "Programmable Micro Corp"},
|
||||
// { 1, 0x9e, "DoD"},
|
||||
// { 1, 0x1f, "Integ. Memories Tech."},
|
||||
// { 1, 0x20, "Corollary"},
|
||||
// { 1, 0xa1, "Dallas Semiconductor"},
|
||||
// { 1, 0xa2, "Omnivision"},
|
||||
// { 1, 0x23, "EIV(Switzerland)"},
|
||||
// { 1, 0xa4, "Novatel Wireless"},
|
||||
// { 1, 0x25, "Zarlink (Mitel)"},
|
||||
// { 1, 0x26, "Clearpoint"},
|
||||
// { 1, 0xa7, "Cabletron"},
|
||||
// { 1, 0xa8, "STEC (Silicon Tech)"},
|
||||
// { 1, 0x29, "Vanguard"},
|
||||
// { 1, 0x2a, "Hagiwara Sys-Com"},
|
||||
// { 1, 0xab, "Vantis"},
|
||||
// { 1, 0x2c, "Celestica"},
|
||||
// { 1, 0xad, "Century"},
|
||||
// { 1, 0xae, "Hal Computers"},
|
||||
// { 1, 0x2f, "Rohm Company"},
|
||||
// { 1, 0xb0, "Juniper Networks"},
|
||||
// { 1, 0x31, "Libit Signal Processing"},
|
||||
{ 1, 0x32, "Mushkin"},
|
||||
// { 1, 0xb3, "Tundra Semiconductor"},
|
||||
{ 1, 0x34, "Adaptec"},
|
||||
// { 1, 0xb5, "LightSpeed Semi."},
|
||||
// { 1, 0xb6, "ZSP Corp."},
|
||||
// { 1, 0x37, "AMIC Technology"},
|
||||
// { 1, 0x38, "Adobe Systems"},
|
||||
// { 1, 0xb9, "Dynachip"},
|
||||
{ 1, 0xba, "PNY"},
|
||||
// { 1, 0x3b, "Newport Digital"},
|
||||
// { 1, 0xbc, "MMC Networks"},
|
||||
// { 1, 0x3d, "T Square"},
|
||||
// { 1, 0x3e, "Seiko Epson"},
|
||||
// { 1, 0xbf, "Broadcom"},
|
||||
// { 1, 0x40, "Viking Components"},
|
||||
// { 1, 0xc1, "V3 Semiconductor"},
|
||||
// { 1, 0xc2, "Flextronics (Orbit Semiconductor)"},
|
||||
// { 1, 0x43, "Suwa Electronics"},
|
||||
{ 1, 0xc4, "Transmeta"},
|
||||
{ 1, 0x45, "Micron CMS"},
|
||||
// { 1, 0x46, "American Computer & Digital Components"},
|
||||
// { 1, 0xc7, "Enhance 3000"},
|
||||
{ 1, 0xc8, "Tower Semiconductor"},
|
||||
// { 1, 0x49, "CPU Design"},
|
||||
// { 1, 0x4a, "Price Point"},
|
||||
{ 1, 0xcb, "Maxim Integrated Product"},
|
||||
// { 1, 0x4c, "Tellabs"},
|
||||
// { 1, 0xcd, "Centaur Technology"},
|
||||
{ 1, 0xce, "Unigen"},
|
||||
{ 1, 0x4f, "Transcend"},
|
||||
{ 1, 0xd0, "Memory Card"},
|
||||
// { 1, 0x51, "CKD"},
|
||||
// { 1, 0x52, "Capital Instruments"},
|
||||
// { 1, 0xd3, "Aica Kogyo"},
|
||||
// { 1, 0x54, "Linvex Technology"},
|
||||
{ 1, 0xd5, "MSC"},
|
||||
// { 1, 0xd6, "AKM Company"},
|
||||
// { 1, 0x57, "Dynamem"},
|
||||
// { 1, 0x58, "NERA ASA"},
|
||||
// { 1, 0xd9, "GSI Technology"},
|
||||
{ 1, 0xda, "Dane-Elec"},
|
||||
// { 1, 0x5b, "Acorn Computers"},
|
||||
// { 1, 0xdc, "Lara Technology"},
|
||||
// { 1, 0x5d, "Oak Technology"},
|
||||
{ 1, 0x5e, "Itec Memory"},
|
||||
// { 1, 0xdf, "Tanisys Technology"},
|
||||
// { 1, 0xe0, "Truevision"},
|
||||
{ 1, 0x61, "Wintec"},
|
||||
// { 1, 0x62, "Super PC Memory"},
|
||||
// { 1, 0xe3, "MGV Memory"},
|
||||
// { 1, 0x64, "Galvantech"},
|
||||
// { 1, 0xe5, "Gadzoox Networks"},
|
||||
// { 1, 0xe6, "Multi Dimensional Cons."},
|
||||
// { 1, 0x67, "GateField"},
|
||||
{ 1, 0x68, "Integrated Memory System"},
|
||||
// { 1, 0xe9, "Triscend"},
|
||||
// { 1, 0xea, "XaQti"},
|
||||
// { 1, 0x6b, "Goldenram"},
|
||||
// { 1, 0xec, "Clear Logic"},
|
||||
// { 1, 0x6d, "Cimaron Communications"},
|
||||
// { 1, 0x6e, "Nippon Steel Semi. Corp."},
|
||||
// { 1, 0xef, "Advantage Memory"},
|
||||
// { 1, 0x70, "AMCC"},
|
||||
{ 1, 0xf1, "LeCroy"},
|
||||
// { 1, 0xf2, "Yamaha"},
|
||||
// { 1, 0x73, "Digital Microwave"},
|
||||
// { 1, 0xf4, "NetLogic Microsystems"},
|
||||
// { 1, 0x75, "MIMOS Semiconductor"},
|
||||
// { 1, 0x76, "Advanced Fibre"},
|
||||
// { 1, 0xf7, "BF Goodrich Data."},
|
||||
// { 1, 0xf8, "Epigram"},
|
||||
// { 1, 0x79, "Acbel Polytech"},
|
||||
{ 1, 0x7a, "Apacer Technology"},
|
||||
// { 1, 0xfb, "Admor Memory"},
|
||||
{ 1, 0x7c, "FOXCONN"},
|
||||
// { 1, 0xfd, "Quadratics Superconductor"},
|
||||
// { 1, 0xfe, "3COM"},
|
||||
// { 2, 0x01, "Camintonn"},
|
||||
// { 2, 0x02, "ISOA"},
|
||||
// { 2, 0x83, "Agate Semiconductor"},
|
||||
// { 2, 0x04, "ADMtek"},
|
||||
// { 2, 0x85, "HYPERTEC"},
|
||||
// { 2, 0x86, "Adhoc Technologies"},
|
||||
// { 2, 0x07, "MOSAID Technologies"},
|
||||
// { 2, 0x08, "Ardent Technologies"},
|
||||
// { 2, 0x89, "Switchcore"},
|
||||
// { 2, 0x8a, "Cisco Systems"},
|
||||
// { 2, 0x0b, "Allayer Technologies"},
|
||||
// { 2, 0x8c, "WorkX AG (Wichman)"},
|
||||
// { 2, 0x0d, "Oasis Semiconductor"},
|
||||
// { 2, 0x0e, "Novanet Semiconductor"},
|
||||
// { 2, 0x8f, "E-M Solutions"},
|
||||
// { 2, 0x10, "Power General"},
|
||||
// { 2, 0x91, "Advanced Hardware Arch."},
|
||||
// { 2, 0x92, "Inova Semiconductors"},
|
||||
// { 2, 0x13, "Telocity"},
|
||||
// { 2, 0x94, "Delkin Devices"},
|
||||
// { 2, 0x15, "Symagery Microsystems"},
|
||||
// { 2, 0x16, "C-Port"},
|
||||
// { 2, 0x97, "SiberCore Technologies"},
|
||||
// { 2, 0x98, "Southland Microsystems"},
|
||||
// { 2, 0x19, "Malleable Technologies"},
|
||||
// { 2, 0x1a, "Kendin Communications"},
|
||||
// { 2, 0x9b, "Great Technology Microcomputer"},
|
||||
// { 2, 0x1c, "Sanmina"},
|
||||
// { 2, 0x9d, "HADCO"},
|
||||
{ 2, 0x9e, "Corsair"},
|
||||
// { 2, 0x1f, "Actrans System"},
|
||||
// { 2, 0x20, "ALPHA Technologies"},
|
||||
// { 2, 0xa1, "Silicon Laboratories (Cygnal)"},
|
||||
// { 2, 0xa2, "Artesyn Technologies"},
|
||||
// { 2, 0x23, "Align Manufacturing"},
|
||||
// { 2, 0xa4, "Peregrine Semiconductor"},
|
||||
// { 2, 0x25, "Chameleon Systems"},
|
||||
// { 2, 0x26, "Aplus Flash Technology"},
|
||||
{ 2, 0xa7, "MIPS Technologies"},
|
||||
// { 2, 0xa8, "Chrysalis ITS"},
|
||||
// { 2, 0x29, "ADTEC"},
|
||||
{ 2, 0x2a, "Kentron Technologies"},
|
||||
// { 2, 0xab, "Win Technologies"},
|
||||
// { 2, 0x2c, "Tachyon Semiconductor (ASIC)"},
|
||||
// { 2, 0xad, "Extreme Packet Devices"},
|
||||
// { 2, 0xae, "RF Micro Devices"},
|
||||
{ 2, 0x2f, "Siemens AG"},
|
||||
// { 2, 0xb0, "Sarnoff"},
|
||||
// { 2, 0x31, "Itautec SA"},
|
||||
// { 2, 0x32, "Radiata"},
|
||||
// { 2, 0xb3, "Benchmark Elect. (AVEX)"},
|
||||
// { 2, 0x34, "Legend"},
|
||||
{ 2, 0xb5, "SpecTek"},
|
||||
// { 2, 0xb6, "Hi/fn"},
|
||||
// { 2, 0x37, "Enikia"},
|
||||
// { 2, 0x38, "SwitchOn Networks"},
|
||||
// { 2, 0xb9, "AANetcom"},
|
||||
// { 2, 0xba, "Micro Memory Bank"},
|
||||
{ 2, 0x3b, "ESS Technology"},
|
||||
// { 2, 0xbc, "Virata"},
|
||||
// { 2, 0x3d, "Excess Bandwidth"},
|
||||
// { 2, 0x3e, "West Bay Semiconductor"},
|
||||
// { 2, 0xbf, "DSP Group"},
|
||||
// { 2, 0x40, "Newport Communications"},
|
||||
// { 2, 0xc1, "Chip2Chip"},
|
||||
// { 2, 0xc2, "Phobos"},
|
||||
// { 2, 0x43, "Intellitech"},
|
||||
// { 2, 0xc4, "Nordic VLSI ASA"},
|
||||
// { 2, 0x45, "Ishoni Networks"},
|
||||
// { 2, 0x46, "Silicon Spice"},
|
||||
// { 2, 0xc7, "Alchemy Semiconductor"},
|
||||
{ 2, 0xc8, "Agilent Technologies"},
|
||||
// { 2, 0x49, "Centillium Communications"},
|
||||
// { 2, 0x4a, "W.L. Gore"},
|
||||
// { 2, 0xcb, "HanBit Electronics"},
|
||||
// { 2, 0x4c, "GlobeSpan"},
|
||||
// { 2, 0xcd, "Element 14"},
|
||||
// { 2, 0xce, "Pycon"},
|
||||
// { 2, 0x4f, "Saifun Semiconductors"},
|
||||
// { 2, 0xd0, "Sibyte,"},
|
||||
// { 2, 0x51, "MetaLink Technologies"},
|
||||
// { 2, 0x52, "Feiya Technology"},
|
||||
// { 2, 0xd3, "I & C Technology"},
|
||||
// { 2, 0x54, "Shikatronics"},
|
||||
// { 2, 0xd5, "Elektrobit"},
|
||||
// { 2, 0xd6, "Megic"},
|
||||
// { 2, 0x57, "Com-Tier"},
|
||||
// { 2, 0x58, "Malaysia Micro Solutions"},
|
||||
// { 2, 0xd9, "Hyperchip"},
|
||||
// { 2, 0xda, "Gemstone Communications"},
|
||||
// { 2, 0x5b, "Anadigm (Anadyne)"},
|
||||
// { 2, 0xdc, "3ParData"},
|
||||
// { 2, 0x5d, "Mellanox Technologies"},
|
||||
// { 2, 0x5e, "Tenx Technologies"},
|
||||
// { 2, 0xdf, "Helix AG"},
|
||||
// { 2, 0xe0, "Domosys"},
|
||||
// { 2, 0x61, "Skyup Technology"},
|
||||
// { 2, 0x62, "HiNT"},
|
||||
// { 2, 0xe3, "Chiaro"},
|
||||
{ 2, 0x64, "MDT"},
|
||||
// { 2, 0xe5, "Exbit Technology A/S"},
|
||||
// { 2, 0xe6, "Integrated Technology Express"},
|
||||
// { 2, 0x67, "AVED Memory"},
|
||||
// { 2, 0x68, "Legerity"},
|
||||
// { 2, 0xe9, "Jasmine Networks"},
|
||||
// { 2, 0xea, "Caspian Networks"},
|
||||
// { 2, 0x6b, "nCUBE"},
|
||||
// { 2, 0xec, "Silicon Access Networks"},
|
||||
// { 2, 0x6d, "FDK"},
|
||||
// { 2, 0x6e, "High Bandwidth Access"},
|
||||
// { 2, 0xef, "MultiLink Technology"},
|
||||
// { 2, 0x70, "BRECIS"},
|
||||
// { 2, 0xf1, "World Wide Packets"},
|
||||
// { 2, 0xf2, "APW"},
|
||||
// { 2, 0x73, "Chicory Systems"},
|
||||
// { 2, 0xf4, "Xstream Logic"},
|
||||
// { 2, 0x75, "Fast-Chip"},
|
||||
// { 2, 0x76, "Zucotto Wireless"},
|
||||
// { 2, 0xf7, "Realchip"},
|
||||
// { 2, 0xf8, "Galaxy Power"},
|
||||
// { 2, 0x79, "eSilicon"},
|
||||
// { 2, 0x7a, "Morphics Technology"},
|
||||
// { 2, 0xfb, "Accelerant Networks"},
|
||||
// { 2, 0x7c, "Silicon Wave"},
|
||||
// { 2, 0xfd, "SandCraft"},
|
||||
{ 2, 0xfe, "Elpida"},
|
||||
// { 3, 0x01, "Solectron"},
|
||||
{ 3, 0x02, "Optosys Technologies"},
|
||||
{ 3, 0x83, "Buffalo"},
|
||||
// { 3, 0x04, "TriMedia Technologies"},
|
||||
// { 3, 0x85, "Cyan Technologies"},
|
||||
// { 3, 0x86, "Global Locate"},
|
||||
// { 3, 0x07, "Optillion"},
|
||||
// { 3, 0x08, "Terago Communications"},
|
||||
// { 3, 0x89, "Ikanos Communications"},
|
||||
{ 3, 0x8a, "Princeton"},
|
||||
{ 3, 0x0b, "Nanya"},
|
||||
// { 3, 0x8c, "Elite Flash Storage"},
|
||||
// { 3, 0x0d, "Mysticom"},
|
||||
// { 3, 0x0e, "LightSand Communications"},
|
||||
{ 3, 0x8f, "ATI"},
|
||||
// { 3, 0x10, "Agere Systems"},
|
||||
// { 3, 0x91, "NeoMagic"},
|
||||
// { 3, 0x92, "AuroraNetics"},
|
||||
// { 3, 0x13, "Golden Empire"},
|
||||
{ 3, 0x94, "Mushkin"},
|
||||
// { 3, 0x15, "Tioga Technologies"},
|
||||
{ 3, 0x16, "Netlist"},
|
||||
// { 3, 0x97, "TeraLogic"},
|
||||
// { 3, 0x98, "Cicada Semiconductor"},
|
||||
{ 3, 0x19, "Centon"},
|
||||
{ 3, 0x1a, "Tyco Electronics"},
|
||||
// { 3, 0x9b, "Magis Works"},
|
||||
// { 3, 0x1c, "Zettacom"},
|
||||
// { 3, 0x9d, "Cogency Semiconductor"},
|
||||
// { 3, 0x9e, "Chipcon AS"},
|
||||
// { 3, 0x1f, "Aspex Technology"},
|
||||
// { 3, 0x20, "F5 Networks"},
|
||||
// { 3, 0xa1, "Programmable Silicon Solutions"},
|
||||
// { 3, 0xa2, "ChipWrights"},
|
||||
// { 3, 0x23, "Acorn Networks"},
|
||||
// { 3, 0xa4, "Quicklogic"},
|
||||
{ 3, 0x25, "Kingmax"},
|
||||
// { 3, 0x26, "BOPS"},
|
||||
// { 3, 0xa7, "Flasys"},
|
||||
// { 3, 0xa8, "BitBlitz Communications"},
|
||||
{ 3, 0x29, "eMemory Technology"},
|
||||
// { 3, 0x2a, "Procket Networks"},
|
||||
// { 3, 0xab, "Purple Ray"},
|
||||
// { 3, 0x2c, "Trebia Networks"},
|
||||
// { 3, 0xad, "Delta Electronics"},
|
||||
// { 3, 0xae, "Onex Communications"},
|
||||
// { 3, 0x2f, "Ample Communications"},
|
||||
{ 3, 0xb0, "Memory Experts"},
|
||||
// { 3, 0x31, "Astute Networks"},
|
||||
// { 3, 0x32, "Azanda Network Devices"},
|
||||
// { 3, 0xb3, "Dibcom"},
|
||||
// { 3, 0x34, "Tekmos"},
|
||||
// { 3, 0xb5, "API NetWorks"},
|
||||
// { 3, 0xb6, "Bay Microsystems"},
|
||||
// { 3, 0x37, "Firecron"},
|
||||
// { 3, 0x38, "Resonext Communications"},
|
||||
// { 3, 0xb9, "Tachys Technologies"},
|
||||
// { 3, 0xba, "Equator Technology"},
|
||||
// { 3, 0x3b, "Concept Computer"},
|
||||
// { 3, 0xbc, "SILCOM"},
|
||||
// { 3, 0x3d, "3Dlabs"},
|
||||
// { 3, 0x3e, "c’t Magazine"},
|
||||
// { 3, 0xbf, "Sanera Systems"},
|
||||
// { 3, 0x40, "Silicon Packets"},
|
||||
{ 3, 0xc1, "Viasystems Group"},
|
||||
{ 3, 0xc2, "Simtek"},
|
||||
// { 3, 0x43, "Semicon Devices Singapore"},
|
||||
// { 3, 0xc4, "Satron Handelsges"},
|
||||
// { 3, 0x45, "Improv Systems"},
|
||||
// { 3, 0x46, "INDUSYS"},
|
||||
// { 3, 0xc7, "Corrent"},
|
||||
// { 3, 0xc8, "Infrant Technologies"},
|
||||
// { 3, 0x49, "Ritek Corp"},
|
||||
// { 3, 0x4a, "empowerTel Networks"},
|
||||
// { 3, 0xcb, "Hypertec"},
|
||||
// { 3, 0x4c, "Cavium Networks"},
|
||||
{ 3, 0xcd, "PLX Technology"},
|
||||
// { 3, 0xce, "Massana Design"},
|
||||
// { 3, 0x4f, "Intrinsity"},
|
||||
// { 3, 0xd0, "Valence Semiconductor"},
|
||||
// { 3, 0x51, "Terawave Communications"},
|
||||
// { 3, 0x52, "IceFyre Semiconductor"},
|
||||
// { 3, 0xd3, "Primarion"},
|
||||
// { 3, 0x54, "Picochip Designs"},
|
||||
// { 3, 0xd5, "Silverback Systems"},
|
||||
{ 3, 0xd6, "Jade Star"},
|
||||
// { 3, 0x57, "Pijnenburg Securealink"},
|
||||
{ 3, 0x58, "takeMS"},
|
||||
// { 3, 0xd9, "Cambridge Silicon Radio"},
|
||||
{ 3, 0xda, "Swissbit"},
|
||||
// { 3, 0x5b, "Nazomi Communications"},
|
||||
// { 3, 0xdc, "eWave System"},
|
||||
// { 3, 0x5d, "Rockwell Collins"},
|
||||
// { 3, 0x5e, "Picocel (Paion)"},
|
||||
// { 3, 0xdf, "Alphamosaic"},
|
||||
// { 3, 0xe0, "Sandburst"},
|
||||
// { 3, 0x61, "SiCon Video"},
|
||||
// { 3, 0x62, "NanoAmp Solutions"},
|
||||
// { 3, 0xe3, "Ericsson Technology"},
|
||||
// { 3, 0x64, "PrairieComm"},
|
||||
{ 3, 0xe5, "Mitac International"},
|
||||
// { 3, 0xe6, "Layer N Networks"},
|
||||
// { 3, 0x67, "MtekVision (Atsana)"},
|
||||
// { 3, 0x68, "Allegro Networks"},
|
||||
// { 3, 0xe9, "Marvell Semiconductors"},
|
||||
// { 3, 0xea, "Netergy Microelectronic"},
|
||||
{ 3, 0x6b, "nVidia"},
|
||||
// { 3, 0xec, "Internet Machines"},
|
||||
// { 3, 0x6d, "Peak Electronics"},
|
||||
// { 3, 0x6e, "Litchfield Communication"},
|
||||
{ 3, 0xef, "Accton"},
|
||||
// { 3, 0x70, "Teradiant Networks"},
|
||||
// { 3, 0xf1, "Scaleo Chip"},
|
||||
// { 3, 0xf2, "Cortina Systems"},
|
||||
{ 3, 0x73, "RAM Components"},
|
||||
// { 3, 0xf4, "Raqia Networks"},
|
||||
// { 3, 0x75, "ClearSpeed"},
|
||||
// { 3, 0x76, "Matsushita Battery"},
|
||||
// { 3, 0xf7, "Xelerated"},
|
||||
// { 3, 0xf8, "SimpleTech"},
|
||||
{ 3, 0x79, "Utron"},
|
||||
// { 3, 0x7a, "Astec International"},
|
||||
// { 3, 0xfb, "AVM"},
|
||||
// { 3, 0x7c, "Redux Communications"},
|
||||
// { 3, 0xfd, "Dot Hill Systems"},
|
||||
{ 3, 0xfe, "TeraChip"},
|
||||
{ 4, 0x01, "T-RAM"},
|
||||
// { 4, 0x02, "Innovics Wireless"},
|
||||
// { 4, 0x83, "Teknovus"},
|
||||
// { 4, 0x04, "KeyEye Communications"},
|
||||
// { 4, 0x85, "Runcom Technologies"},
|
||||
// { 4, 0x86, "RedSwitch"},
|
||||
// { 4, 0x07, "Dotcast"},
|
||||
{ 4, 0x08, "Silicon Mountain Memory"},
|
||||
// { 4, 0x89, "Signia Technologies"},
|
||||
// { 4, 0x8a, "Pixim"},
|
||||
// { 4, 0x0b, "Galazar Networks"},
|
||||
// { 4, 0x8c, "White Electronic Designs"},
|
||||
// { 4, 0x0d, "Patriot Scientific"},
|
||||
// { 4, 0x0e, "Neoaxiom"},
|
||||
// { 4, 0x8f, "3Y Power Technology"},
|
||||
{ 4, 0x10, "Scaleo Chip"},
|
||||
// { 4, 0x91, "Potentia Power Systems"},
|
||||
// { 4, 0x92, "C-guys"},
|
||||
// { 4, 0x13, "Digital Communications Technology"},
|
||||
// { 4, 0x94, "Silicon-Based Technology"},
|
||||
// { 4, 0x15, "Fulcrum Microsystems"},
|
||||
// { 4, 0x16, "Positivo Informatica"},
|
||||
// { 4, 0x97, "XIOtech"},
|
||||
// { 4, 0x98, "PortalPlayer"},
|
||||
// { 4, 0x19, "Zhiying Software"},
|
||||
// { 4, 0x1a, "ParkerVision"},
|
||||
// { 4, 0x9b, "Phonex Broadband"},
|
||||
// { 4, 0x1c, "Skyworks Solutions"},
|
||||
// { 4, 0x9d, "Entropic Communications"},
|
||||
// { 4, 0x9e, "Pacific Force Technology"},
|
||||
// { 4, 0x1f, "Zensys A/S"},
|
||||
// { 4, 0x20, "Legend Silicon Corp."},
|
||||
// { 4, 0xa1, "Sci-worx"},
|
||||
// { 4, 0xa2, "SMSC (Standard Microsystems)"},
|
||||
{ 4, 0x23, "Renesas"},
|
||||
// { 4, 0xa4, "Raza Microelectronics"},
|
||||
// { 4, 0x25, "Phyworks"},
|
||||
// { 4, 0x26, "MediaTek"},
|
||||
// { 4, 0xa7, "Non-cents Productions"},
|
||||
// { 4, 0xa8, "US Modular"},
|
||||
// { 4, 0x29, "Wintegra"},
|
||||
// { 4, 0x2a, "Mathstar"},
|
||||
// { 4, 0xab, "StarCore"},
|
||||
// { 4, 0x2c, "Oplus Technologies"},
|
||||
// { 4, 0xad, "Mindspeed"},
|
||||
// { 4, 0xae, "Just Young Computer"},
|
||||
// { 4, 0x2f, "Radia Communications"},
|
||||
{ 4, 0xb0, "OCZ"},
|
||||
// { 4, 0x31, "Emuzed"},
|
||||
// { 4, 0x32, "LOGIC Devices"},
|
||||
// { 4, 0xb3, "Inphi"},
|
||||
// { 4, 0x34, "Quake Technologies"},
|
||||
// { 4, 0xb5, "Vixel"},
|
||||
// { 4, 0xb6, "SolusTek"},
|
||||
// { 4, 0x37, "Kongsberg Maritime"},
|
||||
// { 4, 0x38, "Faraday Technology"},
|
||||
{ 4, 0xb9, "Altium"},
|
||||
// { 4, 0xba, "Insyte"},
|
||||
{ 4, 0x3b, "ARM"},
|
||||
// { 4, 0xbc, "DigiVision"},
|
||||
// { 4, 0x3d, "Vativ Technologies"},
|
||||
// { 4, 0x3e, "Endicott Interconnect Technologies"},
|
||||
{ 4, 0xbf, "Pericom"},
|
||||
// { 4, 0x40, "Bandspeed"},
|
||||
// { 4, 0xc1, "LeWiz Communications"},
|
||||
// { 4, 0xc2, "CPU Technology"},
|
||||
{ 4, 0x43, "Ramaxel"},
|
||||
// { 4, 0xc4, "DSP Group"},
|
||||
// { 4, 0x45, "Axis Communications"},
|
||||
{ 4, 0x46, "Legacy Electronics"},
|
||||
// { 4, 0xc7, "Chrontel"},
|
||||
// { 4, 0xc8, "Powerchip Semiconductor"},
|
||||
// { 4, 0x49, "MobilEye Technologies"},
|
||||
{ 4, 0x4a, "Excel Semiconductor"},
|
||||
{ 4, 0xcb, "A-DATA"},
|
||||
// { 4, 0x4c, "VirtualDigm"},
|
||||
{ 4, 0xcd, "G.Skill"},
|
||||
// { 4, 0xce, "Quanta Computer"},
|
||||
// { 4, 0x4f, "Yield Microelectronics"},
|
||||
// { 4, 0xd0, "Afa Technologies"},
|
||||
{ 4, 0x51, "Kingbox"},
|
||||
// { 4, 0x52, "Ceva"},
|
||||
// { 4, 0xd3, "iStor Networks"},
|
||||
// { 4, 0x54, "Advance Modules"},
|
||||
{ 4, 0xd5, "Microsoft"},
|
||||
// { 4, 0xd6, "Open-Silicon"},
|
||||
// { 4, 0x57, "Goal Semiconductor"},
|
||||
// { 4, 0x58, "ARC International"},
|
||||
{ 4, 0xd9, "Simmtec"},
|
||||
// { 4, 0xda, "Metanoia"},
|
||||
// { 4, 0x5b, "Key Stream"},
|
||||
// { 4, 0xdc, "Lowrance Electronics"},
|
||||
// { 4, 0x5d, "Adimos"},
|
||||
// { 4, 0x5e, "SiGe Semiconductor"},
|
||||
// { 4, 0xdf, "Fodus Communications"},
|
||||
// { 4, 0xe0, "Credence Systems Corp."},
|
||||
// { 4, 0x61, "Genesis Microchip"},
|
||||
// { 4, 0x62, "Vihana"},
|
||||
// { 4, 0xe3, "WIS Technologies"},
|
||||
// { 4, 0x64, "GateChange Technologies"},
|
||||
// { 4, 0xe5, "High Density Devices AS"},
|
||||
// { 4, 0xe6, "Synopsys"},
|
||||
// { 4, 0x67, "Gigaram"},
|
||||
// { 4, 0x68, "Enigma Semiconductor"},
|
||||
// { 4, 0xe9, "Century Micro"},
|
||||
// { 4, 0xea, "Icera Semiconductor"},
|
||||
// { 4, 0x6b, "Mediaworks Integrated Systems"},
|
||||
// { 4, 0xec, "O’Neil Product Development"},
|
||||
// { 4, 0x6d, "Supreme Top Technology"},
|
||||
// { 4, 0x6e, "MicroDisplay"},
|
||||
{ 4, 0xef, "Team Group"},
|
||||
// { 4, 0x70, "Sinett"},
|
||||
{ 4, 0xf1, "Toshiba"},
|
||||
// { 4, 0xf2, "Tensilica"},
|
||||
// { 4, 0x73, "SiRF Technology"},
|
||||
// { 4, 0xf4, "Bacoc"},
|
||||
// { 4, 0x75, "SMaL Camera Technologies"},
|
||||
{ 4, 0x76, "Thomson SC"},
|
||||
// { 4, 0xf7, "Airgo Networks"},
|
||||
// { 4, 0xf8, "Wisair"},
|
||||
// { 4, 0x79, "SigmaTel"},
|
||||
// { 4, 0x7a, "Arkados"},
|
||||
// { 4, 0xfb, "Compete IT KG"},
|
||||
// { 4, 0x7c, "Eudar Technology"},
|
||||
// { 4, 0xfd, "Focus Enhancements"},
|
||||
// { 4, 0xfe, "Xyratex"},
|
||||
// { 5, 0x01, "Specular Networks"},
|
||||
{ 5, 0x02, "Patriot Memory"},
|
||||
// { 5, 0x83, "U-Chip Technology Corp."},
|
||||
// { 5, 0x04, "Silicon Optix"},
|
||||
// { 5, 0x85, "Greenfield Networks"},
|
||||
{ 5, 0x86, "CompuRAM"},
|
||||
// { 5, 0x07, "Stargen"},
|
||||
// { 5, 0x08, "NetCell"},
|
||||
// { 5, 0x89, "Excalibrus Technologies"},
|
||||
// { 5, 0x8a, "SCM Microsystems"},
|
||||
// { 5, 0x0b, "Xsigo Systems"},
|
||||
// { 5, 0x8c, "CHIPS & Systems"},
|
||||
// { 5, 0x0d, "Tier"},
|
||||
// { 5, 0x0e, "CWRL Labs"},
|
||||
// { 5, 0x8f, "Teradici"},
|
||||
// { 5, 0x10, "Gigaram"},
|
||||
// { 5, 0x91, "g2 Microsystems"},
|
||||
// { 5, 0x92, "PowerFlash Semiconductor"},
|
||||
// { 5, 0x13, "P.A. Semi"},
|
||||
{ 5, 0x94, "NovaTech"},
|
||||
// { 5, 0x15, "c2 Microsystems"},
|
||||
// { 5, 0x16, "Level5 Networks"},
|
||||
{ 5, 0x97, "COS Memory"},
|
||||
// { 5, 0x98, "Innovasic Semiconductor"},
|
||||
// { 5, 0x19, "02IC"},
|
||||
// { 5, 0x1a, "Tabula"},
|
||||
{ 5, 0x9b, "Crucial"},
|
||||
// { 5, 0x1c, "Chelsio Communications"},
|
||||
// { 5, 0x9d, "Solarflare Communications"},
|
||||
// { 5, 0x9e, "Xambala"},
|
||||
// { 5, 0x1f, "EADS Astrium"},
|
||||
// { 5, 0x20, "Terra Semiconductor"},
|
||||
// { 5, 0xa1, "Imaging Works"},
|
||||
// { 5, 0xa2, "Astute Networks"},
|
||||
// { 5, 0x23, "Tzero"},
|
||||
// { 5, 0xa4, "Emulex"},
|
||||
// { 5, 0x25, "Power-One"},
|
||||
// { 5, 0x26, "Pulse~LINK"},
|
||||
// { 5, 0xa7, "Hon Hai Precision Industry"},
|
||||
// { 5, 0xa8, "White Rock Networks"},
|
||||
// { 5, 0x29, "Telegent Systems USA"},
|
||||
// { 5, 0x2a, "Atrua Technologies"},
|
||||
// { 5, 0xab, "Acbel Polytech"},
|
||||
// { 5, 0x2c, "eRide"},
|
||||
{ 5, 0xad, "ULi"},
|
||||
// { 5, 0xae, "Magnum Semiconductor"},
|
||||
// { 5, 0x2f, "neoOne Technology"},
|
||||
// { 5, 0xb0, "Connex Technology"},
|
||||
// { 5, 0x31, "Stream Processors"},
|
||||
// { 5, 0x32, "Focus Enhancements"},
|
||||
// { 5, 0xb3, "Telecis Wireless"},
|
||||
// { 5, 0x34, "uNav Microelectronics"},
|
||||
// { 5, 0xb5, "Tarari"},
|
||||
// { 5, 0xb6, "Ambric"},
|
||||
// { 5, 0x37, "Newport Media"},
|
||||
// { 5, 0x38, "VMTS"},
|
||||
// { 5, 0xb9, "Enuclia Semiconductor"},
|
||||
// { 5, 0xba, "Virtium Technology"},
|
||||
// { 5, 0x3b, "Solid State System"},
|
||||
// { 5, 0xbc, "Kian Tech LLC"},
|
||||
// { 5, 0x3d, "Artimi"},
|
||||
{ 5, 0x3e, "PQI"},
|
||||
// { 5, 0xbf, "Avago Technologies"},
|
||||
// { 5, 0x40, "ADTechnology"},
|
||||
{ 5, 0xc1, "Sigma Designs"},
|
||||
// { 5, 0xc2, "SiCortex"},
|
||||
// { 5, 0x43, "Ventura Technology Group"},
|
||||
// { 5, 0xc4, "eASIC"},
|
||||
// { 5, 0x45, "M.H.S. SAS"},
|
||||
{ 5, 0x46, "MSI"},
|
||||
// { 5, 0xc7, "Rapport"},
|
||||
// { 5, 0xc8, "Makway International"},
|
||||
// { 5, 0x49, "Broad Reach Engineering"},
|
||||
// { 5, 0x4a, "Semiconductor Mfg Intl Corp"},
|
||||
// { 5, 0xcb, "SiConnect"},
|
||||
// { 5, 0x4c, "FCI USA"},
|
||||
// { 5, 0xcd, "Validity Sensors"},
|
||||
// { 5, 0xce, "Coney Technology"},
|
||||
// { 5, 0x4f, "Spans Logic"},
|
||||
// { 5, 0xd0, "Neterion"},
|
||||
{ 5, 0x51, "Qimonda"},
|
||||
// { 5, 0x52, "New Japan Radio"},
|
||||
// { 5, 0xd3, "Velogix"},
|
||||
// { 5, 0x54, "Montalvo Systems"},
|
||||
// { 5, 0xd5, "iVivity"},
|
||||
{ 5, 0xd6, "Walton Chaintech"},
|
||||
{ 5, 0x57, "AENEON"},
|
||||
// { 5, 0x58, "Lorom Industrial"},
|
||||
// { 5, 0xd9, "Radiospire Networks"},
|
||||
// { 5, 0xda, "Sensio Technologies"},
|
||||
// { 5, 0x5b, "Nethra Imaging"},
|
||||
{ 5, 0xdc, "Hexon"},
|
||||
// { 5, 0x5d, "CompuStocx (CSX)"},
|
||||
// { 5, 0x5e, "Methode Electronics"},
|
||||
// { 5, 0xdf, "Connect One"},
|
||||
// { 5, 0xe0, "Opulan Technologies"},
|
||||
// { 5, 0x61, "Septentrio NV"},
|
||||
{ 5, 0x62, "Goldenmars"},
|
||||
{ 5, 0xe3, "Kreton"},
|
||||
// { 5, 0x64, "Cochlear"},
|
||||
// { 5, 0xe5, "Altair Semiconductor"},
|
||||
// { 5, 0xe6, "NetEffect"},
|
||||
// { 5, 0x67, "Spansion"},
|
||||
// { 5, 0x68, "Taiwan Semiconductor Mfg"},
|
||||
// { 5, 0xe9, "Emphany Systems"},
|
||||
// { 5, 0xea, "ApaceWave Technologies"},
|
||||
// { 5, 0x6b, "Mobilygen"},
|
||||
// { 5, 0xec, "Tego"},
|
||||
// { 5, 0x6d, "Cswitch"},
|
||||
// { 5, 0x6e, "Haier (Beijing) IC Design"},
|
||||
// { 5, 0xef, "MetaRAM"},
|
||||
// { 5, 0x70, "Axel Electronics"},
|
||||
// { 5, 0xf1, "Tilera"},
|
||||
// { 5, 0xf2, "Aquantia"},
|
||||
// { 5, 0x73, "Vivace Semiconductor"},
|
||||
// { 5, 0xf4, "Redpine Signals"},
|
||||
// { 5, 0x75, "Octalica"},
|
||||
// { 5, 0x76, "InterDigital Communications"},
|
||||
{ 5, 0xf7, "Avant Technology"},
|
||||
{ 5, 0xf8, "Asrock"},
|
||||
// { 5, 0x79, "Availink"},
|
||||
// { 5, 0x7a, "Quartics"},
|
||||
// { 5, 0xfb, "Element CXI"},
|
||||
// { 5, 0x7c, "Innovaciones Microelectronicas"},
|
||||
// { 5, 0xfd, "VeriSilicon Microelectronics"},
|
||||
// { 5, 0xfe, "W5 Networks"},
|
||||
// { 6, 0x01, "MOVEKING"},
|
||||
// { 6, 0x02, "Mavrix Technology"},
|
||||
// { 6, 0x83, "CellGuide"},
|
||||
// { 6, 0x04, "Faraday Technology"},
|
||||
// { 6, 0x85, "Diablo Technologies"},
|
||||
// { 6, 0x86, "Jennic"},
|
||||
// { 6, 0x07, "Octasic"},
|
||||
{ 6, 0x08, "Molex"},
|
||||
// { 6, 0x89, "3Leaf Networks"},
|
||||
// { 6, 0x8a, "Bright Micron Technology"},
|
||||
// { 6, 0x0b, "Netxen"},
|
||||
// { 6, 0x8c, "NextWave Broadband"},
|
||||
// { 6, 0x0d, "DisplayLink"},
|
||||
// { 6, 0x0e, "ZMOS Technology"},
|
||||
// { 6, 0x8f, "Tec-Hill"},
|
||||
// { 6, 0x10, "Multigig"},
|
||||
// { 6, 0x91, "Amimon"},
|
||||
// { 6, 0x92, "Euphonic Technologies"},
|
||||
// { 6, 0x13, "BRN Phoenix"},
|
||||
// { 6, 0x94, "InSilica"},
|
||||
// { 6, 0x15, "Ember"},
|
||||
{ 6, 0x16, "Avexir"},
|
||||
// { 6, 0x97, "Echelon"},
|
||||
// { 6, 0x98, "Edgewater Computer Systems"},
|
||||
// { 6, 0x19, "XMOS Semiconductor"},
|
||||
// { 6, 0x1a, "GENUSION"},
|
||||
{ 6, 0x9b, "Memory Corp NV"},
|
||||
// { 6, 0x1c, "SiliconBlue Technologies"},
|
||||
// { 6, 0x9d, "Rambus"},
|
||||
// { 6, 0x9e, "Andes Technology"},
|
||||
// { 6, 0x1f, "Coronis Systems"},
|
||||
// { 6, 0x20, "Achronix Semiconductor"},
|
||||
// { 6, 0xa1, "Siano Mobile Silicon"},
|
||||
// { 6, 0xa2, "Semtech"},
|
||||
// { 6, 0x23, "Pixelworks"},
|
||||
// { 6, 0xa4, "Gaisler Research AB"},
|
||||
// { 6, 0x25, "Teranetics"},
|
||||
// { 6, 0x26, "Toppan Printing"},
|
||||
// { 6, 0xa7, "Kingxcon"},
|
||||
{ 6, 0xa8, "SiS"},
|
||||
// { 6, 0x29, "I-O Data Device"},
|
||||
// { 6, 0x2a, "NDS Americas"},
|
||||
// { 6, 0xab, "Solomon Systech Limited"},
|
||||
// { 6, 0x2c, "On Demand Microelectronics"},
|
||||
// { 6, 0xad, "Amicus Wireless"},
|
||||
// { 6, 0xae, "SMARDTV SNC"},
|
||||
// { 6, 0x2f, "Comsys Communication"},
|
||||
// { 6, 0xb0, "Movidia"},
|
||||
// { 6, 0x31, "Javad GNSS"},
|
||||
// { 6, 0x32, "Montage Technology Group"},
|
||||
{ 6, 0xb3, "Trident"},
|
||||
{ 6, 0x34, "Super Talent"},
|
||||
// { 6, 0xb5, "Optichron"},
|
||||
// { 6, 0xb6, "Future Waves UK"},
|
||||
// { 6, 0x37, "SiBEAM"},
|
||||
// { 6, 0x38, "Inicore,"},
|
||||
// { 6, 0xb9, "Virident Systems"},
|
||||
// { 6, 0xba, "M2000"},
|
||||
// { 6, 0x3b, "ZeroG Wireless"},
|
||||
{ 6, 0xbc, "Gingle"},
|
||||
// { 6, 0x3d, "Space Micro"},
|
||||
// { 6, 0x3e, "Wilocity"},
|
||||
// { 6, 0xbf, "Novafora, Ic."},
|
||||
// { 6, 0x40, "iKoa"},
|
||||
{ 6, 0xc1, "ASint"},
|
||||
{ 6, 0xc2, "Ramtron"},
|
||||
// { 6, 0x43, "Plato Networks"},
|
||||
// { 6, 0xc4, "IPtronics AS"},
|
||||
// { 6, 0x45, "Infinite-Memories"},
|
||||
// { 6, 0x46, "Parade Technologies"},
|
||||
// { 6, 0xc7, "Dune Networks"},
|
||||
// { 6, 0xc8, "GigaDevice Semiconductor"},
|
||||
// { 6, 0x49, "Modu"},
|
||||
// { 6, 0x4a, "CEITEC"},
|
||||
// { 6, 0xcb, "Northrop Grumman"},
|
||||
// { 6, 0x4c, "XRONET"},
|
||||
// { 6, 0xcd, "Sicon Semiconductor AB"},
|
||||
// { 6, 0xce, "Atla Electronics"},
|
||||
{ 6, 0x4f, "TOPRAM"},
|
||||
// { 6, 0xd0, "Silego Technology"},
|
||||
{ 6, 0x51, "Kinglife"},
|
||||
// { 6, 0x52, "Ability Industries"},
|
||||
// { 6, 0xd3, "Silicon Power Computer & Communications"},
|
||||
// { 6, 0x54, "Augusta Technology"},
|
||||
// { 6, 0xd5, "Nantronics Semiconductors"},
|
||||
// { 6, 0xd6, "Hilscher Gesellschaft"},
|
||||
// { 6, 0x57, "Quixant"},
|
||||
// { 6, 0x58, "Percello"},
|
||||
// { 6, 0xd9, "NextIO"},
|
||||
// { 6, 0xda, "Scanimetrics"},
|
||||
// { 6, 0x5b, "FS-Semi Company"},
|
||||
// { 6, 0xdc, "Infinera"},
|
||||
{ 6, 0x5d, "SandForce"},
|
||||
{ 6, 0x5e, "Lexar Media"},
|
||||
// { 6, 0xdf, "Teradyne"},
|
||||
{ 6, 0xe0, "Memory Exchange Corp."},
|
||||
// { 6, 0x61, "Suzhou Smartek Electronics"},
|
||||
{ 6, 0x62, "Avantium"},
|
||||
// { 6, 0xe3, "ATP Electronics"},
|
||||
// { 6, 0x64, "Valens Semiconductor"},
|
||||
// { 6, 0xe5, "Agate Logic"},
|
||||
// { 6, 0xe6, "Netronome"},
|
||||
// { 6, 0x67, "Zenverge"},
|
||||
// { 6, 0x68, "N-trig"},
|
||||
// { 6, 0xe9, "SanMax Technologies"},
|
||||
// { 6, 0xea, "Contour Semiconductor"},
|
||||
{ 6, 0x6b, "TwinMOS"},
|
||||
{ 6, 0xec, "Silicon Systems"},
|
||||
// { 6, 0x6d, "V-Color Technology"},
|
||||
// { 6, 0x6e, "Certicom"},
|
||||
// { 6, 0xef, "JSC ICC Milandr"},
|
||||
// { 6, 0x70, "PhotoFast Global"},
|
||||
{ 6, 0xf1, "InnoDisk"},
|
||||
{ 6, 0xf2, "Muscle Power"},
|
||||
// { 6, 0x73, "Energy Micro"},
|
||||
// { 6, 0xf4, "Innofidei"},
|
||||
// { 6, 0x75, "CopperGate Communications"},
|
||||
// { 6, 0x76, "Holtek Semiconductor"},
|
||||
// { 6, 0xf7, "Myson Century"},
|
||||
// { 6, 0xf8, "FIDELIX"},
|
||||
// { 6, 0x79, "Red Digital Cinema"},
|
||||
// { 6, 0x7a, "Densbits Technology"},
|
||||
// { 6, 0xfb, "Zempro"},
|
||||
// { 6, 0x7c, "MoSys"},
|
||||
// { 6, 0xfd, "Provigent"},
|
||||
// { 6, 0xfe, "Triad Semiconductor"},
|
||||
// { 8, 0x01, "Siklu Communication"},
|
||||
// { 8, 0x02, "A Force Manufacturing"},
|
||||
{ 8, 0x83, "Strontium"},
|
||||
// { 8, 0x04, "Abilis Systems"},
|
||||
// { 8, 0x85, "Siglead"},
|
||||
// { 8, 0x86, "Ubicom"},
|
||||
// { 8, 0x07, "Unifosa"},
|
||||
// { 8, 0x08, "Stretch"},
|
||||
// { 8, 0x89, "Lantiq Deutschland"},
|
||||
// { 8, 0x8a, "Visipro."},
|
||||
{ 8, 0x0b, "EKMemory"},
|
||||
// { 8, 0x8c, "Microelectronics Institute ZTE"},
|
||||
// { 8, 0x0d, "Cognovo"},
|
||||
// { 8, 0x0e, "Carry Technology"},
|
||||
{ 8, 0x8f, "Nokia"},
|
||||
{ 8, 0x10, "King Tiger"},
|
||||
// { 8, 0x91, "Sierra Wireless"},
|
||||
{ 8, 0x92, "HT Micron"},
|
||||
{ 8, 0x13, "Albatron"},
|
||||
// { 8, 0x94, "Leica Geosystems AG"},
|
||||
// { 8, 0x15, "BroadLight"},
|
||||
// { 8, 0x16, "AEXEA"},
|
||||
// { 8, 0x97, "ClariPhy Communications"},
|
||||
// { 8, 0x98, "Green Plug"},
|
||||
// { 8, 0x19, "Design Art Networks"},
|
||||
// { 8, 0x1a, "Mach Xtreme Technology"},
|
||||
// { 8, 0x9b, "ATO Solutions"},
|
||||
// { 8, 0x1c, "Ramsta"},
|
||||
// { 8, 0x9d, "Greenliant Systems"},
|
||||
// { 8, 0x9e, "Teikon"},
|
||||
// { 8, 0x1f, "Antec Hadron"},
|
||||
// { 8, 0x20, "NavCom Technology"},
|
||||
// { 8, 0xa1, "Shanghai Fudan Microelectronics"},
|
||||
// { 8, 0xa2, "Calxeda"},
|
||||
// { 8, 0x23, "JSC EDC Electronics"},
|
||||
// { 8, 0xa4, "Kandit Technology"},
|
||||
// { 8, 0x25, "Ramos Technology"},
|
||||
// { 8, 0x26, "Goldenmars Technology"},
|
||||
// { 8, 0xa7, "XeL Technology"},
|
||||
// { 8, 0xa8, "Newzone"},
|
||||
{ 8, 0x29, "MercyPower"},
|
||||
// { 8, 0x2a, "Nanjing Yihuo Technology."},
|
||||
// { 8, 0xab, "Nethra Imaging"},
|
||||
// { 8, 0x2c, "SiTel Semiconductor BV"},
|
||||
// { 8, 0xad, "SolidGear"},
|
||||
{ 8, 0xae, "Topower"},
|
||||
// { 8, 0x2f, "Wilocity"},
|
||||
// { 8, 0xb0, "Profichip"},
|
||||
// { 8, 0x31, "Gerad Technologies"},
|
||||
{ 8, 0x32, "Ritek"},
|
||||
// { 8, 0xb3, "Gomos Technology Limited"},
|
||||
{ 8, 0x34, "Memoright"},
|
||||
// { 8, 0xb5, "D-Broad"},
|
||||
// { 8, 0xb6, "HiSilicon Technologies"},
|
||||
// { 8, 0x37, "Syndiant ."},
|
||||
// { 8, 0x38, "Enverv"},
|
||||
// { 8, 0xb9, "Cognex"},
|
||||
// { 8, 0xba, "Xinnova Technology"},
|
||||
{ 8, 0x3b, "Ultron"},
|
||||
// { 8, 0xbc, "Concord Idea"},
|
||||
// { 8, 0x3d, "AIM"},
|
||||
// { 8, 0x3e, "Lifetime Memory Products"},
|
||||
// { 8, 0xbf, "Ramsway"},
|
||||
// { 8, 0x40, "Recore Systems B.V."},
|
||||
// { 8, 0xc1, "Haotian Jinshibo Science Tech"},
|
||||
// { 8, 0xc2, "Being Advanced Memory"},
|
||||
// { 8, 0x43, "Adesto Technologies"},
|
||||
// { 8, 0xc4, "Giantec Semiconductor"},
|
||||
// { 8, 0x45, "HMD Electronics AG"},
|
||||
// { 8, 0x46, "Gloway International (HK)"},
|
||||
// { 8, 0xc7, "Kingcore"},
|
||||
// { 8, 0xc8, "Anucell Technology Holding"},
|
||||
// { 8, 0x49, "Accord Software & Systems Pvt."},
|
||||
// { 8, 0x4a, "Active-Semi"},
|
||||
// { 8, 0xcb, "Denso"},
|
||||
// { 8, 0x4c, "TLSI"},
|
||||
// { 8, 0xcd, "Shenzhen Daling Electronic"},
|
||||
// { 8, 0xce, "Mustang"},
|
||||
// { 8, 0x4f, "Orca Systems"},
|
||||
// { 8, 0xd0, "Passif Semiconductor"},
|
||||
// { 8, 0x51, "GigaDevice Semiconductor (Beijing)"},
|
||||
// { 8, 0x52, "Memphis Electronic"},
|
||||
// { 8, 0xd3, "Beckhoff Automation"},
|
||||
// { 8, 0x54, "Harmony Semiconductor Corp"},
|
||||
// { 8, 0xd5, "Air Computers SRL"},
|
||||
{ 8, 0xd6, "TMT Memory"},
|
||||
{ 9, 0xff, ""}
|
||||
};
|
@ -115,7 +115,7 @@ static uintptr_t find_smbios_adr(void) {
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef __x86_64__
|
||||
#ifdef __x86_64__
|
||||
if (rp == NULL && efi_info -> loader_signature == EFI64_LOADER_SIGNATURE) {
|
||||
// EFI64
|
||||
if (rp == NULL && efi_info -> loader_signature == EFI64_LOADER_SIGNATURE) {
|
||||
@ -127,7 +127,7 @@ static uintptr_t find_smbios_adr(void) {
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
if (rp == NULL) {
|
||||
// BIOS
|
||||
char * dmi, * dmi_search_start;
|
||||
@ -214,10 +214,8 @@ void print_smbios_startup_info(void) {
|
||||
sl2 = strlen(sys_sku);
|
||||
|
||||
if (sl1 && sl2) {
|
||||
dmicol = 40 - (sl1 + sl2) / 2;
|
||||
prints(LINE_DMI, dmicol, sys_man);
|
||||
dmicol += sl1 + 1;
|
||||
prints(LINE_DMI, dmicol, sys_sku);
|
||||
dmicol += sl2 + 1;
|
||||
dmicol = 40 - ((sl1 + sl2) / 2);
|
||||
dmicol = prints(LINE_DMI, dmicol, sys_man);
|
||||
prints(LINE_DMI, dmicol + 1, sys_sku);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
266
system/smbus.c
Normal file
266
system/smbus.c
Normal file
@ -0,0 +1,266 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
// Copyright (C) 2004-2022 Samuel Demeulemeester
|
||||
//
|
||||
|
||||
#include "display.h"
|
||||
|
||||
#include "io.h"
|
||||
#include "tsc.h"
|
||||
#include "pci.h"
|
||||
#include "unistd.h"
|
||||
|
||||
#include "jedec_id.h"
|
||||
|
||||
#define LINE_SPD 12
|
||||
#define MAX_SPD_SLOT 8
|
||||
|
||||
#define SMBHSTSTS smbusbase
|
||||
#define SMBHSTCNT smbusbase + 2
|
||||
#define SMBHSTCMD smbusbase + 3
|
||||
#define SMBHSTADD smbusbase + 4
|
||||
#define SMBHSTDAT smbusbase + 5
|
||||
|
||||
int smbdev, smbfun;
|
||||
unsigned short smbusbase;
|
||||
|
||||
unsigned char spd_raw[256];
|
||||
|
||||
static void ich5_get_smb(void)
|
||||
{
|
||||
unsigned long x;
|
||||
|
||||
x = pci_config_read16(0, smbdev, smbfun, 0x20);
|
||||
smbusbase = (unsigned short) x & 0xFFFE;
|
||||
}
|
||||
|
||||
unsigned char ich5_smb_read_byte(unsigned char adr, unsigned char cmd)
|
||||
{
|
||||
uint32_t t = 0;
|
||||
|
||||
__outb(0x1f, SMBHSTSTS); // reset SMBus Controller
|
||||
__outb(0xff, SMBHSTDAT);
|
||||
while(__inb(SMBHSTSTS) & 0x01); // wait until ready
|
||||
__outb(cmd, SMBHSTCMD);
|
||||
__outb((adr << 1) | 0x01, SMBHSTADD);
|
||||
__outb(0x48, SMBHSTCNT);
|
||||
|
||||
while (!(__inb(SMBHSTSTS) & 0x02)) { // wait til command finished
|
||||
usleep(1);
|
||||
t++;
|
||||
if (t > 10000) break; // break after 10ms
|
||||
}
|
||||
return __inb(SMBHSTDAT);
|
||||
}
|
||||
|
||||
static int ich5_read_spd(int dimmadr)
|
||||
{
|
||||
int x;
|
||||
spd_raw[0] = ich5_smb_read_byte(0x50 + dimmadr, 0);
|
||||
if (spd_raw[0] == 0xff) return -1; // no spd here
|
||||
for (x = 1; x < 256; x++) {
|
||||
spd_raw[x] = ich5_smb_read_byte(0x50 + dimmadr, (unsigned char) x);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct pci_smbus_controller {
|
||||
unsigned vendor;
|
||||
unsigned device;
|
||||
char *name;
|
||||
void (*get_adr)(void);
|
||||
int (*read_spd)(int dimmadr);
|
||||
};
|
||||
|
||||
static struct pci_smbus_controller smbcontrollers[] =
|
||||
{
|
||||
// Intel SMBUS (DUMMY)
|
||||
{0x8086, 0x9C22, "Intel HSW-ULT", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x8C22, "Intel HSW", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x1E22, "Intel Z77", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x1C22, "Intel P67", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x3B30, "Intel P55", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x3A60, "Intel ICH10B", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x3A30, "Intel ICH10R", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x2930, "Intel ICH9", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x283E, "Intel ICH8", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x27DA, "Intel ICH7", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x266A, "Intel ICH6", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x24D3, "Intel ICH5", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x24C3, "Intel ICH4", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x34A3, "Intel ICL", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0xA323, "Intel CNL", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0xA2A3, "Intel CNL", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x9DA3, "Intel CNL", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x9CA2, "Intel BDW", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x25A4, "Intel 6300ESB", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x269B, "Intel ESB2", ich5_get_smb, ich5_read_spd},
|
||||
{0x8086, 0x5032, "Intel EP80579", ich5_get_smb, ich5_read_spd},
|
||||
|
||||
// AMD SMBUS
|
||||
{0, 0, "", NULL, NULL}
|
||||
};
|
||||
|
||||
int find_smb_controller(void)
|
||||
{
|
||||
int i = 0;
|
||||
unsigned long valuev, valued;
|
||||
|
||||
for (smbdev = 0; smbdev < 32; smbdev++) {
|
||||
for (smbfun = 0; smbfun < 8; smbfun++) {
|
||||
valuev = pci_config_read16(0, smbdev, smbfun, 0);
|
||||
if (valuev != 0xFFFF) { // if there is something look what's it..
|
||||
for (i = 0; smbcontrollers[i].vendor > 0; i++) { // check if this is a known smbus controller
|
||||
if (valuev == smbcontrollers[i].vendor) {
|
||||
valued = pci_config_read16(0, smbdev, smbfun, 2); // read the device id
|
||||
if (valued == smbcontrollers[i].device) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
void parse_spd_ddr4(uint8_t idx)
|
||||
{
|
||||
//prints(LINE_SPD+idx, 0, "DDR4");
|
||||
}
|
||||
|
||||
void parse_spd_ddr3(uint8_t idx)
|
||||
{
|
||||
uint8_t curcol = 0;
|
||||
uint32_t module_size;
|
||||
uint8_t tck;
|
||||
|
||||
uint8_t i,h;
|
||||
|
||||
if(spd_raw[2] == 0x0B){
|
||||
|
||||
// First print slot#, module capacity
|
||||
curcol = prints(LINE_SPD+idx, curcol, " - Slot :");
|
||||
printu(LINE_SPD+idx, curcol-3, idx+1, 1, false, false);
|
||||
|
||||
// module_size = 1 << (sdram_capacity + 15) << (prim_bus_width + 3) >> (sdram_width + 2) << ranks;
|
||||
module_size = 1 << ((spd_raw[4] & 0xF) + 15) << ((spd_raw[8] & 0x7) + 3) >> ((spd_raw[7] & 0x7) + 2) << (spd_raw[7] >> 3);
|
||||
curcol = printf(LINE_SPD+idx, curcol+1, "%kB", module_size) + 1;
|
||||
|
||||
// If XMP is supported, check Tck in XMP reg
|
||||
if(spd_raw[176] == 0x0C && spd_raw[177] == 0x4A && spd_raw[12])
|
||||
{
|
||||
tck = spd_raw[186];
|
||||
} else {
|
||||
tck = spd_raw[12];
|
||||
}
|
||||
|
||||
// Then module jedec speed
|
||||
switch(tck)
|
||||
{
|
||||
default:
|
||||
curcol = prints(LINE_SPD+idx, curcol, "DDR3-????");
|
||||
break;
|
||||
case 20:
|
||||
curcol = prints(LINE_SPD+idx, curcol, "DDR3-800");
|
||||
break;
|
||||
case 15:
|
||||
curcol = prints(LINE_SPD+idx, curcol, "DDR3-1066");
|
||||
break;
|
||||
case 12:
|
||||
curcol = prints(LINE_SPD+idx, curcol, "DDR3-1333");
|
||||
break;
|
||||
case 10:
|
||||
curcol = prints(LINE_SPD+idx, curcol, "DDR3-1600");
|
||||
break;
|
||||
case 9:
|
||||
curcol = prints(LINE_SPD+idx, curcol, "DDR3-1866");
|
||||
break;
|
||||
case 8:
|
||||
curcol = prints(LINE_SPD+idx, curcol, "DDR3-2133");
|
||||
break;
|
||||
case 7:
|
||||
curcol = prints(LINE_SPD+idx, curcol, "DDR3-2400");
|
||||
break;
|
||||
case 6:
|
||||
curcol = prints(LINE_SPD+idx, curcol, "DDR3-2533");
|
||||
break;
|
||||
case 5:
|
||||
curcol = prints(LINE_SPD+idx, curcol, "DDR3-2666");
|
||||
break;
|
||||
}
|
||||
|
||||
if((spd_raw[8] >> 3) == 1) { curcol = prints(LINE_SPD+idx, curcol+1, "ECC"); }
|
||||
|
||||
// Then print module infos (manufacturer & part number)
|
||||
spd_raw[117] &= 0x0F; // Parity odd or even
|
||||
for (i = 0; jep106[i].cont_code < 9; i++) {
|
||||
if (spd_raw[117] == jep106[i].cont_code && spd_raw[118] == jep106[i].hex_byte) {
|
||||
// We are here if a Jedec manufacturer is detected
|
||||
curcol = prints(LINE_SPD+idx, curcol, " - ");
|
||||
prints(LINE_SPD+idx, curcol, jep106[i].name);
|
||||
|
||||
// Display module serial number
|
||||
for (h = 128; h < 146; h++) {
|
||||
curcol = printc(LINE_SPD+idx, curcol, spd_raw[h]);
|
||||
}
|
||||
|
||||
// Detect Week and Year of Manufacturing (Think to upgrade after 2030 !!!)
|
||||
if(curcol <= 72 && spd_raw[120] > 1 && spd_raw[120] < 30 && spd_raw[121] < 55)
|
||||
{
|
||||
curcol = prints(LINE_SPD+idx, curcol+1, "(W");
|
||||
curcol = printi(LINE_SPD+idx, curcol, spd_raw[121], 2, false, false);
|
||||
curcol = printc(LINE_SPD+idx, curcol, '\'');
|
||||
curcol = printi(LINE_SPD+idx, curcol, spd_raw[120], 2, false, false);
|
||||
curcol = printc(LINE_SPD+idx, curcol, ')');
|
||||
}
|
||||
|
||||
// Detect XMP Memory
|
||||
if(spd_raw[176] == 0x0C && spd_raw[177] == 0x4A)
|
||||
{
|
||||
prints(LINE_SPD+idx, curcol+1, "*XMP*");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void print_smbus_startup_info(void) {
|
||||
|
||||
int8_t index;
|
||||
uint8_t spdidx = 0, spd_line_idx = 0;
|
||||
|
||||
index = find_smb_controller();
|
||||
|
||||
if (index == -1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
smbcontrollers[index].get_adr();
|
||||
|
||||
for (spdidx = 0; spdidx < MAX_SPD_SLOT; spdidx++) {
|
||||
if (smbcontrollers[index].read_spd(spdidx) == 0) {
|
||||
switch(spd_raw[2])
|
||||
{
|
||||
default:
|
||||
continue;
|
||||
case 0x0C: // DDR4
|
||||
parse_spd_ddr4(spd_line_idx++);
|
||||
break;
|
||||
case 0x0B: // DDR3
|
||||
parse_spd_ddr3(spd_line_idx++);
|
||||
break;
|
||||
case 0x08: // DDR2
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(spdidx) {
|
||||
prints(LINE_SPD-2, 0, "Memory SPD Informations");
|
||||
prints(LINE_SPD-1, 0, "--------------------------");
|
||||
}
|
||||
|
||||
}
|
18
system/smbus.h
Normal file
18
system/smbus.h
Normal file
@ -0,0 +1,18 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#ifndef SMBUS_H
|
||||
#define SMBUS_H
|
||||
/**
|
||||
* \file
|
||||
*
|
||||
* Provides functions for reading SPD via SMBUS
|
||||
*
|
||||
* Copyright (C) 2004-2022 Samuel Demeulemeester.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Print SMBUS Info
|
||||
*/
|
||||
|
||||
void print_smbus_startup_info(void);
|
||||
|
||||
#endif // SMBUS_H
|
Loading…
Reference in New Issue
Block a user