bcm-v4 [Specification]

(checked against 5.10.56.46)

1. Init registers from register initialisation table (below)
2. Write 0 to radio registers 0x48, 0x49, 0x4A and 0x4B.
3. Write 0x40 to radio register 0x10
4. Write 0 to to radio register 0x10
5. Write 0x10 to radio register 0x5d
6. Write 0 to radio register 0x5d
7. If the PHY revision > 0

1. Read Radio Register 0x02, right shift by 1, OR with 0x0080 and write the result to Radio Register 0x4015
8. If the current band type is 2 (2.4 GHz)
1. Bitwise OR radio register 0x57 with 1
9. Otherwise
10. If xtalfreq <= 30,000,000

1. Set pdiv to 1

11. Otherwise
1. Set pdiv to 2

2. Bitwise OR radio register 0x4035 with 4
12. Calculate ((800,000,000 * pdiv + xtalfreq) / (2 * xtalfreq)) - 8 and write the result to Radio Register 0x403B

13. Calculate ((100 * xtalfreq + 16,000,000 * pdiv) / (32,000,000 * pdiv)) - 1 and write to Radio Register 0x4046

14. Calculate ((2 * xtalfreq + 1,000,000 * pdiv) / (2,000,000 * pdiv)) - 1 and write to Radio Register 0x4047

15. Calculate a reference frequency as (1000 * pdiv + 2 * xtalfreq) / (2000 * pdiv)

16. Mask the result with 0xFFFF
17. Use the frequency data table to find the entry where the reference frequency is just less than the frequency entry in the table. Use that table row in the following steps.
18. Left shift the data2 value by 4 and bitwise OR with the data1 value (Note: The original code masks data2 with 0xFF and data1 with 0x0F in the process, but I don't think that is necessary.)
19. Write the result to radio register 0x403C
20. Left shift the data4 value by 4 and bitwise OR with the data3 value (Note: Same here with data3 and data4.)
21. Write the result to radio register 0x403D
22. Write the data5 entry to Radio Register 0x403E

## frequency data table

 frequency data1 data2 data3 data4 data5 data6 12000 6 6 6 6 10 6 13000 4 4 4 4 11 7 14400 3 3 3 3 12 7 16200 3 3 3 3 13 8 18000 2 2 2 2 14 8 19200 1 1 1 1 14 9

## register initialisation table

 address init A init G do init A do init G 0x00 0 0 0 0 0x01 0 0 0 0 0x02 0 0 0 0 0x03 0 0 0 0 0x04 0x1 0 1 1 0x05 0 0 0 0 0x06 0 0 0 0 0x07 0 0 0 0 0x08 0 0 0 0 0x09 0 0 0 0 0x0A 0 0 0 0 0x0B 0 0 0 0 0x0C 0 0 0 0 0x0D 0 0 0 0 0x0E 0 0 0 0 0x0F 0 0 0 0 0x10 0 0 0 0 0x11 0 0xca 0 1 0x12 0x18 0x18 0 0 0x13 0 0 1 1 0x14 0x15 0x2a 1 1 0x15 0 0 0 0 0x16 0x1 0x1 0 0 0x17 0xdb 0xff 1 0 0x18 0x1 0x1 0 0 0x19 0x41 0x41 0 0 0x1A 0x2 0x2 0 0 0x1B 0x32 0x32 0 0 0x1C 0 0 0 0 0x1D 0 0 0 0 0x1E 0xdd 0 1 1 0x1F 0 0 0 0 0x20 0xdd 0 1 1 0x21 0x77 0xb5 1 1 0x22 0 0xff 1 1 0x23 0x1f 0x1f 0 0 0x24 0x32 0x32 0 0 0x25 0x32 0x32 0 0 0x26 0x33 0x33 1 1 0x27 0x9 0x9 0 0 0x28 0 0 0 1 0x29 0x18 0x18 0 0 0x2A 0x27 0x27 0 0 0x2B 0x28 0x28 0 0 0x2C 0x7 0x7 0 0 0x2D 0 0 0 0 0x2E 0x8 0x8 0 0 0x2F 0x82 0x80 1 1 0x30 0 0 0 0 0x31 0 0 0 0 0x32 0 0 0 0 0x33 0x4 0x4 1 1 0x34 0 0 1 1 0x35 0x11 0x11 0 0 0x36 0x43 0x43 0 0 0x37 0x33 0x33 0 0 0x38 0x10 0x10 0 0 0x39 0 0 0 0 0x3A 0 0 0 0 0x3B 0x6 0x6 0 0 0x3C 0x2a 0x2a 0 0 0x3D 0xaa 0xaa 0 0 0x3E 0x21 0x21 0 0 0x3F 0xaa 0xaa 0 0 0x40 0x22 0x22 0 0 0x41 0x1 0x1 0 0 0x42 0x55 0x55 0 0 0x43 0x1 0x1 0 0 0x44 0x55 0x55 0 0 0x45 0x1 0x1 0 0 0x46 0 0 0 0 0x47 0x84 0x84 0 0 0x48 0 0 0 0 0x49 0x3 0x3 1 1 0x4A 0x2 0x2 1 1 0x4B 0 0 0 0 0x4C 0x58 0x58 0 0 0x4D 0x82 0x82 0 0 0x4E 0 0 0 0 0x4F 0 0 0 0 0x50 0xff 0xff 0 0 0x51 0xff 0xff 0 0 0x52 0x88 0x1b 1 1 0x53 0x88 0x88 0 0 0x54 0x88 0x88 0 0 0x55 0x33 0x33 0 0 0x56 0x33 0x33 0 0 0x57 0 0 0 0 0x58 0 0 0 0 0x59 0 0 0 0 0x5A 0x33 0x33 0 0 0x5B 0x55 0x55 0 0 0x5C 0x32 0x32 0 0 0x5D 0 0 0 0 0x5E 0 0 0 0 0x5F 0x15 0x15 0 0 0x60 0xf 0xf 0 0 0x61 0 0 0 0 0x62 0 0 0 0 0x63 0 0 0 0 0x64 0 0 0 0 0x65 0 0 0 0 0x66 0 0 0 0 0x69 0 0 0 0 0x6A 0 0 0 0 0x6B 0 0 0 0 0x6C 0 0 0 0 0x4000 0 0 0 0 0x4001 0 0 0 0 0x4002 0 0 0 0 0x4003 0 0 0 0 0x4004 0x1 0 1 1 0x4005 0 0 0 0 0x4006 0 0 0 0 0x4007 0 0 0 0 0x4008 0 0 0 0 0x4009 0 0 0 0 0x400A 0 0 0 0 0x400B 0 0 0 0 0x400C 0 0 0 0 0x400D 0 0 0 0 0x400E 0 0 0 0 0x400F 0 0 0 0 0x4010 0xff 0xff 1 1 0x4011 0 0 0 0 0x4012 0x8e 0x8e 0 0 0x4013 0 0 0 0 0x4014 0x6 0x6 0 0 0x4015 0 0 0 0 0x4016 0x11 0x11 0 0 0x4017 0xf8 0xd8 1 1 0x4018 0x3c 0x24 1 1 0x4019 0 0 0 0 0x401A 0x41 0x41 0 0 0x401B 0x2 0x2 0 0 0x401C 0x33 0x33 0 0 0x401D 0x22 0x22 0 0 0x401E 0 0 0 0 0x401F 0x88 0x80 1 1 0x4020 0x88 0x88 0 0 0x4021 0x88 0x80 1 1 0x4022 0 0 0 0 0x4023 0 0 0 0 0x4024 0x7 0x7 0 0 0x4025 0xaf 0xaf 0 0 0x4026 0x12 0x12 0 0 0x4027 0xb 0xb 0 0 0x4028 0x5f 0x5f 0 0 0x4029 0 0 0 0 0x402A 0x40 0x40 0 0 0x402B 0x52 0x52 0 0 0x402C 0x26 0x26 0 0 0x402D 0x3 0x3 0 0 0x402E 0x36 0x36 0 0 0x402F 0x57 0x57 0 0 0x4030 0x11 0x11 0 0 0x4031 0x75 0x75 0 0 0x4032 0xb4 0xb4 0 0 0x4033 0 0 0 0 0x4034 0x98 0x98 1 1 0x4035 0x10 0x10 1 1 0x4036 0 0 0 0 0x4037 0 0 0 0 0x4038 0 0 0 0 0x4039 0x43 0x43 1 1 0x403A 0x47 0x47 1 1 0x403B 0xc 0xc 1 1 0x403C 0x11 0x11 1 1 0x403D 0x11 0x11 1 1 0x403E 0xe 0xe 1 1 0x403F 0x8 0x8 1 1 0x4040 0x33 0x33 1 1 0x4041 0xa 0xa 1 1 0x4042 0x6 0x6 1 1 0x4043 0 0 0 0 0x4044 0 0 0 0 0x4045 0 0 0 0 0x4046 0x3e 0x3e 1 1 0x4047 0x13 0x13 1 1 0x4048 0 0 0 0 0x4049 0x62 0x62 1 1 0x404A 0x7 0x7 1 1 0x404B 0x16 0x16 1 1 0x404C 0x5c 0x5c 1 1 0x404D 0x95 0x95 1 1 0x404E 0 0 0 0 0x404F 0 0 0 0 0x4050 0 0 0 0 0x4051 0 0 0 0 0x4052 0xa0 0xa0 1 1 0x4053 0x4 0x4 1 1 0x4054 0 0 0 0 0x4055 0xcc 0xcc 1 1 0x4056 0x7 0x7 1 1 0x4057 0x10 0x10 0 0 0x4058 0 0 0 0 0x4059 0 0 0 0 0x405A 0 0 0 0 0x405B 0 0 0 0 0x405C 0x55 0x55 0 0 0x405D 0x55 0x55 0 0 0x405E 0x5 0x5 0 0 0x405F 0xf 0xf 1 0 0x4060 0 0 0 0 0x4061 0x55 0x55 0 0 0x4062 0x66 0x66 0 0 0x4063 0x55 0x55 0 0 0x4064 0x44 0x44 0 0 0x4065 0xa0 0xa0 0 0 0x4066 0x4 0x4 0 0 0x4067 0 0 0 0 0x4068 0x55 0x55 0 0

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