blob: 0b3b32aeeb8af8c76b9ed23ff0017ef79e92e635 [file] [log] [blame]
Hauke Mehrtens21e05342011-07-23 01:20:09 +02001#ifndef LINUX_BCMA_DRIVER_MIPS_H_
2#define LINUX_BCMA_DRIVER_MIPS_H_
3
4#define BCMA_MIPS_IPSFLAG 0x0F08
5/* which sbflags get routed to mips interrupt 1 */
6#define BCMA_MIPS_IPSFLAG_IRQ1 0x0000003F
7#define BCMA_MIPS_IPSFLAG_IRQ1_SHIFT 0
8/* which sbflags get routed to mips interrupt 2 */
9#define BCMA_MIPS_IPSFLAG_IRQ2 0x00003F00
10#define BCMA_MIPS_IPSFLAG_IRQ2_SHIFT 8
11/* which sbflags get routed to mips interrupt 3 */
12#define BCMA_MIPS_IPSFLAG_IRQ3 0x003F0000
13#define BCMA_MIPS_IPSFLAG_IRQ3_SHIFT 16
14/* which sbflags get routed to mips interrupt 4 */
15#define BCMA_MIPS_IPSFLAG_IRQ4 0x3F000000
16#define BCMA_MIPS_IPSFLAG_IRQ4_SHIFT 24
17
18/* MIPS 74K core registers */
19#define BCMA_MIPS_MIPS74K_CORECTL 0x0000
20#define BCMA_MIPS_MIPS74K_EXCEPTBASE 0x0004
21#define BCMA_MIPS_MIPS74K_BIST 0x000C
22#define BCMA_MIPS_MIPS74K_INTMASK_INT0 0x0014
23#define BCMA_MIPS_MIPS74K_INTMASK(int) \
24 ((int) * 4 + BCMA_MIPS_MIPS74K_INTMASK_INT0)
25#define BCMA_MIPS_MIPS74K_NMIMASK 0x002C
26#define BCMA_MIPS_MIPS74K_GPIOSEL 0x0040
27#define BCMA_MIPS_MIPS74K_GPIOOUT 0x0044
28#define BCMA_MIPS_MIPS74K_GPIOEN 0x0048
29#define BCMA_MIPS_MIPS74K_CLKCTLST 0x01E0
30
Nathan Hintz6bf2e542013-01-11 22:07:22 -080031#define BCMA_MIPS_OOBSELINA74 0x004
Hauke Mehrtens21e05342011-07-23 01:20:09 +020032#define BCMA_MIPS_OOBSELOUTA30 0x100
33
34struct bcma_device;
35
36struct bcma_drv_mips {
37 struct bcma_device *core;
38 u8 setup_done:1;
Hauke Mehrtens49655bb2012-09-29 20:29:49 +020039 u8 early_setup_done:1;
Hauke Mehrtens21e05342011-07-23 01:20:09 +020040};
41
42#ifdef CONFIG_BCMA_DRIVER_MIPS
43extern void bcma_core_mips_init(struct bcma_drv_mips *mcore);
Hauke Mehrtens49655bb2012-09-29 20:29:49 +020044extern void bcma_core_mips_early_init(struct bcma_drv_mips *mcore);
Hauke Mehrtens8f1ca262013-01-26 21:39:44 +010045
Hauke Mehrtens85eb92e2014-11-01 16:54:55 +010046extern unsigned int bcma_core_mips_irq(struct bcma_device *dev);
Hauke Mehrtens21e05342011-07-23 01:20:09 +020047#else
48static inline void bcma_core_mips_init(struct bcma_drv_mips *mcore) { }
Hauke Mehrtens49655bb2012-09-29 20:29:49 +020049static inline void bcma_core_mips_early_init(struct bcma_drv_mips *mcore) { }
Hauke Mehrtens8f1ca262013-01-26 21:39:44 +010050
Hauke Mehrtens85eb92e2014-11-01 16:54:55 +010051static inline unsigned int bcma_core_mips_irq(struct bcma_device *dev)
Hauke Mehrtens8f1ca262013-01-26 21:39:44 +010052{
53 return 0;
54}
Hauke Mehrtens21e05342011-07-23 01:20:09 +020055#endif
56
Hauke Mehrtens908debc2011-07-23 01:20:11 +020057extern u32 bcma_cpu_clock(struct bcma_drv_mips *mcore);
58
Hauke Mehrtens21e05342011-07-23 01:20:09 +020059#endif /* LINUX_BCMA_DRIVER_MIPS_H_ */