2 * Hyper Operating System Application Framework
5 * @brief %jp{LAN9000シリーズ用ハードウェアアクセス層}
7 * Copyright (C) 2006-2007 by Project HOS
8 * http://sourceforge.jp/projects/hos/
12 #include "system/sysapi/sysapi.h"
13 #include "lan9000hal_local.h"
18 int Lan9000Hal_Setup(C_LAN9000HAL *self)
23 LAN9000HAL_REG_WRITE(self, LAN9000HAL_BANK, 0);
24 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B0_RCR, 0x8000);
26 LAN9000HAL_REG_WRITE(self, LAN9000HAL_BANK, 1);
27 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B1_CONFIG, LAN9000HAL_REG_READ(self, LAN9000HAL_B1_CONFIG) | 0x8000);
30 LAN9000HAL_REG_WRITE(self, LAN9000HAL_BANK, 0);
31 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B0_RCR, 0x0000);
34 LAN9000HAL_REG_WRITE(self, LAN9000HAL_BANK, 2);
35 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B2_MMU_COMMAND, 0x0040);
39 LAN9000HAL_REG_WRITE(self, LAN9000HAL_BANK, 0);
40 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B0_RPCR, 0x0800);
43 Lan9000Hal_PhyRegWrite(self, 0, 0, 0x8000);
46 Lan9000Hal_PhyRegWrite(self, 0, 0, 0x3000);
50 while ( !(Lan9000Hal_PhyRegRead(self, 0, 1) & 0x0020) )
52 if ( iTimeOut++ > 200 )
59 /* Configure the Transmit and Receive registers to allow external loopback */
60 LAN9000HAL_REG_WRITE(self, LAN9000HAL_BANK, 0);
61 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B0_RPCR, 0x0800);
62 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B0_TCR, 0x0881);
63 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B0_RCR, 0x0302);
64 LAN9000HAL_REG_WRITE(self, LAN9000HAL_BANK, 1);
65 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B1_CONFIG, LAN9000HAL_REG_READ(self, LAN9000HAL_B1_CONFIG) | 0x8000);
66 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B1_CONTROL, 0x5a10);
70 LAN9000HAL_REG_WRITE(self, LAN9000HAL_BANK, 2);
71 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B2_MMU_COMMAND, 0x0020);