Commit | Line | Data |
---|---|---|
8369ae33 RM |
1 | /* |
2 | * Broadcom specific AMBA | |
3 | * Core ops | |
4 | * | |
5 | * Licensed under the GNU/GPL. See COPYING for details. | |
6 | */ | |
7 | ||
8 | #include "bcma_private.h" | |
9 | #include <linux/bcma/bcma.h> | |
10 | ||
11 | bool bcma_core_is_enabled(struct bcma_device *core) | |
12 | { | |
13 | if ((bcma_aread32(core, BCMA_IOCTL) & (BCMA_IOCTL_CLK | BCMA_IOCTL_FGC)) | |
14 | != BCMA_IOCTL_CLK) | |
15 | return false; | |
16 | if (bcma_aread32(core, BCMA_RESET_CTL) & BCMA_RESET_CTL_RESET) | |
17 | return false; | |
18 | return true; | |
19 | } | |
20 | EXPORT_SYMBOL_GPL(bcma_core_is_enabled); | |
21 | ||
22 | static void bcma_core_disable(struct bcma_device *core, u32 flags) | |
23 | { | |
24 | if (bcma_aread32(core, BCMA_RESET_CTL) & BCMA_RESET_CTL_RESET) | |
25 | return; | |
26 | ||
27 | bcma_awrite32(core, BCMA_IOCTL, flags); | |
28 | bcma_aread32(core, BCMA_IOCTL); | |
29 | udelay(10); | |
30 | ||
31 | bcma_awrite32(core, BCMA_RESET_CTL, BCMA_RESET_CTL_RESET); | |
32 | udelay(1); | |
33 | } | |
34 | ||
35 | int bcma_core_enable(struct bcma_device *core, u32 flags) | |
36 | { | |
37 | bcma_core_disable(core, flags); | |
38 | ||
39 | bcma_awrite32(core, BCMA_IOCTL, (BCMA_IOCTL_CLK | BCMA_IOCTL_FGC | flags)); | |
40 | bcma_aread32(core, BCMA_IOCTL); | |
41 | ||
42 | bcma_awrite32(core, BCMA_RESET_CTL, 0); | |
43 | udelay(1); | |
44 | ||
45 | bcma_awrite32(core, BCMA_IOCTL, (BCMA_IOCTL_CLK | flags)); | |
46 | bcma_aread32(core, BCMA_IOCTL); | |
47 | udelay(1); | |
48 | ||
49 | return 0; | |
50 | } | |
51 | EXPORT_SYMBOL_GPL(bcma_core_enable); |