Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
a3764ef7
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a3764ef7
编写于
3月 20, 2013
作者:
R
Rafał Miłecki
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
b43: N-PHY: use enum for RSSI type everywhere we use it
Signed-off-by:
N
Rafał Miłecki
<
zajec5@gmail.com
>
上级
2a2d0589
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
61 addition
and
43 deletion
+61
-43
drivers/net/wireless/b43/phy_n.c
drivers/net/wireless/b43/phy_n.c
+61
-43
未找到文件。
drivers/net/wireless/b43/phy_n.c
浏览文件 @
a3764ef7
...
...
@@ -1289,7 +1289,8 @@ static void b43_nphy_scale_offset_rssi(struct b43_wldev *dev, u16 scale,
}
}
static
void
b43_nphy_rev3_rssi_select
(
struct
b43_wldev
*
dev
,
u8
code
,
u8
type
)
static
void
b43_nphy_rev3_rssi_select
(
struct
b43_wldev
*
dev
,
u8
code
,
enum
n_rssi_type
rssi_type
)
{
u8
i
;
u16
reg
,
val
;
...
...
@@ -1312,7 +1313,9 @@ static void b43_nphy_rev3_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
B43_NPHY_AFECTL_OVER1
:
B43_NPHY_AFECTL_OVER
;
b43_phy_maskset
(
dev
,
reg
,
0xFDFF
,
0x0200
);
if
(
type
<
3
)
{
if
(
rssi_type
==
N_RSSI_W1
||
rssi_type
==
N_RSSI_W2
||
rssi_type
==
N_RSSI_NB
)
{
reg
=
(
i
==
0
)
?
B43_NPHY_AFECTL_C1
:
B43_NPHY_AFECTL_C2
;
...
...
@@ -1323,9 +1326,9 @@ static void b43_nphy_rev3_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
B43_NPHY_RFCTL_LUT_TRSW_UP2
;
b43_phy_maskset
(
dev
,
reg
,
0xFFC3
,
0
);
if
(
type
==
0
)
if
(
rssi_type
==
N_RSSI_W1
)
val
=
(
b43_current_band
(
dev
->
wl
)
==
IEEE80211_BAND_5GHZ
)
?
4
:
8
;
else
if
(
type
==
1
)
else
if
(
rssi_type
==
N_RSSI_W2
)
val
=
16
;
else
val
=
32
;
...
...
@@ -1336,9 +1339,9 @@ static void b43_nphy_rev3_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
B43_NPHY_TXF_40CO_B32S1
;
b43_phy_set
(
dev
,
reg
,
0x0020
);
}
else
{
if
(
type
==
6
)
if
(
rssi_type
==
N_RSSI_TBD
)
val
=
0x0100
;
else
if
(
type
==
3
)
else
if
(
rssi_type
==
N_RSSI_IQ
)
val
=
0x0200
;
else
val
=
0x0300
;
...
...
@@ -1350,7 +1353,8 @@ static void b43_nphy_rev3_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
b43_phy_maskset
(
dev
,
reg
,
0xFCFF
,
val
);
b43_phy_maskset
(
dev
,
reg
,
0xF3FF
,
val
<<
2
);
if
(
type
!=
3
&&
type
!=
6
)
{
if
(
rssi_type
!=
N_RSSI_IQ
&&
rssi_type
!=
N_RSSI_TBD
)
{
enum
ieee80211_band
band
=
b43_current_band
(
dev
->
wl
);
...
...
@@ -1372,33 +1376,43 @@ static void b43_nphy_rev3_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
}
}
static
void
b43_nphy_rev2_rssi_select
(
struct
b43_wldev
*
dev
,
u8
code
,
u8
type
)
static
void
b43_nphy_rev2_rssi_select
(
struct
b43_wldev
*
dev
,
u8
code
,
enum
n_rssi_type
rssi_type
)
{
u16
val
;
bool
rssi_w1_w2_nb
=
false
;
if
(
type
<
3
)
switch
(
rssi_type
)
{
case
N_RSSI_W1
:
case
N_RSSI_W2
:
case
N_RSSI_NB
:
val
=
0
;
else
if
(
type
==
6
)
rssi_w1_w2_nb
=
true
;
break
;
case
N_RSSI_TBD
:
val
=
1
;
else
if
(
type
==
3
)
break
;
case
N_RSSI_IQ
:
val
=
2
;
else
break
;
default:
val
=
3
;
}
val
=
(
val
<<
12
)
|
(
val
<<
14
);
b43_phy_maskset
(
dev
,
B43_NPHY_AFECTL_C1
,
0x0FFF
,
val
);
b43_phy_maskset
(
dev
,
B43_NPHY_AFECTL_C2
,
0x0FFF
,
val
);
if
(
type
<
3
)
{
if
(
rssi_w1_w2_nb
)
{
b43_phy_maskset
(
dev
,
B43_NPHY_RFCTL_RSSIO1
,
0xFFCF
,
(
type
+
1
)
<<
4
);
(
rssi_
type
+
1
)
<<
4
);
b43_phy_maskset
(
dev
,
B43_NPHY_RFCTL_RSSIO2
,
0xFFCF
,
(
type
+
1
)
<<
4
);
(
rssi_
type
+
1
)
<<
4
);
}
if
(
code
==
0
)
{
b43_phy_mask
(
dev
,
B43_NPHY_AFECTL_OVER
,
~
0x3000
);
if
(
type
<
3
)
{
if
(
rssi_w1_w2_nb
)
{
b43_phy_mask
(
dev
,
B43_NPHY_RFCTL_CMD
,
~
(
B43_NPHY_RFCTL_CMD_RXEN
|
B43_NPHY_RFCTL_CMD_CORESEL
));
...
...
@@ -1414,7 +1428,7 @@ static void b43_nphy_rev2_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
}
}
else
{
b43_phy_set
(
dev
,
B43_NPHY_AFECTL_OVER
,
0x3000
);
if
(
type
<
3
)
{
if
(
rssi_w1_w2_nb
)
{
b43_phy_maskset
(
dev
,
B43_NPHY_RFCTL_CMD
,
~
(
B43_NPHY_RFCTL_CMD_RXEN
|
B43_NPHY_RFCTL_CMD_CORESEL
),
...
...
@@ -1434,7 +1448,8 @@ static void b43_nphy_rev2_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
}
/* http://bcm-v4.sipsolutions.net/802.11/PHY/N/RSSISel */
static
void
b43_nphy_rssi_select
(
struct
b43_wldev
*
dev
,
u8
code
,
u8
type
)
static
void
b43_nphy_rssi_select
(
struct
b43_wldev
*
dev
,
u8
code
,
enum
n_rssi_type
type
)
{
if
(
dev
->
phy
.
rev
>=
3
)
b43_nphy_rev3_rssi_select
(
dev
,
code
,
type
);
...
...
@@ -1443,11 +1458,12 @@ static void b43_nphy_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
}
/* http://bcm-v4.sipsolutions.net/802.11/PHY/N/SetRssi2055Vcm */
static
void
b43_nphy_set_rssi_2055_vcm
(
struct
b43_wldev
*
dev
,
u8
type
,
u8
*
buf
)
static
void
b43_nphy_set_rssi_2055_vcm
(
struct
b43_wldev
*
dev
,
enum
n_rssi_type
rssi_type
,
u8
*
buf
)
{
int
i
;
for
(
i
=
0
;
i
<
2
;
i
++
)
{
if
(
type
==
2
)
{
if
(
rssi_type
==
N_RSSI_NB
)
{
if
(
i
==
0
)
{
b43_radio_maskset
(
dev
,
B2055_C1_B0NB_RSSIVCM
,
0xFC
,
buf
[
0
]);
...
...
@@ -1471,8 +1487,8 @@ static void b43_nphy_set_rssi_2055_vcm(struct b43_wldev *dev, u8 type, u8 *buf)
}
/* http://bcm-v4.sipsolutions.net/802.11/PHY/N/PollRssi */
static
int
b43_nphy_poll_rssi
(
struct
b43_wldev
*
dev
,
u8
type
,
s32
*
buf
,
u8
nsamp
)
static
int
b43_nphy_poll_rssi
(
struct
b43_wldev
*
dev
,
enum
n_rssi_type
rssi_type
,
s32
*
buf
,
u8
nsamp
)
{
int
i
;
int
out
;
...
...
@@ -1503,7 +1519,7 @@ static int b43_nphy_poll_rssi(struct b43_wldev *dev, u8 type, s32 *buf,
save_regs_phy
[
8
]
=
0
;
}
b43_nphy_rssi_select
(
dev
,
5
,
type
);
b43_nphy_rssi_select
(
dev
,
5
,
rssi_
type
);
if
(
dev
->
phy
.
rev
<
2
)
{
save_regs_phy
[
8
]
=
b43_phy_read
(
dev
,
B43_NPHY_GPIO_SEL
);
...
...
@@ -1622,14 +1638,16 @@ static void b43_nphy_rev3_rssi_cal(struct b43_wldev *dev)
if
(
!
(
rx_core_state
&
(
1
<<
core
)))
continue
;
r
=
core
?
B2056_RX1
:
B2056_RX0
;
b43_nphy_scale_offset_rssi
(
dev
,
0
,
0
,
core
+
1
,
N_RAIL_I
,
2
);
b43_nphy_scale_offset_rssi
(
dev
,
0
,
0
,
core
+
1
,
N_RAIL_Q
,
2
);
b43_nphy_scale_offset_rssi
(
dev
,
0
,
0
,
core
+
1
,
N_RAIL_I
,
N_RSSI_NB
);
b43_nphy_scale_offset_rssi
(
dev
,
0
,
0
,
core
+
1
,
N_RAIL_Q
,
N_RSSI_NB
);
/* Grab RSSI results for every possible VCM */
for
(
vcm
=
0
;
vcm
<
8
;
vcm
++
)
{
b43_radio_maskset
(
dev
,
r
|
B2056_RX_RSSI_MISC
,
0xE3
,
vcm
<<
2
);
b43_nphy_poll_rssi
(
dev
,
2
,
results
[
vcm
],
8
);
b43_nphy_poll_rssi
(
dev
,
N_RSSI_NB
,
results
[
vcm
],
8
);
}
/* Find out which VCM got the best results */
...
...
@@ -1671,7 +1689,7 @@ static void b43_nphy_rev3_rssi_cal(struct b43_wldev *dev)
b43_nphy_scale_offset_rssi
(
dev
,
0
,
offset
[
i
],
(
i
/
2
==
0
)
?
1
:
2
,
(
i
%
2
==
0
)
?
N_RAIL_I
:
N_RAIL_Q
,
2
);
N_RSSI_NB
);
}
}
...
...
@@ -1749,7 +1767,7 @@ static void b43_nphy_rev3_rssi_cal(struct b43_wldev *dev)
}
/* http://bcm-v4.sipsolutions.net/802.11/PHY/N/RSSICal */
static
void
b43_nphy_rev2_rssi_cal
(
struct
b43_wldev
*
dev
,
u8
type
)
static
void
b43_nphy_rev2_rssi_cal
(
struct
b43_wldev
*
dev
,
enum
n_rssi_type
type
)
{
int
i
,
j
,
vcm
;
u8
state
[
4
];
...
...
@@ -1769,10 +1787,10 @@ static void b43_nphy_rev2_rssi_cal(struct b43_wldev *dev, u8 type)
s32
results
[
4
][
4
]
=
{
};
s32
miniq
[
4
][
2
]
=
{
};
if
(
type
==
2
)
{
if
(
type
==
N_RSSI_NB
)
{
code
=
0
;
val
=
6
;
}
else
if
(
type
<
2
)
{
}
else
if
(
type
==
N_RSSI_W1
||
type
==
N_RSSI_W
2
)
{
code
=
25
;
val
=
4
;
}
else
{
...
...
@@ -1815,10 +1833,10 @@ static void b43_nphy_rev2_rssi_cal(struct b43_wldev *dev, u8 type)
u8
tmp
[
4
];
for
(
j
=
0
;
j
<
4
;
j
++
)
tmp
[
j
]
=
vcm
;
if
(
type
!=
1
)
if
(
type
!=
N_RSSI_W2
)
b43_nphy_set_rssi_2055_vcm
(
dev
,
type
,
tmp
);
b43_nphy_poll_rssi
(
dev
,
type
,
results
[
vcm
],
8
);
if
(
type
<
2
)
if
(
type
==
N_RSSI_W1
||
type
==
N_RSSI_W
2
)
for
(
j
=
0
;
j
<
2
;
j
++
)
miniq
[
vcm
][
j
]
=
min
(
results
[
vcm
][
2
*
j
],
results
[
vcm
][
2
*
j
+
1
]);
...
...
@@ -1830,7 +1848,7 @@ static void b43_nphy_rev2_rssi_cal(struct b43_wldev *dev, u8 type)
s32
minpoll
=
249
;
s32
currd
;
for
(
vcm
=
0
;
vcm
<
4
;
vcm
++
)
{
if
(
type
==
2
)
if
(
type
==
N_RSSI_NB
)
currd
=
abs
(
results
[
vcm
][
i
]);
else
currd
=
abs
(
miniq
[
vcm
][
i
/
2
]
-
code
*
8
);
...
...
@@ -1847,7 +1865,7 @@ static void b43_nphy_rev2_rssi_cal(struct b43_wldev *dev, u8 type)
vcm_final
[
i
]
=
minvcm
;
}
if
(
type
!=
1
)
if
(
type
!=
N_RSSI_W2
)
b43_nphy_set_rssi_2055_vcm
(
dev
,
type
,
vcm_final
);
for
(
i
=
0
;
i
<
4
;
i
++
)
{
...
...
@@ -1873,28 +1891,28 @@ static void b43_nphy_rev2_rssi_cal(struct b43_wldev *dev, u8 type)
switch
(
state
[
2
])
{
case
1
:
b43_nphy_rssi_select
(
dev
,
1
,
2
);
b43_nphy_rssi_select
(
dev
,
1
,
N_RSSI_NB
);
break
;
case
4
:
b43_nphy_rssi_select
(
dev
,
1
,
0
);
b43_nphy_rssi_select
(
dev
,
1
,
N_RSSI_W1
);
break
;
case
2
:
b43_nphy_rssi_select
(
dev
,
1
,
1
);
b43_nphy_rssi_select
(
dev
,
1
,
N_RSSI_W2
);
break
;
default:
b43_nphy_rssi_select
(
dev
,
1
,
1
);
b43_nphy_rssi_select
(
dev
,
1
,
N_RSSI_W2
);
break
;
}
switch
(
state
[
3
])
{
case
1
:
b43_nphy_rssi_select
(
dev
,
2
,
2
);
b43_nphy_rssi_select
(
dev
,
2
,
N_RSSI_NB
);
break
;
case
4
:
b43_nphy_rssi_select
(
dev
,
2
,
0
);
b43_nphy_rssi_select
(
dev
,
2
,
N_RSSI_W1
);
break
;
default:
b43_nphy_rssi_select
(
dev
,
2
,
1
);
b43_nphy_rssi_select
(
dev
,
2
,
N_RSSI_W2
);
break
;
}
...
...
@@ -3153,9 +3171,9 @@ static void b43_nphy_tx_power_ctl_idle_tssi(struct b43_wldev *dev)
b43_nphy_stop_playback
(
dev
);
b43_nphy_tx_tone
(
dev
,
0xFA0
,
0
,
false
,
false
);
udelay
(
20
);
tmp
=
b43_nphy_poll_rssi
(
dev
,
4
,
rssi
,
1
);
tmp
=
b43_nphy_poll_rssi
(
dev
,
N_RSSI_TSSI_2G
,
rssi
,
1
);
b43_nphy_stop_playback
(
dev
);
b43_nphy_rssi_select
(
dev
,
0
,
0
);
b43_nphy_rssi_select
(
dev
,
0
,
N_RSSI_W1
);
if
(
phy
->
rev
>=
7
)
b43_nphy_rf_control_override_rev7
(
dev
,
0x2000
,
0
,
3
,
true
,
0
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录