Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/drivers/bcma/core.c
15109 views
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);
52
53