130 for(retries = 0; retries < 10; retries++) {
149 for(retries = 0; retries < 10; retries++) {
194 ethptr->
csr = csrptr;
216 while(csrptr->
wr->
reset == 1) ;
219 while(csrptr->
ss->
reset == 1) ;
229 kprintf(
"Cannot reset Ethernet PHY\n");
239 kprintf(
"Ethernet Link is Up. Speed is 10Mbps\n");
241 else if( (phyreg & ETH_PHY_CTLREG_SM) ==
ETH_PHY_100M ) {
242 kprintf(
"Ethernet Link is Up. Speed is 100Mbps\n");
245 kprintf(
"Ethernet Link is Up. Speed is 1000Mbps\n");
252 kprintf(
"Link is Full Duplex\n");
256 kprintf(
"Link is Half Duplex\n");
260 for(i = 0; i < 2; i++) {
263 for(i = 0; i < 4; i++) {
268 for(i = 0; i < 5; i++) {
304 rdescptr->
next = rdescptr + 1;
syscall kprintf(char *fmt,...)
ポーリングI/Oを使用して、フォーマットされた文字列をコンソールに出力する。
#define NULL
連結リスト用のNULLポインタ
#define ETH_AM335X_MDIOUA_ACK
Management Data Input/Output(MDIO) 読み込み確認応答(Ack)
#define ETH_AM335X_SS_ADDR
SSの開始アドレス
Address Lookup Engine(ALE)レジスタ用の構造体
Cryptographic Processor RAM DMA(CPDMA、暗号化DMA)レジスタ用の構造体
int32 ethinit(struct dentry *devptr)
#define ETH_AM335X_ALECTL_EN
Address Lookup Engine(ALE)を有効化する
unsigned char byte
符号なし8ビット値(unsigned char)
uint32 c0_rx_en
サブシステム コア0 RX(受信)割り込み許可レジスタ
#define ETH_AM335X_TDS_SOP
TX(送信)パケットの開始
uint32 tx_intmask_set
TX(送信)割り込みマスクセットレジスタ
sid32 semcreate(int32)
未使用セマフォを割り当て、そのセマフォへのインデックス(セマフォID)を返す。
#define ETH_AM335X_MDIO_ADDR
Management Data Input/Output(MDIO)の開始アドレス
volatile struct eth_a_mdio * mdio
MDIOレジスタ
#define ETH_AM335X_SLCTL_EN
受信/送信の有効化
uint32 rx_hdp[8]
RX(受信) チャネル0〜7 先頭ディスクリプタへのポインタ
#define ETH_AM335X_ALEPCTL_FWD
Address Lookup Engine(ALE)制御をポートフォワード状態とする
#define ETH_AM335X_RDS_OWN
DMAが所持するディスクリプタ
#define ETH_AM335X_ALE_ADDR
Address Lookup Engine(ALE)の開始アドレス
uint32 reset
SLソフトリセットレジスタ
#define ETH_PHY_STATREG_LINK
Ethernet subsystemレジスタ構造体
byte net_ethdst[ETH_ADDR_LEN]
#define DELAY(n)
マイクロ秒単位で処理を遅らせる。
volatile struct eth_a_sl * sl
CPSW_SLレジスタ
uint32 reset
WRソフトリセットレジスタ
volatile struct eth_a_ss * ss
CPSW_SSレジスタ
uint32 rx_ctrl
RX(受信) 制御レジスタ
#define ETH_AM335X_MDIOUA_DM
Management Data Input/Output(MDIO)データマスク
#define ETH_AM335X_MDIOCTL_EN
Management Data Input/Output(MDIO)制御を有効化
struct eth_a_tx_desc * next
次のDMA TX(受信)ディスクリプタ
#define ETH_AM335X_WR_ADDR
WRの開始アドレス
volatile struct eth_a_cpdma * cpdma
CPSW_CPDMAレジスタ
byte devAddress[ETH_ADDR_LEN]
#define ETH_AM335X_STATERAM_ADDR
STATERAMの開始アドレス
uint32 useraccess0
MDIO ユーザアクセスレジスタ0.
#define ETH_AM335X_CPDMA_ADDR
Cryptographic Processor RAM DMA(CPDMA、暗号化DMA)の開始アドレス
uint32 reset
SSソフトリセットレジスタ
struct ethcblk ethertab[1]
uint16 bufoff
DMAバッファのオフセット
Management Data Input/Output(MDIO)レジスタ用の構造体
#define ETH_PHY_CTLREG_RESET
struct eth_a_rx_desc * next
次のDMA RX(受信)ディスクリプタ
uint32 tx_hdp[8]
TX(送信) チャネル0〜7 先頭ディスクリプタへのポインタ
int32 set_evec(uint32, uint32)
uint32 reset
CPDMAソフトリセットレジスタ
volatile struct eth_a_stateram * stateram
CPSW_STATERANレジスタ
#define ETH_AM335X_TDS_DIR
不明
int int32
符号あり32ビット整数(int)
#define ETH_AM335X_TDS_P1
不明
int32 eth_phy_reset(volatile struct eth_a_mdio *mdio, byte phyadr)
uint32 c0_tx_en
サブシステム コア0 TX(送信)割り込み許可レジスタ
#define ETH_AM335X_MDIOUA_WR
Management Data Input/Output(MDIO) 書き込みアクセス
#define ETH_AM335X_TDS_EOP
TX(送信)パケットの終了
void * memset(void *, const int, int32)
指定のByteブロックに対して、同じ値をNバイト分書き込む。
volatile struct eth_a_wr * wr
CPSW_WRレジスタ
#define ETH_AM335X_ALECTL_BY
Address Lookup Engine(ALE)制御をBypassモードとする
#define ETH_AM335X_MDIOUA_GO
実行するManagement Data Input/Output(MDIO)のアクセス
uint32 tx_ctrl
TX(送信) 制御レジスタ
uint16 bufoff
DMAバッファのオフセット
struct eth_a_csreg eth_a_regs
int32 eth_phy_write(volatile struct eth_a_mdio *mdio, byte regadr, byte phyadr, uint32 value)
#define ETH_AM335X_RX_RING_SIZE
RX(受信)リングバッファサイズ
#define ETH_AM335X_TX_RING_SIZE
TX(送信)リングバッファサイズ
#define ETH_AM335X_RXINT
RX(受信)の割り込みベクタ
#define ETH_PHY_CTLREG_SM
uint32 rx_intmask_set
RX(受信)割り込みマスクセットレジスタ
unsigned int uint32
符号なし32ビット整数(unsigned int)
int32 eth_phy_read(volatile struct eth_a_mdio *mdio, byte regadr, byte phyadr, uint32 *value)
#define ETH_AM335X_TXINT
TX(送信)の割り込みベクタ
#define ETH_AM335X_INIT_DELAY
初期化時のディレイ
#define NULLCH
NULL文字(NULL終端)
volatile struct eth_a_ale * ale
CPSW_ALEレジスタ
#define ETH_PHY_CTLREG_FD
#define ETH_AM335X_SLCTL_FD
全二重通信
#define ETH_AM335X_SL1_ADDR
SL1の開始アドレス
uint32 portctl[6]
ALEポート0〜5制御レジスタ
char * getmem(uint32)
ヒープ領域を割り当て、最下位のワードアドレスを返す。