99f57bcd336a6120974d7f2c9dda36914b98509f
[oweals/openwrt.git] /
1 From 84833056aa7dd25f5b097e31c78f2a0914c5160c Mon Sep 17 00:00:00 2001
2 From: Gabor Juhos <juhosg@openwrt.org>
3 Date: Sun, 24 Mar 2013 19:26:26 +0100
4 Subject: [PATCH] rt2x00: rt2800lib: add BBP register initialization for
5  RT3883
6
7 Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
8 ---
9  drivers/net/wireless/ralink/rt2x00/rt2800lib.c |   44 +++++++++++++++++++++++++++++++
10  1 file changed, 44 insertions(+)
11
12 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
13 +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
14 @@ -6349,6 +6349,47 @@ static void rt2800_init_bbp_3593(struct
15                 rt2800_bbp_write(rt2x00dev, 103, 0xc0);
16  }
17  
18 +static void rt2800_init_bbp_3883(struct rt2x00_dev *rt2x00dev)
19 +{
20 +       rt2800_init_bbp_early(rt2x00dev);
21 +
22 +       rt2800_bbp_write(rt2x00dev, 4, 0x50);
23 +       rt2800_bbp_write(rt2x00dev, 47, 0x48);
24 +
25 +       rt2800_bbp_write(rt2x00dev, 86, 0x46);
26 +       rt2800_bbp_write(rt2x00dev, 88, 0x90);
27 +
28 +       rt2800_bbp_write(rt2x00dev, 92, 0x02);
29 +
30 +       rt2800_bbp_write(rt2x00dev, 103, 0xc0);
31 +       rt2800_bbp_write(rt2x00dev, 104, 0x92);
32 +       rt2800_bbp_write(rt2x00dev, 105, 0x34);
33 +       rt2800_bbp_write(rt2x00dev, 106, 0x12);
34 +       rt2800_bbp_write(rt2x00dev, 120, 0x50);
35 +       rt2800_bbp_write(rt2x00dev, 137, 0x0f);
36 +       rt2800_bbp_write(rt2x00dev, 163, 0x9d);
37 +
38 +       /* Set ITxBF timeout to 0x9C40=1000msec */
39 +       rt2800_bbp_write(rt2x00dev, 179, 0x02);
40 +       rt2800_bbp_write(rt2x00dev, 180, 0x00);
41 +       rt2800_bbp_write(rt2x00dev, 182, 0x40);
42 +       rt2800_bbp_write(rt2x00dev, 180, 0x01);
43 +       rt2800_bbp_write(rt2x00dev, 182, 0x9c);
44 +
45 +       rt2800_bbp_write(rt2x00dev, 179, 0x00);
46 +
47 +       /* Reprogram the inband interface to put right values in RXWI */
48 +       rt2800_bbp_write(rt2x00dev, 142, 0x04);
49 +       rt2800_bbp_write(rt2x00dev, 143, 0x3b);
50 +       rt2800_bbp_write(rt2x00dev, 142, 0x06);
51 +       rt2800_bbp_write(rt2x00dev, 143, 0xa0);
52 +       rt2800_bbp_write(rt2x00dev, 142, 0x07);
53 +       rt2800_bbp_write(rt2x00dev, 143, 0xa1);
54 +       rt2800_bbp_write(rt2x00dev, 142, 0x08);
55 +       rt2800_bbp_write(rt2x00dev, 143, 0xa2);
56 +       rt2800_bbp_write(rt2x00dev, 148, 0xc8);
57 +}
58 +
59  static void rt2800_init_bbp_53xx(struct rt2x00_dev *rt2x00dev)
60  {
61         int ant, div_mode;
62 @@ -6792,6 +6833,9 @@ static void rt2800_init_bbp(struct rt2x0
63         case RT3593:
64                 rt2800_init_bbp_3593(rt2x00dev);
65                 return;
66 +       case RT3883:
67 +               rt2800_init_bbp_3883(rt2x00dev);
68 +               return;
69         case RT5390:
70         case RT5392:
71                 rt2800_init_bbp_53xx(rt2x00dev);