Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bb1e4bc5 authored by Jayachandran C's avatar Jayachandran C Committed by John Crispin
Browse files

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: default avatarJayachandran C <jchandra@broadcom.com>
Patchwork: http://patchwork.linux-mips.org/patch/4470


Signed-off-by: default avatarJohn Crispin <blogic@openwrt.org>
parent 77ae798f
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -8,7 +8,9 @@
#ifndef __ASM_NETLOGIC_IRQ_H
#ifndef __ASM_NETLOGIC_IRQ_H
#define __ASM_NETLOGIC_IRQ_H
#define __ASM_NETLOGIC_IRQ_H


#define NR_IRQS			64
#include <asm/mach-netlogic/multi-node.h>
#define NR_IRQS			(64 * NLM_NR_NODES)

#define MIPS_CPU_IRQ_BASE	0
#define MIPS_CPU_IRQ_BASE	0


#endif /* __ASM_NETLOGIC_IRQ_H */
#endif /* __ASM_NETLOGIC_IRQ_H */
+54 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (c) 2003-2012 Broadcom Corporation
 * All Rights Reserved
 *
 * This software is available to you under a choice of one of two
 * licenses.  You may choose to be licensed under the terms of the GNU
 * General Public License (GPL) Version 2, available from the file
 * COPYING in the main directory of this source tree, or the Broadcom
 * license below:
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY BROADCOM ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _NETLOGIC_MULTI_NODE_H_
#define _NETLOGIC_MULTI_NODE_H_

#ifndef CONFIG_NLM_MULTINODE
#define NLM_NR_NODES		1
#else
#if defined(CONFIG_NLM_MULTINODE_2)
#define NLM_NR_NODES		2
#elif defined(CONFIG_NLM_MULTINODE_4)
#define NLM_NR_NODES		4
#else
#define NLM_NR_NODES		1
#endif
#endif

#define NLM_CORES_PER_NODE	8
#define NLM_THREADS_PER_CORE	4
#define NLM_CPUS_PER_NODE	(NLM_CORES_PER_NODE * NLM_THREADS_PER_CORE)

#endif
+5 −4
Original line number Original line Diff line number Diff line
@@ -48,6 +48,7 @@
#include <linux/cpumask.h>
#include <linux/cpumask.h>
#include <linux/spinlock.h>
#include <linux/spinlock.h>
#include <asm/irq.h>
#include <asm/irq.h>
#include <asm/mach-netlogic/multi-node.h>


struct irq_desc;
struct irq_desc;
void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc);
void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc);
@@ -86,12 +87,12 @@ struct nlm_soc_info {
	spinlock_t piclock;
	spinlock_t piclock;
};
};


#define NLM_CORES_PER_NODE	8
#define NLM_THREADS_PER_CORE	4
#define NLM_CPUS_PER_NODE	(NLM_CORES_PER_NODE * NLM_THREADS_PER_CORE)
#define	nlm_get_node(i)		(&nlm_nodes[i])
#define	nlm_get_node(i)		(&nlm_nodes[i])
#define NLM_NR_NODES		1
#ifdef CONFIG_CPU_XLR
#define	nlm_current_node()	(&nlm_nodes[0])
#define	nlm_current_node()	(&nlm_nodes[0])
#else
#define nlm_current_node()	(&nlm_nodes[nlm_nodeid()])
#endif


struct irq_data;
struct irq_data;
uint64_t nlm_pci_irqmask(int node);
uint64_t nlm_pci_irqmask(int node);
+28 −0
Original line number Original line Diff line number Diff line
@@ -9,6 +9,34 @@ config DT_XLP_EVP
	  This DTB will be used if the firmware does not pass in a DTB
	  This DTB will be used if the firmware does not pass in a DTB
          pointer to the kernel.  The corresponding DTS file is at
          pointer to the kernel.  The corresponding DTS file is at
          arch/mips/netlogic/dts/xlp_evp.dts
          arch/mips/netlogic/dts/xlp_evp.dts

config NLM_MULTINODE
	bool "Support for multi-chip boards"
	depends on NLM_XLP_BOARD
	default n
	help
	  Add support for boards with 2 or 4 XLPs connected over ICI.

if NLM_MULTINODE
choice
	prompt "Number of XLPs on the board"
	default NLM_MULTINODE_2
	help
	  In the multi-node case, specify the number of SoCs on the board.

config NLM_MULTINODE_2
	bool "Dual-XLP board"
	help
	  Support boards with upto two XLPs connected over ICI.

config NLM_MULTINODE_4
	bool "Quad-XLP board"
	help
	  Support boards with upto four XLPs connected over ICI.

endchoice

endif
endif
endif


config NLM_COMMON
config NLM_COMMON