diff options
author | Jayachandran C <jchandra@broadcom.com> | 2012-10-31 08:01:40 -0400 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2012-11-09 05:37:20 -0500 |
commit | bb1e4bc5cdc9dce7680317a4ebf87a12fc8c6a13 (patch) | |
tree | a02d2d4960ea76db3a2411b2383efde69cf83bef /arch/mips | |
parent | 77ae798f5b736dfdc692b86b393d9699052ac77a (diff) |
MIPS: Netlogic: Make number of nodes configurable
There can be 1, 2 or 4 SoCs(nodes) in a multi-chip XLP board. Add an
option for multi-chip boards in case of XLP, and make the number of
nodes configurable.
Signed-off-by: Jayachandran C <jchandra@broadcom.com>
Patchwork: http://patchwork.linux-mips.org/patch/4470
Signed-off-by: John Crispin <blogic@openwrt.org>
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/include/asm/mach-netlogic/irq.h | 4 | ||||
-rw-r--r-- | arch/mips/include/asm/mach-netlogic/multi-node.h | 54 | ||||
-rw-r--r-- | arch/mips/include/asm/netlogic/common.h | 9 | ||||
-rw-r--r-- | arch/mips/netlogic/Kconfig | 28 |
4 files changed, 90 insertions, 5 deletions
diff --git a/arch/mips/include/asm/mach-netlogic/irq.h b/arch/mips/include/asm/mach-netlogic/irq.h index b5902458e7c1..868ed8a2ed5c 100644 --- a/arch/mips/include/asm/mach-netlogic/irq.h +++ b/arch/mips/include/asm/mach-netlogic/irq.h | |||
@@ -8,7 +8,9 @@ | |||
8 | #ifndef __ASM_NETLOGIC_IRQ_H | 8 | #ifndef __ASM_NETLOGIC_IRQ_H |
9 | #define __ASM_NETLOGIC_IRQ_H | 9 | #define __ASM_NETLOGIC_IRQ_H |
10 | 10 | ||
11 | #define NR_IRQS 64 | 11 | #include <asm/mach-netlogic/multi-node.h> |
12 | #define NR_IRQS (64 * NLM_NR_NODES) | ||
13 | |||
12 | #define MIPS_CPU_IRQ_BASE 0 | 14 | #define MIPS_CPU_IRQ_BASE 0 |
13 | 15 | ||
14 | #endif /* __ASM_NETLOGIC_IRQ_H */ | 16 | #endif /* __ASM_NETLOGIC_IRQ_H */ |
diff --git a/arch/mips/include/asm/mach-netlogic/multi-node.h b/arch/mips/include/asm/mach-netlogic/multi-node.h new file mode 100644 index 000000000000..d62fc773f4d7 --- /dev/null +++ b/arch/mips/include/asm/mach-netlogic/multi-node.h | |||
@@ -0,0 +1,54 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2003-2012 Broadcom Corporation | ||
3 | * All Rights Reserved | ||
4 | * | ||
5 | * This software is available to you under a choice of one of two | ||
6 | * licenses. You may choose to be licensed under the terms of the GNU | ||
7 | * General Public License (GPL) Version 2, available from the file | ||
8 | * COPYING in the main directory of this source tree, or the Broadcom | ||
9 | * license below: | ||
10 | * | ||
11 | * Redistribution and use in source and binary forms, with or without | ||
12 | * modification, are permitted provided that the following conditions | ||
13 | * are met: | ||
14 | * | ||
15 | * 1. Redistributions of source code must retain the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer. | ||
17 | * 2. Redistributions in binary form must reproduce the above copyright | ||
18 | * notice, this list of conditions and the following disclaimer in | ||
19 | * the documentation and/or other materials provided with the | ||
20 | * distribution. | ||
21 | * | ||
22 | * THIS SOFTWARE IS PROVIDED BY BROADCOM ``AS IS'' AND ANY EXPRESS OR | ||
23 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
24 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
25 | * ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM OR CONTRIBUTORS BE LIABLE | ||
26 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
27 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
28 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR | ||
29 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||
30 | * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | ||
31 | * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN | ||
32 | * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
33 | */ | ||
34 | |||
35 | #ifndef _NETLOGIC_MULTI_NODE_H_ | ||
36 | #define _NETLOGIC_MULTI_NODE_H_ | ||
37 | |||
38 | #ifndef CONFIG_NLM_MULTINODE | ||
39 | #define NLM_NR_NODES 1 | ||
40 | #else | ||
41 | #if defined(CONFIG_NLM_MULTINODE_2) | ||
42 | #define NLM_NR_NODES 2 | ||
43 | #elif defined(CONFIG_NLM_MULTINODE_4) | ||
44 | #define NLM_NR_NODES 4 | ||
45 | #else | ||
46 | #define NLM_NR_NODES 1 | ||
47 | #endif | ||
48 | #endif | ||
49 | |||
50 | #define NLM_CORES_PER_NODE 8 | ||
51 | #define NLM_THREADS_PER_CORE 4 | ||
52 | #define NLM_CPUS_PER_NODE (NLM_CORES_PER_NODE * NLM_THREADS_PER_CORE) | ||
53 | |||
54 | #endif | ||
diff --git a/arch/mips/include/asm/netlogic/common.h b/arch/mips/include/asm/netlogic/common.h index 2eb39fa02586..3c6814eb612b 100644 --- a/arch/mips/include/asm/netlogic/common.h +++ b/arch/mips/include/asm/netlogic/common.h | |||
@@ -48,6 +48,7 @@ | |||
48 | #include <linux/cpumask.h> | 48 | #include <linux/cpumask.h> |
49 | #include <linux/spinlock.h> | 49 | #include <linux/spinlock.h> |
50 | #include <asm/irq.h> | 50 | #include <asm/irq.h> |
51 | #include <asm/mach-netlogic/multi-node.h> | ||
51 | 52 | ||
52 | struct irq_desc; | 53 | struct irq_desc; |
53 | void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc); | 54 | void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc); |
@@ -86,12 +87,12 @@ struct nlm_soc_info { | |||
86 | spinlock_t piclock; | 87 | spinlock_t piclock; |
87 | }; | 88 | }; |
88 | 89 | ||
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]) | 90 | #define nlm_get_node(i) (&nlm_nodes[i]) |
93 | #define NLM_NR_NODES 1 | 91 | #ifdef CONFIG_CPU_XLR |
94 | #define nlm_current_node() (&nlm_nodes[0]) | 92 | #define nlm_current_node() (&nlm_nodes[0]) |
93 | #else | ||
94 | #define nlm_current_node() (&nlm_nodes[nlm_nodeid()]) | ||
95 | #endif | ||
95 | 96 | ||
96 | struct irq_data; | 97 | struct irq_data; |
97 | uint64_t nlm_pci_irqmask(int node); | 98 | uint64_t nlm_pci_irqmask(int node); |
diff --git a/arch/mips/netlogic/Kconfig b/arch/mips/netlogic/Kconfig index 8059eb76f8eb..3c05bf9e280a 100644 --- a/arch/mips/netlogic/Kconfig +++ b/arch/mips/netlogic/Kconfig | |||
@@ -9,6 +9,34 @@ config DT_XLP_EVP | |||
9 | This DTB will be used if the firmware does not pass in a DTB | 9 | This DTB will be used if the firmware does not pass in a DTB |
10 | pointer to the kernel. The corresponding DTS file is at | 10 | pointer to the kernel. The corresponding DTS file is at |
11 | arch/mips/netlogic/dts/xlp_evp.dts | 11 | arch/mips/netlogic/dts/xlp_evp.dts |
12 | |||
13 | config NLM_MULTINODE | ||
14 | bool "Support for multi-chip boards" | ||
15 | depends on NLM_XLP_BOARD | ||
16 | default n | ||
17 | help | ||
18 | Add support for boards with 2 or 4 XLPs connected over ICI. | ||
19 | |||
20 | if NLM_MULTINODE | ||
21 | choice | ||
22 | prompt "Number of XLPs on the board" | ||
23 | default NLM_MULTINODE_2 | ||
24 | help | ||
25 | In the multi-node case, specify the number of SoCs on the board. | ||
26 | |||
27 | config NLM_MULTINODE_2 | ||
28 | bool "Dual-XLP board" | ||
29 | help | ||
30 | Support boards with upto two XLPs connected over ICI. | ||
31 | |||
32 | config NLM_MULTINODE_4 | ||
33 | bool "Quad-XLP board" | ||
34 | help | ||
35 | Support boards with upto four XLPs connected over ICI. | ||
36 | |||
37 | endchoice | ||
38 | |||
39 | endif | ||
12 | endif | 40 | endif |
13 | 41 | ||
14 | config NLM_COMMON | 42 | config NLM_COMMON |