git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
[pandora-kernel.git]
/
drivers
/
net
/
wireless
/
wl12xx
/
wl1271_boot.c
diff --git
a/drivers/net/wireless/wl12xx/wl1271_boot.c
b/drivers/net/wireless/wl12xx/wl1271_boot.c
index
8087dc1
..
1a36d8a
100644
(file)
--- a/
drivers/net/wireless/wl12xx/wl1271_boot.c
+++ b/
drivers/net/wireless/wl12xx/wl1271_boot.c
@@
-351,7
+351,7
@@
static int wl1271_boot_soft_reset(struct wl1271 *wl)
static int wl1271_boot_run_firmware(struct wl1271 *wl)
{
int loop, ret;
static int wl1271_boot_run_firmware(struct wl1271 *wl)
{
int loop, ret;
- u32 chip_id, int
errupt
;
+ u32 chip_id, int
r
;
wl1271_boot_set_ecpu_ctrl(wl, ECPU_CONTROL_HALT);
wl1271_boot_set_ecpu_ctrl(wl, ECPU_CONTROL_HALT);
@@
-368,15
+368,15
@@
static int wl1271_boot_run_firmware(struct wl1271 *wl)
loop = 0;
while (loop++ < INIT_LOOP) {
udelay(INIT_LOOP_DELAY);
loop = 0;
while (loop++ < INIT_LOOP) {
udelay(INIT_LOOP_DELAY);
- int
errupt
= wl1271_read32(wl, ACX_REG_INTERRUPT_NO_CLEAR);
+ int
r
= wl1271_read32(wl, ACX_REG_INTERRUPT_NO_CLEAR);
- if (int
errupt
== 0xffffffff) {
+ if (int
r
== 0xffffffff) {
wl1271_error("error reading hardware complete "
"init indication");
return -EIO;
}
/* check that ACX_INTR_INIT_COMPLETE is enabled */
wl1271_error("error reading hardware complete "
"init indication");
return -EIO;
}
/* check that ACX_INTR_INIT_COMPLETE is enabled */
- else if (int
errupt
& WL1271_ACX_INTR_INIT_COMPLETE) {
+ else if (int
r
& WL1271_ACX_INTR_INIT_COMPLETE) {
wl1271_write32(wl, ACX_REG_INTERRUPT_ACK,
WL1271_ACX_INTR_INIT_COMPLETE);
break;
wl1271_write32(wl, ACX_REG_INTERRUPT_ACK,
WL1271_ACX_INTR_INIT_COMPLETE);
break;
@@
-441,11
+441,23
@@
static int wl1271_boot_write_irq_polarity(struct wl1271 *wl)
return 0;
}
return 0;
}
+static void wl1271_boot_hw_version(struct wl1271 *wl)
+{
+ u32 fuse;
+
+ fuse = wl1271_top_reg_read(wl, REG_FUSE_DATA_2_1);
+ fuse = (fuse & PG_VER_MASK) >> PG_VER_OFFSET;
+
+ wl->hw_pg_ver = (s8)fuse;
+}
+
int wl1271_boot(struct wl1271 *wl)
{
int ret = 0;
u32 tmp, clk, pause;
int wl1271_boot(struct wl1271 *wl)
{
int ret = 0;
u32 tmp, clk, pause;
+ wl1271_boot_hw_version(wl);
+
if (REF_CLOCK == 0 || REF_CLOCK == 2 || REF_CLOCK == 4)
/* ref clk: 19.2/38.4/38.4-XTAL */
clk = 0x3;
if (REF_CLOCK == 0 || REF_CLOCK == 2 || REF_CLOCK == 4)
/* ref clk: 19.2/38.4/38.4-XTAL */
clk = 0x3;