diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2011-07-16 19:06:04 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-07-19 17:03:11 -0400 |
commit | 7424dd0d03502b9844b96bf6efd0716b79c36607 (patch) | |
tree | 936de32a86d93664e79e2ec6697d19bd69e1a204 /drivers/bcma | |
parent | 3de1a7748f68c63daed7c9e04ac9f048efcd9f20 (diff) |
bcma: allow setting FAST clockmode for a core
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/bcma')
-rw-r--r-- | drivers/bcma/core.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/bcma/core.c b/drivers/bcma/core.c index 1ec7d4528dd0..0686b1b5f27a 100644 --- a/drivers/bcma/core.c +++ b/drivers/bcma/core.c | |||
@@ -50,3 +50,34 @@ int bcma_core_enable(struct bcma_device *core, u32 flags) | |||
50 | return 0; | 50 | return 0; |
51 | } | 51 | } |
52 | EXPORT_SYMBOL_GPL(bcma_core_enable); | 52 | EXPORT_SYMBOL_GPL(bcma_core_enable); |
53 | |||
54 | void bcma_core_set_clockmode(struct bcma_device *core, | ||
55 | enum bcma_clkmode clkmode) | ||
56 | { | ||
57 | u16 i; | ||
58 | |||
59 | WARN_ON(core->id.id != BCMA_CORE_CHIPCOMMON && | ||
60 | core->id.id != BCMA_CORE_PCIE && | ||
61 | core->id.id != BCMA_CORE_80211); | ||
62 | |||
63 | switch (clkmode) { | ||
64 | case BCMA_CLKMODE_FAST: | ||
65 | bcma_set32(core, BCMA_CLKCTLST, BCMA_CLKCTLST_FORCEHT); | ||
66 | udelay(64); | ||
67 | for (i = 0; i < 1500; i++) { | ||
68 | if (bcma_read32(core, BCMA_CLKCTLST) & | ||
69 | BCMA_CLKCTLST_HAVEHT) { | ||
70 | i = 0; | ||
71 | break; | ||
72 | } | ||
73 | udelay(10); | ||
74 | } | ||
75 | if (i) | ||
76 | pr_err("HT force timeout\n"); | ||
77 | break; | ||
78 | case BCMA_CLKMODE_DYNAMIC: | ||
79 | pr_warn("Dynamic clockmode not supported yet!\n"); | ||
80 | break; | ||
81 | } | ||
82 | } | ||
83 | EXPORT_SYMBOL_GPL(bcma_core_set_clockmode); | ||