aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2800pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2800pci.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2800pci.c38
1 files changed, 3 insertions, 35 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index e8fe2eabebbd..6f151d0c6b02 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -147,44 +147,12 @@ static void rt2800pci_read_eeprom_pci(struct rt2x00_dev *rt2x00dev)
147 147
148static int rt2800pci_efuse_detect(struct rt2x00_dev *rt2x00dev) 148static int rt2800pci_efuse_detect(struct rt2x00_dev *rt2x00dev)
149{ 149{
150 u32 reg; 150 return rt2800_efuse_detect(rt2x00dev);
151
152 rt2800_register_read(rt2x00dev, EFUSE_CTRL, &reg);
153
154 return rt2x00_get_field32(reg, EFUSE_CTRL_PRESENT);
155} 151}
156 152
157static void rt2800pci_efuse_read(struct rt2x00_dev *rt2x00dev, 153static inline void rt2800pci_read_eeprom_efuse(struct rt2x00_dev *rt2x00dev)
158 unsigned int i)
159{
160 u32 reg;
161
162 rt2800_register_read(rt2x00dev, EFUSE_CTRL, &reg);
163 rt2x00_set_field32(&reg, EFUSE_CTRL_ADDRESS_IN, i);
164 rt2x00_set_field32(&reg, EFUSE_CTRL_MODE, 0);
165 rt2x00_set_field32(&reg, EFUSE_CTRL_KICK, 1);
166 rt2800_register_write(rt2x00dev, EFUSE_CTRL, reg);
167
168 /* Wait until the EEPROM has been loaded */
169 rt2800_regbusy_read(rt2x00dev, EFUSE_CTRL, EFUSE_CTRL_KICK, &reg);
170
171 /* Apparently the data is read from end to start */
172 rt2800_register_read(rt2x00dev, EFUSE_DATA3,
173 (u32 *)&rt2x00dev->eeprom[i]);
174 rt2800_register_read(rt2x00dev, EFUSE_DATA2,
175 (u32 *)&rt2x00dev->eeprom[i + 2]);
176 rt2800_register_read(rt2x00dev, EFUSE_DATA1,
177 (u32 *)&rt2x00dev->eeprom[i + 4]);
178 rt2800_register_read(rt2x00dev, EFUSE_DATA0,
179 (u32 *)&rt2x00dev->eeprom[i + 6]);
180}
181
182static void rt2800pci_read_eeprom_efuse(struct rt2x00_dev *rt2x00dev)
183{ 154{
184 unsigned int i; 155 rt2800_read_eeprom_efuse(rt2x00dev);
185
186 for (i = 0; i < EEPROM_SIZE / sizeof(u16); i += 8)
187 rt2800pci_efuse_read(rt2x00dev, i);
188} 156}
189#else 157#else
190static inline void rt2800pci_read_eeprom_pci(struct rt2x00_dev *rt2x00dev) 158static inline void rt2800pci_read_eeprom_pci(struct rt2x00_dev *rt2x00dev)