@@ -212,24 +212,24 @@ void mt76x0_get_tx_power_per_rate(struct mt76x02_dev *dev)
212
212
mt76x02_add_rate_power_offset (t , delta );
213
213
}
214
214
215
- void mt76x0_get_power_info (struct mt76x02_dev * dev , u8 * info )
215
+ void mt76x0_get_power_info (struct mt76x02_dev * dev , s8 * tp )
216
216
{
217
217
struct mt76x0_chan_map {
218
218
u8 chan ;
219
219
u8 offset ;
220
220
} chan_map [] = {
221
- { 2 , 0 }, { 4 , 1 }, { 6 , 2 }, { 8 , 3 },
222
- { 10 , 4 }, { 12 , 5 }, { 14 , 6 }, { 38 , 0 },
223
- { 44 , 1 }, { 48 , 2 }, { 54 , 3 }, { 60 , 4 },
224
- { 64 , 5 }, { 102 , 6 }, { 108 , 7 }, { 112 , 8 },
225
- { 118 , 9 }, { 124 , 10 }, { 128 , 11 }, { 134 , 12 },
226
- { 140 , 13 }, { 151 , 14 }, { 157 , 15 }, { 161 , 16 },
227
- { 167 , 17 }, { 171 , 18 }, { 173 , 19 },
221
+ { 2 , 0 }, { 4 , 2 }, { 6 , 4 }, { 8 , 6 },
222
+ { 10 , 8 }, { 12 , 10 }, { 14 , 12 }, { 38 , 0 },
223
+ { 44 , 2 }, { 48 , 4 }, { 54 , 6 }, { 60 , 8 },
224
+ { 64 , 10 }, { 102 , 12 }, { 108 , 14 }, { 112 , 16 },
225
+ { 118 , 18 }, { 124 , 20 }, { 128 , 22 }, { 134 , 24 },
226
+ { 140 , 26 }, { 151 , 28 }, { 157 , 30 }, { 161 , 32 },
227
+ { 167 , 34 }, { 171 , 36 }, { 175 , 38 },
228
228
};
229
229
struct ieee80211_channel * chan = dev -> mt76 .chandef .chan ;
230
230
u8 offset , addr ;
231
+ int i , idx = 0 ;
231
232
u16 data ;
232
- int i ;
233
233
234
234
if (mt76x0_tssi_enabled (dev )) {
235
235
s8 target_power ;
@@ -239,14 +239,14 @@ void mt76x0_get_power_info(struct mt76x02_dev *dev, u8 *info)
239
239
else
240
240
data = mt76x02_eeprom_get (dev , MT_EE_2G_TARGET_POWER );
241
241
target_power = (data & 0xff ) - dev -> mt76 .rate_power .ofdm [7 ];
242
- info [0 ] = target_power + mt76x0_get_delta (dev );
243
- info [1 ] = 0 ;
242
+ * tp = target_power + mt76x0_get_delta (dev );
244
243
245
244
return ;
246
245
}
247
246
248
247
for (i = 0 ; i < ARRAY_SIZE (chan_map ); i ++ ) {
249
- if (chan_map [i ].chan <= chan -> hw_value ) {
248
+ if (chan -> hw_value <= chan_map [i ].chan ) {
249
+ idx = (chan -> hw_value == chan_map [i ].chan );
250
250
offset = chan_map [i ].offset ;
251
251
break ;
252
252
}
@@ -258,13 +258,16 @@ void mt76x0_get_power_info(struct mt76x02_dev *dev, u8 *info)
258
258
addr = MT_EE_TX_POWER_DELTA_BW80 + offset ;
259
259
} else {
260
260
switch (chan -> hw_value ) {
261
+ case 42 :
262
+ offset = 2 ;
263
+ break ;
261
264
case 58 :
262
265
offset = 8 ;
263
266
break ;
264
267
case 106 :
265
268
offset = 14 ;
266
269
break ;
267
- case 112 :
270
+ case 122 :
268
271
offset = 20 ;
269
272
break ;
270
273
case 155 :
@@ -277,14 +280,9 @@ void mt76x0_get_power_info(struct mt76x02_dev *dev, u8 *info)
277
280
}
278
281
279
282
data = mt76x02_eeprom_get (dev , addr );
280
-
281
- info [0 ] = data ;
282
- if (!info [0 ] || info [0 ] > 0x3f )
283
- info [0 ] = 5 ;
284
-
285
- info [1 ] = data >> 8 ;
286
- if (!info [1 ] || info [1 ] > 0x3f )
287
- info [1 ] = 5 ;
283
+ * tp = data >> (8 * idx );
284
+ if (* tp < 0 || * tp > 0x3f )
285
+ * tp = 5 ;
288
286
}
289
287
290
288
static int mt76x0_check_eeprom (struct mt76x02_dev * dev )
0 commit comments