diff options
author | Michael Buesch <mb@bu3sch.de> | 2008-08-29 20:09:08 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-09-05 16:17:42 -0400 |
commit | 99c4a780624da24d20309f2be5abe5ef8d20fcc0 (patch) | |
tree | d244a0701097d03794a226946d370ed31bcd7bf8 /drivers/net/wireless/b43/phy_a.c | |
parent | f59ac0481660e66cec67f1d6b024e78b9dc715fe (diff) |
b43: Move remaining code from phy.c to phy_a.c
This moves the remaining code from phy.c to phy_a.c
phy.c is removed.
No functional change. Just moving code and removing dead code.
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/b43/phy_a.c')
-rw-r--r-- | drivers/net/wireless/b43/phy_a.c | 85 |
1 files changed, 84 insertions, 1 deletions
diff --git a/drivers/net/wireless/b43/phy_a.c b/drivers/net/wireless/b43/phy_a.c index 4d7d59e30960..2ca8353aa9ad 100644 --- a/drivers/net/wireless/b43/phy_a.c +++ b/drivers/net/wireless/b43/phy_a.c | |||
@@ -58,6 +58,25 @@ static inline u16 freq_r3A_value(u16 frequency) | |||
58 | return value; | 58 | return value; |
59 | } | 59 | } |
60 | 60 | ||
61 | #if 0 | ||
62 | /* This function converts a TSSI value to dBm in Q5.2 */ | ||
63 | static s8 b43_aphy_estimate_power_out(struct b43_wldev *dev, s8 tssi) | ||
64 | { | ||
65 | struct b43_phy *phy = &dev->phy; | ||
66 | struct b43_phy_a *aphy = phy->a; | ||
67 | s8 dbm = 0; | ||
68 | s32 tmp; | ||
69 | |||
70 | tmp = (aphy->tgt_idle_tssi - aphy->cur_idle_tssi + tssi); | ||
71 | tmp += 0x80; | ||
72 | tmp = clamp_val(tmp, 0x00, 0xFF); | ||
73 | dbm = aphy->tssi2dbm[tmp]; | ||
74 | //TODO: There's a FIXME on the specs | ||
75 | |||
76 | return dbm; | ||
77 | } | ||
78 | #endif | ||
79 | |||
61 | void b43_radio_set_tx_iq(struct b43_wldev *dev) | 80 | void b43_radio_set_tx_iq(struct b43_wldev *dev) |
62 | { | 81 | { |
63 | static const u8 data_high[5] = { 0x00, 0x40, 0x80, 0x90, 0xD0 }; | 82 | static const u8 data_high[5] = { 0x00, 0x40, 0x80, 0x90, 0xD0 }; |
@@ -326,9 +345,46 @@ void b43_phy_inita(struct b43_wldev *dev) | |||
326 | } | 345 | } |
327 | } | 346 | } |
328 | 347 | ||
348 | /* Initialise the TSSI->dBm lookup table */ | ||
349 | static int b43_aphy_init_tssi2dbm_table(struct b43_wldev *dev) | ||
350 | { | ||
351 | struct b43_phy *phy = &dev->phy; | ||
352 | struct b43_phy_a *aphy = phy->a; | ||
353 | s16 pab0, pab1, pab2; | ||
354 | |||
355 | pab0 = (s16) (dev->dev->bus->sprom.pa1b0); | ||
356 | pab1 = (s16) (dev->dev->bus->sprom.pa1b1); | ||
357 | pab2 = (s16) (dev->dev->bus->sprom.pa1b2); | ||
358 | |||
359 | if (pab0 != 0 && pab1 != 0 && pab2 != 0 && | ||
360 | pab0 != -1 && pab1 != -1 && pab2 != -1) { | ||
361 | /* The pabX values are set in SPROM. Use them. */ | ||
362 | if ((s8) dev->dev->bus->sprom.itssi_a != 0 && | ||
363 | (s8) dev->dev->bus->sprom.itssi_a != -1) | ||
364 | aphy->tgt_idle_tssi = | ||
365 | (s8) (dev->dev->bus->sprom.itssi_a); | ||
366 | else | ||
367 | aphy->tgt_idle_tssi = 62; | ||
368 | aphy->tssi2dbm = b43_generate_dyn_tssi2dbm_tab(dev, pab0, | ||
369 | pab1, pab2); | ||
370 | if (!aphy->tssi2dbm) | ||
371 | return -ENOMEM; | ||
372 | } else { | ||
373 | /* pabX values not set in SPROM, | ||
374 | * but APHY needs a generated table. */ | ||
375 | aphy->tssi2dbm = NULL; | ||
376 | b43err(dev->wl, "Could not generate tssi2dBm " | ||
377 | "table (wrong SPROM info)!\n"); | ||
378 | return -ENODEV; | ||
379 | } | ||
380 | |||
381 | return 0; | ||
382 | } | ||
383 | |||
329 | static int b43_aphy_op_allocate(struct b43_wldev *dev) | 384 | static int b43_aphy_op_allocate(struct b43_wldev *dev) |
330 | { | 385 | { |
331 | struct b43_phy_a *aphy; | 386 | struct b43_phy_a *aphy; |
387 | int err; | ||
332 | 388 | ||
333 | aphy = kzalloc(sizeof(*aphy), GFP_KERNEL); | 389 | aphy = kzalloc(sizeof(*aphy), GFP_KERNEL); |
334 | if (!aphy) | 390 | if (!aphy) |
@@ -337,7 +393,17 @@ static int b43_aphy_op_allocate(struct b43_wldev *dev) | |||
337 | 393 | ||
338 | //TODO init struct b43_phy_a | 394 | //TODO init struct b43_phy_a |
339 | 395 | ||
396 | err = b43_aphy_init_tssi2dbm_table(dev); | ||
397 | if (err) | ||
398 | goto err_free_aphy; | ||
399 | |||
340 | return 0; | 400 | return 0; |
401 | |||
402 | err_free_aphy: | ||
403 | kfree(aphy); | ||
404 | dev->phy.a = NULL; | ||
405 | |||
406 | return err; | ||
341 | } | 407 | } |
342 | 408 | ||
343 | static int b43_aphy_op_init(struct b43_wldev *dev) | 409 | static int b43_aphy_op_init(struct b43_wldev *dev) |
@@ -359,6 +425,7 @@ static void b43_aphy_op_exit(struct b43_wldev *dev) | |||
359 | aphy->initialised = 0; | 425 | aphy->initialised = 0; |
360 | } | 426 | } |
361 | //TODO | 427 | //TODO |
428 | kfree(aphy->tssi2dbm); | ||
362 | kfree(aphy); | 429 | kfree(aphy); |
363 | dev->phy.a = NULL; | 430 | dev->phy.a = NULL; |
364 | } | 431 | } |
@@ -430,7 +497,23 @@ static bool b43_aphy_op_supports_hwpctl(struct b43_wldev *dev) | |||
430 | 497 | ||
431 | static void b43_aphy_op_software_rfkill(struct b43_wldev *dev, | 498 | static void b43_aphy_op_software_rfkill(struct b43_wldev *dev, |
432 | enum rfkill_state state) | 499 | enum rfkill_state state) |
433 | {//TODO | 500 | { |
501 | struct b43_phy *phy = &dev->phy; | ||
502 | |||
503 | if (state == RFKILL_STATE_UNBLOCKED) { | ||
504 | if (phy->radio_on) | ||
505 | return; | ||
506 | b43_radio_write16(dev, 0x0004, 0x00C0); | ||
507 | b43_radio_write16(dev, 0x0005, 0x0008); | ||
508 | b43_phy_write(dev, 0x0010, b43_phy_read(dev, 0x0010) & 0xFFF7); | ||
509 | b43_phy_write(dev, 0x0011, b43_phy_read(dev, 0x0011) & 0xFFF7); | ||
510 | b43_radio_init2060(dev); | ||
511 | } else { | ||
512 | b43_radio_write16(dev, 0x0004, 0x00FF); | ||
513 | b43_radio_write16(dev, 0x0005, 0x00FB); | ||
514 | b43_phy_write(dev, 0x0010, b43_phy_read(dev, 0x0010) | 0x0008); | ||
515 | b43_phy_write(dev, 0x0011, b43_phy_read(dev, 0x0011) | 0x0008); | ||
516 | } | ||
434 | } | 517 | } |
435 | 518 | ||
436 | static int b43_aphy_op_switch_channel(struct b43_wldev *dev, | 519 | static int b43_aphy_op_switch_channel(struct b43_wldev *dev, |