bcm-v4

[Specification

LP PHY Periodic Calibration

  1. Set phy_lastcal to now ??

  2. Set phy_forcecal to 0

  3. If lpphy_full_cal_channel is the current channel

    1. Set full_cal to true
  4. Otherwise
    1. Set full_cal to false
  5. Set temp to 30
  6. If full_cal is true
    1. If lpphy_caldeltatemp >= 0

      1. If (temp >= lpphy_lastcal_temperature - lpphy_caldeltatemp) AND (temp <= lpphy_lastcal_temperature + lpphy_caldeltatemp)

        1. Return
  7. Set lpphy_full_cal_channel to the current channel

  8. Set lpphy_lastcal_temperature to temp

  9. If the MAC is not suspended
    1. Suspend the MAC
  10. Call Enable Bluetooth Coexistence Override

  11. If PHY Revision >= 2

    1. Call LP PHY TX Dig Filt Set Rev2 with the Rev2_txdigfiltcoeffs_ofdm as argument

  12. Read PHY Register 0x4A4, mask with 0xE000 and save as tmp
  13. Call [802.11/PHY/LP/SetTXPwrCtrl|LP PHY Set TX Power Control]] with 0 as argument
  14. If full_cal is true
    1. Set tmp1 to 0
  15. Otherwise
    1. Set tmp1 to 2
  16. Call LP PHY TxpwrtblIqlo Cal with tmp1 as argument

  17. If PHY Revision is 0 AND tmp is not zero
    1. Call LP PHY PR41573

  18. If PHY Revision >= 2 AND full_cal is true

    1. Call LP PHY PAPD Cal TXpwr

  19. If the Chip ID is 0x5354
    1. Call LP PHY RX IQ Cal with iqcomp_5354_table, the size of that table, 1, 1, 0, 0, and NULL as arguments

  20. Otherwise
    1. If PHY Revision >= 2

      1. Set an lpphy_rx_iqcomp_t pointer to iqcomp_table_rev2
      2. Set size to the size of that table
    2. Otherwise
      1. Set the lpphy_rx_iqcomp_t pointer to iqcomp_table_rev0
      2. Set size to the size of that table
    3. Call LP PHY RX IQ Cal with the pointer, size, 1, 1, 0, 0, and NULL as arguments

  21. Call LP PHY Set TX Power Control with tmp as argument

  22. If the MAC was disabled above
    1. Reenable the MAC

Rev2_txdigfiltcoeffs_ofdm

0xec4d

0xe831

0xe330

0x3018

0x0018

0xfa20

0x0020

0xc340

0x0040

struct lpphy_rx_iqcomp_t {

};

iqcomp_table_rev0

1

-64

0

2

-64

0

3

-64

0

4

-64

0

5

-64

0

6

-64

0

7

-64

0

8

-64

0

9

-64

0

10

-64

0

11

-64

0

12

-64

0

13

-64

0

14

-64

0

34

-64

0

38

-64

0

42

-64

0

46

-64

0

36

-64

0

40

-64

0

44

-64

0

48

-64

0

52

-64

0

56

-64

0

60

-64

0

64

-64

0

100

-64

0

104

-64

0

108

-64

0

112

-64

0

116

-64

0

120

-64

0

124

-64

0

128

-64

0

132

-64

0

136

-64

0

140

-64

0

149

-64

0

153

-64

0

157

-64

0

161

-64

0

165

-64

0

184

-64

0

188

-64

0

192

-64

0

196

-64

0

200

-64

0

204

-64

0

208

-64

0

212

-64

0

216

-64

0

iqcomp_table_rev2

1

-64

0

2

-64

0

3

-64

0

4

-64

0

5

-64

0

6

-64

0

7

-64

0

8

-64

0

9

-64

0

10

-64

0

11

-64

0

12

-64

0

13

-64

0

14

-64

0

34

-64

0

38

-64

0

42

-64

0

46

-64

0

36

-64

0

40

-64

0

44

-64

0

48

-64

0

52

-64

0

56

-64

0

60

-64

0

64

-64

0

100

-64

0

104

-64

0

108

-64

0

112

-64

0

116

-64

0

120

-64

0

124

-64

0

128

-64

0

132

-64

0

136

-64

0

140

-64

0

149

-64

0

153

-64

0

157

-64

0

161

-64

0

165

-64

0

184

-64

0

188

-64

0

192

-64

0

196

-64

0

200

-64

0

204

-64

0

208

-64

0

212

-64

0

216

-64

0

iqcomp_5354_table

1

-66

15

2

-66

15

3

-66

15

4

-66

15

5

-66

15

6

-66

15

7

-66

14

8

-66

14

9

-66

14

10

-66

14

11

-66

14

12

-66

13

13

-66

13

14

-66

13


Exported/Archived from the wiki to HTML on 2016-10-27