diff options
-rw-r--r-- | arch/mips/Kconfig | 1 | ||||
-rw-r--r-- | arch/mips/netlogic/Kconfig | 15 | ||||
-rw-r--r-- | arch/mips/netlogic/Makefile | 1 | ||||
-rw-r--r-- | arch/mips/netlogic/dts/Makefile | 4 | ||||
-rw-r--r-- | arch/mips/netlogic/xlp/setup.c | 12 |
5 files changed, 32 insertions, 1 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 331d574df99c..8190bdcd5a6a 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -830,6 +830,7 @@ config NLM_XLP_BOARD | |||
830 | select ZONE_DMA if 64BIT | 830 | select ZONE_DMA if 64BIT |
831 | select SYNC_R4K | 831 | select SYNC_R4K |
832 | select SYS_HAS_EARLY_PRINTK | 832 | select SYS_HAS_EARLY_PRINTK |
833 | select USE_OF | ||
833 | help | 834 | help |
834 | This board is based on Netlogic XLP Processor. | 835 | This board is based on Netlogic XLP Processor. |
835 | Say Y here if you have a XLP based board. | 836 | Say Y here if you have a XLP based board. |
diff --git a/arch/mips/netlogic/Kconfig b/arch/mips/netlogic/Kconfig index 75bec44b5856..8059eb76f8eb 100644 --- a/arch/mips/netlogic/Kconfig +++ b/arch/mips/netlogic/Kconfig | |||
@@ -1,2 +1,17 @@ | |||
1 | if NLM_XLP_BOARD || NLM_XLR_BOARD | ||
2 | |||
3 | if NLM_XLP_BOARD | ||
4 | config DT_XLP_EVP | ||
5 | bool "Built-in device tree for XLP EVP/SVP boards" | ||
6 | default y | ||
7 | help | ||
8 | Add an FDT blob for XLP EVP and SVP boards into the kernel. | ||
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 | ||
11 | arch/mips/netlogic/dts/xlp_evp.dts | ||
12 | endif | ||
13 | |||
1 | config NLM_COMMON | 14 | config NLM_COMMON |
2 | bool | 15 | bool |
16 | |||
17 | endif | ||
diff --git a/arch/mips/netlogic/Makefile b/arch/mips/netlogic/Makefile index 36d169b2ca6d..7602d1386614 100644 --- a/arch/mips/netlogic/Makefile +++ b/arch/mips/netlogic/Makefile | |||
@@ -1,3 +1,4 @@ | |||
1 | obj-$(CONFIG_NLM_COMMON) += common/ | 1 | obj-$(CONFIG_NLM_COMMON) += common/ |
2 | obj-$(CONFIG_CPU_XLR) += xlr/ | 2 | obj-$(CONFIG_CPU_XLR) += xlr/ |
3 | obj-$(CONFIG_CPU_XLP) += xlp/ | 3 | obj-$(CONFIG_CPU_XLP) += xlp/ |
4 | obj-$(CONFIG_CPU_XLP) += dts/ | ||
diff --git a/arch/mips/netlogic/dts/Makefile b/arch/mips/netlogic/dts/Makefile new file mode 100644 index 000000000000..67ae3fe296f0 --- /dev/null +++ b/arch/mips/netlogic/dts/Makefile | |||
@@ -0,0 +1,4 @@ | |||
1 | obj-$(CONFIG_DT_XLP_EVP) := xlp_evp.dtb.o | ||
2 | |||
3 | $(obj)/%.dtb: $(obj)/%.dts | ||
4 | $(call if_changed,dtc) | ||
diff --git a/arch/mips/netlogic/xlp/setup.c b/arch/mips/netlogic/xlp/setup.c index 0d2d679c6c56..d8997098defd 100644 --- a/arch/mips/netlogic/xlp/setup.c +++ b/arch/mips/netlogic/xlp/setup.c | |||
@@ -57,6 +57,7 @@ unsigned long nlm_common_ebase = 0x0; | |||
57 | /* default to uniprocessor */ | 57 | /* default to uniprocessor */ |
58 | uint32_t nlm_coremask = 1, nlm_cpumask = 1; | 58 | uint32_t nlm_coremask = 1, nlm_cpumask = 1; |
59 | int nlm_threads_per_core = 1; | 59 | int nlm_threads_per_core = 1; |
60 | extern u32 __dtb_start[]; | ||
60 | 61 | ||
61 | static void nlm_linux_exit(void) | 62 | static void nlm_linux_exit(void) |
62 | { | 63 | { |
@@ -97,9 +98,18 @@ void __init prom_init(void) | |||
97 | { | 98 | { |
98 | void *fdtp; | 99 | void *fdtp; |
99 | 100 | ||
100 | fdtp = (void *)(long)fw_arg0; | ||
101 | xlp_mmu_init(); | 101 | xlp_mmu_init(); |
102 | nlm_hal_init(); | 102 | nlm_hal_init(); |
103 | |||
104 | /* | ||
105 | * If no FDT pointer is passed in, use the built-in FDT. | ||
106 | * device_tree_init() does not handle CKSEG0 pointers in | ||
107 | * 64-bit, so convert pointer. | ||
108 | */ | ||
109 | fdtp = (void *)(long)fw_arg0; | ||
110 | if (!fdtp) | ||
111 | fdtp = __dtb_start; | ||
112 | fdtp = phys_to_virt(__pa(fdtp)); | ||
103 | early_init_devtree(fdtp); | 113 | early_init_devtree(fdtp); |
104 | 114 | ||
105 | nlm_common_ebase = read_c0_ebase() & (~((1 << 12) - 1)); | 115 | nlm_common_ebase = read_c0_ebase() & (~((1 << 12) - 1)); |