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"
17 void Lan9000Hal_Mii0(C_LAN9000HAL *self)
19 unsigned short uhMask;
21 uhMask = LAN9000HAL_REG_READ(self, LAN9000HAL_B3_MGMT) & 0xfff0;
22 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B3_MGMT, uhMask | 0x0008);
23 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B3_MGMT, uhMask | 0x000c);
24 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B3_MGMT, uhMask | 0x0008);
28 void Lan9000Hal_Mii1(C_LAN9000HAL *self)
30 unsigned short uhMask;
32 uhMask = LAN9000HAL_REG_READ(self, LAN9000HAL_B3_MGMT) & 0xfff0;
33 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B3_MGMT, uhMask | 0x0009);
34 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B3_MGMT, uhMask | 0x000d);
35 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B3_MGMT, uhMask | 0x0009);
38 /* MIIからビットデータを読み込む */
39 int Lan9000Hal_MiiIn(C_LAN9000HAL *self)
41 unsigned short uhMask;
44 uhMask = LAN9000HAL_REG_READ(self, LAN9000HAL_B3_MGMT) & 0xfff0;
45 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B3_MGMT, uhMask);
46 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B3_MGMT, uhMask | 0x0040);
47 iData = ((LAN9000HAL_REG_READ(self, LAN9000HAL_B3_MGMT) >> 1) & 1);
48 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B3_MGMT, uhMask);
54 void Lan9000Hal_MiiZ(C_LAN9000HAL *self)
56 unsigned short uhMask;
58 uhMask = LAN9000HAL_REG_READ(self, LAN9000HAL_B3_MGMT) & 0xfff0;
59 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B3_MGMT, uhMask);
60 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B3_MGMT, uhMask | 0x000c);
61 LAN9000HAL_REG_WRITE(self, LAN9000HAL_B3_MGMT, uhMask);