diff options
author | Hayes Wang <hayeswang@realtek.com> | 2011-07-06 03:58:05 -0400 |
---|---|---|
committer | Francois Romieu <romieu@fr.zoreil.com> | 2011-07-14 17:22:24 -0400 |
commit | 133ac40ac26a6cba957ad5765892f0531ba6ccee (patch) | |
tree | 8db211136f72feccf0031b3be235c02e1b43adab | |
parent | 92fc43b4159b518f5baae57301f26d770b0834c9 (diff) |
r8169: add ERI functions.
Add the ERI functions which would be used by the new chips.
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
-rw-r--r-- | drivers/net/r8169.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index 604f94647b63..a983eaaaf2e3 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
@@ -1046,6 +1046,49 @@ static u32 rtl_csi_read(void __iomem *ioaddr, int addr) | |||
1046 | return value; | 1046 | return value; |
1047 | } | 1047 | } |
1048 | 1048 | ||
1049 | static | ||
1050 | void rtl_eri_write(void __iomem *ioaddr, int addr, u32 mask, u32 val, int type) | ||
1051 | { | ||
1052 | unsigned int i; | ||
1053 | |||
1054 | BUG_ON((addr & 3) || (mask == 0)); | ||
1055 | RTL_W32(ERIDR, val); | ||
1056 | RTL_W32(ERIAR, ERIAR_WRITE_CMD | type | mask | addr); | ||
1057 | |||
1058 | for (i = 0; i < 100; i++) { | ||
1059 | if (!(RTL_R32(ERIAR) & ERIAR_FLAG)) | ||
1060 | break; | ||
1061 | udelay(100); | ||
1062 | } | ||
1063 | } | ||
1064 | |||
1065 | static u32 rtl_eri_read(void __iomem *ioaddr, int addr, int type) | ||
1066 | { | ||
1067 | u32 value = ~0x00; | ||
1068 | unsigned int i; | ||
1069 | |||
1070 | RTL_W32(ERIAR, ERIAR_READ_CMD | type | ERIAR_MASK_1111 | addr); | ||
1071 | |||
1072 | for (i = 0; i < 100; i++) { | ||
1073 | if (RTL_R32(ERIAR) & ERIAR_FLAG) { | ||
1074 | value = RTL_R32(ERIDR); | ||
1075 | break; | ||
1076 | } | ||
1077 | udelay(100); | ||
1078 | } | ||
1079 | |||
1080 | return value; | ||
1081 | } | ||
1082 | |||
1083 | static void | ||
1084 | rtl_w1w0_eri(void __iomem *ioaddr, int addr, u32 mask, u32 p, u32 m, int type) | ||
1085 | { | ||
1086 | u32 val; | ||
1087 | |||
1088 | val = rtl_eri_read(ioaddr, addr, type); | ||
1089 | rtl_eri_write(ioaddr, addr, mask, (val & ~m) | p, type); | ||
1090 | } | ||
1091 | |||
1049 | static u8 rtl8168d_efuse_read(void __iomem *ioaddr, int reg_addr) | 1092 | static u8 rtl8168d_efuse_read(void __iomem *ioaddr, int reg_addr) |
1050 | { | 1093 | { |
1051 | u8 value = 0xff; | 1094 | u8 value = 0xff; |