diff options
Diffstat (limited to 'arch/mips/include/asm/mach-netlogic')
-rw-r--r-- | arch/mips/include/asm/mach-netlogic/irq.h | 3 | ||||
-rw-r--r-- | arch/mips/include/asm/mach-netlogic/multi-node.h | 33 | ||||
-rw-r--r-- | arch/mips/include/asm/mach-netlogic/topology.h | 20 |
3 files changed, 53 insertions, 3 deletions
diff --git a/arch/mips/include/asm/mach-netlogic/irq.h b/arch/mips/include/asm/mach-netlogic/irq.h index 868ed8a2ed5c..c0dbd530cca6 100644 --- a/arch/mips/include/asm/mach-netlogic/irq.h +++ b/arch/mips/include/asm/mach-netlogic/irq.h | |||
@@ -9,7 +9,8 @@ | |||
9 | #define __ASM_NETLOGIC_IRQ_H | 9 | #define __ASM_NETLOGIC_IRQ_H |
10 | 10 | ||
11 | #include <asm/mach-netlogic/multi-node.h> | 11 | #include <asm/mach-netlogic/multi-node.h> |
12 | #define NR_IRQS (64 * NLM_NR_NODES) | 12 | #define NLM_IRQS_PER_NODE 1024 |
13 | #define NR_IRQS (NLM_IRQS_PER_NODE * NLM_NR_NODES) | ||
13 | 14 | ||
14 | #define MIPS_CPU_IRQ_BASE 0 | 15 | #define MIPS_CPU_IRQ_BASE 0 |
15 | 16 | ||
diff --git a/arch/mips/include/asm/mach-netlogic/multi-node.h b/arch/mips/include/asm/mach-netlogic/multi-node.h index d62fc773f4d7..9ed8dacdc37c 100644 --- a/arch/mips/include/asm/mach-netlogic/multi-node.h +++ b/arch/mips/include/asm/mach-netlogic/multi-node.h | |||
@@ -47,8 +47,37 @@ | |||
47 | #endif | 47 | #endif |
48 | #endif | 48 | #endif |
49 | 49 | ||
50 | #define NLM_CORES_PER_NODE 8 | ||
51 | #define NLM_THREADS_PER_CORE 4 | 50 | #define NLM_THREADS_PER_CORE 4 |
52 | #define NLM_CPUS_PER_NODE (NLM_CORES_PER_NODE * NLM_THREADS_PER_CORE) | 51 | #ifdef CONFIG_CPU_XLR |
52 | #define nlm_cores_per_node() 8 | ||
53 | #else | ||
54 | extern unsigned int xlp_cores_per_node; | ||
55 | #define nlm_cores_per_node() xlp_cores_per_node | ||
56 | #endif | ||
57 | |||
58 | #define nlm_threads_per_node() (nlm_cores_per_node() * NLM_THREADS_PER_CORE) | ||
59 | #define nlm_cpuid_to_node(c) ((c) / nlm_threads_per_node()) | ||
60 | |||
61 | struct nlm_soc_info { | ||
62 | unsigned long coremask; /* cores enabled on the soc */ | ||
63 | unsigned long ebase; /* not used now */ | ||
64 | uint64_t irqmask; /* EIMR for the node */ | ||
65 | uint64_t sysbase; /* only for XLP - sys block base */ | ||
66 | uint64_t picbase; /* PIC block base */ | ||
67 | spinlock_t piclock; /* lock for PIC access */ | ||
68 | cpumask_t cpumask; /* logical cpu mask for node */ | ||
69 | unsigned int socbus; | ||
70 | }; | ||
71 | |||
72 | extern struct nlm_soc_info nlm_nodes[NLM_NR_NODES]; | ||
73 | #define nlm_get_node(i) (&nlm_nodes[i]) | ||
74 | #define nlm_node_present(n) ((n) >= 0 && (n) < NLM_NR_NODES && \ | ||
75 | nlm_get_node(n)->coremask != 0) | ||
76 | #ifdef CONFIG_CPU_XLR | ||
77 | #define nlm_current_node() (&nlm_nodes[0]) | ||
78 | #else | ||
79 | #define nlm_current_node() (&nlm_nodes[nlm_nodeid()]) | ||
80 | #endif | ||
81 | void nlm_node_init(int node); | ||
53 | 82 | ||
54 | #endif | 83 | #endif |
diff --git a/arch/mips/include/asm/mach-netlogic/topology.h b/arch/mips/include/asm/mach-netlogic/topology.h new file mode 100644 index 000000000000..0da99fa11c38 --- /dev/null +++ b/arch/mips/include/asm/mach-netlogic/topology.h | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2013 Broadcom Corporation | ||
7 | */ | ||
8 | #ifndef _ASM_MACH_NETLOGIC_TOPOLOGY_H | ||
9 | #define _ASM_MACH_NETLOGIC_TOPOLOGY_H | ||
10 | |||
11 | #include <asm/mach-netlogic/multi-node.h> | ||
12 | |||
13 | #define topology_physical_package_id(cpu) cpu_to_node(cpu) | ||
14 | #define topology_core_id(cpu) (cpu_logical_map(cpu) / NLM_THREADS_PER_CORE) | ||
15 | #define topology_thread_cpumask(cpu) (&cpu_sibling_map[cpu]) | ||
16 | #define topology_core_cpumask(cpu) cpumask_of_node(cpu_to_node(cpu)) | ||
17 | |||
18 | #include <asm-generic/topology.h> | ||
19 | |||
20 | #endif /* _ASM_MACH_NETLOGIC_TOPOLOGY_H */ | ||