📄 web_init.c
字号:
#include "./include/web_init.h"#include "./include/myout.h"U16 get_reg_init_bus (U32 regno){ // force 16 bit busmode char c; c = CS8900_BUS16_0; c = CS8900_BUS16_1; c = CS8900_BUS16_0; c = CS8900_BUS16_1; c = CS8900_BUS16_0; CS8900_PPTR = regno; return (U16) CS8900_PDATA;}U16 get_reg (U32 regno){ CS8900_PPTR = regno; return (U16) CS8900_PDATA;}void put_reg (U32 regno, U16 val){ CS8900_PPTR = regno; CS8900_PDATA = val;}void eth_reset (void){ // reset NIC put_reg (PP_SelfCTL, get_reg (PP_SelfCTL) | PP_SelfCTL_Reset); // Wait until the chip is reset while ((( get_reg(PP_SelfSTAT)) & PP_SelfSTAT_InitD) != PP_SelfSTAT_InitD);}void eth_reginit (void){ // receive only error free packets addressed to this card put_reg (PP_RxCTL, PP_RxCTL_IA | PP_RxCTL_Broadcast | PP_RxCTL_RxOK | PP_RxCTL_Promiscuous); // do not generate any interrupts on receive operations put_reg (PP_RxCFG, 0); // do not generate any interrupts on transmit operations put_reg (PP_TxCFG, 0); // do not generate any interrupts on buffer operations put_reg (PP_BufCFG, 0); // enable transmitter/receiver mode put_reg (PP_LineCTL, PP_LineCTL_Rx | PP_LineCTL_Tx); put_reg (PP_BusCtl, 0);}U32 eth_init (U8 *Mac){ // verify chip id if (get_reg_init_bus (PP_ChipID) != 0x630e) { MyOut("%s","CS8900 Ethernet chip not found?!"); return 0; } eth_reset (); // set the ethernet address put_reg (PP_IA + 0, Mac[0] | (Mac[1] << 8)); put_reg (PP_IA + 2, Mac[2] | (Mac[3] << 8)); put_reg (PP_IA + 4, Mac[4] | (Mac[5] << 8)); eth_reginit (); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -