diff options
-rw-r--r-- | drivers/net/wireless/wl12xx/wl1271_boot.c | 10 | ||||
-rw-r--r-- | include/linux/wl12xx.h | 8 |
2 files changed, 12 insertions, 6 deletions
diff --git a/drivers/net/wireless/wl12xx/wl1271_boot.c b/drivers/net/wireless/wl12xx/wl1271_boot.c index b9102124209..5b190728ca5 100644 --- a/drivers/net/wireless/wl12xx/wl1271_boot.c +++ b/drivers/net/wireless/wl12xx/wl1271_boot.c | |||
@@ -471,20 +471,19 @@ int wl1271_boot(struct wl1271 *wl) | |||
471 | { | 471 | { |
472 | int ret = 0; | 472 | int ret = 0; |
473 | u32 tmp, clk, pause; | 473 | u32 tmp, clk, pause; |
474 | int ref_clock = wl->ref_clock; | ||
475 | 474 | ||
476 | wl1271_boot_hw_version(wl); | 475 | wl1271_boot_hw_version(wl); |
477 | 476 | ||
478 | if (ref_clock == 0 || ref_clock == 2 || ref_clock == 4) | 477 | if (wl->ref_clock == 0 || wl->ref_clock == 2 || wl->ref_clock == 4) |
479 | /* ref clk: 19.2/38.4/38.4-XTAL */ | 478 | /* ref clk: 19.2/38.4/38.4-XTAL */ |
480 | clk = 0x3; | 479 | clk = 0x3; |
481 | else if (ref_clock == 1 || ref_clock == 3) | 480 | else if (wl->ref_clock == 1 || wl->ref_clock == 3) |
482 | /* ref clk: 26/52 */ | 481 | /* ref clk: 26/52 */ |
483 | clk = 0x5; | 482 | clk = 0x5; |
484 | else | 483 | else |
485 | return -EINVAL; | 484 | return -EINVAL; |
486 | 485 | ||
487 | if (ref_clock != 0) { | 486 | if (wl->ref_clock != 0) { |
488 | u16 val; | 487 | u16 val; |
489 | /* Set clock type (open drain) */ | 488 | /* Set clock type (open drain) */ |
490 | val = wl1271_top_reg_read(wl, OCP_REG_CLK_TYPE); | 489 | val = wl1271_top_reg_read(wl, OCP_REG_CLK_TYPE); |
@@ -529,8 +528,7 @@ int wl1271_boot(struct wl1271 *wl) | |||
529 | 528 | ||
530 | wl1271_debug(DEBUG_BOOT, "clk2 0x%x", clk); | 529 | wl1271_debug(DEBUG_BOOT, "clk2 0x%x", clk); |
531 | 530 | ||
532 | /* 2 */ | 531 | clk |= (wl->ref_clock << 1) << 4; |
533 | clk |= (ref_clock << 1) << 4; | ||
534 | wl1271_write32(wl, DRPW_SCRATCH_START, clk); | 532 | wl1271_write32(wl, DRPW_SCRATCH_START, clk); |
535 | 533 | ||
536 | wl1271_set_partition(wl, &part_table[PART_WORK]); | 534 | wl1271_set_partition(wl, &part_table[PART_WORK]); |
diff --git a/include/linux/wl12xx.h b/include/linux/wl12xx.h index 4f902e1908a..bebb8efea0a 100644 --- a/include/linux/wl12xx.h +++ b/include/linux/wl12xx.h | |||
@@ -24,6 +24,14 @@ | |||
24 | #ifndef _LINUX_WL12XX_H | 24 | #ifndef _LINUX_WL12XX_H |
25 | #define _LINUX_WL12XX_H | 25 | #define _LINUX_WL12XX_H |
26 | 26 | ||
27 | /* The board reference clock values */ | ||
28 | enum { | ||
29 | WL12XX_REFCLOCK_19 = 0, /* 19.2 MHz */ | ||
30 | WL12XX_REFCLOCK_26 = 1, /* 26 MHz */ | ||
31 | WL12XX_REFCLOCK_38 = 2, /* 38.4 MHz */ | ||
32 | WL12XX_REFCLOCK_54 = 3, /* 54 MHz */ | ||
33 | }; | ||
34 | |||
27 | struct wl12xx_platform_data { | 35 | struct wl12xx_platform_data { |
28 | void (*set_power)(bool enable); | 36 | void (*set_power)(bool enable); |
29 | /* SDIO only: IRQ number if WLAN_IRQ line is used, 0 for SDIO IRQs */ | 37 | /* SDIO only: IRQ number if WLAN_IRQ line is used, 0 for SDIO IRQs */ |