aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/include/asm/netlogic
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/include/asm/netlogic')
-rw-r--r--arch/mips/include/asm/netlogic/common.h42
-rw-r--r--arch/mips/include/asm/netlogic/mips-extns.h5
-rw-r--r--arch/mips/include/asm/netlogic/xlp-hal/pic.h1
-rw-r--r--arch/mips/include/asm/netlogic/xlp-hal/sys.h1
-rw-r--r--arch/mips/include/asm/netlogic/xlr/pic.h2
5 files changed, 42 insertions, 9 deletions
diff --git a/arch/mips/include/asm/netlogic/common.h b/arch/mips/include/asm/netlogic/common.h
index fd735bcac3e6..2eb39fa02586 100644
--- a/arch/mips/include/asm/netlogic/common.h
+++ b/arch/mips/include/asm/netlogic/common.h
@@ -46,10 +46,10 @@
46 46
47#ifndef __ASSEMBLY__ 47#ifndef __ASSEMBLY__
48#include <linux/cpumask.h> 48#include <linux/cpumask.h>
49#include <linux/spinlock.h>
50#include <asm/irq.h>
49 51
50struct irq_desc; 52struct irq_desc;
51extern struct plat_smp_ops nlm_smp_ops;
52extern char nlm_reset_entry[], nlm_reset_entry_end[];
53void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc); 53void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc);
54void nlm_smp_resched_ipi_handler(unsigned int irq, struct irq_desc *desc); 54void nlm_smp_resched_ipi_handler(unsigned int irq, struct irq_desc *desc);
55void nlm_smp_irq_init(void); 55void nlm_smp_irq_init(void);
@@ -70,10 +70,42 @@ nlm_set_nmi_handler(void *handler)
70 * Misc. 70 * Misc.
71 */ 71 */
72unsigned int nlm_get_cpu_frequency(void); 72unsigned int nlm_get_cpu_frequency(void);
73void nlm_node_init(int node);
74extern struct plat_smp_ops nlm_smp_ops;
75extern char nlm_reset_entry[], nlm_reset_entry_end[];
73 76
74extern unsigned long nlm_common_ebase; 77extern unsigned int nlm_threads_per_core;
75extern int nlm_threads_per_core;
76extern uint32_t nlm_coremask;
77extern cpumask_t nlm_cpumask; 78extern cpumask_t nlm_cpumask;
79
80struct nlm_soc_info {
81 unsigned long coremask; /* cores enabled on the soc */
82 unsigned long ebase;
83 uint64_t irqmask;
84 uint64_t sysbase; /* only for XLP */
85 uint64_t picbase;
86 spinlock_t piclock;
87};
88
89#define NLM_CORES_PER_NODE 8
90#define NLM_THREADS_PER_CORE 4
91#define NLM_CPUS_PER_NODE (NLM_CORES_PER_NODE * NLM_THREADS_PER_CORE)
92#define nlm_get_node(i) (&nlm_nodes[i])
93#define NLM_NR_NODES 1
94#define nlm_current_node() (&nlm_nodes[0])
95
96struct irq_data;
97uint64_t nlm_pci_irqmask(int node);
98void nlm_set_pic_extra_ack(int node, int irq, void (*xack)(struct irq_data *));
99
100/*
101 * The NR_IRQs is divided between nodes, each of them has a separate irq space
102 */
103static inline int nlm_irq_to_xirq(int node, int irq)
104{
105 return node * NR_IRQS / NLM_NR_NODES + irq;
106}
107
108extern struct nlm_soc_info nlm_nodes[NLM_NR_NODES];
109extern int nlm_cpu_ready[];
78#endif 110#endif
79#endif /* _NETLOGIC_COMMON_H_ */ 111#endif /* _NETLOGIC_COMMON_H_ */
diff --git a/arch/mips/include/asm/netlogic/mips-extns.h b/arch/mips/include/asm/netlogic/mips-extns.h
index 8c53d0ba4bf2..c9f6de53d410 100644
--- a/arch/mips/include/asm/netlogic/mips-extns.h
+++ b/arch/mips/include/asm/netlogic/mips-extns.h
@@ -73,4 +73,9 @@ static inline int hard_smp_processor_id(void)
73 return __read_32bit_c0_register($15, 1) & 0x3ff; 73 return __read_32bit_c0_register($15, 1) & 0x3ff;
74} 74}
75 75
76static inline int nlm_nodeid(void)
77{
78 return (__read_32bit_c0_register($15, 1) >> 5) & 0x3;
79}
80
76#endif /*_ASM_NLM_MIPS_EXTS_H */ 81#endif /*_ASM_NLM_MIPS_EXTS_H */
diff --git a/arch/mips/include/asm/netlogic/xlp-hal/pic.h b/arch/mips/include/asm/netlogic/xlp-hal/pic.h
index 061e0710607a..857a967e4530 100644
--- a/arch/mips/include/asm/netlogic/xlp-hal/pic.h
+++ b/arch/mips/include/asm/netlogic/xlp-hal/pic.h
@@ -381,7 +381,6 @@ nlm_pic_init_irt(uint64_t base, int irt, int irq, int hwt)
381 nlm_pic_write_irt_direct(base, irt, 0, 0, 0, irq, hwt); 381 nlm_pic_write_irt_direct(base, irt, 0, 0, 0, irq, hwt);
382} 382}
383 383
384extern uint64_t nlm_pic_base;
385int nlm_irq_to_irt(int irq); 384int nlm_irq_to_irt(int irq);
386int nlm_irt_to_irq(int irt); 385int nlm_irt_to_irq(int irt);
387 386
diff --git a/arch/mips/include/asm/netlogic/xlp-hal/sys.h b/arch/mips/include/asm/netlogic/xlp-hal/sys.h
index 21432f7d89b9..258e8cc00e99 100644
--- a/arch/mips/include/asm/netlogic/xlp-hal/sys.h
+++ b/arch/mips/include/asm/netlogic/xlp-hal/sys.h
@@ -124,6 +124,5 @@
124#define nlm_get_sys_pcibase(node) nlm_pcicfg_base(XLP_IO_SYS_OFFSET(node)) 124#define nlm_get_sys_pcibase(node) nlm_pcicfg_base(XLP_IO_SYS_OFFSET(node))
125#define nlm_get_sys_regbase(node) (nlm_get_sys_pcibase(node) + XLP_IO_PCI_HDRSZ) 125#define nlm_get_sys_regbase(node) (nlm_get_sys_pcibase(node) + XLP_IO_PCI_HDRSZ)
126 126
127extern uint64_t nlm_sys_base;
128#endif 127#endif
129#endif 128#endif
diff --git a/arch/mips/include/asm/netlogic/xlr/pic.h b/arch/mips/include/asm/netlogic/xlr/pic.h
index 868013e62f32..9a691b1f91ba 100644
--- a/arch/mips/include/asm/netlogic/xlr/pic.h
+++ b/arch/mips/include/asm/netlogic/xlr/pic.h
@@ -258,7 +258,5 @@ nlm_pic_init_irt(uint64_t base, int irt, int irq, int hwt)
258 nlm_write_reg(base, PIC_IRT_1(irt), 258 nlm_write_reg(base, PIC_IRT_1(irt),
259 (1 << 30) | (1 << 6) | irq); 259 (1 << 30) | (1 << 6) | irq);
260} 260}
261
262extern uint64_t nlm_pic_base;
263#endif 261#endif
264#endif /* _ASM_NLM_XLR_PIC_H */ 262#endif /* _ASM_NLM_XLR_PIC_H */