?? ucode.c
字號:
#include "board.h"
#include <icontrol/pda8xx.h>
#include <string.h>
#include "ucode.h"
/* I2C/SPI-parameter-relocating microcode */
unsigned long ucodeArray1[0x74] =
{ 0x7fffefd9, 0x3ffd0000, 0x7ffb49f7, 0x7ff90000,
0x5fefadf7, 0x5f89adf7, 0x5fefaff7, 0x5f89aff7,
0x3a9cfbc8, 0xe7c0edf0, 0x77c1e1bb, 0xf4dc7f1d,
0xabad932f, 0x4e08fdcf, 0x6e0faff8, 0x7ccf76cf,
0xfd1ff9cf, 0xabf88dc6, 0xab5679f7, 0xb0937383,
0xdfce79f7, 0xb091e6bb, 0xe5bbe74f, 0xb3fa6f0f,
0x6ffb76ce, 0xee0df9cf, 0x2bfbefef, 0xcfeef9cf,
0x76cead24, 0x90b2df9a, 0x7fddd0bf, 0x4bf847fd,
0x7ccf76ce, 0xcfef7e1f, 0x7f1d7dfd, 0xf0b6ef71,
0x7fc177c1, 0xfbc86079, 0xe722fbc8, 0x5fffdfff,
0x5fb2fffb, 0xfbc8f3c8, 0x94a67f01, 0x7f1d5f39,
0xafe85f5e, 0xffdfdf96, 0xcb9faf7d, 0x5fc1afed,
0x8c1c5fc1, 0xafdd5fc3, 0xdf9a7efd, 0xb0b25fb2,
0xfffeabad, 0x5fb2fffe, 0x5fce600b, 0xe6bb600b,
0x5fcedfc6, 0x27fbefdf, 0x5fc8cfde, 0x3a9ce7c0,
0xedf0f3c8, 0x7f0154cd, 0x7f1d2d3d, 0x363a7570,
0x7e0af1ce, 0x37ef2e68, 0x7fee10ec, 0xadf8efde,
0xcfeae52f, 0x7d0fe12b, 0xf1ce5f65, 0x7e0a4df8,
0xcfea5f72, 0x7d0befee, 0xcfea5f74, 0xe522efde,
0x5f74cfda, 0x0b627385, 0xdf627e0a, 0x30d8145b,
0xbffff3c8, 0x5fffdfff, 0xa7f85f5e, 0xbffe7f7d,
0x10d31450, 0x5f36bfff, 0xaf785f5e, 0xbffda7f8,
0x5f36bffe, 0x77fd30c0, 0x4e08fdcf, 0xe5ff6e0f,
0xaff87e1f, 0x7e0ffd1f, 0xf1cf5f1b, 0xabf80d5e,
0x5f5effef, 0x79f730a2, 0xafdd5f34, 0x47f85f34,
0xafed7fdd, 0x50b24978, 0x47fd7f1d, 0x7dfd70ad,
0xef717ec1, 0x6ba47f01, 0x2d267efd, 0x30de5f5e,
0xfffd5f5e, 0xffef5f5e, 0xffdf0ca0, 0xafed0a9e,
0xafdd0c3a, 0x5f3aafbd, 0x7fbdb082, 0x5f8247f8
};
unsigned long ucodeArray2[0x1d] =
{ 0x3e303430, 0x34343737, 0xabf7bf9b, 0x994b4fbd,
0xbd599493, 0x349fff37, 0xfb9b177d, 0xd9936956,
0xbbfdd697, 0xbdd2fd11, 0x31db9bb3, 0x63139637,
0x93733693, 0x193137f7, 0x331737af, 0x7bb9b999,
0xbb197957, 0x7fdfd3d5, 0x73b773f7, 0x37933b99,
0x1d115316, 0x99315315, 0x31694bf4, 0xfbdbd359,
0x31497353, 0x76956d69, 0x7b9d9693, 0x13131979,
0x79376935
};
/*Ucode=1,Spi microcode enable,
Ucode=2,I2c microcode enable,
Ucode=3,Spi/I2c microcode enable,*/
int LoadMicroCode(unsigned short Ucode)
{
PDA *immr = (PDA *) (GetIMMR() & 0xffff0000);
unsigned long *targetptr;
unsigned int i;
SPLX(immr->cp_rccr &=0xfffc;) /* Unlock microcode area */
/* Copy first block of microcode to lowest block of DPRAM */
targetptr = (unsigned long *)( ((char*)immr)+0x2000 );
for(i=0; i<(0x74); i++) *(targetptr++) = ucodeArray1[i];
/* Copy second block of microcode to microcode block of DPRAM */
targetptr = (unsigned long *) ( ((char*)immr)+0x2f00);
for(i=0; i<(0x1d); i++) *(targetptr++) = ucodeArray2[i];
/* Activate the microcode per the instructions in the microcode manual*/
SPLX(immr->cp_rccr &=0xfffc;)
switch (Ucode)
{
case 1:
immr->cp_rctr1=0x802a; /* only relocating the SPI parameters */
immr->cp_rctr2=0x8028;
break;
case 2:
immr->cp_rctr3 = 0x802e; /* only relocating the I2C parameters */
immr->cp_rctr4 = 0x802c;
break;
case 3:
immr->cp_rctr1=0x802a;
immr->cp_rctr2=0x8028;
immr->cp_rctr3 = 0x802e;
immr->cp_rctr4 = 0x802c;
break;
default:
return UCODEPARA_INVAILD;
break;
}
SPLX(immr->cp_rccr &=0xfffc;)
SPLX(immr->cp_rccr |=0x0001;)
return UCODEOK;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -