dm9isa.cpp修改成以下,此处为飞凌驱动移植,其他都能适用
U16 C_DM9000::DeviceReadEeprom(
U32 uWordAddress){
//----------------------------------------------
//U16 eeprom[] = { 0x1122,0x3344,0x5566,0x5445,0x0a46,0x9000,0x01e7,0x4180};
//U16 eeprom[] = { 0xaae0,0xdec8,0x5163,0x5445,0x0a46,0x9000,0x01e7,0x4180};
U16 eeprom[] = { 0xaae0,0xdec8,0x5262};
// add by alexlee
DWORD dwStatus, dwType, dwSize;
HKEY hk_mac = NULL;
DWORD MAC[6];
dwStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("FORLINX\\MAC"), 0, 0, &hk_mac);
dwType = REG_DWORD;
dwSize = sizeof(DWORD);
if(dwStatus == ERROR_SUCCESS && dwType == REG_DWORD) {
RegQueryValueEx(hk_mac, _T("MAC1"), NULL, &dwType, (LPBYTE) &MAC[0], &dwSize);
RegQueryValueEx(hk_mac, _T("MAC2"), NULL, &dwType, (LPBYTE) &MAC[1], &dwSize);
RegQueryValueEx(hk_mac, _T("MAC3"), NULL, &dwType, (LPBYTE) &MAC[2], &dwSize);
RegQueryValueEx(hk_mac, _T("MAC4"), NULL, &dwType, (LPBYTE) &MAC[3], &dwSize);
RegQueryValueEx(hk_mac, _T("MAC5"), NULL, &dwType, (LPBYTE) &MAC[4], &dwSize);
RegQueryValueEx(hk_mac, _T("MAC6"), NULL, &dwType, (LPBYTE) &MAC[5], &dwSize);
eeprom[0] = (MAC[1] << 8) + (MAC[0]);
eeprom[1] = (MAC[3] << 8) + (MAC[2]);
eeprom[2] = (MAC[5] << 8) + (MAC[4]);
}
//RETAILMSG(1, (TEXT("------------alexlee_mac_0 =================[%x] \r\n"),eeprom[0]));
//RETAILMSG(1, (TEXT("------------alexlee_mac_1 =================[%x] \r\n"),eeprom[1]));
//RETAILMSG(1, (TEXT("------------alexlee_mac_2 =================[%x] \r\n"),eeprom[2]));
// end alexlee
if( uWordAddress < sizeof( eeprom ) )
return eeprom[uWordAddress];
else
return 0;
//----------------------------------------------
U16 highbyte,lowbyte;
// assign the register offset
DeviceWritePort(DM9_EPADDR,uWordAddress);
// issue EEPROM read command<2>
DeviceWritePort(DM9_EPCNTL,(1<<2));
// wait until status bit<0> cleared
// 80 uS, 5 times
if(!DevicePolling(DM9_EPCNTL,(1<<0),0x00,80,5))
return (U16)-1;
// stop command
DeviceWritePort(DM9_EPCNTL,0);
// retrive data
lowbyte = (U16)DeviceReadPort(DM9_EPLOW);
highbyte = (U16)DeviceReadPort(DM9_EPHIGH);
return ((highbyte<<8) | lowbyte);
}
注册表修改platform.reg
;----------------------------------------------------------------------------
;Mac Control
[HKEY_LOCAL_MACHINE\FORLINX\MAC]
"MAC1"=dword:c8
"MAC2"=dword:a
"MAC3"=dword:cc
"MAC4"=dword:62
"MAC5"=dword:37
"MAC6"=dword:1
;----------------------------------------------------------------------------
注意:注册表需要实现hive注册表模式才能保存mac,否则需要不同mac只能修改驱动来实现。如果有phy的芯片的网络芯片就无需修改mac了。