diff options
author | Jiri Kosina <jkosina@suse.cz> | 2012-04-08 15:48:52 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2012-04-08 15:48:52 -0400 |
commit | e75d660672ddd11704b7f0fdb8ff21968587b266 (patch) | |
tree | ccb9c107744c10b553c0373e450bee3971d16c00 /arch/mips | |
parent | 61282f37927143e45b03153f3e7b48d6b702147a (diff) | |
parent | 0034102808e0dbbf3a2394b82b1bb40b5778de9e (diff) |
Merge branch 'master' into for-next
Merge with latest Linus' tree, as I have incoming patches
that fix code that is newer than current HEAD of for-next.
Conflicts:
drivers/net/ethernet/realtek/r8169.c
Diffstat (limited to 'arch/mips')
145 files changed, 1167 insertions, 873 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index c4c1312473fb..ce30e2f91d77 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -2327,6 +2327,7 @@ config USE_OF | |||
2327 | bool "Flattened Device Tree support" | 2327 | bool "Flattened Device Tree support" |
2328 | select OF | 2328 | select OF |
2329 | select OF_EARLY_FLATTREE | 2329 | select OF_EARLY_FLATTREE |
2330 | select IRQ_DOMAIN | ||
2330 | help | 2331 | help |
2331 | Include support for flattened device tree machine descriptions. | 2332 | Include support for flattened device tree machine descriptions. |
2332 | 2333 | ||
@@ -2356,6 +2357,7 @@ config PCI | |||
2356 | depends on HW_HAS_PCI | 2357 | depends on HW_HAS_PCI |
2357 | select PCI_DOMAINS | 2358 | select PCI_DOMAINS |
2358 | select GENERIC_PCI_IOMAP | 2359 | select GENERIC_PCI_IOMAP |
2360 | select NO_GENERIC_PCI_IOPORT_MAP | ||
2359 | help | 2361 | help |
2360 | Find out whether you have a PCI motherboard. PCI is the name of a | 2362 | Find out whether you have a PCI motherboard. PCI is the name of a |
2361 | bus system, i.e. the way the CPU talks to the other stuff inside | 2363 | bus system, i.e. the way the CPU talks to the other stuff inside |
@@ -2455,6 +2457,7 @@ config MIPS32_COMPAT | |||
2455 | config COMPAT | 2457 | config COMPAT |
2456 | bool | 2458 | bool |
2457 | depends on MIPS32_COMPAT | 2459 | depends on MIPS32_COMPAT |
2460 | select ARCH_WANT_OLD_COMPAT_IPC | ||
2458 | default y | 2461 | default y |
2459 | 2462 | ||
2460 | config SYSVIPC_COMPAT | 2463 | config SYSVIPC_COMPAT |
diff --git a/arch/mips/alchemy/common/time.c b/arch/mips/alchemy/common/time.c index 7da4d0081487..a7193ae13a5d 100644 --- a/arch/mips/alchemy/common/time.c +++ b/arch/mips/alchemy/common/time.c | |||
@@ -146,7 +146,7 @@ static int __init alchemy_time_init(unsigned int m2int) | |||
146 | cd->shift = 32; | 146 | cd->shift = 32; |
147 | cd->mult = div_sc(32768, NSEC_PER_SEC, cd->shift); | 147 | cd->mult = div_sc(32768, NSEC_PER_SEC, cd->shift); |
148 | cd->max_delta_ns = clockevent_delta2ns(0xffffffff, cd); | 148 | cd->max_delta_ns = clockevent_delta2ns(0xffffffff, cd); |
149 | cd->min_delta_ns = clockevent_delta2ns(8, cd); /* ~0.25ms */ | 149 | cd->min_delta_ns = clockevent_delta2ns(9, cd); /* ~0.28ms */ |
150 | clockevents_register_device(cd); | 150 | clockevents_register_device(cd); |
151 | setup_irq(m2int, &au1x_rtcmatch2_irqaction); | 151 | setup_irq(m2int, &au1x_rtcmatch2_irqaction); |
152 | 152 | ||
diff --git a/arch/mips/ath79/dev-usb.c b/arch/mips/ath79/dev-usb.c index 002d6d2afe04..36e9570e7bc4 100644 --- a/arch/mips/ath79/dev-usb.c +++ b/arch/mips/ath79/dev-usb.c | |||
@@ -17,6 +17,8 @@ | |||
17 | #include <linux/irq.h> | 17 | #include <linux/irq.h> |
18 | #include <linux/dma-mapping.h> | 18 | #include <linux/dma-mapping.h> |
19 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
20 | #include <linux/usb/ehci_pdriver.h> | ||
21 | #include <linux/usb/ohci_pdriver.h> | ||
20 | 22 | ||
21 | #include <asm/mach-ath79/ath79.h> | 23 | #include <asm/mach-ath79/ath79.h> |
22 | #include <asm/mach-ath79/ar71xx_regs.h> | 24 | #include <asm/mach-ath79/ar71xx_regs.h> |
@@ -36,14 +38,19 @@ static struct resource ath79_ohci_resources[] = { | |||
36 | }; | 38 | }; |
37 | 39 | ||
38 | static u64 ath79_ohci_dmamask = DMA_BIT_MASK(32); | 40 | static u64 ath79_ohci_dmamask = DMA_BIT_MASK(32); |
41 | |||
42 | static struct usb_ohci_pdata ath79_ohci_pdata = { | ||
43 | }; | ||
44 | |||
39 | static struct platform_device ath79_ohci_device = { | 45 | static struct platform_device ath79_ohci_device = { |
40 | .name = "ath79-ohci", | 46 | .name = "ohci-platform", |
41 | .id = -1, | 47 | .id = -1, |
42 | .resource = ath79_ohci_resources, | 48 | .resource = ath79_ohci_resources, |
43 | .num_resources = ARRAY_SIZE(ath79_ohci_resources), | 49 | .num_resources = ARRAY_SIZE(ath79_ohci_resources), |
44 | .dev = { | 50 | .dev = { |
45 | .dma_mask = &ath79_ohci_dmamask, | 51 | .dma_mask = &ath79_ohci_dmamask, |
46 | .coherent_dma_mask = DMA_BIT_MASK(32), | 52 | .coherent_dma_mask = DMA_BIT_MASK(32), |
53 | .platform_data = &ath79_ohci_pdata, | ||
47 | }, | 54 | }, |
48 | }; | 55 | }; |
49 | 56 | ||
@@ -60,8 +67,20 @@ static struct resource ath79_ehci_resources[] = { | |||
60 | }; | 67 | }; |
61 | 68 | ||
62 | static u64 ath79_ehci_dmamask = DMA_BIT_MASK(32); | 69 | static u64 ath79_ehci_dmamask = DMA_BIT_MASK(32); |
70 | |||
71 | static struct usb_ehci_pdata ath79_ehci_pdata_v1 = { | ||
72 | .has_synopsys_hc_bug = 1, | ||
73 | .port_power_off = 1, | ||
74 | }; | ||
75 | |||
76 | static struct usb_ehci_pdata ath79_ehci_pdata_v2 = { | ||
77 | .caps_offset = 0x100, | ||
78 | .has_tt = 1, | ||
79 | .port_power_off = 1, | ||
80 | }; | ||
81 | |||
63 | static struct platform_device ath79_ehci_device = { | 82 | static struct platform_device ath79_ehci_device = { |
64 | .name = "ath79-ehci", | 83 | .name = "ehci-platform", |
65 | .id = -1, | 84 | .id = -1, |
66 | .resource = ath79_ehci_resources, | 85 | .resource = ath79_ehci_resources, |
67 | .num_resources = ARRAY_SIZE(ath79_ehci_resources), | 86 | .num_resources = ARRAY_SIZE(ath79_ehci_resources), |
@@ -101,7 +120,7 @@ static void __init ath79_usb_setup(void) | |||
101 | 120 | ||
102 | ath79_ehci_resources[0].start = AR71XX_EHCI_BASE; | 121 | ath79_ehci_resources[0].start = AR71XX_EHCI_BASE; |
103 | ath79_ehci_resources[0].end = AR71XX_EHCI_BASE + AR71XX_EHCI_SIZE - 1; | 122 | ath79_ehci_resources[0].end = AR71XX_EHCI_BASE + AR71XX_EHCI_SIZE - 1; |
104 | ath79_ehci_device.name = "ar71xx-ehci"; | 123 | ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v1; |
105 | platform_device_register(&ath79_ehci_device); | 124 | platform_device_register(&ath79_ehci_device); |
106 | } | 125 | } |
107 | 126 | ||
@@ -142,7 +161,7 @@ static void __init ar724x_usb_setup(void) | |||
142 | 161 | ||
143 | ath79_ehci_resources[0].start = AR724X_EHCI_BASE; | 162 | ath79_ehci_resources[0].start = AR724X_EHCI_BASE; |
144 | ath79_ehci_resources[0].end = AR724X_EHCI_BASE + AR724X_EHCI_SIZE - 1; | 163 | ath79_ehci_resources[0].end = AR724X_EHCI_BASE + AR724X_EHCI_SIZE - 1; |
145 | ath79_ehci_device.name = "ar724x-ehci"; | 164 | ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2; |
146 | platform_device_register(&ath79_ehci_device); | 165 | platform_device_register(&ath79_ehci_device); |
147 | } | 166 | } |
148 | 167 | ||
@@ -159,7 +178,7 @@ static void __init ar913x_usb_setup(void) | |||
159 | 178 | ||
160 | ath79_ehci_resources[0].start = AR913X_EHCI_BASE; | 179 | ath79_ehci_resources[0].start = AR913X_EHCI_BASE; |
161 | ath79_ehci_resources[0].end = AR913X_EHCI_BASE + AR913X_EHCI_SIZE - 1; | 180 | ath79_ehci_resources[0].end = AR913X_EHCI_BASE + AR913X_EHCI_SIZE - 1; |
162 | ath79_ehci_device.name = "ar913x-ehci"; | 181 | ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2; |
163 | platform_device_register(&ath79_ehci_device); | 182 | platform_device_register(&ath79_ehci_device); |
164 | } | 183 | } |
165 | 184 | ||
@@ -176,7 +195,7 @@ static void __init ar933x_usb_setup(void) | |||
176 | 195 | ||
177 | ath79_ehci_resources[0].start = AR933X_EHCI_BASE; | 196 | ath79_ehci_resources[0].start = AR933X_EHCI_BASE; |
178 | ath79_ehci_resources[0].end = AR933X_EHCI_BASE + AR933X_EHCI_SIZE - 1; | 197 | ath79_ehci_resources[0].end = AR933X_EHCI_BASE + AR933X_EHCI_SIZE - 1; |
179 | ath79_ehci_device.name = "ar933x-ehci"; | 198 | ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2; |
180 | platform_device_register(&ath79_ehci_device); | 199 | platform_device_register(&ath79_ehci_device); |
181 | } | 200 | } |
182 | 201 | ||
diff --git a/arch/mips/ath79/dev-wmac.c b/arch/mips/ath79/dev-wmac.c index 24f546985b69..e21507052066 100644 --- a/arch/mips/ath79/dev-wmac.c +++ b/arch/mips/ath79/dev-wmac.c | |||
@@ -96,7 +96,7 @@ void __init ath79_register_wmac(u8 *cal_data) | |||
96 | { | 96 | { |
97 | if (soc_is_ar913x()) | 97 | if (soc_is_ar913x()) |
98 | ar913x_wmac_setup(); | 98 | ar913x_wmac_setup(); |
99 | if (soc_is_ar933x()) | 99 | else if (soc_is_ar933x()) |
100 | ar933x_wmac_setup(); | 100 | ar933x_wmac_setup(); |
101 | else | 101 | else |
102 | BUG(); | 102 | BUG(); |
diff --git a/arch/mips/bcm47xx/Makefile b/arch/mips/bcm47xx/Makefile index 4add17349ff9..4389de182eb4 100644 --- a/arch/mips/bcm47xx/Makefile +++ b/arch/mips/bcm47xx/Makefile | |||
@@ -3,5 +3,5 @@ | |||
3 | # under Linux. | 3 | # under Linux. |
4 | # | 4 | # |
5 | 5 | ||
6 | obj-y += gpio.o irq.o nvram.o prom.o serial.o setup.o time.o | 6 | obj-y += gpio.o irq.o nvram.o prom.o serial.o setup.o time.o sprom.o |
7 | obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o | 7 | obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o |
diff --git a/arch/mips/bcm47xx/nvram.c b/arch/mips/bcm47xx/nvram.c index a84e3bb7387f..d43ceff5be47 100644 --- a/arch/mips/bcm47xx/nvram.c +++ b/arch/mips/bcm47xx/nvram.c | |||
@@ -107,8 +107,7 @@ int nvram_getenv(char *name, char *val, size_t val_len) | |||
107 | value = eq + 1; | 107 | value = eq + 1; |
108 | if ((eq - var) == strlen(name) && | 108 | if ((eq - var) == strlen(name) && |
109 | strncmp(var, name, (eq - var)) == 0) { | 109 | strncmp(var, name, (eq - var)) == 0) { |
110 | snprintf(val, val_len, "%s", value); | 110 | return snprintf(val, val_len, "%s", value); |
111 | return 0; | ||
112 | } | 111 | } |
113 | } | 112 | } |
114 | return NVRAM_ERR_ENVNOTFOUND; | 113 | return NVRAM_ERR_ENVNOTFOUND; |
diff --git a/arch/mips/bcm47xx/setup.c b/arch/mips/bcm47xx/setup.c index aab6b0c40a75..19780aa91708 100644 --- a/arch/mips/bcm47xx/setup.c +++ b/arch/mips/bcm47xx/setup.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org> | 3 | * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org> |
4 | * Copyright (C) 2006 Michael Buesch <m@bues.ch> | 4 | * Copyright (C) 2006 Michael Buesch <m@bues.ch> |
5 | * Copyright (C) 2010 Waldemar Brodkorb <wbx@openadk.org> | 5 | * Copyright (C) 2010 Waldemar Brodkorb <wbx@openadk.org> |
6 | * Copyright (C) 2010-2011 Hauke Mehrtens <hauke@hauke-m.de> | 6 | * Copyright (C) 2010-2012 Hauke Mehrtens <hauke@hauke-m.de> |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or modify it | 8 | * This program is free software; you can redistribute it and/or modify it |
9 | * under the terms of the GNU General Public License as published by the | 9 | * under the terms of the GNU General Public License as published by the |
@@ -85,156 +85,7 @@ static void bcm47xx_machine_halt(void) | |||
85 | } | 85 | } |
86 | 86 | ||
87 | #ifdef CONFIG_BCM47XX_SSB | 87 | #ifdef CONFIG_BCM47XX_SSB |
88 | #define READ_FROM_NVRAM(_outvar, name, buf) \ | 88 | static int bcm47xx_get_sprom_ssb(struct ssb_bus *bus, struct ssb_sprom *out) |
89 | if (nvram_getprefix(prefix, name, buf, sizeof(buf)) >= 0)\ | ||
90 | sprom->_outvar = simple_strtoul(buf, NULL, 0); | ||
91 | |||
92 | #define READ_FROM_NVRAM2(_outvar, name1, name2, buf) \ | ||
93 | if (nvram_getprefix(prefix, name1, buf, sizeof(buf)) >= 0 || \ | ||
94 | nvram_getprefix(prefix, name2, buf, sizeof(buf)) >= 0)\ | ||
95 | sprom->_outvar = simple_strtoul(buf, NULL, 0); | ||
96 | |||
97 | static inline int nvram_getprefix(const char *prefix, char *name, | ||
98 | char *buf, int len) | ||
99 | { | ||
100 | if (prefix) { | ||
101 | char key[100]; | ||
102 | |||
103 | snprintf(key, sizeof(key), "%s%s", prefix, name); | ||
104 | return nvram_getenv(key, buf, len); | ||
105 | } | ||
106 | |||
107 | return nvram_getenv(name, buf, len); | ||
108 | } | ||
109 | |||
110 | static u32 nvram_getu32(const char *name, char *buf, int len) | ||
111 | { | ||
112 | int rv; | ||
113 | char key[100]; | ||
114 | u16 var0, var1; | ||
115 | |||
116 | snprintf(key, sizeof(key), "%s0", name); | ||
117 | rv = nvram_getenv(key, buf, len); | ||
118 | /* return 0 here so this looks like unset */ | ||
119 | if (rv < 0) | ||
120 | return 0; | ||
121 | var0 = simple_strtoul(buf, NULL, 0); | ||
122 | |||
123 | snprintf(key, sizeof(key), "%s1", name); | ||
124 | rv = nvram_getenv(key, buf, len); | ||
125 | if (rv < 0) | ||
126 | return 0; | ||
127 | var1 = simple_strtoul(buf, NULL, 0); | ||
128 | return var1 << 16 | var0; | ||
129 | } | ||
130 | |||
131 | static void bcm47xx_fill_sprom(struct ssb_sprom *sprom, const char *prefix) | ||
132 | { | ||
133 | char buf[100]; | ||
134 | u32 boardflags; | ||
135 | |||
136 | memset(sprom, 0, sizeof(struct ssb_sprom)); | ||
137 | |||
138 | sprom->revision = 1; /* Fallback: Old hardware does not define this. */ | ||
139 | READ_FROM_NVRAM(revision, "sromrev", buf); | ||
140 | if (nvram_getprefix(prefix, "il0macaddr", buf, sizeof(buf)) >= 0 || | ||
141 | nvram_getprefix(prefix, "macaddr", buf, sizeof(buf)) >= 0) | ||
142 | nvram_parse_macaddr(buf, sprom->il0mac); | ||
143 | if (nvram_getprefix(prefix, "et0macaddr", buf, sizeof(buf)) >= 0) | ||
144 | nvram_parse_macaddr(buf, sprom->et0mac); | ||
145 | if (nvram_getprefix(prefix, "et1macaddr", buf, sizeof(buf)) >= 0) | ||
146 | nvram_parse_macaddr(buf, sprom->et1mac); | ||
147 | READ_FROM_NVRAM(et0phyaddr, "et0phyaddr", buf); | ||
148 | READ_FROM_NVRAM(et1phyaddr, "et1phyaddr", buf); | ||
149 | READ_FROM_NVRAM(et0mdcport, "et0mdcport", buf); | ||
150 | READ_FROM_NVRAM(et1mdcport, "et1mdcport", buf); | ||
151 | READ_FROM_NVRAM(board_rev, "boardrev", buf); | ||
152 | READ_FROM_NVRAM(country_code, "ccode", buf); | ||
153 | READ_FROM_NVRAM(ant_available_a, "aa5g", buf); | ||
154 | READ_FROM_NVRAM(ant_available_bg, "aa2g", buf); | ||
155 | READ_FROM_NVRAM(pa0b0, "pa0b0", buf); | ||
156 | READ_FROM_NVRAM(pa0b1, "pa0b1", buf); | ||
157 | READ_FROM_NVRAM(pa0b2, "pa0b2", buf); | ||
158 | READ_FROM_NVRAM(pa1b0, "pa1b0", buf); | ||
159 | READ_FROM_NVRAM(pa1b1, "pa1b1", buf); | ||
160 | READ_FROM_NVRAM(pa1b2, "pa1b2", buf); | ||
161 | READ_FROM_NVRAM(pa1lob0, "pa1lob0", buf); | ||
162 | READ_FROM_NVRAM(pa1lob2, "pa1lob1", buf); | ||
163 | READ_FROM_NVRAM(pa1lob1, "pa1lob2", buf); | ||
164 | READ_FROM_NVRAM(pa1hib0, "pa1hib0", buf); | ||
165 | READ_FROM_NVRAM(pa1hib2, "pa1hib1", buf); | ||
166 | READ_FROM_NVRAM(pa1hib1, "pa1hib2", buf); | ||
167 | READ_FROM_NVRAM2(gpio0, "ledbh0", "wl0gpio0", buf); | ||
168 | READ_FROM_NVRAM2(gpio1, "ledbh1", "wl0gpio1", buf); | ||
169 | READ_FROM_NVRAM2(gpio2, "ledbh2", "wl0gpio2", buf); | ||
170 | READ_FROM_NVRAM2(gpio3, "ledbh3", "wl0gpio3", buf); | ||
171 | READ_FROM_NVRAM2(maxpwr_bg, "maxp2ga0", "pa0maxpwr", buf); | ||
172 | READ_FROM_NVRAM2(maxpwr_al, "maxp5gla0", "pa1lomaxpwr", buf); | ||
173 | READ_FROM_NVRAM2(maxpwr_a, "maxp5ga0", "pa1maxpwr", buf); | ||
174 | READ_FROM_NVRAM2(maxpwr_ah, "maxp5gha0", "pa1himaxpwr", buf); | ||
175 | READ_FROM_NVRAM2(itssi_bg, "itt5ga0", "pa0itssit", buf); | ||
176 | READ_FROM_NVRAM2(itssi_a, "itt2ga0", "pa1itssit", buf); | ||
177 | READ_FROM_NVRAM(tri2g, "tri2g", buf); | ||
178 | READ_FROM_NVRAM(tri5gl, "tri5gl", buf); | ||
179 | READ_FROM_NVRAM(tri5g, "tri5g", buf); | ||
180 | READ_FROM_NVRAM(tri5gh, "tri5gh", buf); | ||
181 | READ_FROM_NVRAM(txpid2g[0], "txpid2ga0", buf); | ||
182 | READ_FROM_NVRAM(txpid2g[1], "txpid2ga1", buf); | ||
183 | READ_FROM_NVRAM(txpid2g[2], "txpid2ga2", buf); | ||
184 | READ_FROM_NVRAM(txpid2g[3], "txpid2ga3", buf); | ||
185 | READ_FROM_NVRAM(txpid5g[0], "txpid5ga0", buf); | ||
186 | READ_FROM_NVRAM(txpid5g[1], "txpid5ga1", buf); | ||
187 | READ_FROM_NVRAM(txpid5g[2], "txpid5ga2", buf); | ||
188 | READ_FROM_NVRAM(txpid5g[3], "txpid5ga3", buf); | ||
189 | READ_FROM_NVRAM(txpid5gl[0], "txpid5gla0", buf); | ||
190 | READ_FROM_NVRAM(txpid5gl[1], "txpid5gla1", buf); | ||
191 | READ_FROM_NVRAM(txpid5gl[2], "txpid5gla2", buf); | ||
192 | READ_FROM_NVRAM(txpid5gl[3], "txpid5gla3", buf); | ||
193 | READ_FROM_NVRAM(txpid5gh[0], "txpid5gha0", buf); | ||
194 | READ_FROM_NVRAM(txpid5gh[1], "txpid5gha1", buf); | ||
195 | READ_FROM_NVRAM(txpid5gh[2], "txpid5gha2", buf); | ||
196 | READ_FROM_NVRAM(txpid5gh[3], "txpid5gha3", buf); | ||
197 | READ_FROM_NVRAM(rxpo2g, "rxpo2g", buf); | ||
198 | READ_FROM_NVRAM(rxpo5g, "rxpo5g", buf); | ||
199 | READ_FROM_NVRAM(rssisav2g, "rssisav2g", buf); | ||
200 | READ_FROM_NVRAM(rssismc2g, "rssismc2g", buf); | ||
201 | READ_FROM_NVRAM(rssismf2g, "rssismf2g", buf); | ||
202 | READ_FROM_NVRAM(bxa2g, "bxa2g", buf); | ||
203 | READ_FROM_NVRAM(rssisav5g, "rssisav5g", buf); | ||
204 | READ_FROM_NVRAM(rssismc5g, "rssismc5g", buf); | ||
205 | READ_FROM_NVRAM(rssismf5g, "rssismf5g", buf); | ||
206 | READ_FROM_NVRAM(bxa5g, "bxa5g", buf); | ||
207 | READ_FROM_NVRAM(cck2gpo, "cck2gpo", buf); | ||
208 | |||
209 | sprom->ofdm2gpo = nvram_getu32("ofdm2gpo", buf, sizeof(buf)); | ||
210 | sprom->ofdm5glpo = nvram_getu32("ofdm5glpo", buf, sizeof(buf)); | ||
211 | sprom->ofdm5gpo = nvram_getu32("ofdm5gpo", buf, sizeof(buf)); | ||
212 | sprom->ofdm5ghpo = nvram_getu32("ofdm5ghpo", buf, sizeof(buf)); | ||
213 | |||
214 | READ_FROM_NVRAM(antenna_gain.ghz24.a0, "ag0", buf); | ||
215 | READ_FROM_NVRAM(antenna_gain.ghz24.a1, "ag1", buf); | ||
216 | READ_FROM_NVRAM(antenna_gain.ghz24.a2, "ag2", buf); | ||
217 | READ_FROM_NVRAM(antenna_gain.ghz24.a3, "ag3", buf); | ||
218 | memcpy(&sprom->antenna_gain.ghz5, &sprom->antenna_gain.ghz24, | ||
219 | sizeof(sprom->antenna_gain.ghz5)); | ||
220 | |||
221 | if (nvram_getprefix(prefix, "boardflags", buf, sizeof(buf)) >= 0) { | ||
222 | boardflags = simple_strtoul(buf, NULL, 0); | ||
223 | if (boardflags) { | ||
224 | sprom->boardflags_lo = (boardflags & 0x0000FFFFU); | ||
225 | sprom->boardflags_hi = (boardflags & 0xFFFF0000U) >> 16; | ||
226 | } | ||
227 | } | ||
228 | if (nvram_getprefix(prefix, "boardflags2", buf, sizeof(buf)) >= 0) { | ||
229 | boardflags = simple_strtoul(buf, NULL, 0); | ||
230 | if (boardflags) { | ||
231 | sprom->boardflags2_lo = (boardflags & 0x0000FFFFU); | ||
232 | sprom->boardflags2_hi = (boardflags & 0xFFFF0000U) >> 16; | ||
233 | } | ||
234 | } | ||
235 | } | ||
236 | |||
237 | int bcm47xx_get_sprom(struct ssb_bus *bus, struct ssb_sprom *out) | ||
238 | { | 89 | { |
239 | char prefix[10]; | 90 | char prefix[10]; |
240 | 91 | ||
@@ -251,7 +102,7 @@ int bcm47xx_get_sprom(struct ssb_bus *bus, struct ssb_sprom *out) | |||
251 | } | 102 | } |
252 | 103 | ||
253 | static int bcm47xx_get_invariants(struct ssb_bus *bus, | 104 | static int bcm47xx_get_invariants(struct ssb_bus *bus, |
254 | struct ssb_init_invariants *iv) | 105 | struct ssb_init_invariants *iv) |
255 | { | 106 | { |
256 | char buf[20]; | 107 | char buf[20]; |
257 | 108 | ||
@@ -281,7 +132,7 @@ static void __init bcm47xx_register_ssb(void) | |||
281 | char buf[100]; | 132 | char buf[100]; |
282 | struct ssb_mipscore *mcore; | 133 | struct ssb_mipscore *mcore; |
283 | 134 | ||
284 | err = ssb_arch_register_fallback_sprom(&bcm47xx_get_sprom); | 135 | err = ssb_arch_register_fallback_sprom(&bcm47xx_get_sprom_ssb); |
285 | if (err) | 136 | if (err) |
286 | printk(KERN_WARNING "bcm47xx: someone else already registered" | 137 | printk(KERN_WARNING "bcm47xx: someone else already registered" |
287 | " a ssb SPROM callback handler (err %d)\n", err); | 138 | " a ssb SPROM callback handler (err %d)\n", err); |
@@ -308,10 +159,41 @@ static void __init bcm47xx_register_ssb(void) | |||
308 | #endif | 159 | #endif |
309 | 160 | ||
310 | #ifdef CONFIG_BCM47XX_BCMA | 161 | #ifdef CONFIG_BCM47XX_BCMA |
162 | static int bcm47xx_get_sprom_bcma(struct bcma_bus *bus, struct ssb_sprom *out) | ||
163 | { | ||
164 | char prefix[10]; | ||
165 | struct bcma_device *core; | ||
166 | |||
167 | switch (bus->hosttype) { | ||
168 | case BCMA_HOSTTYPE_PCI: | ||
169 | snprintf(prefix, sizeof(prefix), "pci/%u/%u/", | ||
170 | bus->host_pci->bus->number + 1, | ||
171 | PCI_SLOT(bus->host_pci->devfn)); | ||
172 | bcm47xx_fill_sprom(out, prefix); | ||
173 | return 0; | ||
174 | case BCMA_HOSTTYPE_SOC: | ||
175 | bcm47xx_fill_sprom_ethernet(out, NULL); | ||
176 | core = bcma_find_core(bus, BCMA_CORE_80211); | ||
177 | if (core) { | ||
178 | snprintf(prefix, sizeof(prefix), "sb/%u/", | ||
179 | core->core_index); | ||
180 | bcm47xx_fill_sprom(out, prefix); | ||
181 | } | ||
182 | return 0; | ||
183 | default: | ||
184 | pr_warn("bcm47xx: unable to fill SPROM for given bustype.\n"); | ||
185 | return -EINVAL; | ||
186 | } | ||
187 | } | ||
188 | |||
311 | static void __init bcm47xx_register_bcma(void) | 189 | static void __init bcm47xx_register_bcma(void) |
312 | { | 190 | { |
313 | int err; | 191 | int err; |
314 | 192 | ||
193 | err = bcma_arch_register_fallback_sprom(&bcm47xx_get_sprom_bcma); | ||
194 | if (err) | ||
195 | pr_warn("bcm47xx: someone else already registered a bcma SPROM callback handler (err %d)\n", err); | ||
196 | |||
315 | err = bcma_host_soc_register(&bcm47xx_bus.bcma); | 197 | err = bcma_host_soc_register(&bcm47xx_bus.bcma); |
316 | if (err) | 198 | if (err) |
317 | panic("Failed to initialize BCMA bus (err %d)", err); | 199 | panic("Failed to initialize BCMA bus (err %d)", err); |
diff --git a/arch/mips/bcm47xx/sprom.c b/arch/mips/bcm47xx/sprom.c new file mode 100644 index 000000000000..5c8dcd2a8a93 --- /dev/null +++ b/arch/mips/bcm47xx/sprom.c | |||
@@ -0,0 +1,620 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2004 Florian Schirmer <jolt@tuxbox.org> | ||
3 | * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org> | ||
4 | * Copyright (C) 2006 Michael Buesch <m@bues.ch> | ||
5 | * Copyright (C) 2010 Waldemar Brodkorb <wbx@openadk.org> | ||
6 | * Copyright (C) 2010-2012 Hauke Mehrtens <hauke@hauke-m.de> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License as published by the | ||
10 | * Free Software Foundation; either version 2 of the License, or (at your | ||
11 | * option) any later version. | ||
12 | * | ||
13 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
14 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
15 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
16 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
17 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
18 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
19 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
20 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
21 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
23 | * | ||
24 | * You should have received a copy of the GNU General Public License along | ||
25 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
26 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
27 | */ | ||
28 | |||
29 | #include <bcm47xx.h> | ||
30 | #include <nvram.h> | ||
31 | |||
32 | static void create_key(const char *prefix, const char *postfix, | ||
33 | const char *name, char *buf, int len) | ||
34 | { | ||
35 | if (prefix && postfix) | ||
36 | snprintf(buf, len, "%s%s%s", prefix, name, postfix); | ||
37 | else if (prefix) | ||
38 | snprintf(buf, len, "%s%s", prefix, name); | ||
39 | else if (postfix) | ||
40 | snprintf(buf, len, "%s%s", name, postfix); | ||
41 | else | ||
42 | snprintf(buf, len, "%s", name); | ||
43 | } | ||
44 | |||
45 | #define NVRAM_READ_VAL(type) \ | ||
46 | static void nvram_read_ ## type (const char *prefix, \ | ||
47 | const char *postfix, const char *name, \ | ||
48 | type *val, type allset) \ | ||
49 | { \ | ||
50 | char buf[100]; \ | ||
51 | char key[40]; \ | ||
52 | int err; \ | ||
53 | type var; \ | ||
54 | \ | ||
55 | create_key(prefix, postfix, name, key, sizeof(key)); \ | ||
56 | \ | ||
57 | err = nvram_getenv(key, buf, sizeof(buf)); \ | ||
58 | if (err < 0) \ | ||
59 | return; \ | ||
60 | err = kstrto ## type (buf, 0, &var); \ | ||
61 | if (err) { \ | ||
62 | pr_warn("can not parse nvram name %s with value %s" \ | ||
63 | " got %i", key, buf, err); \ | ||
64 | return; \ | ||
65 | } \ | ||
66 | if (allset && var == allset) \ | ||
67 | return; \ | ||
68 | *val = var; \ | ||
69 | } | ||
70 | |||
71 | NVRAM_READ_VAL(u8) | ||
72 | NVRAM_READ_VAL(s8) | ||
73 | NVRAM_READ_VAL(u16) | ||
74 | NVRAM_READ_VAL(u32) | ||
75 | |||
76 | #undef NVRAM_READ_VAL | ||
77 | |||
78 | static void nvram_read_u32_2(const char *prefix, const char *name, | ||
79 | u16 *val_lo, u16 *val_hi) | ||
80 | { | ||
81 | char buf[100]; | ||
82 | char key[40]; | ||
83 | int err; | ||
84 | u32 val; | ||
85 | |||
86 | create_key(prefix, NULL, name, key, sizeof(key)); | ||
87 | |||
88 | err = nvram_getenv(key, buf, sizeof(buf)); | ||
89 | if (err < 0) | ||
90 | return; | ||
91 | err = kstrtou32(buf, 0, &val); | ||
92 | if (err) { | ||
93 | pr_warn("can not parse nvram name %s with value %s got %i", | ||
94 | key, buf, err); | ||
95 | return; | ||
96 | } | ||
97 | *val_lo = (val & 0x0000FFFFU); | ||
98 | *val_hi = (val & 0xFFFF0000U) >> 16; | ||
99 | } | ||
100 | |||
101 | static void nvram_read_leddc(const char *prefix, const char *name, | ||
102 | u8 *leddc_on_time, u8 *leddc_off_time) | ||
103 | { | ||
104 | char buf[100]; | ||
105 | char key[40]; | ||
106 | int err; | ||
107 | u32 val; | ||
108 | |||
109 | create_key(prefix, NULL, name, key, sizeof(key)); | ||
110 | |||
111 | err = nvram_getenv(key, buf, sizeof(buf)); | ||
112 | if (err < 0) | ||
113 | return; | ||
114 | err = kstrtou32(buf, 0, &val); | ||
115 | if (err) { | ||
116 | pr_warn("can not parse nvram name %s with value %s got %i", | ||
117 | key, buf, err); | ||
118 | return; | ||
119 | } | ||
120 | |||
121 | if (val == 0xffff || val == 0xffffffff) | ||
122 | return; | ||
123 | |||
124 | *leddc_on_time = val & 0xff; | ||
125 | *leddc_off_time = (val >> 16) & 0xff; | ||
126 | } | ||
127 | |||
128 | static void nvram_read_macaddr(const char *prefix, const char *name, | ||
129 | u8 (*val)[6]) | ||
130 | { | ||
131 | char buf[100]; | ||
132 | char key[40]; | ||
133 | int err; | ||
134 | |||
135 | create_key(prefix, NULL, name, key, sizeof(key)); | ||
136 | |||
137 | err = nvram_getenv(key, buf, sizeof(buf)); | ||
138 | if (err < 0) | ||
139 | return; | ||
140 | nvram_parse_macaddr(buf, *val); | ||
141 | } | ||
142 | |||
143 | static void nvram_read_alpha2(const char *prefix, const char *name, | ||
144 | char (*val)[2]) | ||
145 | { | ||
146 | char buf[10]; | ||
147 | char key[40]; | ||
148 | int err; | ||
149 | |||
150 | create_key(prefix, NULL, name, key, sizeof(key)); | ||
151 | |||
152 | err = nvram_getenv(key, buf, sizeof(buf)); | ||
153 | if (err < 0) | ||
154 | return; | ||
155 | if (buf[0] == '0') | ||
156 | return; | ||
157 | if (strlen(buf) > 2) { | ||
158 | pr_warn("alpha2 is too long %s", buf); | ||
159 | return; | ||
160 | } | ||
161 | memcpy(val, buf, sizeof(val)); | ||
162 | } | ||
163 | |||
164 | static void bcm47xx_fill_sprom_r1234589(struct ssb_sprom *sprom, | ||
165 | const char *prefix) | ||
166 | { | ||
167 | nvram_read_u16(prefix, NULL, "boardrev", &sprom->board_rev, 0); | ||
168 | nvram_read_u16(prefix, NULL, "boardnum", &sprom->board_num, 0); | ||
169 | nvram_read_u8(prefix, NULL, "ledbh0", &sprom->gpio0, 0xff); | ||
170 | nvram_read_u8(prefix, NULL, "ledbh1", &sprom->gpio1, 0xff); | ||
171 | nvram_read_u8(prefix, NULL, "ledbh2", &sprom->gpio2, 0xff); | ||
172 | nvram_read_u8(prefix, NULL, "ledbh3", &sprom->gpio3, 0xff); | ||
173 | nvram_read_u8(prefix, NULL, "aa2g", &sprom->ant_available_bg, 0); | ||
174 | nvram_read_u8(prefix, NULL, "aa5g", &sprom->ant_available_a, 0); | ||
175 | nvram_read_s8(prefix, NULL, "ag0", &sprom->antenna_gain.a0, 0); | ||
176 | nvram_read_s8(prefix, NULL, "ag1", &sprom->antenna_gain.a1, 0); | ||
177 | nvram_read_alpha2(prefix, "ccode", &sprom->alpha2); | ||
178 | } | ||
179 | |||
180 | static void bcm47xx_fill_sprom_r12389(struct ssb_sprom *sprom, | ||
181 | const char *prefix) | ||
182 | { | ||
183 | nvram_read_u16(prefix, NULL, "pa0b0", &sprom->pa0b0, 0); | ||
184 | nvram_read_u16(prefix, NULL, "pa0b1", &sprom->pa0b1, 0); | ||
185 | nvram_read_u16(prefix, NULL, "pa0b2", &sprom->pa0b2, 0); | ||
186 | nvram_read_u8(prefix, NULL, "pa0itssit", &sprom->itssi_bg, 0); | ||
187 | nvram_read_u8(prefix, NULL, "pa0maxpwr", &sprom->maxpwr_bg, 0); | ||
188 | nvram_read_u16(prefix, NULL, "pa1b0", &sprom->pa1b0, 0); | ||
189 | nvram_read_u16(prefix, NULL, "pa1b1", &sprom->pa1b1, 0); | ||
190 | nvram_read_u16(prefix, NULL, "pa1b2", &sprom->pa1b2, 0); | ||
191 | nvram_read_u8(prefix, NULL, "pa1itssit", &sprom->itssi_a, 0); | ||
192 | nvram_read_u8(prefix, NULL, "pa1maxpwr", &sprom->maxpwr_a, 0); | ||
193 | } | ||
194 | |||
195 | static void bcm47xx_fill_sprom_r1(struct ssb_sprom *sprom, const char *prefix) | ||
196 | { | ||
197 | nvram_read_u16(prefix, NULL, "boardflags", &sprom->boardflags_lo, 0); | ||
198 | nvram_read_u8(prefix, NULL, "cc", &sprom->country_code, 0); | ||
199 | } | ||
200 | |||
201 | static void bcm47xx_fill_sprom_r2389(struct ssb_sprom *sprom, | ||
202 | const char *prefix) | ||
203 | { | ||
204 | nvram_read_u8(prefix, NULL, "opo", &sprom->opo, 0); | ||
205 | nvram_read_u16(prefix, NULL, "pa1lob0", &sprom->pa1lob0, 0); | ||
206 | nvram_read_u16(prefix, NULL, "pa1lob1", &sprom->pa1lob1, 0); | ||
207 | nvram_read_u16(prefix, NULL, "pa1lob2", &sprom->pa1lob2, 0); | ||
208 | nvram_read_u16(prefix, NULL, "pa1hib0", &sprom->pa1hib0, 0); | ||
209 | nvram_read_u16(prefix, NULL, "pa1hib1", &sprom->pa1hib1, 0); | ||
210 | nvram_read_u16(prefix, NULL, "pa1hib2", &sprom->pa1hib2, 0); | ||
211 | nvram_read_u8(prefix, NULL, "pa1lomaxpwr", &sprom->maxpwr_al, 0); | ||
212 | nvram_read_u8(prefix, NULL, "pa1himaxpwr", &sprom->maxpwr_ah, 0); | ||
213 | } | ||
214 | |||
215 | static void bcm47xx_fill_sprom_r2(struct ssb_sprom *sprom, const char *prefix) | ||
216 | { | ||
217 | nvram_read_u32_2(prefix, "boardflags", &sprom->boardflags_lo, | ||
218 | &sprom->boardflags_hi); | ||
219 | nvram_read_u16(prefix, NULL, "boardtype", &sprom->board_type, 0); | ||
220 | } | ||
221 | |||
222 | static void bcm47xx_fill_sprom_r389(struct ssb_sprom *sprom, const char *prefix) | ||
223 | { | ||
224 | nvram_read_u8(prefix, NULL, "bxa2g", &sprom->bxa2g, 0); | ||
225 | nvram_read_u8(prefix, NULL, "rssisav2g", &sprom->rssisav2g, 0); | ||
226 | nvram_read_u8(prefix, NULL, "rssismc2g", &sprom->rssismc2g, 0); | ||
227 | nvram_read_u8(prefix, NULL, "rssismf2g", &sprom->rssismf2g, 0); | ||
228 | nvram_read_u8(prefix, NULL, "bxa5g", &sprom->bxa5g, 0); | ||
229 | nvram_read_u8(prefix, NULL, "rssisav5g", &sprom->rssisav5g, 0); | ||
230 | nvram_read_u8(prefix, NULL, "rssismc5g", &sprom->rssismc5g, 0); | ||
231 | nvram_read_u8(prefix, NULL, "rssismf5g", &sprom->rssismf5g, 0); | ||
232 | nvram_read_u8(prefix, NULL, "tri2g", &sprom->tri2g, 0); | ||
233 | nvram_read_u8(prefix, NULL, "tri5g", &sprom->tri5g, 0); | ||
234 | nvram_read_u8(prefix, NULL, "tri5gl", &sprom->tri5gl, 0); | ||
235 | nvram_read_u8(prefix, NULL, "tri5gh", &sprom->tri5gh, 0); | ||
236 | nvram_read_s8(prefix, NULL, "rxpo2g", &sprom->rxpo2g, 0); | ||
237 | nvram_read_s8(prefix, NULL, "rxpo5g", &sprom->rxpo5g, 0); | ||
238 | } | ||
239 | |||
240 | static void bcm47xx_fill_sprom_r3(struct ssb_sprom *sprom, const char *prefix) | ||
241 | { | ||
242 | nvram_read_u32_2(prefix, "boardflags", &sprom->boardflags_lo, | ||
243 | &sprom->boardflags_hi); | ||
244 | nvram_read_u16(prefix, NULL, "boardtype", &sprom->board_type, 0); | ||
245 | nvram_read_u8(prefix, NULL, "regrev", &sprom->regrev, 0); | ||
246 | nvram_read_leddc(prefix, "leddc", &sprom->leddc_on_time, | ||
247 | &sprom->leddc_off_time); | ||
248 | } | ||
249 | |||
250 | static void bcm47xx_fill_sprom_r4589(struct ssb_sprom *sprom, | ||
251 | const char *prefix) | ||
252 | { | ||
253 | nvram_read_u32_2(prefix, "boardflags", &sprom->boardflags_lo, | ||
254 | &sprom->boardflags_hi); | ||
255 | nvram_read_u32_2(prefix, "boardflags2", &sprom->boardflags2_lo, | ||
256 | &sprom->boardflags2_hi); | ||
257 | nvram_read_u16(prefix, NULL, "boardtype", &sprom->board_type, 0); | ||
258 | nvram_read_u8(prefix, NULL, "regrev", &sprom->regrev, 0); | ||
259 | nvram_read_s8(prefix, NULL, "ag2", &sprom->antenna_gain.a2, 0); | ||
260 | nvram_read_s8(prefix, NULL, "ag3", &sprom->antenna_gain.a3, 0); | ||
261 | nvram_read_u8(prefix, NULL, "txchain", &sprom->txchain, 0xf); | ||
262 | nvram_read_u8(prefix, NULL, "rxchain", &sprom->rxchain, 0xf); | ||
263 | nvram_read_u8(prefix, NULL, "antswitch", &sprom->antswitch, 0xff); | ||
264 | nvram_read_leddc(prefix, "leddc", &sprom->leddc_on_time, | ||
265 | &sprom->leddc_off_time); | ||
266 | } | ||
267 | |||
268 | static void bcm47xx_fill_sprom_r458(struct ssb_sprom *sprom, const char *prefix) | ||
269 | { | ||
270 | nvram_read_u16(prefix, NULL, "cck2gpo", &sprom->cck2gpo, 0); | ||
271 | nvram_read_u32(prefix, NULL, "ofdm2gpo", &sprom->ofdm2gpo, 0); | ||
272 | nvram_read_u32(prefix, NULL, "ofdm5gpo", &sprom->ofdm5gpo, 0); | ||
273 | nvram_read_u32(prefix, NULL, "ofdm5glpo", &sprom->ofdm5glpo, 0); | ||
274 | nvram_read_u32(prefix, NULL, "ofdm5ghpo", &sprom->ofdm5ghpo, 0); | ||
275 | nvram_read_u16(prefix, NULL, "cddpo", &sprom->cddpo, 0); | ||
276 | nvram_read_u16(prefix, NULL, "stbcpo", &sprom->stbcpo, 0); | ||
277 | nvram_read_u16(prefix, NULL, "bw40po", &sprom->bw40po, 0); | ||
278 | nvram_read_u16(prefix, NULL, "bwduppo", &sprom->bwduppo, 0); | ||
279 | nvram_read_u16(prefix, NULL, "mcs2gpo0", &sprom->mcs2gpo[0], 0); | ||
280 | nvram_read_u16(prefix, NULL, "mcs2gpo1", &sprom->mcs2gpo[1], 0); | ||
281 | nvram_read_u16(prefix, NULL, "mcs2gpo2", &sprom->mcs2gpo[2], 0); | ||
282 | nvram_read_u16(prefix, NULL, "mcs2gpo3", &sprom->mcs2gpo[3], 0); | ||
283 | nvram_read_u16(prefix, NULL, "mcs2gpo4", &sprom->mcs2gpo[4], 0); | ||
284 | nvram_read_u16(prefix, NULL, "mcs2gpo5", &sprom->mcs2gpo[5], 0); | ||
285 | nvram_read_u16(prefix, NULL, "mcs2gpo6", &sprom->mcs2gpo[6], 0); | ||
286 | nvram_read_u16(prefix, NULL, "mcs2gpo7", &sprom->mcs2gpo[7], 0); | ||
287 | nvram_read_u16(prefix, NULL, "mcs5gpo0", &sprom->mcs5gpo[0], 0); | ||
288 | nvram_read_u16(prefix, NULL, "mcs5gpo1", &sprom->mcs5gpo[1], 0); | ||
289 | nvram_read_u16(prefix, NULL, "mcs5gpo2", &sprom->mcs5gpo[2], 0); | ||
290 | nvram_read_u16(prefix, NULL, "mcs5gpo3", &sprom->mcs5gpo[3], 0); | ||
291 | nvram_read_u16(prefix, NULL, "mcs5gpo4", &sprom->mcs5gpo[4], 0); | ||
292 | nvram_read_u16(prefix, NULL, "mcs5gpo5", &sprom->mcs5gpo[5], 0); | ||
293 | nvram_read_u16(prefix, NULL, "mcs5gpo6", &sprom->mcs5gpo[6], 0); | ||
294 | nvram_read_u16(prefix, NULL, "mcs5gpo7", &sprom->mcs5gpo[7], 0); | ||
295 | nvram_read_u16(prefix, NULL, "mcs5glpo0", &sprom->mcs5glpo[0], 0); | ||
296 | nvram_read_u16(prefix, NULL, "mcs5glpo1", &sprom->mcs5glpo[1], 0); | ||
297 | nvram_read_u16(prefix, NULL, "mcs5glpo2", &sprom->mcs5glpo[2], 0); | ||
298 | nvram_read_u16(prefix, NULL, "mcs5glpo3", &sprom->mcs5glpo[3], 0); | ||
299 | nvram_read_u16(prefix, NULL, "mcs5glpo4", &sprom->mcs5glpo[4], 0); | ||
300 | nvram_read_u16(prefix, NULL, "mcs5glpo5", &sprom->mcs5glpo[5], 0); | ||
301 | nvram_read_u16(prefix, NULL, "mcs5glpo6", &sprom->mcs5glpo[6], 0); | ||
302 | nvram_read_u16(prefix, NULL, "mcs5glpo7", &sprom->mcs5glpo[7], 0); | ||
303 | nvram_read_u16(prefix, NULL, "mcs5ghpo0", &sprom->mcs5ghpo[0], 0); | ||
304 | nvram_read_u16(prefix, NULL, "mcs5ghpo1", &sprom->mcs5ghpo[1], 0); | ||
305 | nvram_read_u16(prefix, NULL, "mcs5ghpo2", &sprom->mcs5ghpo[2], 0); | ||
306 | nvram_read_u16(prefix, NULL, "mcs5ghpo3", &sprom->mcs5ghpo[3], 0); | ||
307 | nvram_read_u16(prefix, NULL, "mcs5ghpo4", &sprom->mcs5ghpo[4], 0); | ||
308 | nvram_read_u16(prefix, NULL, "mcs5ghpo5", &sprom->mcs5ghpo[5], 0); | ||
309 | nvram_read_u16(prefix, NULL, "mcs5ghpo6", &sprom->mcs5ghpo[6], 0); | ||
310 | nvram_read_u16(prefix, NULL, "mcs5ghpo7", &sprom->mcs5ghpo[7], 0); | ||
311 | } | ||
312 | |||
313 | static void bcm47xx_fill_sprom_r45(struct ssb_sprom *sprom, const char *prefix) | ||
314 | { | ||
315 | nvram_read_u8(prefix, NULL, "txpid2ga0", &sprom->txpid2g[0], 0); | ||
316 | nvram_read_u8(prefix, NULL, "txpid2ga1", &sprom->txpid2g[1], 0); | ||
317 | nvram_read_u8(prefix, NULL, "txpid2ga2", &sprom->txpid2g[2], 0); | ||
318 | nvram_read_u8(prefix, NULL, "txpid2ga3", &sprom->txpid2g[3], 0); | ||
319 | nvram_read_u8(prefix, NULL, "txpid5ga0", &sprom->txpid5g[0], 0); | ||
320 | nvram_read_u8(prefix, NULL, "txpid5ga1", &sprom->txpid5g[1], 0); | ||
321 | nvram_read_u8(prefix, NULL, "txpid5ga2", &sprom->txpid5g[2], 0); | ||
322 | nvram_read_u8(prefix, NULL, "txpid5ga3", &sprom->txpid5g[3], 0); | ||
323 | nvram_read_u8(prefix, NULL, "txpid5gla0", &sprom->txpid5gl[0], 0); | ||
324 | nvram_read_u8(prefix, NULL, "txpid5gla1", &sprom->txpid5gl[1], 0); | ||
325 | nvram_read_u8(prefix, NULL, "txpid5gla2", &sprom->txpid5gl[2], 0); | ||
326 | nvram_read_u8(prefix, NULL, "txpid5gla3", &sprom->txpid5gl[3], 0); | ||
327 | nvram_read_u8(prefix, NULL, "txpid5gha0", &sprom->txpid5gh[0], 0); | ||
328 | nvram_read_u8(prefix, NULL, "txpid5gha1", &sprom->txpid5gh[1], 0); | ||
329 | nvram_read_u8(prefix, NULL, "txpid5gha2", &sprom->txpid5gh[2], 0); | ||
330 | nvram_read_u8(prefix, NULL, "txpid5gha3", &sprom->txpid5gh[3], 0); | ||
331 | } | ||
332 | |||
333 | static void bcm47xx_fill_sprom_r89(struct ssb_sprom *sprom, const char *prefix) | ||
334 | { | ||
335 | nvram_read_u8(prefix, NULL, "tssipos2g", &sprom->fem.ghz2.tssipos, 0); | ||
336 | nvram_read_u8(prefix, NULL, "extpagain2g", | ||
337 | &sprom->fem.ghz2.extpa_gain, 0); | ||
338 | nvram_read_u8(prefix, NULL, "pdetrange2g", | ||
339 | &sprom->fem.ghz2.pdet_range, 0); | ||
340 | nvram_read_u8(prefix, NULL, "triso2g", &sprom->fem.ghz2.tr_iso, 0); | ||
341 | nvram_read_u8(prefix, NULL, "antswctl2g", &sprom->fem.ghz2.antswlut, 0); | ||
342 | nvram_read_u8(prefix, NULL, "tssipos5g", &sprom->fem.ghz5.tssipos, 0); | ||
343 | nvram_read_u8(prefix, NULL, "extpagain5g", | ||
344 | &sprom->fem.ghz5.extpa_gain, 0); | ||
345 | nvram_read_u8(prefix, NULL, "pdetrange5g", | ||
346 | &sprom->fem.ghz5.pdet_range, 0); | ||
347 | nvram_read_u8(prefix, NULL, "triso5g", &sprom->fem.ghz5.tr_iso, 0); | ||
348 | nvram_read_u8(prefix, NULL, "antswctl5g", &sprom->fem.ghz5.antswlut, 0); | ||
349 | nvram_read_u8(prefix, NULL, "tempthresh", &sprom->tempthresh, 0); | ||
350 | nvram_read_u8(prefix, NULL, "tempoffset", &sprom->tempoffset, 0); | ||
351 | nvram_read_u16(prefix, NULL, "rawtempsense", &sprom->rawtempsense, 0); | ||
352 | nvram_read_u8(prefix, NULL, "measpower", &sprom->measpower, 0); | ||
353 | nvram_read_u8(prefix, NULL, "tempsense_slope", | ||
354 | &sprom->tempsense_slope, 0); | ||
355 | nvram_read_u8(prefix, NULL, "tempcorrx", &sprom->tempcorrx, 0); | ||
356 | nvram_read_u8(prefix, NULL, "tempsense_option", | ||
357 | &sprom->tempsense_option, 0); | ||
358 | nvram_read_u8(prefix, NULL, "freqoffset_corr", | ||
359 | &sprom->freqoffset_corr, 0); | ||
360 | nvram_read_u8(prefix, NULL, "iqcal_swp_dis", &sprom->iqcal_swp_dis, 0); | ||
361 | nvram_read_u8(prefix, NULL, "hw_iqcal_en", &sprom->hw_iqcal_en, 0); | ||
362 | nvram_read_u8(prefix, NULL, "elna2g", &sprom->elna2g, 0); | ||
363 | nvram_read_u8(prefix, NULL, "elna5g", &sprom->elna5g, 0); | ||
364 | nvram_read_u8(prefix, NULL, "phycal_tempdelta", | ||
365 | &sprom->phycal_tempdelta, 0); | ||
366 | nvram_read_u8(prefix, NULL, "temps_period", &sprom->temps_period, 0); | ||
367 | nvram_read_u8(prefix, NULL, "temps_hysteresis", | ||
368 | &sprom->temps_hysteresis, 0); | ||
369 | nvram_read_u8(prefix, NULL, "measpower1", &sprom->measpower1, 0); | ||
370 | nvram_read_u8(prefix, NULL, "measpower2", &sprom->measpower2, 0); | ||
371 | nvram_read_u8(prefix, NULL, "rxgainerr2ga0", | ||
372 | &sprom->rxgainerr2ga[0], 0); | ||
373 | nvram_read_u8(prefix, NULL, "rxgainerr2ga1", | ||
374 | &sprom->rxgainerr2ga[1], 0); | ||
375 | nvram_read_u8(prefix, NULL, "rxgainerr2ga2", | ||
376 | &sprom->rxgainerr2ga[2], 0); | ||
377 | nvram_read_u8(prefix, NULL, "rxgainerr5gla0", | ||
378 | &sprom->rxgainerr5gla[0], 0); | ||
379 | nvram_read_u8(prefix, NULL, "rxgainerr5gla1", | ||
380 | &sprom->rxgainerr5gla[1], 0); | ||
381 | nvram_read_u8(prefix, NULL, "rxgainerr5gla2", | ||
382 | &sprom->rxgainerr5gla[2], 0); | ||
383 | nvram_read_u8(prefix, NULL, "rxgainerr5gma0", | ||
384 | &sprom->rxgainerr5gma[0], 0); | ||
385 | nvram_read_u8(prefix, NULL, "rxgainerr5gma1", | ||
386 | &sprom->rxgainerr5gma[1], 0); | ||
387 | nvram_read_u8(prefix, NULL, "rxgainerr5gma2", | ||
388 | &sprom->rxgainerr5gma[2], 0); | ||
389 | nvram_read_u8(prefix, NULL, "rxgainerr5gha0", | ||
390 | &sprom->rxgainerr5gha[0], 0); | ||
391 | nvram_read_u8(prefix, NULL, "rxgainerr5gha1", | ||
392 | &sprom->rxgainerr5gha[1], 0); | ||
393 | nvram_read_u8(prefix, NULL, "rxgainerr5gha2", | ||
394 | &sprom->rxgainerr5gha[2], 0); | ||
395 | nvram_read_u8(prefix, NULL, "rxgainerr5gua0", | ||
396 | &sprom->rxgainerr5gua[0], 0); | ||
397 | nvram_read_u8(prefix, NULL, "rxgainerr5gua1", | ||
398 | &sprom->rxgainerr5gua[1], 0); | ||
399 | nvram_read_u8(prefix, NULL, "rxgainerr5gua2", | ||
400 | &sprom->rxgainerr5gua[2], 0); | ||
401 | nvram_read_u8(prefix, NULL, "noiselvl2ga0", &sprom->noiselvl2ga[0], 0); | ||
402 | nvram_read_u8(prefix, NULL, "noiselvl2ga1", &sprom->noiselvl2ga[1], 0); | ||
403 | nvram_read_u8(prefix, NULL, "noiselvl2ga2", &sprom->noiselvl2ga[2], 0); | ||
404 | nvram_read_u8(prefix, NULL, "noiselvl5gla0", | ||
405 | &sprom->noiselvl5gla[0], 0); | ||
406 | nvram_read_u8(prefix, NULL, "noiselvl5gla1", | ||
407 | &sprom->noiselvl5gla[1], 0); | ||
408 | nvram_read_u8(prefix, NULL, "noiselvl5gla2", | ||
409 | &sprom->noiselvl5gla[2], 0); | ||
410 | nvram_read_u8(prefix, NULL, "noiselvl5gma0", | ||
411 | &sprom->noiselvl5gma[0], 0); | ||
412 | nvram_read_u8(prefix, NULL, "noiselvl5gma1", | ||
413 | &sprom->noiselvl5gma[1], 0); | ||
414 | nvram_read_u8(prefix, NULL, "noiselvl5gma2", | ||
415 | &sprom->noiselvl5gma[2], 0); | ||
416 | nvram_read_u8(prefix, NULL, "noiselvl5gha0", | ||
417 | &sprom->noiselvl5gha[0], 0); | ||
418 | nvram_read_u8(prefix, NULL, "noiselvl5gha1", | ||
419 | &sprom->noiselvl5gha[1], 0); | ||
420 | nvram_read_u8(prefix, NULL, "noiselvl5gha2", | ||
421 | &sprom->noiselvl5gha[2], 0); | ||
422 | nvram_read_u8(prefix, NULL, "noiselvl5gua0", | ||
423 | &sprom->noiselvl5gua[0], 0); | ||
424 | nvram_read_u8(prefix, NULL, "noiselvl5gua1", | ||
425 | &sprom->noiselvl5gua[1], 0); | ||
426 | nvram_read_u8(prefix, NULL, "noiselvl5gua2", | ||
427 | &sprom->noiselvl5gua[2], 0); | ||
428 | nvram_read_u8(prefix, NULL, "pcieingress_war", | ||
429 | &sprom->pcieingress_war, 0); | ||
430 | } | ||
431 | |||
432 | static void bcm47xx_fill_sprom_r9(struct ssb_sprom *sprom, const char *prefix) | ||
433 | { | ||
434 | nvram_read_u16(prefix, NULL, "cckbw202gpo", &sprom->cckbw202gpo, 0); | ||
435 | nvram_read_u16(prefix, NULL, "cckbw20ul2gpo", &sprom->cckbw20ul2gpo, 0); | ||
436 | nvram_read_u32(prefix, NULL, "legofdmbw202gpo", | ||
437 | &sprom->legofdmbw202gpo, 0); | ||
438 | nvram_read_u32(prefix, NULL, "legofdmbw20ul2gpo", | ||
439 | &sprom->legofdmbw20ul2gpo, 0); | ||
440 | nvram_read_u32(prefix, NULL, "legofdmbw205glpo", | ||
441 | &sprom->legofdmbw205glpo, 0); | ||
442 | nvram_read_u32(prefix, NULL, "legofdmbw20ul5glpo", | ||
443 | &sprom->legofdmbw20ul5glpo, 0); | ||
444 | nvram_read_u32(prefix, NULL, "legofdmbw205gmpo", | ||
445 | &sprom->legofdmbw205gmpo, 0); | ||
446 | nvram_read_u32(prefix, NULL, "legofdmbw20ul5gmpo", | ||
447 | &sprom->legofdmbw20ul5gmpo, 0); | ||
448 | nvram_read_u32(prefix, NULL, "legofdmbw205ghpo", | ||
449 | &sprom->legofdmbw205ghpo, 0); | ||
450 | nvram_read_u32(prefix, NULL, "legofdmbw20ul5ghpo", | ||
451 | &sprom->legofdmbw20ul5ghpo, 0); | ||
452 | nvram_read_u32(prefix, NULL, "mcsbw202gpo", &sprom->mcsbw202gpo, 0); | ||
453 | nvram_read_u32(prefix, NULL, "mcsbw20ul2gpo", &sprom->mcsbw20ul2gpo, 0); | ||
454 | nvram_read_u32(prefix, NULL, "mcsbw402gpo", &sprom->mcsbw402gpo, 0); | ||
455 | nvram_read_u32(prefix, NULL, "mcsbw205glpo", &sprom->mcsbw205glpo, 0); | ||
456 | nvram_read_u32(prefix, NULL, "mcsbw20ul5glpo", | ||
457 | &sprom->mcsbw20ul5glpo, 0); | ||
458 | nvram_read_u32(prefix, NULL, "mcsbw405glpo", &sprom->mcsbw405glpo, 0); | ||
459 | nvram_read_u32(prefix, NULL, "mcsbw205gmpo", &sprom->mcsbw205gmpo, 0); | ||
460 | nvram_read_u32(prefix, NULL, "mcsbw20ul5gmpo", | ||
461 | &sprom->mcsbw20ul5gmpo, 0); | ||
462 | nvram_read_u32(prefix, NULL, "mcsbw405gmpo", &sprom->mcsbw405gmpo, 0); | ||
463 | nvram_read_u32(prefix, NULL, "mcsbw205ghpo", &sprom->mcsbw205ghpo, 0); | ||
464 | nvram_read_u32(prefix, NULL, "mcsbw20ul5ghpo", | ||
465 | &sprom->mcsbw20ul5ghpo, 0); | ||
466 | nvram_read_u32(prefix, NULL, "mcsbw405ghpo", &sprom->mcsbw405ghpo, 0); | ||
467 | nvram_read_u16(prefix, NULL, "mcs32po", &sprom->mcs32po, 0); | ||
468 | nvram_read_u16(prefix, NULL, "legofdm40duppo", | ||
469 | &sprom->legofdm40duppo, 0); | ||
470 | nvram_read_u8(prefix, NULL, "sar2g", &sprom->sar2g, 0); | ||
471 | nvram_read_u8(prefix, NULL, "sar5g", &sprom->sar5g, 0); | ||
472 | } | ||
473 | |||
474 | static void bcm47xx_fill_sprom_path_r4589(struct ssb_sprom *sprom, | ||
475 | const char *prefix) | ||
476 | { | ||
477 | char postfix[2]; | ||
478 | int i; | ||
479 | |||
480 | for (i = 0; i < ARRAY_SIZE(sprom->core_pwr_info); i++) { | ||
481 | struct ssb_sprom_core_pwr_info *pwr_info = &sprom->core_pwr_info[i]; | ||
482 | snprintf(postfix, sizeof(postfix), "%i", i); | ||
483 | nvram_read_u8(prefix, postfix, "maxp2ga", | ||
484 | &pwr_info->maxpwr_2g, 0); | ||
485 | nvram_read_u8(prefix, postfix, "itt2ga", | ||
486 | &pwr_info->itssi_2g, 0); | ||
487 | nvram_read_u8(prefix, postfix, "itt5ga", | ||
488 | &pwr_info->itssi_5g, 0); | ||
489 | nvram_read_u16(prefix, postfix, "pa2gw0a", | ||
490 | &pwr_info->pa_2g[0], 0); | ||
491 | nvram_read_u16(prefix, postfix, "pa2gw1a", | ||
492 | &pwr_info->pa_2g[1], 0); | ||
493 | nvram_read_u16(prefix, postfix, "pa2gw2a", | ||
494 | &pwr_info->pa_2g[2], 0); | ||
495 | nvram_read_u8(prefix, postfix, "maxp5ga", | ||
496 | &pwr_info->maxpwr_5g, 0); | ||
497 | nvram_read_u8(prefix, postfix, "maxp5gha", | ||
498 | &pwr_info->maxpwr_5gh, 0); | ||
499 | nvram_read_u8(prefix, postfix, "maxp5gla", | ||
500 | &pwr_info->maxpwr_5gl, 0); | ||
501 | nvram_read_u16(prefix, postfix, "pa5gw0a", | ||
502 | &pwr_info->pa_5g[0], 0); | ||
503 | nvram_read_u16(prefix, postfix, "pa5gw1a", | ||
504 | &pwr_info->pa_5g[1], 0); | ||
505 | nvram_read_u16(prefix, postfix, "pa5gw2a", | ||
506 | &pwr_info->pa_5g[2], 0); | ||
507 | nvram_read_u16(prefix, postfix, "pa5glw0a", | ||
508 | &pwr_info->pa_5gl[0], 0); | ||
509 | nvram_read_u16(prefix, postfix, "pa5glw1a", | ||
510 | &pwr_info->pa_5gl[1], 0); | ||
511 | nvram_read_u16(prefix, postfix, "pa5glw2a", | ||
512 | &pwr_info->pa_5gl[2], 0); | ||
513 | nvram_read_u16(prefix, postfix, "pa5ghw0a", | ||
514 | &pwr_info->pa_5gh[0], 0); | ||
515 | nvram_read_u16(prefix, postfix, "pa5ghw1a", | ||
516 | &pwr_info->pa_5gh[1], 0); | ||
517 | nvram_read_u16(prefix, postfix, "pa5ghw2a", | ||
518 | &pwr_info->pa_5gh[2], 0); | ||
519 | } | ||
520 | } | ||
521 | |||
522 | static void bcm47xx_fill_sprom_path_r45(struct ssb_sprom *sprom, | ||
523 | const char *prefix) | ||
524 | { | ||
525 | char postfix[2]; | ||
526 | int i; | ||
527 | |||
528 | for (i = 0; i < ARRAY_SIZE(sprom->core_pwr_info); i++) { | ||
529 | struct ssb_sprom_core_pwr_info *pwr_info = &sprom->core_pwr_info[i]; | ||
530 | snprintf(postfix, sizeof(postfix), "%i", i); | ||
531 | nvram_read_u16(prefix, postfix, "pa2gw3a", | ||
532 | &pwr_info->pa_2g[3], 0); | ||
533 | nvram_read_u16(prefix, postfix, "pa5gw3a", | ||
534 | &pwr_info->pa_5g[3], 0); | ||
535 | nvram_read_u16(prefix, postfix, "pa5glw3a", | ||
536 | &pwr_info->pa_5gl[3], 0); | ||
537 | nvram_read_u16(prefix, postfix, "pa5ghw3a", | ||
538 | &pwr_info->pa_5gh[3], 0); | ||
539 | } | ||
540 | } | ||
541 | |||
542 | void bcm47xx_fill_sprom_ethernet(struct ssb_sprom *sprom, const char *prefix) | ||
543 | { | ||
544 | nvram_read_macaddr(prefix, "et0macaddr", &sprom->et0mac); | ||
545 | nvram_read_u8(prefix, NULL, "et0mdcport", &sprom->et0mdcport, 0); | ||
546 | nvram_read_u8(prefix, NULL, "et0phyaddr", &sprom->et0phyaddr, 0); | ||
547 | |||
548 | nvram_read_macaddr(prefix, "et1macaddr", &sprom->et1mac); | ||
549 | nvram_read_u8(prefix, NULL, "et1mdcport", &sprom->et1mdcport, 0); | ||
550 | nvram_read_u8(prefix, NULL, "et1phyaddr", &sprom->et1phyaddr, 0); | ||
551 | |||
552 | nvram_read_macaddr(prefix, "macaddr", &sprom->il0mac); | ||
553 | nvram_read_macaddr(prefix, "il0macaddr", &sprom->il0mac); | ||
554 | } | ||
555 | |||
556 | void bcm47xx_fill_sprom(struct ssb_sprom *sprom, const char *prefix) | ||
557 | { | ||
558 | memset(sprom, 0, sizeof(struct ssb_sprom)); | ||
559 | |||
560 | bcm47xx_fill_sprom_ethernet(sprom, prefix); | ||
561 | |||
562 | nvram_read_u8(prefix, NULL, "sromrev", &sprom->revision, 0); | ||
563 | |||
564 | switch (sprom->revision) { | ||
565 | case 1: | ||
566 | bcm47xx_fill_sprom_r1234589(sprom, prefix); | ||
567 | bcm47xx_fill_sprom_r12389(sprom, prefix); | ||
568 | bcm47xx_fill_sprom_r1(sprom, prefix); | ||
569 | break; | ||
570 | case 2: | ||
571 | bcm47xx_fill_sprom_r1234589(sprom, prefix); | ||
572 | bcm47xx_fill_sprom_r12389(sprom, prefix); | ||
573 | bcm47xx_fill_sprom_r2389(sprom, prefix); | ||
574 | bcm47xx_fill_sprom_r2(sprom, prefix); | ||
575 | break; | ||
576 | case 3: | ||
577 | bcm47xx_fill_sprom_r1234589(sprom, prefix); | ||
578 | bcm47xx_fill_sprom_r12389(sprom, prefix); | ||
579 | bcm47xx_fill_sprom_r2389(sprom, prefix); | ||
580 | bcm47xx_fill_sprom_r389(sprom, prefix); | ||
581 | bcm47xx_fill_sprom_r3(sprom, prefix); | ||
582 | break; | ||
583 | case 4: | ||
584 | case 5: | ||
585 | bcm47xx_fill_sprom_r1234589(sprom, prefix); | ||
586 | bcm47xx_fill_sprom_r4589(sprom, prefix); | ||
587 | bcm47xx_fill_sprom_r458(sprom, prefix); | ||
588 | bcm47xx_fill_sprom_r45(sprom, prefix); | ||
589 | bcm47xx_fill_sprom_path_r4589(sprom, prefix); | ||
590 | bcm47xx_fill_sprom_path_r45(sprom, prefix); | ||
591 | break; | ||
592 | case 8: | ||
593 | bcm47xx_fill_sprom_r1234589(sprom, prefix); | ||
594 | bcm47xx_fill_sprom_r12389(sprom, prefix); | ||
595 | bcm47xx_fill_sprom_r2389(sprom, prefix); | ||
596 | bcm47xx_fill_sprom_r389(sprom, prefix); | ||
597 | bcm47xx_fill_sprom_r4589(sprom, prefix); | ||
598 | bcm47xx_fill_sprom_r458(sprom, prefix); | ||
599 | bcm47xx_fill_sprom_r89(sprom, prefix); | ||
600 | bcm47xx_fill_sprom_path_r4589(sprom, prefix); | ||
601 | break; | ||
602 | case 9: | ||
603 | bcm47xx_fill_sprom_r1234589(sprom, prefix); | ||
604 | bcm47xx_fill_sprom_r12389(sprom, prefix); | ||
605 | bcm47xx_fill_sprom_r2389(sprom, prefix); | ||
606 | bcm47xx_fill_sprom_r389(sprom, prefix); | ||
607 | bcm47xx_fill_sprom_r4589(sprom, prefix); | ||
608 | bcm47xx_fill_sprom_r89(sprom, prefix); | ||
609 | bcm47xx_fill_sprom_r9(sprom, prefix); | ||
610 | bcm47xx_fill_sprom_path_r4589(sprom, prefix); | ||
611 | break; | ||
612 | default: | ||
613 | pr_warn("Unsupported SPROM revision %d detected. Will extract" | ||
614 | " v1\n", sprom->revision); | ||
615 | sprom->revision = 1; | ||
616 | bcm47xx_fill_sprom_r1234589(sprom, prefix); | ||
617 | bcm47xx_fill_sprom_r12389(sprom, prefix); | ||
618 | bcm47xx_fill_sprom_r1(sprom, prefix); | ||
619 | } | ||
620 | } | ||
diff --git a/arch/mips/cavium-octeon/dma-octeon.c b/arch/mips/cavium-octeon/dma-octeon.c index b6bb92c16a47..41dd00884975 100644 --- a/arch/mips/cavium-octeon/dma-octeon.c +++ b/arch/mips/cavium-octeon/dma-octeon.c | |||
@@ -157,7 +157,7 @@ static void octeon_dma_sync_sg_for_device(struct device *dev, | |||
157 | } | 157 | } |
158 | 158 | ||
159 | static void *octeon_dma_alloc_coherent(struct device *dev, size_t size, | 159 | static void *octeon_dma_alloc_coherent(struct device *dev, size_t size, |
160 | dma_addr_t *dma_handle, gfp_t gfp) | 160 | dma_addr_t *dma_handle, gfp_t gfp, struct dma_attrs *attrs) |
161 | { | 161 | { |
162 | void *ret; | 162 | void *ret; |
163 | 163 | ||
@@ -192,7 +192,7 @@ static void *octeon_dma_alloc_coherent(struct device *dev, size_t size, | |||
192 | } | 192 | } |
193 | 193 | ||
194 | static void octeon_dma_free_coherent(struct device *dev, size_t size, | 194 | static void octeon_dma_free_coherent(struct device *dev, size_t size, |
195 | void *vaddr, dma_addr_t dma_handle) | 195 | void *vaddr, dma_addr_t dma_handle, struct dma_attrs *attrs) |
196 | { | 196 | { |
197 | int order = get_order(size); | 197 | int order = get_order(size); |
198 | 198 | ||
@@ -240,8 +240,8 @@ EXPORT_SYMBOL(dma_to_phys); | |||
240 | 240 | ||
241 | static struct octeon_dma_map_ops octeon_linear_dma_map_ops = { | 241 | static struct octeon_dma_map_ops octeon_linear_dma_map_ops = { |
242 | .dma_map_ops = { | 242 | .dma_map_ops = { |
243 | .alloc_coherent = octeon_dma_alloc_coherent, | 243 | .alloc = octeon_dma_alloc_coherent, |
244 | .free_coherent = octeon_dma_free_coherent, | 244 | .free = octeon_dma_free_coherent, |
245 | .map_page = octeon_dma_map_page, | 245 | .map_page = octeon_dma_map_page, |
246 | .unmap_page = swiotlb_unmap_page, | 246 | .unmap_page = swiotlb_unmap_page, |
247 | .map_sg = octeon_dma_map_sg, | 247 | .map_sg = octeon_dma_map_sg, |
@@ -325,8 +325,8 @@ void __init plat_swiotlb_setup(void) | |||
325 | #ifdef CONFIG_PCI | 325 | #ifdef CONFIG_PCI |
326 | static struct octeon_dma_map_ops _octeon_pci_dma_map_ops = { | 326 | static struct octeon_dma_map_ops _octeon_pci_dma_map_ops = { |
327 | .dma_map_ops = { | 327 | .dma_map_ops = { |
328 | .alloc_coherent = octeon_dma_alloc_coherent, | 328 | .alloc = octeon_dma_alloc_coherent, |
329 | .free_coherent = octeon_dma_free_coherent, | 329 | .free = octeon_dma_free_coherent, |
330 | .map_page = octeon_dma_map_page, | 330 | .map_page = octeon_dma_map_page, |
331 | .unmap_page = swiotlb_unmap_page, | 331 | .unmap_page = swiotlb_unmap_page, |
332 | .map_sg = octeon_dma_map_sg, | 332 | .map_sg = octeon_dma_map_sg, |
diff --git a/arch/mips/cavium-octeon/flash_setup.c b/arch/mips/cavium-octeon/flash_setup.c index 0a430e06f5e5..e44a55bc7f0d 100644 --- a/arch/mips/cavium-octeon/flash_setup.c +++ b/arch/mips/cavium-octeon/flash_setup.c | |||
@@ -60,7 +60,7 @@ static int __init flash_init(void) | |||
60 | if (mymtd) { | 60 | if (mymtd) { |
61 | mymtd->owner = THIS_MODULE; | 61 | mymtd->owner = THIS_MODULE; |
62 | mtd_device_parse_register(mymtd, part_probe_types, | 62 | mtd_device_parse_register(mymtd, part_probe_types, |
63 | 0, NULL, 0); | 63 | NULL, NULL, 0); |
64 | } else { | 64 | } else { |
65 | pr_err("Failed to register MTD device for flash\n"); | 65 | pr_err("Failed to register MTD device for flash\n"); |
66 | } | 66 | } |
diff --git a/arch/mips/cavium-octeon/setup.c b/arch/mips/cavium-octeon/setup.c index 260b27367347..d3a9f012aa0a 100644 --- a/arch/mips/cavium-octeon/setup.c +++ b/arch/mips/cavium-octeon/setup.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <asm/processor.h> | 24 | #include <asm/processor.h> |
25 | #include <asm/reboot.h> | 25 | #include <asm/reboot.h> |
26 | #include <asm/smp-ops.h> | 26 | #include <asm/smp-ops.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/irq_cpu.h> | 27 | #include <asm/irq_cpu.h> |
29 | #include <asm/mipsregs.h> | 28 | #include <asm/mipsregs.h> |
30 | #include <asm/bootinfo.h> | 29 | #include <asm/bootinfo.h> |
diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c index b1535fe409d4..97e7ce9b50ed 100644 --- a/arch/mips/cavium-octeon/smp.c +++ b/arch/mips/cavium-octeon/smp.c | |||
@@ -15,8 +15,8 @@ | |||
15 | #include <linux/module.h> | 15 | #include <linux/module.h> |
16 | 16 | ||
17 | #include <asm/mmu_context.h> | 17 | #include <asm/mmu_context.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/time.h> | 18 | #include <asm/time.h> |
19 | #include <asm/setup.h> | ||
20 | 20 | ||
21 | #include <asm/octeon/octeon.h> | 21 | #include <asm/octeon/octeon.h> |
22 | 22 | ||
@@ -78,7 +78,7 @@ static inline void octeon_send_ipi_mask(const struct cpumask *mask, | |||
78 | } | 78 | } |
79 | 79 | ||
80 | /** | 80 | /** |
81 | * Detect available CPUs, populate cpu_possible_map | 81 | * Detect available CPUs, populate cpu_possible_mask |
82 | */ | 82 | */ |
83 | static void octeon_smp_hotplug_setup(void) | 83 | static void octeon_smp_hotplug_setup(void) |
84 | { | 84 | { |
@@ -268,7 +268,7 @@ static int octeon_cpu_disable(void) | |||
268 | 268 | ||
269 | spin_lock(&smp_reserve_lock); | 269 | spin_lock(&smp_reserve_lock); |
270 | 270 | ||
271 | cpu_clear(cpu, cpu_online_map); | 271 | set_cpu_online(cpu, false); |
272 | cpu_clear(cpu, cpu_callin_map); | 272 | cpu_clear(cpu, cpu_callin_map); |
273 | local_irq_disable(); | 273 | local_irq_disable(); |
274 | fixup_irqs(); | 274 | fixup_irqs(); |
diff --git a/arch/mips/configs/db1300_defconfig b/arch/mips/configs/db1300_defconfig index c38b190151c4..3590ab5d9791 100644 --- a/arch/mips/configs/db1300_defconfig +++ b/arch/mips/configs/db1300_defconfig | |||
@@ -133,7 +133,7 @@ CONFIG_BLK_DEV_BSG=y | |||
133 | CONFIG_IOSCHED_NOOP=y | 133 | CONFIG_IOSCHED_NOOP=y |
134 | CONFIG_DEFAULT_NOOP=y | 134 | CONFIG_DEFAULT_NOOP=y |
135 | CONFIG_DEFAULT_IOSCHED="noop" | 135 | CONFIG_DEFAULT_IOSCHED="noop" |
136 | CONFIG_INLINE_SPIN_UNLOCK=y | 136 | # CONFIG_UNINLINE_SPIN_UNLOCK is not set |
137 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | 137 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y |
138 | CONFIG_INLINE_READ_UNLOCK=y | 138 | CONFIG_INLINE_READ_UNLOCK=y |
139 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | 139 | CONFIG_INLINE_READ_UNLOCK_IRQ=y |
diff --git a/arch/mips/configs/nlm_xlp_defconfig b/arch/mips/configs/nlm_xlp_defconfig index 4479fd669ac1..28c6b276c216 100644 --- a/arch/mips/configs/nlm_xlp_defconfig +++ b/arch/mips/configs/nlm_xlp_defconfig | |||
@@ -8,7 +8,7 @@ CONFIG_HIGH_RES_TIMERS=y | |||
8 | # CONFIG_SECCOMP is not set | 8 | # CONFIG_SECCOMP is not set |
9 | CONFIG_USE_OF=y | 9 | CONFIG_USE_OF=y |
10 | CONFIG_EXPERIMENTAL=y | 10 | CONFIG_EXPERIMENTAL=y |
11 | CONFIG_CROSS_COMPILE="mips-linux-gnu-" | 11 | CONFIG_CROSS_COMPILE="" |
12 | # CONFIG_LOCALVERSION_AUTO is not set | 12 | # CONFIG_LOCALVERSION_AUTO is not set |
13 | CONFIG_SYSVIPC=y | 13 | CONFIG_SYSVIPC=y |
14 | CONFIG_POSIX_MQUEUE=y | 14 | CONFIG_POSIX_MQUEUE=y |
@@ -22,7 +22,7 @@ CONFIG_AUDIT=y | |||
22 | CONFIG_CGROUPS=y | 22 | CONFIG_CGROUPS=y |
23 | CONFIG_NAMESPACES=y | 23 | CONFIG_NAMESPACES=y |
24 | CONFIG_BLK_DEV_INITRD=y | 24 | CONFIG_BLK_DEV_INITRD=y |
25 | CONFIG_INITRAMFS_SOURCE="usr/dev_file_list usr/rootfs.xlp" | 25 | CONFIG_INITRAMFS_SOURCE="" |
26 | CONFIG_RD_BZIP2=y | 26 | CONFIG_RD_BZIP2=y |
27 | CONFIG_RD_LZMA=y | 27 | CONFIG_RD_LZMA=y |
28 | CONFIG_INITRAMFS_COMPRESSION_LZMA=y | 28 | CONFIG_INITRAMFS_COMPRESSION_LZMA=y |
diff --git a/arch/mips/configs/nlm_xlr_defconfig b/arch/mips/configs/nlm_xlr_defconfig index 7c68666fdd64..d0b857d98c91 100644 --- a/arch/mips/configs/nlm_xlr_defconfig +++ b/arch/mips/configs/nlm_xlr_defconfig | |||
@@ -8,7 +8,7 @@ CONFIG_HIGH_RES_TIMERS=y | |||
8 | CONFIG_PREEMPT_VOLUNTARY=y | 8 | CONFIG_PREEMPT_VOLUNTARY=y |
9 | CONFIG_KEXEC=y | 9 | CONFIG_KEXEC=y |
10 | CONFIG_EXPERIMENTAL=y | 10 | CONFIG_EXPERIMENTAL=y |
11 | CONFIG_CROSS_COMPILE="mips-linux-gnu-" | 11 | CONFIG_CROSS_COMPILE="" |
12 | # CONFIG_LOCALVERSION_AUTO is not set | 12 | # CONFIG_LOCALVERSION_AUTO is not set |
13 | CONFIG_SYSVIPC=y | 13 | CONFIG_SYSVIPC=y |
14 | CONFIG_POSIX_MQUEUE=y | 14 | CONFIG_POSIX_MQUEUE=y |
@@ -22,7 +22,7 @@ CONFIG_AUDIT=y | |||
22 | CONFIG_NAMESPACES=y | 22 | CONFIG_NAMESPACES=y |
23 | CONFIG_SCHED_AUTOGROUP=y | 23 | CONFIG_SCHED_AUTOGROUP=y |
24 | CONFIG_BLK_DEV_INITRD=y | 24 | CONFIG_BLK_DEV_INITRD=y |
25 | CONFIG_INITRAMFS_SOURCE="usr/dev_file_list usr/rootfs.xlr" | 25 | CONFIG_INITRAMFS_SOURCE="" |
26 | CONFIG_RD_BZIP2=y | 26 | CONFIG_RD_BZIP2=y |
27 | CONFIG_RD_LZMA=y | 27 | CONFIG_RD_LZMA=y |
28 | CONFIG_INITRAMFS_COMPRESSION_GZIP=y | 28 | CONFIG_INITRAMFS_COMPRESSION_GZIP=y |
diff --git a/arch/mips/configs/powertv_defconfig b/arch/mips/configs/powertv_defconfig index 3b0b6e8c8533..7fda0ce5f692 100644 --- a/arch/mips/configs/powertv_defconfig +++ b/arch/mips/configs/powertv_defconfig | |||
@@ -6,7 +6,7 @@ CONFIG_HZ_1000=y | |||
6 | CONFIG_PREEMPT=y | 6 | CONFIG_PREEMPT=y |
7 | # CONFIG_SECCOMP is not set | 7 | # CONFIG_SECCOMP is not set |
8 | CONFIG_EXPERIMENTAL=y | 8 | CONFIG_EXPERIMENTAL=y |
9 | CONFIG_CROSS_COMPILE="mips-linux-" | 9 | CONFIG_CROSS_COMPILE="" |
10 | # CONFIG_SWAP is not set | 10 | # CONFIG_SWAP is not set |
11 | CONFIG_SYSVIPC=y | 11 | CONFIG_SYSVIPC=y |
12 | CONFIG_LOG_BUF_SHIFT=16 | 12 | CONFIG_LOG_BUF_SHIFT=16 |
diff --git a/arch/mips/dec/ecc-berr.c b/arch/mips/dec/ecc-berr.c index 7abce661b90f..5abf4e894216 100644 --- a/arch/mips/dec/ecc-berr.c +++ b/arch/mips/dec/ecc-berr.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <asm/irq_regs.h> | 24 | #include <asm/irq_regs.h> |
25 | #include <asm/processor.h> | 25 | #include <asm/processor.h> |
26 | #include <asm/ptrace.h> | 26 | #include <asm/ptrace.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/traps.h> | 27 | #include <asm/traps.h> |
29 | 28 | ||
30 | #include <asm/dec/ecc.h> | 29 | #include <asm/dec/ecc.h> |
diff --git a/arch/mips/dec/kn01-berr.c b/arch/mips/dec/kn01-berr.c index 94d23b4a7dc3..44d8a87a8a68 100644 --- a/arch/mips/dec/kn01-berr.c +++ b/arch/mips/dec/kn01-berr.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/mipsregs.h> | 22 | #include <asm/mipsregs.h> |
23 | #include <asm/page.h> | 23 | #include <asm/page.h> |
24 | #include <asm/ptrace.h> | 24 | #include <asm/ptrace.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/traps.h> | 25 | #include <asm/traps.h> |
27 | #include <asm/uaccess.h> | 26 | #include <asm/uaccess.h> |
28 | 27 | ||
diff --git a/arch/mips/dec/kn02xa-berr.c b/arch/mips/dec/kn02xa-berr.c index 07ca5405d48d..ebb73c51d821 100644 --- a/arch/mips/dec/kn02xa-berr.c +++ b/arch/mips/dec/kn02xa-berr.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <asm/addrspace.h> | 21 | #include <asm/addrspace.h> |
22 | #include <asm/irq_regs.h> | 22 | #include <asm/irq_regs.h> |
23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/traps.h> | 24 | #include <asm/traps.h> |
26 | 25 | ||
27 | #include <asm/dec/kn02ca.h> | 26 | #include <asm/dec/kn02ca.h> |
diff --git a/arch/mips/dec/wbflush.c b/arch/mips/dec/wbflush.c index 925c0525344b..43feddd5e19c 100644 --- a/arch/mips/dec/wbflush.c +++ b/arch/mips/dec/wbflush.c | |||
@@ -17,8 +17,8 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | 18 | ||
19 | #include <asm/bootinfo.h> | 19 | #include <asm/bootinfo.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/wbflush.h> | 20 | #include <asm/wbflush.h> |
21 | #include <asm/barrier.h> | ||
22 | 22 | ||
23 | static void wbflush_kn01(void); | 23 | static void wbflush_kn01(void); |
24 | static void wbflush_kn210(void); | 24 | static void wbflush_kn210(void); |
diff --git a/arch/mips/emma/markeins/irq.c b/arch/mips/emma/markeins/irq.c index 7798887a1288..b5f08255d9c7 100644 --- a/arch/mips/emma/markeins/irq.c +++ b/arch/mips/emma/markeins/irq.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/delay.h> | 27 | #include <linux/delay.h> |
28 | 28 | ||
29 | #include <asm/irq_cpu.h> | 29 | #include <asm/irq_cpu.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/mipsregs.h> | 30 | #include <asm/mipsregs.h> |
32 | #include <asm/addrspace.h> | 31 | #include <asm/addrspace.h> |
33 | #include <asm/bootinfo.h> | 32 | #include <asm/bootinfo.h> |
diff --git a/arch/mips/fw/arc/cmdline.c b/arch/mips/fw/arc/cmdline.c index 9fdf07e50f1b..c0122a1dc587 100644 --- a/arch/mips/fw/arc/cmdline.c +++ b/arch/mips/fw/arc/cmdline.c | |||
@@ -7,6 +7,7 @@ | |||
7 | * | 7 | * |
8 | * Copyright (C) 1996 David S. Miller (davem@davemloft.net) | 8 | * Copyright (C) 1996 David S. Miller (davem@davemloft.net) |
9 | */ | 9 | */ |
10 | #include <linux/bug.h> | ||
10 | #include <linux/init.h> | 11 | #include <linux/init.h> |
11 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
12 | #include <linux/string.h> | 13 | #include <linux/string.h> |
diff --git a/arch/mips/fw/arc/identify.c b/arch/mips/fw/arc/identify.c index 788060a53dce..54a33c756f61 100644 --- a/arch/mips/fw/arc/identify.c +++ b/arch/mips/fw/arc/identify.c | |||
@@ -11,6 +11,7 @@ | |||
11 | * | 11 | * |
12 | * Copyright (C) 1996 David S. Miller (davem@davemloft.net) | 12 | * Copyright (C) 1996 David S. Miller (davem@davemloft.net) |
13 | */ | 13 | */ |
14 | #include <linux/bug.h> | ||
14 | #include <linux/init.h> | 15 | #include <linux/init.h> |
15 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
16 | #include <linux/types.h> | 17 | #include <linux/types.h> |
diff --git a/arch/mips/fw/arc/misc.c b/arch/mips/fw/arc/misc.c index 29627fbae7ad..7cf80ca2c1d2 100644 --- a/arch/mips/fw/arc/misc.c +++ b/arch/mips/fw/arc/misc.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <asm/fw/arc/types.h> | 17 | #include <asm/fw/arc/types.h> |
18 | #include <asm/sgialib.h> | 18 | #include <asm/sgialib.h> |
19 | #include <asm/bootinfo.h> | 19 | #include <asm/bootinfo.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | VOID | 21 | VOID |
23 | ArcHalt(VOID) | 22 | ArcHalt(VOID) |
diff --git a/arch/mips/include/asm/atomic.h b/arch/mips/include/asm/atomic.h index 1d93f81d57e7..3f4c5cb6433e 100644 --- a/arch/mips/include/asm/atomic.h +++ b/arch/mips/include/asm/atomic.h | |||
@@ -18,8 +18,8 @@ | |||
18 | #include <linux/types.h> | 18 | #include <linux/types.h> |
19 | #include <asm/barrier.h> | 19 | #include <asm/barrier.h> |
20 | #include <asm/cpu-features.h> | 20 | #include <asm/cpu-features.h> |
21 | #include <asm/cmpxchg.h> | ||
21 | #include <asm/war.h> | 22 | #include <asm/war.h> |
22 | #include <asm/system.h> | ||
23 | 23 | ||
24 | #define ATOMIC_INIT(i) { (i) } | 24 | #define ATOMIC_INIT(i) { (i) } |
25 | 25 | ||
diff --git a/arch/mips/include/asm/barrier.h b/arch/mips/include/asm/barrier.h index c0884f02d3a6..f7fdc24e972d 100644 --- a/arch/mips/include/asm/barrier.h +++ b/arch/mips/include/asm/barrier.h | |||
@@ -8,6 +8,8 @@ | |||
8 | #ifndef __ASM_BARRIER_H | 8 | #ifndef __ASM_BARRIER_H |
9 | #define __ASM_BARRIER_H | 9 | #define __ASM_BARRIER_H |
10 | 10 | ||
11 | #include <asm/addrspace.h> | ||
12 | |||
11 | /* | 13 | /* |
12 | * read_barrier_depends - Flush all pending reads that subsequents reads | 14 | * read_barrier_depends - Flush all pending reads that subsequents reads |
13 | * depend on. | 15 | * depend on. |
diff --git a/arch/mips/include/asm/cmpxchg.h b/arch/mips/include/asm/cmpxchg.h index d8d1c2805ac7..285a41fa0b18 100644 --- a/arch/mips/include/asm/cmpxchg.h +++ b/arch/mips/include/asm/cmpxchg.h | |||
@@ -9,6 +9,130 @@ | |||
9 | #define __ASM_CMPXCHG_H | 9 | #define __ASM_CMPXCHG_H |
10 | 10 | ||
11 | #include <linux/irqflags.h> | 11 | #include <linux/irqflags.h> |
12 | #include <asm/war.h> | ||
13 | |||
14 | static inline unsigned long __xchg_u32(volatile int * m, unsigned int val) | ||
15 | { | ||
16 | __u32 retval; | ||
17 | |||
18 | smp_mb__before_llsc(); | ||
19 | |||
20 | if (kernel_uses_llsc && R10000_LLSC_WAR) { | ||
21 | unsigned long dummy; | ||
22 | |||
23 | __asm__ __volatile__( | ||
24 | " .set mips3 \n" | ||
25 | "1: ll %0, %3 # xchg_u32 \n" | ||
26 | " .set mips0 \n" | ||
27 | " move %2, %z4 \n" | ||
28 | " .set mips3 \n" | ||
29 | " sc %2, %1 \n" | ||
30 | " beqzl %2, 1b \n" | ||
31 | " .set mips0 \n" | ||
32 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
33 | : "R" (*m), "Jr" (val) | ||
34 | : "memory"); | ||
35 | } else if (kernel_uses_llsc) { | ||
36 | unsigned long dummy; | ||
37 | |||
38 | do { | ||
39 | __asm__ __volatile__( | ||
40 | " .set mips3 \n" | ||
41 | " ll %0, %3 # xchg_u32 \n" | ||
42 | " .set mips0 \n" | ||
43 | " move %2, %z4 \n" | ||
44 | " .set mips3 \n" | ||
45 | " sc %2, %1 \n" | ||
46 | " .set mips0 \n" | ||
47 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
48 | : "R" (*m), "Jr" (val) | ||
49 | : "memory"); | ||
50 | } while (unlikely(!dummy)); | ||
51 | } else { | ||
52 | unsigned long flags; | ||
53 | |||
54 | raw_local_irq_save(flags); | ||
55 | retval = *m; | ||
56 | *m = val; | ||
57 | raw_local_irq_restore(flags); /* implies memory barrier */ | ||
58 | } | ||
59 | |||
60 | smp_llsc_mb(); | ||
61 | |||
62 | return retval; | ||
63 | } | ||
64 | |||
65 | #ifdef CONFIG_64BIT | ||
66 | static inline __u64 __xchg_u64(volatile __u64 * m, __u64 val) | ||
67 | { | ||
68 | __u64 retval; | ||
69 | |||
70 | smp_mb__before_llsc(); | ||
71 | |||
72 | if (kernel_uses_llsc && R10000_LLSC_WAR) { | ||
73 | unsigned long dummy; | ||
74 | |||
75 | __asm__ __volatile__( | ||
76 | " .set mips3 \n" | ||
77 | "1: lld %0, %3 # xchg_u64 \n" | ||
78 | " move %2, %z4 \n" | ||
79 | " scd %2, %1 \n" | ||
80 | " beqzl %2, 1b \n" | ||
81 | " .set mips0 \n" | ||
82 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
83 | : "R" (*m), "Jr" (val) | ||
84 | : "memory"); | ||
85 | } else if (kernel_uses_llsc) { | ||
86 | unsigned long dummy; | ||
87 | |||
88 | do { | ||
89 | __asm__ __volatile__( | ||
90 | " .set mips3 \n" | ||
91 | " lld %0, %3 # xchg_u64 \n" | ||
92 | " move %2, %z4 \n" | ||
93 | " scd %2, %1 \n" | ||
94 | " .set mips0 \n" | ||
95 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
96 | : "R" (*m), "Jr" (val) | ||
97 | : "memory"); | ||
98 | } while (unlikely(!dummy)); | ||
99 | } else { | ||
100 | unsigned long flags; | ||
101 | |||
102 | raw_local_irq_save(flags); | ||
103 | retval = *m; | ||
104 | *m = val; | ||
105 | raw_local_irq_restore(flags); /* implies memory barrier */ | ||
106 | } | ||
107 | |||
108 | smp_llsc_mb(); | ||
109 | |||
110 | return retval; | ||
111 | } | ||
112 | #else | ||
113 | extern __u64 __xchg_u64_unsupported_on_32bit_kernels(volatile __u64 * m, __u64 val); | ||
114 | #define __xchg_u64 __xchg_u64_unsupported_on_32bit_kernels | ||
115 | #endif | ||
116 | |||
117 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) | ||
118 | { | ||
119 | switch (size) { | ||
120 | case 4: | ||
121 | return __xchg_u32(ptr, x); | ||
122 | case 8: | ||
123 | return __xchg_u64(ptr, x); | ||
124 | } | ||
125 | |||
126 | return x; | ||
127 | } | ||
128 | |||
129 | #define xchg(ptr, x) \ | ||
130 | ({ \ | ||
131 | BUILD_BUG_ON(sizeof(*(ptr)) & ~0xc); \ | ||
132 | \ | ||
133 | ((__typeof__(*(ptr))) \ | ||
134 | __xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))); \ | ||
135 | }) | ||
12 | 136 | ||
13 | #define __HAVE_ARCH_CMPXCHG 1 | 137 | #define __HAVE_ARCH_CMPXCHG 1 |
14 | 138 | ||
diff --git a/arch/mips/include/asm/dma-mapping.h b/arch/mips/include/asm/dma-mapping.h index 7aa37ddfca4b..be39a12901c6 100644 --- a/arch/mips/include/asm/dma-mapping.h +++ b/arch/mips/include/asm/dma-mapping.h | |||
@@ -57,25 +57,31 @@ dma_set_mask(struct device *dev, u64 mask) | |||
57 | extern void dma_cache_sync(struct device *dev, void *vaddr, size_t size, | 57 | extern void dma_cache_sync(struct device *dev, void *vaddr, size_t size, |
58 | enum dma_data_direction direction); | 58 | enum dma_data_direction direction); |
59 | 59 | ||
60 | static inline void *dma_alloc_coherent(struct device *dev, size_t size, | 60 | #define dma_alloc_coherent(d,s,h,f) dma_alloc_attrs(d,s,h,f,NULL) |
61 | dma_addr_t *dma_handle, gfp_t gfp) | 61 | |
62 | static inline void *dma_alloc_attrs(struct device *dev, size_t size, | ||
63 | dma_addr_t *dma_handle, gfp_t gfp, | ||
64 | struct dma_attrs *attrs) | ||
62 | { | 65 | { |
63 | void *ret; | 66 | void *ret; |
64 | struct dma_map_ops *ops = get_dma_ops(dev); | 67 | struct dma_map_ops *ops = get_dma_ops(dev); |
65 | 68 | ||
66 | ret = ops->alloc_coherent(dev, size, dma_handle, gfp); | 69 | ret = ops->alloc(dev, size, dma_handle, gfp, attrs); |
67 | 70 | ||
68 | debug_dma_alloc_coherent(dev, size, *dma_handle, ret); | 71 | debug_dma_alloc_coherent(dev, size, *dma_handle, ret); |
69 | 72 | ||
70 | return ret; | 73 | return ret; |
71 | } | 74 | } |
72 | 75 | ||
73 | static inline void dma_free_coherent(struct device *dev, size_t size, | 76 | #define dma_free_coherent(d,s,c,h) dma_free_attrs(d,s,c,h,NULL) |
74 | void *vaddr, dma_addr_t dma_handle) | 77 | |
78 | static inline void dma_free_attrs(struct device *dev, size_t size, | ||
79 | void *vaddr, dma_addr_t dma_handle, | ||
80 | struct dma_attrs *attrs) | ||
75 | { | 81 | { |
76 | struct dma_map_ops *ops = get_dma_ops(dev); | 82 | struct dma_map_ops *ops = get_dma_ops(dev); |
77 | 83 | ||
78 | ops->free_coherent(dev, size, vaddr, dma_handle); | 84 | ops->free(dev, size, vaddr, dma_handle, attrs); |
79 | 85 | ||
80 | debug_dma_free_coherent(dev, size, vaddr, dma_handle); | 86 | debug_dma_free_coherent(dev, size, vaddr, dma_handle); |
81 | } | 87 | } |
diff --git a/arch/mips/include/asm/dma.h b/arch/mips/include/asm/dma.h index 2d47da62d5a7..f5097f65a8ab 100644 --- a/arch/mips/include/asm/dma.h +++ b/arch/mips/include/asm/dma.h | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <asm/io.h> /* need byte IO */ | 15 | #include <asm/io.h> /* need byte IO */ |
16 | #include <linux/spinlock.h> /* And spinlocks */ | 16 | #include <linux/spinlock.h> /* And spinlocks */ |
17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
18 | #include <asm/system.h> | ||
19 | 18 | ||
20 | 19 | ||
21 | #ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER | 20 | #ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER |
diff --git a/arch/mips/include/asm/exec.h b/arch/mips/include/asm/exec.h new file mode 100644 index 000000000000..c1f6afa4bc4f --- /dev/null +++ b/arch/mips/include/asm/exec.h | |||
@@ -0,0 +1,17 @@ | |||
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) 1994, 95, 96, 97, 98, 99, 2003, 06 by Ralf Baechle | ||
7 | * Copyright (C) 1996 by Paul M. Antoine | ||
8 | * Copyright (C) 1999 Silicon Graphics | ||
9 | * Kevin D. Kissell, kevink@mips.org and Carsten Langgaard, carstenl@mips.com | ||
10 | * Copyright (C) 2000 MIPS Technologies, Inc. | ||
11 | */ | ||
12 | #ifndef _ASM_EXEC_H | ||
13 | #define _ASM_EXEC_H | ||
14 | |||
15 | extern unsigned long arch_align_stack(unsigned long sp); | ||
16 | |||
17 | #endif /* _ASM_EXEC_H */ | ||
diff --git a/arch/mips/include/asm/highmem.h b/arch/mips/include/asm/highmem.h index 77e644082a3b..2d91888c9b74 100644 --- a/arch/mips/include/asm/highmem.h +++ b/arch/mips/include/asm/highmem.h | |||
@@ -47,7 +47,7 @@ extern void kunmap_high(struct page *page); | |||
47 | 47 | ||
48 | extern void *kmap(struct page *page); | 48 | extern void *kmap(struct page *page); |
49 | extern void kunmap(struct page *page); | 49 | extern void kunmap(struct page *page); |
50 | extern void *__kmap_atomic(struct page *page); | 50 | extern void *kmap_atomic(struct page *page); |
51 | extern void __kunmap_atomic(void *kvaddr); | 51 | extern void __kunmap_atomic(void *kvaddr); |
52 | extern void *kmap_atomic_pfn(unsigned long pfn); | 52 | extern void *kmap_atomic_pfn(unsigned long pfn); |
53 | extern struct page *kmap_atomic_to_page(void *ptr); | 53 | extern struct page *kmap_atomic_to_page(void *ptr); |
diff --git a/arch/mips/include/asm/irq.h b/arch/mips/include/asm/irq.h index 2354c870a63a..fb698dc09bc9 100644 --- a/arch/mips/include/asm/irq.h +++ b/arch/mips/include/asm/irq.h | |||
@@ -11,15 +11,12 @@ | |||
11 | 11 | ||
12 | #include <linux/linkage.h> | 12 | #include <linux/linkage.h> |
13 | #include <linux/smp.h> | 13 | #include <linux/smp.h> |
14 | #include <linux/irqdomain.h> | ||
14 | 15 | ||
15 | #include <asm/mipsmtregs.h> | 16 | #include <asm/mipsmtregs.h> |
16 | 17 | ||
17 | #include <irq.h> | 18 | #include <irq.h> |
18 | 19 | ||
19 | static inline void irq_dispose_mapping(unsigned int virq) | ||
20 | { | ||
21 | } | ||
22 | |||
23 | #ifdef CONFIG_I8259 | 20 | #ifdef CONFIG_I8259 |
24 | static inline int irq_canonicalize(int irq) | 21 | static inline int irq_canonicalize(int irq) |
25 | { | 22 | { |
diff --git a/arch/mips/include/asm/jump_label.h b/arch/mips/include/asm/jump_label.h index 1881b316ca45..4d6d77ed9b9d 100644 --- a/arch/mips/include/asm/jump_label.h +++ b/arch/mips/include/asm/jump_label.h | |||
@@ -20,7 +20,7 @@ | |||
20 | #define WORD_INSN ".word" | 20 | #define WORD_INSN ".word" |
21 | #endif | 21 | #endif |
22 | 22 | ||
23 | static __always_inline bool arch_static_branch(struct jump_label_key *key) | 23 | static __always_inline bool arch_static_branch(struct static_key *key) |
24 | { | 24 | { |
25 | asm goto("1:\tnop\n\t" | 25 | asm goto("1:\tnop\n\t" |
26 | "nop\n\t" | 26 | "nop\n\t" |
diff --git a/arch/mips/include/asm/mach-au1x00/au1000_dma.h b/arch/mips/include/asm/mach-au1x00/au1000_dma.h index 59f5b55b2200..ba4cf0e91c8b 100644 --- a/arch/mips/include/asm/mach-au1x00/au1000_dma.h +++ b/arch/mips/include/asm/mach-au1x00/au1000_dma.h | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/io.h> /* need byte IO */ | 33 | #include <linux/io.h> /* need byte IO */ |
34 | #include <linux/spinlock.h> /* And spinlocks */ | 34 | #include <linux/spinlock.h> /* And spinlocks */ |
35 | #include <linux/delay.h> | 35 | #include <linux/delay.h> |
36 | #include <asm/system.h> | ||
37 | 36 | ||
38 | #define NUM_AU1000_DMA_CHANNELS 8 | 37 | #define NUM_AU1000_DMA_CHANNELS 8 |
39 | 38 | ||
diff --git a/arch/mips/include/asm/mach-au1x00/gpio-au1300.h b/arch/mips/include/asm/mach-au1x00/gpio-au1300.h index 556e1be20bf6..fb9975c74c57 100644 --- a/arch/mips/include/asm/mach-au1x00/gpio-au1300.h +++ b/arch/mips/include/asm/mach-au1x00/gpio-au1300.h | |||
@@ -11,6 +11,9 @@ | |||
11 | #include <asm/io.h> | 11 | #include <asm/io.h> |
12 | #include <asm/mach-au1x00/au1000.h> | 12 | #include <asm/mach-au1x00/au1000.h> |
13 | 13 | ||
14 | struct gpio; | ||
15 | struct gpio_chip; | ||
16 | |||
14 | /* with the current GPIC design, up to 128 GPIOs are possible. | 17 | /* with the current GPIC design, up to 128 GPIOs are possible. |
15 | * The only implementation so far is in the Au1300, which has 75 externally | 18 | * The only implementation so far is in the Au1300, which has 75 externally |
16 | * available GPIOs. | 19 | * available GPIOs. |
@@ -203,7 +206,22 @@ static inline int gpio_request(unsigned int gpio, const char *label) | |||
203 | return 0; | 206 | return 0; |
204 | } | 207 | } |
205 | 208 | ||
206 | static inline void gpio_free(unsigned int gpio) | 209 | static inline int gpio_request_one(unsigned gpio, |
210 | unsigned long flags, const char *label) | ||
211 | { | ||
212 | return 0; | ||
213 | } | ||
214 | |||
215 | static inline int gpio_request_array(struct gpio *array, size_t num) | ||
216 | { | ||
217 | return 0; | ||
218 | } | ||
219 | |||
220 | static inline void gpio_free(unsigned gpio) | ||
221 | { | ||
222 | } | ||
223 | |||
224 | static inline void gpio_free_array(struct gpio *array, size_t num) | ||
207 | { | 225 | { |
208 | } | 226 | } |
209 | 227 | ||
diff --git a/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h b/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h index de95e0723e2b..5ecaf47b34d2 100644 --- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h +++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h | |||
@@ -44,4 +44,7 @@ union bcm47xx_bus { | |||
44 | extern union bcm47xx_bus bcm47xx_bus; | 44 | extern union bcm47xx_bus bcm47xx_bus; |
45 | extern enum bcm47xx_bus_type bcm47xx_bus_type; | 45 | extern enum bcm47xx_bus_type bcm47xx_bus_type; |
46 | 46 | ||
47 | void bcm47xx_fill_sprom(struct ssb_sprom *sprom, const char *prefix); | ||
48 | void bcm47xx_fill_sprom_ethernet(struct ssb_sprom *sprom, const char *prefix); | ||
49 | |||
47 | #endif /* __ASM_BCM47XX_H */ | 50 | #endif /* __ASM_BCM47XX_H */ |
diff --git a/arch/mips/include/asm/mach-bcm47xx/nvram.h b/arch/mips/include/asm/mach-bcm47xx/nvram.h index 184d5ecb5f51..69ef3efe06e7 100644 --- a/arch/mips/include/asm/mach-bcm47xx/nvram.h +++ b/arch/mips/include/asm/mach-bcm47xx/nvram.h | |||
@@ -37,7 +37,7 @@ struct nvram_header { | |||
37 | 37 | ||
38 | extern int nvram_getenv(char *name, char *val, size_t val_len); | 38 | extern int nvram_getenv(char *name, char *val, size_t val_len); |
39 | 39 | ||
40 | static inline void nvram_parse_macaddr(char *buf, u8 *macaddr) | 40 | static inline void nvram_parse_macaddr(char *buf, u8 macaddr[6]) |
41 | { | 41 | { |
42 | if (strchr(buf, ':')) | 42 | if (strchr(buf, ':')) |
43 | sscanf(buf, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &macaddr[0], | 43 | sscanf(buf, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &macaddr[0], |
diff --git a/arch/mips/include/asm/mman.h b/arch/mips/include/asm/mman.h index 785b4ea4ec3f..46d3da0d4b92 100644 --- a/arch/mips/include/asm/mman.h +++ b/arch/mips/include/asm/mman.h | |||
@@ -80,6 +80,10 @@ | |||
80 | #define MADV_HUGEPAGE 14 /* Worth backing with hugepages */ | 80 | #define MADV_HUGEPAGE 14 /* Worth backing with hugepages */ |
81 | #define MADV_NOHUGEPAGE 15 /* Not worth backing with hugepages */ | 81 | #define MADV_NOHUGEPAGE 15 /* Not worth backing with hugepages */ |
82 | 82 | ||
83 | #define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, | ||
84 | overrides the coredump filter bits */ | ||
85 | #define MADV_DODUMP 17 /* Clear the MADV_NODUMP flag */ | ||
86 | |||
83 | /* compatibility flags */ | 87 | /* compatibility flags */ |
84 | #define MAP_FILE 0 | 88 | #define MAP_FILE 0 |
85 | 89 | ||
diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h index d41790928c64..da9bd7d270d1 100644 --- a/arch/mips/include/asm/page.h +++ b/arch/mips/include/asm/page.h | |||
@@ -39,9 +39,6 @@ | |||
39 | #define HPAGE_MASK (~(HPAGE_SIZE - 1)) | 39 | #define HPAGE_MASK (~(HPAGE_SIZE - 1)) |
40 | #define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) | 40 | #define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) |
41 | #else /* !CONFIG_HUGETLB_PAGE */ | 41 | #else /* !CONFIG_HUGETLB_PAGE */ |
42 | # ifndef BUILD_BUG | ||
43 | # define BUILD_BUG() do { extern void __build_bug(void); __build_bug(); } while (0) | ||
44 | # endif | ||
45 | #define HPAGE_SHIFT ({BUILD_BUG(); 0; }) | 42 | #define HPAGE_SHIFT ({BUILD_BUG(); 0; }) |
46 | #define HPAGE_SIZE ({BUILD_BUG(); 0; }) | 43 | #define HPAGE_SIZE ({BUILD_BUG(); 0; }) |
47 | #define HPAGE_MASK ({BUILD_BUG(); 0; }) | 44 | #define HPAGE_MASK ({BUILD_BUG(); 0; }) |
diff --git a/arch/mips/include/asm/pci.h b/arch/mips/include/asm/pci.h index 576397c69920..fcd4060f6421 100644 --- a/arch/mips/include/asm/pci.h +++ b/arch/mips/include/asm/pci.h | |||
@@ -92,6 +92,7 @@ extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, | |||
92 | #include <asm/scatterlist.h> | 92 | #include <asm/scatterlist.h> |
93 | #include <linux/string.h> | 93 | #include <linux/string.h> |
94 | #include <asm/io.h> | 94 | #include <asm/io.h> |
95 | #include <asm-generic/pci-bridge.h> | ||
95 | 96 | ||
96 | struct pci_dev; | 97 | struct pci_dev; |
97 | 98 | ||
@@ -112,12 +113,6 @@ static inline void pci_dma_burst_advice(struct pci_dev *pdev, | |||
112 | } | 113 | } |
113 | #endif | 114 | #endif |
114 | 115 | ||
115 | extern void pcibios_resource_to_bus(struct pci_dev *dev, | ||
116 | struct pci_bus_region *region, struct resource *res); | ||
117 | |||
118 | extern void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, | ||
119 | struct pci_bus_region *region); | ||
120 | |||
121 | #define pci_domain_nr(bus) ((struct pci_controller *)(bus)->sysdata)->index | 116 | #define pci_domain_nr(bus) ((struct pci_controller *)(bus)->sysdata)->index |
122 | 117 | ||
123 | static inline int pci_proc_domain(struct pci_bus *bus) | 118 | static inline int pci_proc_domain(struct pci_bus *bus) |
@@ -145,8 +140,6 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) | |||
145 | #define arch_setup_msi_irqs arch_setup_msi_irqs | 140 | #define arch_setup_msi_irqs arch_setup_msi_irqs |
146 | #endif | 141 | #endif |
147 | 142 | ||
148 | extern int pci_probe_only; | ||
149 | |||
150 | extern char * (*pcibios_plat_setup)(char *str); | 143 | extern char * (*pcibios_plat_setup)(char *str); |
151 | 144 | ||
152 | #endif /* _ASM_PCI_H */ | 145 | #endif /* _ASM_PCI_H */ |
diff --git a/arch/mips/include/asm/posix_types.h b/arch/mips/include/asm/posix_types.h index c200102c8586..e0308dcca135 100644 --- a/arch/mips/include/asm/posix_types.h +++ b/arch/mips/include/asm/posix_types.h | |||
@@ -17,128 +17,21 @@ | |||
17 | * assume GCC is being used. | 17 | * assume GCC is being used. |
18 | */ | 18 | */ |
19 | 19 | ||
20 | typedef unsigned long __kernel_ino_t; | ||
21 | typedef unsigned int __kernel_mode_t; | ||
22 | #if (_MIPS_SZLONG == 32) | ||
23 | typedef unsigned long __kernel_nlink_t; | ||
24 | #endif | ||
25 | #if (_MIPS_SZLONG == 64) | 20 | #if (_MIPS_SZLONG == 64) |
26 | typedef unsigned int __kernel_nlink_t; | 21 | typedef unsigned int __kernel_nlink_t; |
22 | #define __kernel_nlink_t __kernel_nlink_t | ||
27 | #endif | 23 | #endif |
28 | typedef long __kernel_off_t; | ||
29 | typedef int __kernel_pid_t; | ||
30 | typedef int __kernel_ipc_pid_t; | ||
31 | typedef unsigned int __kernel_uid_t; | ||
32 | typedef unsigned int __kernel_gid_t; | ||
33 | #if (_MIPS_SZLONG == 32) | ||
34 | typedef unsigned int __kernel_size_t; | ||
35 | typedef int __kernel_ssize_t; | ||
36 | typedef int __kernel_ptrdiff_t; | ||
37 | #endif | ||
38 | #if (_MIPS_SZLONG == 64) | ||
39 | typedef unsigned long __kernel_size_t; | ||
40 | typedef long __kernel_ssize_t; | ||
41 | typedef long __kernel_ptrdiff_t; | ||
42 | #endif | ||
43 | typedef long __kernel_time_t; | ||
44 | typedef long __kernel_suseconds_t; | ||
45 | typedef long __kernel_clock_t; | ||
46 | typedef int __kernel_timer_t; | ||
47 | typedef int __kernel_clockid_t; | ||
48 | typedef long __kernel_daddr_t; | ||
49 | typedef char * __kernel_caddr_t; | ||
50 | 24 | ||
51 | typedef unsigned short __kernel_uid16_t; | 25 | typedef long __kernel_daddr_t; |
52 | typedef unsigned short __kernel_gid16_t; | 26 | #define __kernel_daddr_t __kernel_daddr_t |
53 | typedef unsigned int __kernel_uid32_t; | ||
54 | typedef unsigned int __kernel_gid32_t; | ||
55 | typedef __kernel_uid_t __kernel_old_uid_t; | ||
56 | typedef __kernel_gid_t __kernel_old_gid_t; | ||
57 | typedef unsigned int __kernel_old_dev_t; | ||
58 | |||
59 | #ifdef __GNUC__ | ||
60 | typedef long long __kernel_loff_t; | ||
61 | #endif | ||
62 | 27 | ||
63 | typedef struct { | ||
64 | #if (_MIPS_SZLONG == 32) | 28 | #if (_MIPS_SZLONG == 32) |
29 | typedef struct { | ||
65 | long val[2]; | 30 | long val[2]; |
66 | #endif | ||
67 | #if (_MIPS_SZLONG == 64) | ||
68 | int val[2]; | ||
69 | #endif | ||
70 | } __kernel_fsid_t; | 31 | } __kernel_fsid_t; |
32 | #define __kernel_fsid_t __kernel_fsid_t | ||
33 | #endif | ||
71 | 34 | ||
72 | #if defined(__KERNEL__) | 35 | #include <asm-generic/posix_types.h> |
73 | |||
74 | #undef __FD_SET | ||
75 | static __inline__ void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp) | ||
76 | { | ||
77 | unsigned long __tmp = __fd / __NFDBITS; | ||
78 | unsigned long __rem = __fd % __NFDBITS; | ||
79 | __fdsetp->fds_bits[__tmp] |= (1UL<<__rem); | ||
80 | } | ||
81 | |||
82 | #undef __FD_CLR | ||
83 | static __inline__ void __FD_CLR(unsigned long __fd, __kernel_fd_set *__fdsetp) | ||
84 | { | ||
85 | unsigned long __tmp = __fd / __NFDBITS; | ||
86 | unsigned long __rem = __fd % __NFDBITS; | ||
87 | __fdsetp->fds_bits[__tmp] &= ~(1UL<<__rem); | ||
88 | } | ||
89 | |||
90 | #undef __FD_ISSET | ||
91 | static __inline__ int __FD_ISSET(unsigned long __fd, const __kernel_fd_set *__p) | ||
92 | { | ||
93 | unsigned long __tmp = __fd / __NFDBITS; | ||
94 | unsigned long __rem = __fd % __NFDBITS; | ||
95 | return (__p->fds_bits[__tmp] & (1UL<<__rem)) != 0; | ||
96 | } | ||
97 | |||
98 | /* | ||
99 | * This will unroll the loop for the normal constant case (8 ints, | ||
100 | * for a 256-bit fd_set) | ||
101 | */ | ||
102 | #undef __FD_ZERO | ||
103 | static __inline__ void __FD_ZERO(__kernel_fd_set *__p) | ||
104 | { | ||
105 | unsigned long *__tmp = __p->fds_bits; | ||
106 | int __i; | ||
107 | |||
108 | if (__builtin_constant_p(__FDSET_LONGS)) { | ||
109 | switch (__FDSET_LONGS) { | ||
110 | case 16: | ||
111 | __tmp[ 0] = 0; __tmp[ 1] = 0; | ||
112 | __tmp[ 2] = 0; __tmp[ 3] = 0; | ||
113 | __tmp[ 4] = 0; __tmp[ 5] = 0; | ||
114 | __tmp[ 6] = 0; __tmp[ 7] = 0; | ||
115 | __tmp[ 8] = 0; __tmp[ 9] = 0; | ||
116 | __tmp[10] = 0; __tmp[11] = 0; | ||
117 | __tmp[12] = 0; __tmp[13] = 0; | ||
118 | __tmp[14] = 0; __tmp[15] = 0; | ||
119 | return; | ||
120 | |||
121 | case 8: | ||
122 | __tmp[ 0] = 0; __tmp[ 1] = 0; | ||
123 | __tmp[ 2] = 0; __tmp[ 3] = 0; | ||
124 | __tmp[ 4] = 0; __tmp[ 5] = 0; | ||
125 | __tmp[ 6] = 0; __tmp[ 7] = 0; | ||
126 | return; | ||
127 | |||
128 | case 4: | ||
129 | __tmp[ 0] = 0; __tmp[ 1] = 0; | ||
130 | __tmp[ 2] = 0; __tmp[ 3] = 0; | ||
131 | return; | ||
132 | } | ||
133 | } | ||
134 | __i = __FDSET_LONGS; | ||
135 | while (__i) { | ||
136 | __i--; | ||
137 | *__tmp = 0; | ||
138 | __tmp++; | ||
139 | } | ||
140 | } | ||
141 | |||
142 | #endif /* defined(__KERNEL__) */ | ||
143 | 36 | ||
144 | #endif /* _ASM_POSIX_TYPES_H */ | 37 | #endif /* _ASM_POSIX_TYPES_H */ |
diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h index c104f1039a69..20e9dcf42b27 100644 --- a/arch/mips/include/asm/processor.h +++ b/arch/mips/include/asm/processor.h | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/cpu-info.h> | 19 | #include <asm/cpu-info.h> |
20 | #include <asm/mipsregs.h> | 20 | #include <asm/mipsregs.h> |
21 | #include <asm/prefetch.h> | 21 | #include <asm/prefetch.h> |
22 | #include <asm/system.h> | ||
23 | 22 | ||
24 | /* | 23 | /* |
25 | * Return current * instruction pointer ("program counter"). | 24 | * Return current * instruction pointer ("program counter"). |
@@ -356,6 +355,12 @@ unsigned long get_wchan(struct task_struct *p); | |||
356 | #define ARCH_HAS_PREFETCHW | 355 | #define ARCH_HAS_PREFETCHW |
357 | #define prefetchw(x) __builtin_prefetch((x), 1, 1) | 356 | #define prefetchw(x) __builtin_prefetch((x), 1, 1) |
358 | 357 | ||
358 | /* | ||
359 | * See Documentation/scheduler/sched-arch.txt; prevents deadlock on SMP | ||
360 | * systems. | ||
361 | */ | ||
362 | #define __ARCH_WANT_UNLOCKED_CTXSW | ||
363 | |||
359 | #endif | 364 | #endif |
360 | 365 | ||
361 | #endif /* _ASM_PROCESSOR_H */ | 366 | #endif /* _ASM_PROCESSOR_H */ |
diff --git a/arch/mips/include/asm/setup.h b/arch/mips/include/asm/setup.h index 50511aac04e9..6dce6d8d09ab 100644 --- a/arch/mips/include/asm/setup.h +++ b/arch/mips/include/asm/setup.h | |||
@@ -5,6 +5,17 @@ | |||
5 | 5 | ||
6 | #ifdef __KERNEL__ | 6 | #ifdef __KERNEL__ |
7 | extern void setup_early_printk(void); | 7 | extern void setup_early_printk(void); |
8 | |||
9 | extern void set_handler(unsigned long offset, void *addr, unsigned long len); | ||
10 | extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len); | ||
11 | |||
12 | typedef void (*vi_handler_t)(void); | ||
13 | extern void *set_vi_handler(int n, vi_handler_t addr); | ||
14 | |||
15 | extern void *set_except_vector(int n, void *addr); | ||
16 | extern unsigned long ebase; | ||
17 | extern void per_cpu_trap_init(void); | ||
18 | |||
8 | #endif /* __KERNEL__ */ | 19 | #endif /* __KERNEL__ */ |
9 | 20 | ||
10 | #endif /* __SETUP_H */ | 21 | #endif /* __SETUP_H */ |
diff --git a/arch/mips/include/asm/socket.h b/arch/mips/include/asm/socket.h index ad5c0a7a02a7..a2ed6fdad4e0 100644 --- a/arch/mips/include/asm/socket.h +++ b/arch/mips/include/asm/socket.h | |||
@@ -84,6 +84,10 @@ To add: #define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */ | |||
84 | 84 | ||
85 | #define SO_WIFI_STATUS 41 | 85 | #define SO_WIFI_STATUS 41 |
86 | #define SCM_WIFI_STATUS SO_WIFI_STATUS | 86 | #define SCM_WIFI_STATUS SO_WIFI_STATUS |
87 | #define SO_PEEK_OFF 42 | ||
88 | |||
89 | /* Instruct lower device to use last 4-bytes of skb data as FCS */ | ||
90 | #define SO_NOFCS 43 | ||
87 | 91 | ||
88 | #ifdef __KERNEL__ | 92 | #ifdef __KERNEL__ |
89 | 93 | ||
diff --git a/arch/mips/include/asm/switch_to.h b/arch/mips/include/asm/switch_to.h new file mode 100644 index 000000000000..5d33621b5658 --- /dev/null +++ b/arch/mips/include/asm/switch_to.h | |||
@@ -0,0 +1,85 @@ | |||
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) 1994, 95, 96, 97, 98, 99, 2003, 06 by Ralf Baechle | ||
7 | * Copyright (C) 1996 by Paul M. Antoine | ||
8 | * Copyright (C) 1999 Silicon Graphics | ||
9 | * Kevin D. Kissell, kevink@mips.org and Carsten Langgaard, carstenl@mips.com | ||
10 | * Copyright (C) 2000 MIPS Technologies, Inc. | ||
11 | */ | ||
12 | #ifndef _ASM_SWITCH_TO_H | ||
13 | #define _ASM_SWITCH_TO_H | ||
14 | |||
15 | #include <asm/cpu-features.h> | ||
16 | #include <asm/watch.h> | ||
17 | #include <asm/dsp.h> | ||
18 | |||
19 | struct task_struct; | ||
20 | |||
21 | /* | ||
22 | * switch_to(n) should switch tasks to task nr n, first | ||
23 | * checking that n isn't the current task, in which case it does nothing. | ||
24 | */ | ||
25 | extern asmlinkage void *resume(void *last, void *next, void *next_ti); | ||
26 | |||
27 | extern unsigned int ll_bit; | ||
28 | extern struct task_struct *ll_task; | ||
29 | |||
30 | #ifdef CONFIG_MIPS_MT_FPAFF | ||
31 | |||
32 | /* | ||
33 | * Handle the scheduler resume end of FPU affinity management. We do this | ||
34 | * inline to try to keep the overhead down. If we have been forced to run on | ||
35 | * a "CPU" with an FPU because of a previous high level of FP computation, | ||
36 | * but did not actually use the FPU during the most recent time-slice (CU1 | ||
37 | * isn't set), we undo the restriction on cpus_allowed. | ||
38 | * | ||
39 | * We're not calling set_cpus_allowed() here, because we have no need to | ||
40 | * force prompt migration - we're already switching the current CPU to a | ||
41 | * different thread. | ||
42 | */ | ||
43 | |||
44 | #define __mips_mt_fpaff_switch_to(prev) \ | ||
45 | do { \ | ||
46 | struct thread_info *__prev_ti = task_thread_info(prev); \ | ||
47 | \ | ||
48 | if (cpu_has_fpu && \ | ||
49 | test_ti_thread_flag(__prev_ti, TIF_FPUBOUND) && \ | ||
50 | (!(KSTK_STATUS(prev) & ST0_CU1))) { \ | ||
51 | clear_ti_thread_flag(__prev_ti, TIF_FPUBOUND); \ | ||
52 | prev->cpus_allowed = prev->thread.user_cpus_allowed; \ | ||
53 | } \ | ||
54 | next->thread.emulated_fp = 0; \ | ||
55 | } while(0) | ||
56 | |||
57 | #else | ||
58 | #define __mips_mt_fpaff_switch_to(prev) do { (void) (prev); } while (0) | ||
59 | #endif | ||
60 | |||
61 | #define __clear_software_ll_bit() \ | ||
62 | do { \ | ||
63 | if (!__builtin_constant_p(cpu_has_llsc) || !cpu_has_llsc) \ | ||
64 | ll_bit = 0; \ | ||
65 | } while (0) | ||
66 | |||
67 | #define switch_to(prev, next, last) \ | ||
68 | do { \ | ||
69 | __mips_mt_fpaff_switch_to(prev); \ | ||
70 | if (cpu_has_dsp) \ | ||
71 | __save_dsp(prev); \ | ||
72 | __clear_software_ll_bit(); \ | ||
73 | (last) = resume(prev, next, task_thread_info(next)); \ | ||
74 | } while (0) | ||
75 | |||
76 | #define finish_arch_switch(prev) \ | ||
77 | do { \ | ||
78 | if (cpu_has_dsp) \ | ||
79 | __restore_dsp(current); \ | ||
80 | if (cpu_has_userlocal) \ | ||
81 | write_c0_userlocal(current_thread_info()->tp_value); \ | ||
82 | __restore_watch(); \ | ||
83 | } while (0) | ||
84 | |||
85 | #endif /* _ASM_SWITCH_TO_H */ | ||
diff --git a/arch/mips/include/asm/system.h b/arch/mips/include/asm/system.h deleted file mode 100644 index 6018c80ce37a..000000000000 --- a/arch/mips/include/asm/system.h +++ /dev/null | |||
@@ -1,235 +0,0 @@ | |||
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) 1994, 95, 96, 97, 98, 99, 2003, 06 by Ralf Baechle | ||
7 | * Copyright (C) 1996 by Paul M. Antoine | ||
8 | * Copyright (C) 1999 Silicon Graphics | ||
9 | * Kevin D. Kissell, kevink@mips.org and Carsten Langgaard, carstenl@mips.com | ||
10 | * Copyright (C) 2000 MIPS Technologies, Inc. | ||
11 | */ | ||
12 | #ifndef _ASM_SYSTEM_H | ||
13 | #define _ASM_SYSTEM_H | ||
14 | |||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/types.h> | ||
17 | #include <linux/irqflags.h> | ||
18 | |||
19 | #include <asm/addrspace.h> | ||
20 | #include <asm/barrier.h> | ||
21 | #include <asm/cmpxchg.h> | ||
22 | #include <asm/cpu-features.h> | ||
23 | #include <asm/dsp.h> | ||
24 | #include <asm/watch.h> | ||
25 | #include <asm/war.h> | ||
26 | |||
27 | |||
28 | /* | ||
29 | * switch_to(n) should switch tasks to task nr n, first | ||
30 | * checking that n isn't the current task, in which case it does nothing. | ||
31 | */ | ||
32 | extern asmlinkage void *resume(void *last, void *next, void *next_ti); | ||
33 | |||
34 | struct task_struct; | ||
35 | |||
36 | extern unsigned int ll_bit; | ||
37 | extern struct task_struct *ll_task; | ||
38 | |||
39 | #ifdef CONFIG_MIPS_MT_FPAFF | ||
40 | |||
41 | /* | ||
42 | * Handle the scheduler resume end of FPU affinity management. We do this | ||
43 | * inline to try to keep the overhead down. If we have been forced to run on | ||
44 | * a "CPU" with an FPU because of a previous high level of FP computation, | ||
45 | * but did not actually use the FPU during the most recent time-slice (CU1 | ||
46 | * isn't set), we undo the restriction on cpus_allowed. | ||
47 | * | ||
48 | * We're not calling set_cpus_allowed() here, because we have no need to | ||
49 | * force prompt migration - we're already switching the current CPU to a | ||
50 | * different thread. | ||
51 | */ | ||
52 | |||
53 | #define __mips_mt_fpaff_switch_to(prev) \ | ||
54 | do { \ | ||
55 | struct thread_info *__prev_ti = task_thread_info(prev); \ | ||
56 | \ | ||
57 | if (cpu_has_fpu && \ | ||
58 | test_ti_thread_flag(__prev_ti, TIF_FPUBOUND) && \ | ||
59 | (!(KSTK_STATUS(prev) & ST0_CU1))) { \ | ||
60 | clear_ti_thread_flag(__prev_ti, TIF_FPUBOUND); \ | ||
61 | prev->cpus_allowed = prev->thread.user_cpus_allowed; \ | ||
62 | } \ | ||
63 | next->thread.emulated_fp = 0; \ | ||
64 | } while(0) | ||
65 | |||
66 | #else | ||
67 | #define __mips_mt_fpaff_switch_to(prev) do { (void) (prev); } while (0) | ||
68 | #endif | ||
69 | |||
70 | #define __clear_software_ll_bit() \ | ||
71 | do { \ | ||
72 | if (!__builtin_constant_p(cpu_has_llsc) || !cpu_has_llsc) \ | ||
73 | ll_bit = 0; \ | ||
74 | } while (0) | ||
75 | |||
76 | #define switch_to(prev, next, last) \ | ||
77 | do { \ | ||
78 | __mips_mt_fpaff_switch_to(prev); \ | ||
79 | if (cpu_has_dsp) \ | ||
80 | __save_dsp(prev); \ | ||
81 | __clear_software_ll_bit(); \ | ||
82 | (last) = resume(prev, next, task_thread_info(next)); \ | ||
83 | } while (0) | ||
84 | |||
85 | #define finish_arch_switch(prev) \ | ||
86 | do { \ | ||
87 | if (cpu_has_dsp) \ | ||
88 | __restore_dsp(current); \ | ||
89 | if (cpu_has_userlocal) \ | ||
90 | write_c0_userlocal(current_thread_info()->tp_value); \ | ||
91 | __restore_watch(); \ | ||
92 | } while (0) | ||
93 | |||
94 | static inline unsigned long __xchg_u32(volatile int * m, unsigned int val) | ||
95 | { | ||
96 | __u32 retval; | ||
97 | |||
98 | smp_mb__before_llsc(); | ||
99 | |||
100 | if (kernel_uses_llsc && R10000_LLSC_WAR) { | ||
101 | unsigned long dummy; | ||
102 | |||
103 | __asm__ __volatile__( | ||
104 | " .set mips3 \n" | ||
105 | "1: ll %0, %3 # xchg_u32 \n" | ||
106 | " .set mips0 \n" | ||
107 | " move %2, %z4 \n" | ||
108 | " .set mips3 \n" | ||
109 | " sc %2, %1 \n" | ||
110 | " beqzl %2, 1b \n" | ||
111 | " .set mips0 \n" | ||
112 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
113 | : "R" (*m), "Jr" (val) | ||
114 | : "memory"); | ||
115 | } else if (kernel_uses_llsc) { | ||
116 | unsigned long dummy; | ||
117 | |||
118 | do { | ||
119 | __asm__ __volatile__( | ||
120 | " .set mips3 \n" | ||
121 | " ll %0, %3 # xchg_u32 \n" | ||
122 | " .set mips0 \n" | ||
123 | " move %2, %z4 \n" | ||
124 | " .set mips3 \n" | ||
125 | " sc %2, %1 \n" | ||
126 | " .set mips0 \n" | ||
127 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
128 | : "R" (*m), "Jr" (val) | ||
129 | : "memory"); | ||
130 | } while (unlikely(!dummy)); | ||
131 | } else { | ||
132 | unsigned long flags; | ||
133 | |||
134 | raw_local_irq_save(flags); | ||
135 | retval = *m; | ||
136 | *m = val; | ||
137 | raw_local_irq_restore(flags); /* implies memory barrier */ | ||
138 | } | ||
139 | |||
140 | smp_llsc_mb(); | ||
141 | |||
142 | return retval; | ||
143 | } | ||
144 | |||
145 | #ifdef CONFIG_64BIT | ||
146 | static inline __u64 __xchg_u64(volatile __u64 * m, __u64 val) | ||
147 | { | ||
148 | __u64 retval; | ||
149 | |||
150 | smp_mb__before_llsc(); | ||
151 | |||
152 | if (kernel_uses_llsc && R10000_LLSC_WAR) { | ||
153 | unsigned long dummy; | ||
154 | |||
155 | __asm__ __volatile__( | ||
156 | " .set mips3 \n" | ||
157 | "1: lld %0, %3 # xchg_u64 \n" | ||
158 | " move %2, %z4 \n" | ||
159 | " scd %2, %1 \n" | ||
160 | " beqzl %2, 1b \n" | ||
161 | " .set mips0 \n" | ||
162 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
163 | : "R" (*m), "Jr" (val) | ||
164 | : "memory"); | ||
165 | } else if (kernel_uses_llsc) { | ||
166 | unsigned long dummy; | ||
167 | |||
168 | do { | ||
169 | __asm__ __volatile__( | ||
170 | " .set mips3 \n" | ||
171 | " lld %0, %3 # xchg_u64 \n" | ||
172 | " move %2, %z4 \n" | ||
173 | " scd %2, %1 \n" | ||
174 | " .set mips0 \n" | ||
175 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
176 | : "R" (*m), "Jr" (val) | ||
177 | : "memory"); | ||
178 | } while (unlikely(!dummy)); | ||
179 | } else { | ||
180 | unsigned long flags; | ||
181 | |||
182 | raw_local_irq_save(flags); | ||
183 | retval = *m; | ||
184 | *m = val; | ||
185 | raw_local_irq_restore(flags); /* implies memory barrier */ | ||
186 | } | ||
187 | |||
188 | smp_llsc_mb(); | ||
189 | |||
190 | return retval; | ||
191 | } | ||
192 | #else | ||
193 | extern __u64 __xchg_u64_unsupported_on_32bit_kernels(volatile __u64 * m, __u64 val); | ||
194 | #define __xchg_u64 __xchg_u64_unsupported_on_32bit_kernels | ||
195 | #endif | ||
196 | |||
197 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) | ||
198 | { | ||
199 | switch (size) { | ||
200 | case 4: | ||
201 | return __xchg_u32(ptr, x); | ||
202 | case 8: | ||
203 | return __xchg_u64(ptr, x); | ||
204 | } | ||
205 | |||
206 | return x; | ||
207 | } | ||
208 | |||
209 | #define xchg(ptr, x) \ | ||
210 | ({ \ | ||
211 | BUILD_BUG_ON(sizeof(*(ptr)) & ~0xc); \ | ||
212 | \ | ||
213 | ((__typeof__(*(ptr))) \ | ||
214 | __xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))); \ | ||
215 | }) | ||
216 | |||
217 | extern void set_handler(unsigned long offset, void *addr, unsigned long len); | ||
218 | extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len); | ||
219 | |||
220 | typedef void (*vi_handler_t)(void); | ||
221 | extern void *set_vi_handler(int n, vi_handler_t addr); | ||
222 | |||
223 | extern void *set_except_vector(int n, void *addr); | ||
224 | extern unsigned long ebase; | ||
225 | extern void per_cpu_trap_init(void); | ||
226 | |||
227 | /* | ||
228 | * See include/asm-ia64/system.h; prevents deadlock on SMP | ||
229 | * systems. | ||
230 | */ | ||
231 | #define __ARCH_WANT_UNLOCKED_CTXSW | ||
232 | |||
233 | extern unsigned long arch_align_stack(unsigned long sp); | ||
234 | |||
235 | #endif /* _ASM_SYSTEM_H */ | ||
diff --git a/arch/mips/include/asm/txx9/jmr3927.h b/arch/mips/include/asm/txx9/jmr3927.h index a409c446bf18..8808d7f82da0 100644 --- a/arch/mips/include/asm/txx9/jmr3927.h +++ b/arch/mips/include/asm/txx9/jmr3927.h | |||
@@ -12,7 +12,6 @@ | |||
12 | 12 | ||
13 | #include <asm/txx9/tx3927.h> | 13 | #include <asm/txx9/tx3927.h> |
14 | #include <asm/addrspace.h> | 14 | #include <asm/addrspace.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/txx9irq.h> | 15 | #include <asm/txx9irq.h> |
17 | 16 | ||
18 | /* CS */ | 17 | /* CS */ |
diff --git a/arch/mips/jz4740/board-qi_lb60.c b/arch/mips/jz4740/board-qi_lb60.c index 639e3ce6c264..9a91fe9de696 100644 --- a/arch/mips/jz4740/board-qi_lb60.c +++ b/arch/mips/jz4740/board-qi_lb60.c | |||
@@ -418,6 +418,11 @@ static struct platform_device qi_lb60_charger_device = { | |||
418 | }, | 418 | }, |
419 | }; | 419 | }; |
420 | 420 | ||
421 | /* audio */ | ||
422 | static struct platform_device qi_lb60_audio_device = { | ||
423 | .name = "qi-lb60-audio", | ||
424 | .id = -1, | ||
425 | }; | ||
421 | 426 | ||
422 | static struct platform_device *jz_platform_devices[] __initdata = { | 427 | static struct platform_device *jz_platform_devices[] __initdata = { |
423 | &jz4740_udc_device, | 428 | &jz4740_udc_device, |
@@ -434,6 +439,7 @@ static struct platform_device *jz_platform_devices[] __initdata = { | |||
434 | &qi_lb60_gpio_keys, | 439 | &qi_lb60_gpio_keys, |
435 | &qi_lb60_pwm_beeper, | 440 | &qi_lb60_pwm_beeper, |
436 | &qi_lb60_charger_device, | 441 | &qi_lb60_charger_device, |
442 | &qi_lb60_audio_device, | ||
437 | }; | 443 | }; |
438 | 444 | ||
439 | static void __init board_gpio_setup(void) | 445 | static void __init board_gpio_setup(void) |
diff --git a/arch/mips/kernel/cpu-bugs64.c b/arch/mips/kernel/cpu-bugs64.c index f305ca14351b..d6a18644365a 100644 --- a/arch/mips/kernel/cpu-bugs64.c +++ b/arch/mips/kernel/cpu-bugs64.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <asm/cpu.h> | 16 | #include <asm/cpu.h> |
17 | #include <asm/fpu.h> | 17 | #include <asm/fpu.h> |
18 | #include <asm/mipsregs.h> | 18 | #include <asm/mipsregs.h> |
19 | #include <asm/system.h> | 19 | #include <asm/setup.h> |
20 | 20 | ||
21 | static char bug64hit[] __initdata = | 21 | static char bug64hit[] __initdata = |
22 | "reliable operation impossible!\n%s"; | 22 | "reliable operation impossible!\n%s"; |
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c index 0bab464b8e33..5099201fb7bc 100644 --- a/arch/mips/kernel/cpu-probe.c +++ b/arch/mips/kernel/cpu-probe.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/cpu.h> | 22 | #include <asm/cpu.h> |
23 | #include <asm/fpu.h> | 23 | #include <asm/fpu.h> |
24 | #include <asm/mipsregs.h> | 24 | #include <asm/mipsregs.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/watch.h> | 25 | #include <asm/watch.h> |
27 | #include <asm/elf.h> | 26 | #include <asm/elf.h> |
28 | #include <asm/spram.h> | 27 | #include <asm/spram.h> |
diff --git a/arch/mips/kernel/irq-rm7000.c b/arch/mips/kernel/irq-rm7000.c index a8a8977d5887..b0662cf97ea8 100644 --- a/arch/mips/kernel/irq-rm7000.c +++ b/arch/mips/kernel/irq-rm7000.c | |||
@@ -16,7 +16,6 @@ | |||
16 | 16 | ||
17 | #include <asm/irq_cpu.h> | 17 | #include <asm/irq_cpu.h> |
18 | #include <asm/mipsregs.h> | 18 | #include <asm/mipsregs.h> |
19 | #include <asm/system.h> | ||
20 | 19 | ||
21 | static inline void unmask_rm7k_irq(struct irq_data *d) | 20 | static inline void unmask_rm7k_irq(struct irq_data *d) |
22 | { | 21 | { |
diff --git a/arch/mips/kernel/irq-rm9000.c b/arch/mips/kernel/irq-rm9000.c index 38874a4b9255..1282b9ae81c4 100644 --- a/arch/mips/kernel/irq-rm9000.c +++ b/arch/mips/kernel/irq-rm9000.c | |||
@@ -17,7 +17,6 @@ | |||
17 | 17 | ||
18 | #include <asm/irq_cpu.h> | 18 | #include <asm/irq_cpu.h> |
19 | #include <asm/mipsregs.h> | 19 | #include <asm/mipsregs.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | static inline void unmask_rm9k_irq(struct irq_data *d) | 21 | static inline void unmask_rm9k_irq(struct irq_data *d) |
23 | { | 22 | { |
diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c index 7f50318061b5..a5aa43d07c8e 100644 --- a/arch/mips/kernel/irq.c +++ b/arch/mips/kernel/irq.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/ftrace.h> | 23 | #include <linux/ftrace.h> |
24 | 24 | ||
25 | #include <linux/atomic.h> | 25 | #include <linux/atomic.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/uaccess.h> | 26 | #include <asm/uaccess.h> |
28 | 27 | ||
29 | #ifdef CONFIG_KGDB | 28 | #ifdef CONFIG_KGDB |
diff --git a/arch/mips/kernel/irq_cpu.c b/arch/mips/kernel/irq_cpu.c index 191eb52228c4..972263bcf403 100644 --- a/arch/mips/kernel/irq_cpu.c +++ b/arch/mips/kernel/irq_cpu.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <asm/irq_cpu.h> | 35 | #include <asm/irq_cpu.h> |
36 | #include <asm/mipsregs.h> | 36 | #include <asm/mipsregs.h> |
37 | #include <asm/mipsmtregs.h> | 37 | #include <asm/mipsmtregs.h> |
38 | #include <asm/system.h> | ||
39 | 38 | ||
40 | static inline void unmask_mips_irq(struct irq_data *d) | 39 | static inline void unmask_mips_irq(struct irq_data *d) |
41 | { | 40 | { |
diff --git a/arch/mips/kernel/kspd.c b/arch/mips/kernel/kspd.c index 29811f043399..84d0639e4580 100644 --- a/arch/mips/kernel/kspd.c +++ b/arch/mips/kernel/kspd.c | |||
@@ -326,7 +326,7 @@ static void sp_cleanup(void) | |||
326 | i = j * __NFDBITS; | 326 | i = j * __NFDBITS; |
327 | if (i >= fdt->max_fds) | 327 | if (i >= fdt->max_fds) |
328 | break; | 328 | break; |
329 | set = fdt->open_fds->fds_bits[j++]; | 329 | set = fdt->open_fds[j++]; |
330 | while (set) { | 330 | while (set) { |
331 | if (set & 1) { | 331 | if (set & 1) { |
332 | struct file * file = xchg(&fdt->fd[i], NULL); | 332 | struct file * file = xchg(&fdt->fd[i], NULL); |
diff --git a/arch/mips/kernel/mips-mt-fpaff.c b/arch/mips/kernel/mips-mt-fpaff.c index 802e6160f37e..33f63bab478a 100644 --- a/arch/mips/kernel/mips-mt-fpaff.c +++ b/arch/mips/kernel/mips-mt-fpaff.c | |||
@@ -173,7 +173,7 @@ asmlinkage long mipsmt_sys_sched_getaffinity(pid_t pid, unsigned int len, | |||
173 | if (retval) | 173 | if (retval) |
174 | goto out_unlock; | 174 | goto out_unlock; |
175 | 175 | ||
176 | cpus_and(mask, p->thread.user_cpus_allowed, cpu_possible_map); | 176 | cpumask_and(&mask, &p->thread.user_cpus_allowed, cpu_possible_mask); |
177 | 177 | ||
178 | out_unlock: | 178 | out_unlock: |
179 | read_unlock(&tasklist_lock); | 179 | read_unlock(&tasklist_lock); |
diff --git a/arch/mips/kernel/mips-mt.c b/arch/mips/kernel/mips-mt.c index b3b0b9464450..6ded9bd1489c 100644 --- a/arch/mips/kernel/mips-mt.c +++ b/arch/mips/kernel/mips-mt.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <asm/cpu.h> | 13 | #include <asm/cpu.h> |
14 | #include <asm/processor.h> | 14 | #include <asm/processor.h> |
15 | #include <linux/atomic.h> | 15 | #include <linux/atomic.h> |
16 | #include <asm/system.h> | ||
17 | #include <asm/hardirq.h> | 16 | #include <asm/hardirq.h> |
18 | #include <asm/mmu_context.h> | 17 | #include <asm/mmu_context.h> |
19 | #include <asm/mipsmtregs.h> | 18 | #include <asm/mipsmtregs.h> |
diff --git a/arch/mips/kernel/perf_event_mipsxx.c b/arch/mips/kernel/perf_event_mipsxx.c index e3b897acfbc0..811084f4e422 100644 --- a/arch/mips/kernel/perf_event_mipsxx.c +++ b/arch/mips/kernel/perf_event_mipsxx.c | |||
@@ -606,6 +606,10 @@ static int mipspmu_event_init(struct perf_event *event) | |||
606 | { | 606 | { |
607 | int err = 0; | 607 | int err = 0; |
608 | 608 | ||
609 | /* does not support taken branch sampling */ | ||
610 | if (has_branch_stack(event)) | ||
611 | return -EOPNOTSUPP; | ||
612 | |||
609 | switch (event->attr.type) { | 613 | switch (event->attr.type) { |
610 | case PERF_TYPE_RAW: | 614 | case PERF_TYPE_RAW: |
611 | case PERF_TYPE_HARDWARE: | 615 | case PERF_TYPE_HARDWARE: |
diff --git a/arch/mips/kernel/proc.c b/arch/mips/kernel/proc.c index e309665b6c81..f8b2c592514d 100644 --- a/arch/mips/kernel/proc.c +++ b/arch/mips/kernel/proc.c | |||
@@ -25,7 +25,7 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
25 | int i; | 25 | int i; |
26 | 26 | ||
27 | #ifdef CONFIG_SMP | 27 | #ifdef CONFIG_SMP |
28 | if (!cpu_isset(n, cpu_online_map)) | 28 | if (!cpu_online(n)) |
29 | return 0; | 29 | return 0; |
30 | #endif | 30 | #endif |
31 | 31 | ||
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c index 7955409051c4..e9a5fd7277f4 100644 --- a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <asm/dsp.h> | 32 | #include <asm/dsp.h> |
33 | #include <asm/fpu.h> | 33 | #include <asm/fpu.h> |
34 | #include <asm/pgtable.h> | 34 | #include <asm/pgtable.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/mipsregs.h> | 35 | #include <asm/mipsregs.h> |
37 | #include <asm/processor.h> | 36 | #include <asm/processor.h> |
38 | #include <asm/uaccess.h> | 37 | #include <asm/uaccess.h> |
@@ -80,9 +79,7 @@ void __noreturn cpu_idle(void) | |||
80 | #endif | 79 | #endif |
81 | rcu_idle_exit(); | 80 | rcu_idle_exit(); |
82 | tick_nohz_idle_exit(); | 81 | tick_nohz_idle_exit(); |
83 | preempt_enable_no_resched(); | 82 | schedule_preempt_disabled(); |
84 | schedule(); | ||
85 | preempt_disable(); | ||
86 | } | 83 | } |
87 | } | 84 | } |
88 | 85 | ||
diff --git a/arch/mips/kernel/prom.c b/arch/mips/kernel/prom.c index 6b8b4208481e..558b5395795d 100644 --- a/arch/mips/kernel/prom.c +++ b/arch/mips/kernel/prom.c | |||
@@ -60,20 +60,6 @@ void __init early_init_dt_setup_initrd_arch(unsigned long start, | |||
60 | } | 60 | } |
61 | #endif | 61 | #endif |
62 | 62 | ||
63 | /* | ||
64 | * irq_create_of_mapping - Hook to resolve OF irq specifier into a Linux irq# | ||
65 | * | ||
66 | * Currently the mapping mechanism is trivial; simple flat hwirq numbers are | ||
67 | * mapped 1:1 onto Linux irq numbers. Cascaded irq controllers are not | ||
68 | * supported. | ||
69 | */ | ||
70 | unsigned int irq_create_of_mapping(struct device_node *controller, | ||
71 | const u32 *intspec, unsigned int intsize) | ||
72 | { | ||
73 | return intspec[0]; | ||
74 | } | ||
75 | EXPORT_SYMBOL_GPL(irq_create_of_mapping); | ||
76 | |||
77 | void __init early_init_devtree(void *params) | 63 | void __init early_init_devtree(void *params) |
78 | { | 64 | { |
79 | /* Setup flat device-tree pointer */ | 65 | /* Setup flat device-tree pointer */ |
diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c index 7786b608d932..7c24c2973c6d 100644 --- a/arch/mips/kernel/ptrace.c +++ b/arch/mips/kernel/ptrace.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include <asm/mipsmtregs.h> | 34 | #include <asm/mipsmtregs.h> |
35 | #include <asm/pgtable.h> | 35 | #include <asm/pgtable.h> |
36 | #include <asm/page.h> | 36 | #include <asm/page.h> |
37 | #include <asm/system.h> | ||
38 | #include <asm/uaccess.h> | 37 | #include <asm/uaccess.h> |
39 | #include <asm/bootinfo.h> | 38 | #include <asm/bootinfo.h> |
40 | #include <asm/reg.h> | 39 | #include <asm/reg.h> |
diff --git a/arch/mips/kernel/ptrace32.c b/arch/mips/kernel/ptrace32.c index 32644b4a0714..a3b017815eff 100644 --- a/arch/mips/kernel/ptrace32.c +++ b/arch/mips/kernel/ptrace32.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <asm/mipsmtregs.h> | 32 | #include <asm/mipsmtregs.h> |
33 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
34 | #include <asm/page.h> | 34 | #include <asm/page.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/uaccess.h> | 35 | #include <asm/uaccess.h> |
37 | #include <asm/bootinfo.h> | 36 | #include <asm/bootinfo.h> |
38 | 37 | ||
diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c index a9d801dec6b0..b8c18dcdd2c4 100644 --- a/arch/mips/kernel/rtlx.c +++ b/arch/mips/kernel/rtlx.c | |||
@@ -38,7 +38,6 @@ | |||
38 | #include <linux/atomic.h> | 38 | #include <linux/atomic.h> |
39 | #include <asm/cpu.h> | 39 | #include <asm/cpu.h> |
40 | #include <asm/processor.h> | 40 | #include <asm/processor.h> |
41 | #include <asm/system.h> | ||
42 | #include <asm/vpe.h> | 41 | #include <asm/vpe.h> |
43 | #include <asm/rtlx.h> | 42 | #include <asm/rtlx.h> |
44 | 43 | ||
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index 058e964e7303..c504b212f8f3 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <asm/sections.h> | 31 | #include <asm/sections.h> |
32 | #include <asm/setup.h> | 32 | #include <asm/setup.h> |
33 | #include <asm/smp-ops.h> | 33 | #include <asm/smp-ops.h> |
34 | #include <asm/system.h> | ||
35 | #include <asm/prom.h> | 34 | #include <asm/prom.h> |
36 | 35 | ||
37 | struct cpuinfo_mips cpu_data[NR_CPUS] __read_mostly; | 36 | struct cpuinfo_mips cpu_data[NR_CPUS] __read_mostly; |
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c index f8524003676a..185ca00c4c84 100644 --- a/arch/mips/kernel/signal.c +++ b/arch/mips/kernel/signal.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <asm/cpu-features.h> | 34 | #include <asm/cpu-features.h> |
35 | #include <asm/war.h> | 35 | #include <asm/war.h> |
36 | #include <asm/vdso.h> | 36 | #include <asm/vdso.h> |
37 | #include <asm/dsp.h> | ||
37 | 38 | ||
38 | #include "signal-common.h" | 39 | #include "signal-common.h" |
39 | 40 | ||
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c index aae986613795..06b5da392e24 100644 --- a/arch/mips/kernel/signal32.c +++ b/arch/mips/kernel/signal32.c | |||
@@ -29,10 +29,10 @@ | |||
29 | #include <asm/cacheflush.h> | 29 | #include <asm/cacheflush.h> |
30 | #include <asm/sim.h> | 30 | #include <asm/sim.h> |
31 | #include <asm/ucontext.h> | 31 | #include <asm/ucontext.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/fpu.h> | 32 | #include <asm/fpu.h> |
34 | #include <asm/war.h> | 33 | #include <asm/war.h> |
35 | #include <asm/vdso.h> | 34 | #include <asm/vdso.h> |
35 | #include <asm/dsp.h> | ||
36 | 36 | ||
37 | #include "signal-common.h" | 37 | #include "signal-common.h" |
38 | 38 | ||
diff --git a/arch/mips/kernel/signal_n32.c b/arch/mips/kernel/signal_n32.c index ee24d814d5b9..ae29e894ab8d 100644 --- a/arch/mips/kernel/signal_n32.c +++ b/arch/mips/kernel/signal_n32.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <asm/sim.h> | 35 | #include <asm/sim.h> |
36 | #include <asm/uaccess.h> | 36 | #include <asm/uaccess.h> |
37 | #include <asm/ucontext.h> | 37 | #include <asm/ucontext.h> |
38 | #include <asm/system.h> | ||
39 | #include <asm/fpu.h> | 38 | #include <asm/fpu.h> |
40 | #include <asm/cpu-features.h> | 39 | #include <asm/cpu-features.h> |
41 | #include <asm/war.h> | 40 | #include <asm/war.h> |
diff --git a/arch/mips/kernel/smp-bmips.c b/arch/mips/kernel/smp-bmips.c index 58fe71afd879..3046e2986006 100644 --- a/arch/mips/kernel/smp-bmips.c +++ b/arch/mips/kernel/smp-bmips.c | |||
@@ -8,7 +8,6 @@ | |||
8 | * SMP support for BMIPS | 8 | * SMP support for BMIPS |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <linux/version.h> | ||
12 | #include <linux/init.h> | 11 | #include <linux/init.h> |
13 | #include <linux/sched.h> | 12 | #include <linux/sched.h> |
14 | #include <linux/mm.h> | 13 | #include <linux/mm.h> |
@@ -29,7 +28,6 @@ | |||
29 | #include <asm/time.h> | 28 | #include <asm/time.h> |
30 | #include <asm/pgtable.h> | 29 | #include <asm/pgtable.h> |
31 | #include <asm/processor.h> | 30 | #include <asm/processor.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/bootinfo.h> | 31 | #include <asm/bootinfo.h> |
34 | #include <asm/pmon.h> | 32 | #include <asm/pmon.h> |
35 | #include <asm/cacheflush.h> | 33 | #include <asm/cacheflush.h> |
@@ -319,7 +317,7 @@ static int bmips_cpu_disable(void) | |||
319 | 317 | ||
320 | pr_info("SMP: CPU%d is offline\n", cpu); | 318 | pr_info("SMP: CPU%d is offline\n", cpu); |
321 | 319 | ||
322 | cpu_clear(cpu, cpu_online_map); | 320 | set_cpu_online(cpu, false); |
323 | cpu_clear(cpu, cpu_callin_map); | 321 | cpu_clear(cpu, cpu_callin_map); |
324 | 322 | ||
325 | local_flush_tlb_all(); | 323 | local_flush_tlb_all(); |
diff --git a/arch/mips/kernel/smp-cmp.c b/arch/mips/kernel/smp-cmp.c index fe3095160655..e7e03ecf5495 100644 --- a/arch/mips/kernel/smp-cmp.c +++ b/arch/mips/kernel/smp-cmp.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <asm/cacheflush.h> | 29 | #include <asm/cacheflush.h> |
30 | #include <asm/cpu.h> | 30 | #include <asm/cpu.h> |
31 | #include <asm/processor.h> | 31 | #include <asm/processor.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/hardirq.h> | 32 | #include <asm/hardirq.h> |
34 | #include <asm/mmu_context.h> | 33 | #include <asm/mmu_context.h> |
35 | #include <asm/smp.h> | 34 | #include <asm/smp.h> |
diff --git a/arch/mips/kernel/smp-mt.c b/arch/mips/kernel/smp-mt.c index ce9e286f0a74..ff17868734cf 100644 --- a/arch/mips/kernel/smp-mt.c +++ b/arch/mips/kernel/smp-mt.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <asm/cacheflush.h> | 28 | #include <asm/cacheflush.h> |
29 | #include <asm/cpu.h> | 29 | #include <asm/cpu.h> |
30 | #include <asm/processor.h> | 30 | #include <asm/processor.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/hardirq.h> | 31 | #include <asm/hardirq.h> |
33 | #include <asm/mmu_context.h> | 32 | #include <asm/mmu_context.h> |
34 | #include <asm/time.h> | 33 | #include <asm/time.h> |
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index 32c1e954cd37..ba9376bf52a1 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c | |||
@@ -38,9 +38,9 @@ | |||
38 | #include <asm/cpu.h> | 38 | #include <asm/cpu.h> |
39 | #include <asm/processor.h> | 39 | #include <asm/processor.h> |
40 | #include <asm/r4k-timer.h> | 40 | #include <asm/r4k-timer.h> |
41 | #include <asm/system.h> | ||
42 | #include <asm/mmu_context.h> | 41 | #include <asm/mmu_context.h> |
43 | #include <asm/time.h> | 42 | #include <asm/time.h> |
43 | #include <asm/setup.h> | ||
44 | 44 | ||
45 | #ifdef CONFIG_MIPS_MT_SMTC | 45 | #ifdef CONFIG_MIPS_MT_SMTC |
46 | #include <asm/mipsmtregs.h> | 46 | #include <asm/mipsmtregs.h> |
@@ -148,7 +148,7 @@ static void stop_this_cpu(void *dummy) | |||
148 | /* | 148 | /* |
149 | * Remove this CPU: | 149 | * Remove this CPU: |
150 | */ | 150 | */ |
151 | cpu_clear(smp_processor_id(), cpu_online_map); | 151 | set_cpu_online(smp_processor_id(), false); |
152 | for (;;) { | 152 | for (;;) { |
153 | if (cpu_wait) | 153 | if (cpu_wait) |
154 | (*cpu_wait)(); /* Wait if available. */ | 154 | (*cpu_wait)(); /* Wait if available. */ |
@@ -174,7 +174,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
174 | mp_ops->prepare_cpus(max_cpus); | 174 | mp_ops->prepare_cpus(max_cpus); |
175 | set_cpu_sibling_map(0); | 175 | set_cpu_sibling_map(0); |
176 | #ifndef CONFIG_HOTPLUG_CPU | 176 | #ifndef CONFIG_HOTPLUG_CPU |
177 | init_cpu_present(&cpu_possible_map); | 177 | init_cpu_present(cpu_possible_mask); |
178 | #endif | 178 | #endif |
179 | } | 179 | } |
180 | 180 | ||
@@ -248,7 +248,7 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
248 | while (!cpu_isset(cpu, cpu_callin_map)) | 248 | while (!cpu_isset(cpu, cpu_callin_map)) |
249 | udelay(100); | 249 | udelay(100); |
250 | 250 | ||
251 | cpu_set(cpu, cpu_online_map); | 251 | set_cpu_online(cpu, true); |
252 | 252 | ||
253 | return 0; | 253 | return 0; |
254 | } | 254 | } |
@@ -320,13 +320,12 @@ void flush_tlb_mm(struct mm_struct *mm) | |||
320 | if ((atomic_read(&mm->mm_users) != 1) || (current->mm != mm)) { | 320 | if ((atomic_read(&mm->mm_users) != 1) || (current->mm != mm)) { |
321 | smp_on_other_tlbs(flush_tlb_mm_ipi, mm); | 321 | smp_on_other_tlbs(flush_tlb_mm_ipi, mm); |
322 | } else { | 322 | } else { |
323 | cpumask_t mask = cpu_online_map; | ||
324 | unsigned int cpu; | 323 | unsigned int cpu; |
325 | 324 | ||
326 | cpu_clear(smp_processor_id(), mask); | 325 | for_each_online_cpu(cpu) { |
327 | for_each_cpu_mask(cpu, mask) | 326 | if (cpu != smp_processor_id() && cpu_context(cpu, mm)) |
328 | if (cpu_context(cpu, mm)) | ||
329 | cpu_context(cpu, mm) = 0; | 327 | cpu_context(cpu, mm) = 0; |
328 | } | ||
330 | } | 329 | } |
331 | local_flush_tlb_mm(mm); | 330 | local_flush_tlb_mm(mm); |
332 | 331 | ||
@@ -360,13 +359,12 @@ void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned l | |||
360 | 359 | ||
361 | smp_on_other_tlbs(flush_tlb_range_ipi, &fd); | 360 | smp_on_other_tlbs(flush_tlb_range_ipi, &fd); |
362 | } else { | 361 | } else { |
363 | cpumask_t mask = cpu_online_map; | ||
364 | unsigned int cpu; | 362 | unsigned int cpu; |
365 | 363 | ||
366 | cpu_clear(smp_processor_id(), mask); | 364 | for_each_online_cpu(cpu) { |
367 | for_each_cpu_mask(cpu, mask) | 365 | if (cpu != smp_processor_id() && cpu_context(cpu, mm)) |
368 | if (cpu_context(cpu, mm)) | ||
369 | cpu_context(cpu, mm) = 0; | 366 | cpu_context(cpu, mm) = 0; |
367 | } | ||
370 | } | 368 | } |
371 | local_flush_tlb_range(vma, start, end); | 369 | local_flush_tlb_range(vma, start, end); |
372 | preempt_enable(); | 370 | preempt_enable(); |
@@ -407,13 +405,12 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long page) | |||
407 | 405 | ||
408 | smp_on_other_tlbs(flush_tlb_page_ipi, &fd); | 406 | smp_on_other_tlbs(flush_tlb_page_ipi, &fd); |
409 | } else { | 407 | } else { |
410 | cpumask_t mask = cpu_online_map; | ||
411 | unsigned int cpu; | 408 | unsigned int cpu; |
412 | 409 | ||
413 | cpu_clear(smp_processor_id(), mask); | 410 | for_each_online_cpu(cpu) { |
414 | for_each_cpu_mask(cpu, mask) | 411 | if (cpu != smp_processor_id() && cpu_context(cpu, vma->vm_mm)) |
415 | if (cpu_context(cpu, vma->vm_mm)) | ||
416 | cpu_context(cpu, vma->vm_mm) = 0; | 412 | cpu_context(cpu, vma->vm_mm) = 0; |
413 | } | ||
417 | } | 414 | } |
418 | local_flush_tlb_page(vma, page); | 415 | local_flush_tlb_page(vma, page); |
419 | preempt_enable(); | 416 | preempt_enable(); |
diff --git a/arch/mips/kernel/smtc-proc.c b/arch/mips/kernel/smtc-proc.c index 928a5a61e1a6..145771c0ed7a 100644 --- a/arch/mips/kernel/smtc-proc.c +++ b/arch/mips/kernel/smtc-proc.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <asm/cpu.h> | 11 | #include <asm/cpu.h> |
12 | #include <asm/processor.h> | 12 | #include <asm/processor.h> |
13 | #include <linux/atomic.h> | 13 | #include <linux/atomic.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/hardirq.h> | 14 | #include <asm/hardirq.h> |
16 | #include <asm/mmu_context.h> | 15 | #include <asm/mmu_context.h> |
17 | #include <asm/mipsregs.h> | 16 | #include <asm/mipsregs.h> |
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c index 0a42ff3ff6a1..f5dd38f1d015 100644 --- a/arch/mips/kernel/smtc.c +++ b/arch/mips/kernel/smtc.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <asm/cpu.h> | 31 | #include <asm/cpu.h> |
32 | #include <asm/processor.h> | 32 | #include <asm/processor.h> |
33 | #include <linux/atomic.h> | 33 | #include <linux/atomic.h> |
34 | #include <asm/system.h> | ||
35 | #include <asm/hardirq.h> | 34 | #include <asm/hardirq.h> |
36 | #include <asm/hazards.h> | 35 | #include <asm/hazards.h> |
37 | #include <asm/irq.h> | 36 | #include <asm/irq.h> |
@@ -292,7 +291,7 @@ static void smtc_configure_tlb(void) | |||
292 | * possibly leave some TCs/VPEs as "slave" processors. | 291 | * possibly leave some TCs/VPEs as "slave" processors. |
293 | * | 292 | * |
294 | * Use c0_MVPConf0 to find out how many TCs are available, setting up | 293 | * Use c0_MVPConf0 to find out how many TCs are available, setting up |
295 | * cpu_possible_map and the logical/physical mappings. | 294 | * cpu_possible_mask and the logical/physical mappings. |
296 | */ | 295 | */ |
297 | 296 | ||
298 | int __init smtc_build_cpu_map(int start_cpu_slot) | 297 | int __init smtc_build_cpu_map(int start_cpu_slot) |
diff --git a/arch/mips/kernel/spram.c b/arch/mips/kernel/spram.c index 1821d12a6410..6af08d896e20 100644 --- a/arch/mips/kernel/spram.c +++ b/arch/mips/kernel/spram.c | |||
@@ -15,7 +15,6 @@ | |||
15 | 15 | ||
16 | #include <asm/fpu.h> | 16 | #include <asm/fpu.h> |
17 | #include <asm/mipsregs.h> | 17 | #include <asm/mipsregs.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/r4kcache.h> | 18 | #include <asm/r4kcache.h> |
20 | #include <asm/hazards.h> | 19 | #include <asm/hazards.h> |
21 | 20 | ||
diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c index d02765708ddb..b08220c82113 100644 --- a/arch/mips/kernel/syscall.c +++ b/arch/mips/kernel/syscall.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <asm/shmparam.h> | 37 | #include <asm/shmparam.h> |
38 | #include <asm/sysmips.h> | 38 | #include <asm/sysmips.h> |
39 | #include <asm/uaccess.h> | 39 | #include <asm/uaccess.h> |
40 | #include <asm/switch_to.h> | ||
40 | 41 | ||
41 | /* | 42 | /* |
42 | * For historic reasons the pipe(2) syscall on MIPS has an unusual calling | 43 | * For historic reasons the pipe(2) syscall on MIPS has an unusual calling |
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index cc4a3f120f54..cfdaaa4cffc0 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -45,7 +45,6 @@ | |||
45 | #include <asm/pgtable.h> | 45 | #include <asm/pgtable.h> |
46 | #include <asm/ptrace.h> | 46 | #include <asm/ptrace.h> |
47 | #include <asm/sections.h> | 47 | #include <asm/sections.h> |
48 | #include <asm/system.h> | ||
49 | #include <asm/tlbdebug.h> | 48 | #include <asm/tlbdebug.h> |
50 | #include <asm/traps.h> | 49 | #include <asm/traps.h> |
51 | #include <asm/uaccess.h> | 50 | #include <asm/uaccess.h> |
@@ -1135,7 +1134,7 @@ asmlinkage void do_mt(struct pt_regs *regs) | |||
1135 | printk(KERN_DEBUG "YIELD Scheduler Exception\n"); | 1134 | printk(KERN_DEBUG "YIELD Scheduler Exception\n"); |
1136 | break; | 1135 | break; |
1137 | case 5: | 1136 | case 5: |
1138 | printk(KERN_DEBUG "Gating Storage Schedulier Exception\n"); | 1137 | printk(KERN_DEBUG "Gating Storage Scheduler Exception\n"); |
1139 | break; | 1138 | break; |
1140 | default: | 1139 | default: |
1141 | printk(KERN_DEBUG "*** UNKNOWN THREAD EXCEPTION %d ***\n", | 1140 | printk(KERN_DEBUG "*** UNKNOWN THREAD EXCEPTION %d ***\n", |
diff --git a/arch/mips/kernel/unaligned.c b/arch/mips/kernel/unaligned.c index aedb8941caa5..9c58bdf58f23 100644 --- a/arch/mips/kernel/unaligned.c +++ b/arch/mips/kernel/unaligned.c | |||
@@ -85,7 +85,6 @@ | |||
85 | #include <asm/cop2.h> | 85 | #include <asm/cop2.h> |
86 | #include <asm/inst.h> | 86 | #include <asm/inst.h> |
87 | #include <asm/uaccess.h> | 87 | #include <asm/uaccess.h> |
88 | #include <asm/system.h> | ||
89 | 88 | ||
90 | #define STR(x) __STR(x) | 89 | #define STR(x) __STR(x) |
91 | #define __STR(x) #x | 90 | #define __STR(x) #x |
diff --git a/arch/mips/kernel/vdso.c b/arch/mips/kernel/vdso.c index e5cdfd603f8f..0f1af58b036a 100644 --- a/arch/mips/kernel/vdso.c +++ b/arch/mips/kernel/vdso.c | |||
@@ -88,8 +88,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
88 | 88 | ||
89 | ret = install_special_mapping(mm, addr, PAGE_SIZE, | 89 | ret = install_special_mapping(mm, addr, PAGE_SIZE, |
90 | VM_READ|VM_EXEC| | 90 | VM_READ|VM_EXEC| |
91 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| | 91 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC, |
92 | VM_ALWAYSDUMP, | ||
93 | &vdso_page); | 92 | &vdso_page); |
94 | 93 | ||
95 | if (ret) | 94 | if (ret) |
diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S index a81176f44c74..924da5eb7031 100644 --- a/arch/mips/kernel/vmlinux.lds.S +++ b/arch/mips/kernel/vmlinux.lds.S | |||
@@ -69,7 +69,6 @@ SECTIONS | |||
69 | RODATA | 69 | RODATA |
70 | 70 | ||
71 | /* writeable */ | 71 | /* writeable */ |
72 | _sdata = .; /* Start of data section */ | ||
73 | .data : { /* Data */ | 72 | .data : { /* Data */ |
74 | . = . + DATAOFFSET; /* for CONFIG_MAPPED_KERNEL */ | 73 | . = . + DATAOFFSET; /* for CONFIG_MAPPED_KERNEL */ |
75 | 74 | ||
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c index bfa12a4f97b9..f6f91523cb1c 100644 --- a/arch/mips/kernel/vpe.c +++ b/arch/mips/kernel/vpe.c | |||
@@ -49,7 +49,6 @@ | |||
49 | #include <asm/cpu.h> | 49 | #include <asm/cpu.h> |
50 | #include <asm/mips_mt.h> | 50 | #include <asm/mips_mt.h> |
51 | #include <asm/processor.h> | 51 | #include <asm/processor.h> |
52 | #include <asm/system.h> | ||
53 | #include <asm/vpe.h> | 52 | #include <asm/vpe.h> |
54 | #include <asm/kspd.h> | 53 | #include <asm/kspd.h> |
55 | 54 | ||
diff --git a/arch/mips/lasat/reset.c b/arch/mips/lasat/reset.c index b1e7a89fb730..e21f0b9a586e 100644 --- a/arch/mips/lasat/reset.c +++ b/arch/mips/lasat/reset.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/pm.h> | 21 | #include <linux/pm.h> |
22 | 22 | ||
23 | #include <asm/reboot.h> | 23 | #include <asm/reboot.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/lasat/lasat.h> | 24 | #include <asm/lasat/lasat.h> |
26 | 25 | ||
27 | #include "picvue.h" | 26 | #include "picvue.h" |
diff --git a/arch/mips/lib/iomap-pci.c b/arch/mips/lib/iomap-pci.c index 2635b1a96333..fd35daa45314 100644 --- a/arch/mips/lib/iomap-pci.c +++ b/arch/mips/lib/iomap-pci.c | |||
@@ -10,8 +10,8 @@ | |||
10 | #include <linux/module.h> | 10 | #include <linux/module.h> |
11 | #include <asm/io.h> | 11 | #include <asm/io.h> |
12 | 12 | ||
13 | static void __iomem *ioport_map_pci(struct pci_dev *dev, | 13 | void __iomem *__pci_ioport_map(struct pci_dev *dev, |
14 | unsigned long port, unsigned int nr) | 14 | unsigned long port, unsigned int nr) |
15 | { | 15 | { |
16 | struct pci_controller *ctrl = dev->bus->sysdata; | 16 | struct pci_controller *ctrl = dev->bus->sysdata; |
17 | unsigned long base = ctrl->io_map_base; | 17 | unsigned long base = ctrl->io_map_base; |
diff --git a/arch/mips/math-emu/dsemul.c b/arch/mips/math-emu/dsemul.c index 3c4a8c5ba7f2..384a3b0091ea 100644 --- a/arch/mips/math-emu/dsemul.c +++ b/arch/mips/math-emu/dsemul.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/uaccess.h> | 12 | #include <asm/uaccess.h> |
13 | #include <asm/branch.h> | 13 | #include <asm/branch.h> |
14 | #include <asm/mipsregs.h> | 14 | #include <asm/mipsregs.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/cacheflush.h> | 15 | #include <asm/cacheflush.h> |
17 | 16 | ||
18 | #include <asm/fpu_emulator.h> | 17 | #include <asm/fpu_emulator.h> |
diff --git a/arch/mips/mipssim/sim_smtc.c b/arch/mips/mipssim/sim_smtc.c index 915063991f6e..3c104abd8aa5 100644 --- a/arch/mips/mipssim/sim_smtc.c +++ b/arch/mips/mipssim/sim_smtc.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <asm/cpu.h> | 28 | #include <asm/cpu.h> |
29 | #include <asm/processor.h> | 29 | #include <asm/processor.h> |
30 | #include <asm/smtc.h> | 30 | #include <asm/smtc.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/mmu_context.h> | 31 | #include <asm/mmu_context.h> |
33 | #include <asm/smtc_ipi.h> | 32 | #include <asm/smtc_ipi.h> |
34 | 33 | ||
diff --git a/arch/mips/mipssim/sim_time.c b/arch/mips/mipssim/sim_time.c index 5492c42f7650..77bad3c04280 100644 --- a/arch/mips/mipssim/sim_time.c +++ b/arch/mips/mipssim/sim_time.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <asm/hardirq.h> | 11 | #include <asm/hardirq.h> |
12 | #include <asm/div64.h> | 12 | #include <asm/div64.h> |
13 | #include <asm/cpu.h> | 13 | #include <asm/cpu.h> |
14 | #include <asm/setup.h> | ||
14 | #include <asm/time.h> | 15 | #include <asm/time.h> |
15 | #include <asm/irq.h> | 16 | #include <asm/irq.h> |
16 | #include <asm/mc146818-time.h> | 17 | #include <asm/mc146818-time.h> |
diff --git a/arch/mips/mm/c-octeon.c b/arch/mips/mm/c-octeon.c index cf7895db0739..47037ec5589b 100644 --- a/arch/mips/mm/c-octeon.c +++ b/arch/mips/mm/c-octeon.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <asm/page.h> | 21 | #include <asm/page.h> |
22 | #include <asm/pgtable.h> | 22 | #include <asm/pgtable.h> |
23 | #include <asm/r4kcache.h> | 23 | #include <asm/r4kcache.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/mmu_context.h> | 24 | #include <asm/mmu_context.h> |
26 | #include <asm/war.h> | 25 | #include <asm/war.h> |
27 | 26 | ||
@@ -81,9 +80,9 @@ static void octeon_flush_icache_all_cores(struct vm_area_struct *vma) | |||
81 | if (vma) | 80 | if (vma) |
82 | mask = *mm_cpumask(vma->vm_mm); | 81 | mask = *mm_cpumask(vma->vm_mm); |
83 | else | 82 | else |
84 | mask = cpu_online_map; | 83 | mask = *cpu_online_mask; |
85 | cpu_clear(cpu, mask); | 84 | cpumask_clear_cpu(cpu, &mask); |
86 | for_each_cpu_mask(cpu, mask) | 85 | for_each_cpu(cpu, &mask) |
87 | octeon_send_ipi_single(cpu, SMP_ICACHE_FLUSH); | 86 | octeon_send_ipi_single(cpu, SMP_ICACHE_FLUSH); |
88 | 87 | ||
89 | preempt_enable(); | 88 | preempt_enable(); |
diff --git a/arch/mips/mm/c-r3k.c b/arch/mips/mm/c-r3k.c index 0765583d0c92..031c4c2cdf2e 100644 --- a/arch/mips/mm/c-r3k.c +++ b/arch/mips/mm/c-r3k.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <asm/page.h> | 18 | #include <asm/page.h> |
19 | #include <asm/pgtable.h> | 19 | #include <asm/pgtable.h> |
20 | #include <asm/mmu_context.h> | 20 | #include <asm/mmu_context.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/isadep.h> | 21 | #include <asm/isadep.h> |
23 | #include <asm/io.h> | 22 | #include <asm/io.h> |
24 | #include <asm/bootinfo.h> | 23 | #include <asm/bootinfo.h> |
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c index 4f9eb0b23036..bda8eb26ece7 100644 --- a/arch/mips/mm/c-r4k.c +++ b/arch/mips/mm/c-r4k.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <asm/pgtable.h> | 29 | #include <asm/pgtable.h> |
30 | #include <asm/r4kcache.h> | 30 | #include <asm/r4kcache.h> |
31 | #include <asm/sections.h> | 31 | #include <asm/sections.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/mmu_context.h> | 32 | #include <asm/mmu_context.h> |
34 | #include <asm/war.h> | 33 | #include <asm/war.h> |
35 | #include <asm/cacheflush.h> /* for run_uncached() */ | 34 | #include <asm/cacheflush.h> /* for run_uncached() */ |
@@ -498,7 +497,7 @@ static inline void local_r4k_flush_cache_page(void *args) | |||
498 | if (map_coherent) | 497 | if (map_coherent) |
499 | vaddr = kmap_coherent(page, addr); | 498 | vaddr = kmap_coherent(page, addr); |
500 | else | 499 | else |
501 | vaddr = kmap_atomic(page, KM_USER0); | 500 | vaddr = kmap_atomic(page); |
502 | addr = (unsigned long)vaddr; | 501 | addr = (unsigned long)vaddr; |
503 | } | 502 | } |
504 | 503 | ||
@@ -521,7 +520,7 @@ static inline void local_r4k_flush_cache_page(void *args) | |||
521 | if (map_coherent) | 520 | if (map_coherent) |
522 | kunmap_coherent(); | 521 | kunmap_coherent(); |
523 | else | 522 | else |
524 | kunmap_atomic(vaddr, KM_USER0); | 523 | kunmap_atomic(vaddr); |
525 | } | 524 | } |
526 | } | 525 | } |
527 | 526 | ||
diff --git a/arch/mips/mm/c-tx39.c b/arch/mips/mm/c-tx39.c index a43c197ccf8c..87d23cada6d6 100644 --- a/arch/mips/mm/c-tx39.c +++ b/arch/mips/mm/c-tx39.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <asm/page.h> | 18 | #include <asm/page.h> |
19 | #include <asm/pgtable.h> | 19 | #include <asm/pgtable.h> |
20 | #include <asm/mmu_context.h> | 20 | #include <asm/mmu_context.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/isadep.h> | 21 | #include <asm/isadep.h> |
23 | #include <asm/io.h> | 22 | #include <asm/io.h> |
24 | #include <asm/bootinfo.h> | 23 | #include <asm/bootinfo.h> |
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c index 46084912e588..3fab2046c8a4 100644 --- a/arch/mips/mm/dma-default.c +++ b/arch/mips/mm/dma-default.c | |||
@@ -98,7 +98,7 @@ void *dma_alloc_noncoherent(struct device *dev, size_t size, | |||
98 | EXPORT_SYMBOL(dma_alloc_noncoherent); | 98 | EXPORT_SYMBOL(dma_alloc_noncoherent); |
99 | 99 | ||
100 | static void *mips_dma_alloc_coherent(struct device *dev, size_t size, | 100 | static void *mips_dma_alloc_coherent(struct device *dev, size_t size, |
101 | dma_addr_t * dma_handle, gfp_t gfp) | 101 | dma_addr_t * dma_handle, gfp_t gfp, struct dma_attrs *attrs) |
102 | { | 102 | { |
103 | void *ret; | 103 | void *ret; |
104 | 104 | ||
@@ -132,7 +132,7 @@ void dma_free_noncoherent(struct device *dev, size_t size, void *vaddr, | |||
132 | EXPORT_SYMBOL(dma_free_noncoherent); | 132 | EXPORT_SYMBOL(dma_free_noncoherent); |
133 | 133 | ||
134 | static void mips_dma_free_coherent(struct device *dev, size_t size, void *vaddr, | 134 | static void mips_dma_free_coherent(struct device *dev, size_t size, void *vaddr, |
135 | dma_addr_t dma_handle) | 135 | dma_addr_t dma_handle, struct dma_attrs *attrs) |
136 | { | 136 | { |
137 | unsigned long addr = (unsigned long) vaddr; | 137 | unsigned long addr = (unsigned long) vaddr; |
138 | int order = get_order(size); | 138 | int order = get_order(size); |
@@ -323,8 +323,8 @@ void dma_cache_sync(struct device *dev, void *vaddr, size_t size, | |||
323 | EXPORT_SYMBOL(dma_cache_sync); | 323 | EXPORT_SYMBOL(dma_cache_sync); |
324 | 324 | ||
325 | static struct dma_map_ops mips_default_dma_map_ops = { | 325 | static struct dma_map_ops mips_default_dma_map_ops = { |
326 | .alloc_coherent = mips_dma_alloc_coherent, | 326 | .alloc = mips_dma_alloc_coherent, |
327 | .free_coherent = mips_dma_free_coherent, | 327 | .free = mips_dma_free_coherent, |
328 | .map_page = mips_dma_map_page, | 328 | .map_page = mips_dma_map_page, |
329 | .unmap_page = mips_dma_unmap_page, | 329 | .unmap_page = mips_dma_unmap_page, |
330 | .map_sg = mips_dma_map_sg, | 330 | .map_sg = mips_dma_map_sg, |
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c index 937cf3368164..c14f6dfed995 100644 --- a/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c | |||
@@ -22,7 +22,6 @@ | |||
22 | 22 | ||
23 | #include <asm/branch.h> | 23 | #include <asm/branch.h> |
24 | #include <asm/mmu_context.h> | 24 | #include <asm/mmu_context.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/uaccess.h> | 25 | #include <asm/uaccess.h> |
27 | #include <asm/ptrace.h> | 26 | #include <asm/ptrace.h> |
28 | #include <asm/highmem.h> /* For VMALLOC_END */ | 27 | #include <asm/highmem.h> /* For VMALLOC_END */ |
@@ -42,6 +41,8 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, unsigned long writ | |||
42 | const int field = sizeof(unsigned long) * 2; | 41 | const int field = sizeof(unsigned long) * 2; |
43 | siginfo_t info; | 42 | siginfo_t info; |
44 | int fault; | 43 | int fault; |
44 | unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE | | ||
45 | (write ? FAULT_FLAG_WRITE : 0); | ||
45 | 46 | ||
46 | #if 0 | 47 | #if 0 |
47 | printk("Cpu%d[%s:%d:%0*lx:%ld:%0*lx]\n", raw_smp_processor_id(), | 48 | printk("Cpu%d[%s:%d:%0*lx:%ld:%0*lx]\n", raw_smp_processor_id(), |
@@ -91,6 +92,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, unsigned long writ | |||
91 | if (in_atomic() || !mm) | 92 | if (in_atomic() || !mm) |
92 | goto bad_area_nosemaphore; | 93 | goto bad_area_nosemaphore; |
93 | 94 | ||
95 | retry: | ||
94 | down_read(&mm->mmap_sem); | 96 | down_read(&mm->mmap_sem); |
95 | vma = find_vma(mm, address); | 97 | vma = find_vma(mm, address); |
96 | if (!vma) | 98 | if (!vma) |
@@ -144,7 +146,11 @@ good_area: | |||
144 | * make sure we exit gracefully rather than endlessly redo | 146 | * make sure we exit gracefully rather than endlessly redo |
145 | * the fault. | 147 | * the fault. |
146 | */ | 148 | */ |
147 | fault = handle_mm_fault(mm, vma, address, write ? FAULT_FLAG_WRITE : 0); | 149 | fault = handle_mm_fault(mm, vma, address, flags); |
150 | |||
151 | if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current)) | ||
152 | return; | ||
153 | |||
148 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); | 154 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); |
149 | if (unlikely(fault & VM_FAULT_ERROR)) { | 155 | if (unlikely(fault & VM_FAULT_ERROR)) { |
150 | if (fault & VM_FAULT_OOM) | 156 | if (fault & VM_FAULT_OOM) |
@@ -153,12 +159,27 @@ good_area: | |||
153 | goto do_sigbus; | 159 | goto do_sigbus; |
154 | BUG(); | 160 | BUG(); |
155 | } | 161 | } |
156 | if (fault & VM_FAULT_MAJOR) { | 162 | if (flags & FAULT_FLAG_ALLOW_RETRY) { |
157 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, regs, address); | 163 | if (fault & VM_FAULT_MAJOR) { |
158 | tsk->maj_flt++; | 164 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, |
159 | } else { | 165 | regs, address); |
160 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, regs, address); | 166 | tsk->maj_flt++; |
161 | tsk->min_flt++; | 167 | } else { |
168 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, | ||
169 | regs, address); | ||
170 | tsk->min_flt++; | ||
171 | } | ||
172 | if (fault & VM_FAULT_RETRY) { | ||
173 | flags &= ~FAULT_FLAG_ALLOW_RETRY; | ||
174 | |||
175 | /* | ||
176 | * No need to up_read(&mm->mmap_sem) as we would | ||
177 | * have already released it in __lock_page_or_retry | ||
178 | * in mm/filemap.c. | ||
179 | */ | ||
180 | |||
181 | goto retry; | ||
182 | } | ||
162 | } | 183 | } |
163 | 184 | ||
164 | up_read(&mm->mmap_sem); | 185 | up_read(&mm->mmap_sem); |
diff --git a/arch/mips/mm/highmem.c b/arch/mips/mm/highmem.c index 3634c7ea06ac..aff57057a949 100644 --- a/arch/mips/mm/highmem.c +++ b/arch/mips/mm/highmem.c | |||
@@ -41,7 +41,7 @@ EXPORT_SYMBOL(kunmap); | |||
41 | * kmaps are appropriate for short, tight code paths only. | 41 | * kmaps are appropriate for short, tight code paths only. |
42 | */ | 42 | */ |
43 | 43 | ||
44 | void *__kmap_atomic(struct page *page) | 44 | void *kmap_atomic(struct page *page) |
45 | { | 45 | { |
46 | unsigned long vaddr; | 46 | unsigned long vaddr; |
47 | int idx, type; | 47 | int idx, type; |
@@ -62,7 +62,7 @@ void *__kmap_atomic(struct page *page) | |||
62 | 62 | ||
63 | return (void*) vaddr; | 63 | return (void*) vaddr; |
64 | } | 64 | } |
65 | EXPORT_SYMBOL(__kmap_atomic); | 65 | EXPORT_SYMBOL(kmap_atomic); |
66 | 66 | ||
67 | void __kunmap_atomic(void *kvaddr) | 67 | void __kunmap_atomic(void *kvaddr) |
68 | { | 68 | { |
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c index 3b3ffd439cd7..1a85ba92eb5c 100644 --- a/arch/mips/mm/init.c +++ b/arch/mips/mm/init.c | |||
@@ -207,21 +207,21 @@ void copy_user_highpage(struct page *to, struct page *from, | |||
207 | { | 207 | { |
208 | void *vfrom, *vto; | 208 | void *vfrom, *vto; |
209 | 209 | ||
210 | vto = kmap_atomic(to, KM_USER1); | 210 | vto = kmap_atomic(to); |
211 | if (cpu_has_dc_aliases && | 211 | if (cpu_has_dc_aliases && |
212 | page_mapped(from) && !Page_dcache_dirty(from)) { | 212 | page_mapped(from) && !Page_dcache_dirty(from)) { |
213 | vfrom = kmap_coherent(from, vaddr); | 213 | vfrom = kmap_coherent(from, vaddr); |
214 | copy_page(vto, vfrom); | 214 | copy_page(vto, vfrom); |
215 | kunmap_coherent(); | 215 | kunmap_coherent(); |
216 | } else { | 216 | } else { |
217 | vfrom = kmap_atomic(from, KM_USER0); | 217 | vfrom = kmap_atomic(from); |
218 | copy_page(vto, vfrom); | 218 | copy_page(vto, vfrom); |
219 | kunmap_atomic(vfrom, KM_USER0); | 219 | kunmap_atomic(vfrom); |
220 | } | 220 | } |
221 | if ((!cpu_has_ic_fills_f_dc) || | 221 | if ((!cpu_has_ic_fills_f_dc) || |
222 | pages_do_alias((unsigned long)vto, vaddr & PAGE_MASK)) | 222 | pages_do_alias((unsigned long)vto, vaddr & PAGE_MASK)) |
223 | flush_data_cache_page((unsigned long)vto); | 223 | flush_data_cache_page((unsigned long)vto); |
224 | kunmap_atomic(vto, KM_USER1); | 224 | kunmap_atomic(vto); |
225 | /* Make sure this page is cleared on other CPU's too before using it */ | 225 | /* Make sure this page is cleared on other CPU's too before using it */ |
226 | smp_wmb(); | 226 | smp_wmb(); |
227 | } | 227 | } |
diff --git a/arch/mips/mm/page.c b/arch/mips/mm/page.c index 36272f7d3744..cc0b626858b3 100644 --- a/arch/mips/mm/page.c +++ b/arch/mips/mm/page.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/page.h> | 22 | #include <asm/page.h> |
23 | #include <asm/pgtable.h> | 23 | #include <asm/pgtable.h> |
24 | #include <asm/prefetch.h> | 24 | #include <asm/prefetch.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/bootinfo.h> | 25 | #include <asm/bootinfo.h> |
27 | #include <asm/mipsregs.h> | 26 | #include <asm/mipsregs.h> |
28 | #include <asm/mmu_context.h> | 27 | #include <asm/mmu_context.h> |
diff --git a/arch/mips/mm/sc-ip22.c b/arch/mips/mm/sc-ip22.c index a6bd11fba7bf..1eb708ef75ff 100644 --- a/arch/mips/mm/sc-ip22.c +++ b/arch/mips/mm/sc-ip22.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/bcache.h> | 12 | #include <asm/bcache.h> |
13 | #include <asm/page.h> | 13 | #include <asm/page.h> |
14 | #include <asm/pgtable.h> | 14 | #include <asm/pgtable.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/bootinfo.h> | 15 | #include <asm/bootinfo.h> |
17 | #include <asm/sgi/ip22.h> | 16 | #include <asm/sgi/ip22.h> |
18 | #include <asm/sgi/mc.h> | 17 | #include <asm/sgi/mc.h> |
diff --git a/arch/mips/mm/sc-mips.c b/arch/mips/mm/sc-mips.c index 9cca8de00545..93d937b4b1ba 100644 --- a/arch/mips/mm/sc-mips.c +++ b/arch/mips/mm/sc-mips.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <asm/cacheops.h> | 11 | #include <asm/cacheops.h> |
12 | #include <asm/page.h> | 12 | #include <asm/page.h> |
13 | #include <asm/pgtable.h> | 13 | #include <asm/pgtable.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/mmu_context.h> | 14 | #include <asm/mmu_context.h> |
16 | #include <asm/r4kcache.h> | 15 | #include <asm/r4kcache.h> |
17 | 16 | ||
diff --git a/arch/mips/mm/sc-r5k.c b/arch/mips/mm/sc-r5k.c index ae1e533a096e..8d90ff25b123 100644 --- a/arch/mips/mm/sc-r5k.c +++ b/arch/mips/mm/sc-r5k.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/cacheops.h> | 12 | #include <asm/cacheops.h> |
13 | #include <asm/page.h> | 13 | #include <asm/page.h> |
14 | #include <asm/pgtable.h> | 14 | #include <asm/pgtable.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/mmu_context.h> | 15 | #include <asm/mmu_context.h> |
17 | #include <asm/r4kcache.h> | 16 | #include <asm/r4kcache.h> |
18 | 17 | ||
diff --git a/arch/mips/mm/tlb-r3k.c b/arch/mips/mm/tlb-r3k.c index ed1fa460f84e..a63d1ed0827f 100644 --- a/arch/mips/mm/tlb-r3k.c +++ b/arch/mips/mm/tlb-r3k.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/page.h> | 19 | #include <asm/page.h> |
20 | #include <asm/pgtable.h> | 20 | #include <asm/pgtable.h> |
21 | #include <asm/mmu_context.h> | 21 | #include <asm/mmu_context.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/tlbmisc.h> | 22 | #include <asm/tlbmisc.h> |
24 | #include <asm/isadep.h> | 23 | #include <asm/isadep.h> |
25 | #include <asm/io.h> | 24 | #include <asm/io.h> |
diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c index 2dc625346c40..d2572cb232db 100644 --- a/arch/mips/mm/tlb-r4k.c +++ b/arch/mips/mm/tlb-r4k.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <asm/bootinfo.h> | 18 | #include <asm/bootinfo.h> |
19 | #include <asm/mmu_context.h> | 19 | #include <asm/mmu_context.h> |
20 | #include <asm/pgtable.h> | 20 | #include <asm/pgtable.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/tlbmisc.h> | 21 | #include <asm/tlbmisc.h> |
23 | 22 | ||
24 | extern void build_tlb_refill_handler(void); | 23 | extern void build_tlb_refill_handler(void); |
diff --git a/arch/mips/mm/tlb-r8k.c b/arch/mips/mm/tlb-r8k.c index 3d95f76c106b..91c2499f806a 100644 --- a/arch/mips/mm/tlb-r8k.c +++ b/arch/mips/mm/tlb-r8k.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <asm/bootinfo.h> | 17 | #include <asm/bootinfo.h> |
18 | #include <asm/mmu_context.h> | 18 | #include <asm/mmu_context.h> |
19 | #include <asm/pgtable.h> | 19 | #include <asm/pgtable.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | extern void build_tlb_refill_handler(void); | 21 | extern void build_tlb_refill_handler(void); |
23 | 22 | ||
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c index e06370f58ef3..0bc485b3cd60 100644 --- a/arch/mips/mm/tlbex.c +++ b/arch/mips/mm/tlbex.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
33 | #include <asm/war.h> | 33 | #include <asm/war.h> |
34 | #include <asm/uasm.h> | 34 | #include <asm/uasm.h> |
35 | #include <asm/setup.h> | ||
35 | 36 | ||
36 | /* | 37 | /* |
37 | * TLB load/store/modify handlers. | 38 | * TLB load/store/modify handlers. |
diff --git a/arch/mips/mti-malta/malta-init.c b/arch/mips/mti-malta/malta-init.c index 4b988b9a30d5..27a6cdb36e37 100644 --- a/arch/mips/mti-malta/malta-init.c +++ b/arch/mips/mti-malta/malta-init.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <asm/bootinfo.h> | 26 | #include <asm/bootinfo.h> |
27 | #include <asm/gt64120.h> | 27 | #include <asm/gt64120.h> |
28 | #include <asm/io.h> | 28 | #include <asm/io.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/cacheflush.h> | 29 | #include <asm/cacheflush.h> |
31 | #include <asm/smp-ops.h> | 30 | #include <asm/smp-ops.h> |
32 | #include <asm/traps.h> | 31 | #include <asm/traps.h> |
diff --git a/arch/mips/mti-malta/malta-int.c b/arch/mips/mti-malta/malta-int.c index a588b5cef8d2..7b13a4caeea4 100644 --- a/arch/mips/mti-malta/malta-int.c +++ b/arch/mips/mti-malta/malta-int.c | |||
@@ -44,6 +44,7 @@ | |||
44 | #include <asm/msc01_ic.h> | 44 | #include <asm/msc01_ic.h> |
45 | #include <asm/gic.h> | 45 | #include <asm/gic.h> |
46 | #include <asm/gcmpregs.h> | 46 | #include <asm/gcmpregs.h> |
47 | #include <asm/setup.h> | ||
47 | 48 | ||
48 | int gcmp_present = -1; | 49 | int gcmp_present = -1; |
49 | int gic_present; | 50 | int gic_present; |
diff --git a/arch/mips/mti-malta/malta-time.c b/arch/mips/mti-malta/malta-time.c index f8ee945ee411..115f5bc06003 100644 --- a/arch/mips/mti-malta/malta-time.c +++ b/arch/mips/mti-malta/malta-time.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <asm/irq.h> | 35 | #include <asm/irq.h> |
36 | #include <asm/div64.h> | 36 | #include <asm/div64.h> |
37 | #include <asm/cpu.h> | 37 | #include <asm/cpu.h> |
38 | #include <asm/setup.h> | ||
38 | #include <asm/time.h> | 39 | #include <asm/time.h> |
39 | #include <asm/mc146818-time.h> | 40 | #include <asm/mc146818-time.h> |
40 | #include <asm/msc01_ic.h> | 41 | #include <asm/msc01_ic.h> |
diff --git a/arch/mips/netlogic/common/irq.c b/arch/mips/netlogic/common/irq.c index 49a4f6cf71e5..e52bfcbce093 100644 --- a/arch/mips/netlogic/common/irq.c +++ b/arch/mips/netlogic/common/irq.c | |||
@@ -43,7 +43,6 @@ | |||
43 | 43 | ||
44 | #include <asm/errno.h> | 44 | #include <asm/errno.h> |
45 | #include <asm/signal.h> | 45 | #include <asm/signal.h> |
46 | #include <asm/system.h> | ||
47 | #include <asm/ptrace.h> | 46 | #include <asm/ptrace.h> |
48 | #include <asm/mipsregs.h> | 47 | #include <asm/mipsregs.h> |
49 | #include <asm/thread_info.h> | 48 | #include <asm/thread_info.h> |
diff --git a/arch/mips/netlogic/common/smp.c b/arch/mips/netlogic/common/smp.c index db17f49886c2..fab316de57e9 100644 --- a/arch/mips/netlogic/common/smp.c +++ b/arch/mips/netlogic/common/smp.c | |||
@@ -165,7 +165,7 @@ void __init nlm_smp_setup(void) | |||
165 | cpu_set(boot_cpu, phys_cpu_present_map); | 165 | cpu_set(boot_cpu, phys_cpu_present_map); |
166 | __cpu_number_map[boot_cpu] = 0; | 166 | __cpu_number_map[boot_cpu] = 0; |
167 | __cpu_logical_map[0] = boot_cpu; | 167 | __cpu_logical_map[0] = boot_cpu; |
168 | cpu_set(0, cpu_possible_map); | 168 | set_cpu_possible(0, true); |
169 | 169 | ||
170 | num_cpus = 1; | 170 | num_cpus = 1; |
171 | for (i = 0; i < NR_CPUS; i++) { | 171 | for (i = 0; i < NR_CPUS; i++) { |
@@ -177,14 +177,14 @@ void __init nlm_smp_setup(void) | |||
177 | cpu_set(i, phys_cpu_present_map); | 177 | cpu_set(i, phys_cpu_present_map); |
178 | __cpu_number_map[i] = num_cpus; | 178 | __cpu_number_map[i] = num_cpus; |
179 | __cpu_logical_map[num_cpus] = i; | 179 | __cpu_logical_map[num_cpus] = i; |
180 | cpu_set(num_cpus, cpu_possible_map); | 180 | set_cpu_possible(num_cpus, true); |
181 | ++num_cpus; | 181 | ++num_cpus; |
182 | } | 182 | } |
183 | } | 183 | } |
184 | 184 | ||
185 | pr_info("Phys CPU present map: %lx, possible map %lx\n", | 185 | pr_info("Phys CPU present map: %lx, possible map %lx\n", |
186 | (unsigned long)phys_cpu_present_map.bits[0], | 186 | (unsigned long)phys_cpu_present_map.bits[0], |
187 | (unsigned long)cpu_possible_map.bits[0]); | 187 | (unsigned long)cpumask_bits(cpu_possible_mask)[0]); |
188 | 188 | ||
189 | pr_info("Detected %i Slave CPU(s)\n", num_cpus); | 189 | pr_info("Detected %i Slave CPU(s)\n", num_cpus); |
190 | nlm_set_nmi_handler(nlm_boot_secondary_cpus); | 190 | nlm_set_nmi_handler(nlm_boot_secondary_cpus); |
diff --git a/arch/mips/pci/fixup-cobalt.c b/arch/mips/pci/fixup-cobalt.c index acacd1407c63..9553b14002dd 100644 --- a/arch/mips/pci/fixup-cobalt.c +++ b/arch/mips/pci/fixup-cobalt.c | |||
@@ -51,67 +51,6 @@ static void qube_raq_galileo_early_fixup(struct pci_dev *dev) | |||
51 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_MARVELL, PCI_DEVICE_ID_MARVELL_GT64111, | 51 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_MARVELL, PCI_DEVICE_ID_MARVELL_GT64111, |
52 | qube_raq_galileo_early_fixup); | 52 | qube_raq_galileo_early_fixup); |
53 | 53 | ||
54 | static void __devinit cobalt_legacy_ide_resource_fixup(struct pci_dev *dev, | ||
55 | struct resource *res) | ||
56 | { | ||
57 | struct pci_controller *hose = (struct pci_controller *)dev->sysdata; | ||
58 | unsigned long offset = hose->io_offset; | ||
59 | struct resource orig = *res; | ||
60 | |||
61 | if (!(res->flags & IORESOURCE_IO) || | ||
62 | !(res->flags & IORESOURCE_PCI_FIXED)) | ||
63 | return; | ||
64 | |||
65 | res->start -= offset; | ||
66 | res->end -= offset; | ||
67 | dev_printk(KERN_DEBUG, &dev->dev, "converted legacy %pR to bus %pR\n", | ||
68 | &orig, res); | ||
69 | } | ||
70 | |||
71 | static void __devinit cobalt_legacy_ide_fixup(struct pci_dev *dev) | ||
72 | { | ||
73 | u32 class; | ||
74 | u8 progif; | ||
75 | |||
76 | /* | ||
77 | * If the IDE controller is in legacy mode, pci_setup_device() fills in | ||
78 | * the resources with the legacy addresses that normally appear on the | ||
79 | * PCI bus, just as if we had read them from a BAR. | ||
80 | * | ||
81 | * However, with the GT-64111, those legacy addresses, e.g., 0x1f0, | ||
82 | * will never appear on the PCI bus because it converts memory accesses | ||
83 | * in the PCI I/O region (which is never at address zero) into I/O port | ||
84 | * accesses with no address translation. | ||
85 | * | ||
86 | * For example, if GT_DEF_PCI0_IO_BASE is 0x10000000, a load or store | ||
87 | * to physical address 0x100001f0 will become a PCI access to I/O port | ||
88 | * 0x100001f0. There's no way to generate an access to I/O port 0x1f0, | ||
89 | * but the VT82C586 IDE controller does respond at 0x100001f0 because | ||
90 | * it only decodes the low 24 bits of the address. | ||
91 | * | ||
92 | * When this quirk runs, the pci_dev resources should contain bus | ||
93 | * addresses, not Linux I/O port numbers, so convert legacy addresses | ||
94 | * like 0x1f0 to bus addresses like 0x100001f0. Later, we'll convert | ||
95 | * them back with pcibios_fixup_bus() or pcibios_bus_to_resource(). | ||
96 | */ | ||
97 | class = dev->class >> 8; | ||
98 | if (class != PCI_CLASS_STORAGE_IDE) | ||
99 | return; | ||
100 | |||
101 | pci_read_config_byte(dev, PCI_CLASS_PROG, &progif); | ||
102 | if ((progif & 1) == 0) { | ||
103 | cobalt_legacy_ide_resource_fixup(dev, &dev->resource[0]); | ||
104 | cobalt_legacy_ide_resource_fixup(dev, &dev->resource[1]); | ||
105 | } | ||
106 | if ((progif & 4) == 0) { | ||
107 | cobalt_legacy_ide_resource_fixup(dev, &dev->resource[2]); | ||
108 | cobalt_legacy_ide_resource_fixup(dev, &dev->resource[3]); | ||
109 | } | ||
110 | } | ||
111 | |||
112 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, | ||
113 | cobalt_legacy_ide_fixup); | ||
114 | |||
115 | static void qube_raq_via_bmIDE_fixup(struct pci_dev *dev) | 54 | static void qube_raq_via_bmIDE_fixup(struct pci_dev *dev) |
116 | { | 55 | { |
117 | unsigned short cfgword; | 56 | unsigned short cfgword; |
diff --git a/arch/mips/pci/pci-bcm1480.c b/arch/mips/pci/pci-bcm1480.c index af8c31996965..37b52dc3d27e 100644 --- a/arch/mips/pci/pci-bcm1480.c +++ b/arch/mips/pci/pci-bcm1480.c | |||
@@ -204,7 +204,7 @@ static int __init bcm1480_pcibios_init(void) | |||
204 | uint64_t reg; | 204 | uint64_t reg; |
205 | 205 | ||
206 | /* CFE will assign PCI resources */ | 206 | /* CFE will assign PCI resources */ |
207 | pci_probe_only = 1; | 207 | pci_set_flags(PCI_PROBE_ONLY); |
208 | 208 | ||
209 | /* Avoid ISA compat ranges. */ | 209 | /* Avoid ISA compat ranges. */ |
210 | PCIBIOS_MIN_IO = 0x00008000UL; | 210 | PCIBIOS_MIN_IO = 0x00008000UL; |
diff --git a/arch/mips/pci/pci-bcm47xx.c b/arch/mips/pci/pci-bcm47xx.c index 400535a955d0..c682468010c5 100644 --- a/arch/mips/pci/pci-bcm47xx.c +++ b/arch/mips/pci/pci-bcm47xx.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/types.h> | 25 | #include <linux/types.h> |
26 | #include <linux/pci.h> | 26 | #include <linux/pci.h> |
27 | #include <linux/ssb/ssb.h> | 27 | #include <linux/ssb/ssb.h> |
28 | #include <linux/bcma/bcma.h> | ||
28 | #include <bcm47xx.h> | 29 | #include <bcm47xx.h> |
29 | 30 | ||
30 | int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | 31 | int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
@@ -32,15 +33,12 @@ int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
32 | return 0; | 33 | return 0; |
33 | } | 34 | } |
34 | 35 | ||
35 | int pcibios_plat_dev_init(struct pci_dev *dev) | ||
36 | { | ||
37 | #ifdef CONFIG_BCM47XX_SSB | 36 | #ifdef CONFIG_BCM47XX_SSB |
37 | static int bcm47xx_pcibios_plat_dev_init_ssb(struct pci_dev *dev) | ||
38 | { | ||
38 | int res; | 39 | int res; |
39 | u8 slot, pin; | 40 | u8 slot, pin; |
40 | 41 | ||
41 | if (bcm47xx_bus_type != BCM47XX_BUS_TYPE_SSB) | ||
42 | return 0; | ||
43 | |||
44 | res = ssb_pcibios_plat_dev_init(dev); | 42 | res = ssb_pcibios_plat_dev_init(dev); |
45 | if (res < 0) { | 43 | if (res < 0) { |
46 | printk(KERN_ALERT "PCI: Failed to init device %s\n", | 44 | printk(KERN_ALERT "PCI: Failed to init device %s\n", |
@@ -60,6 +58,47 @@ int pcibios_plat_dev_init(struct pci_dev *dev) | |||
60 | } | 58 | } |
61 | 59 | ||
62 | dev->irq = res; | 60 | dev->irq = res; |
61 | return 0; | ||
62 | } | ||
63 | #endif | 63 | #endif |
64 | |||
65 | #ifdef CONFIG_BCM47XX_BCMA | ||
66 | static int bcm47xx_pcibios_plat_dev_init_bcma(struct pci_dev *dev) | ||
67 | { | ||
68 | int res; | ||
69 | |||
70 | res = bcma_core_pci_plat_dev_init(dev); | ||
71 | if (res < 0) { | ||
72 | printk(KERN_ALERT "PCI: Failed to init device %s\n", | ||
73 | pci_name(dev)); | ||
74 | return res; | ||
75 | } | ||
76 | |||
77 | res = bcma_core_pci_pcibios_map_irq(dev); | ||
78 | |||
79 | /* IRQ-0 and IRQ-1 are software interrupts. */ | ||
80 | if (res < 2) { | ||
81 | printk(KERN_ALERT "PCI: Failed to map IRQ of device %s\n", | ||
82 | pci_name(dev)); | ||
83 | return res; | ||
84 | } | ||
85 | |||
86 | dev->irq = res; | ||
64 | return 0; | 87 | return 0; |
65 | } | 88 | } |
89 | #endif | ||
90 | |||
91 | int pcibios_plat_dev_init(struct pci_dev *dev) | ||
92 | { | ||
93 | #ifdef CONFIG_BCM47XX_SSB | ||
94 | if (bcm47xx_bus_type == BCM47XX_BUS_TYPE_SSB) | ||
95 | return bcm47xx_pcibios_plat_dev_init_ssb(dev); | ||
96 | else | ||
97 | #endif | ||
98 | #ifdef CONFIG_BCM47XX_BCMA | ||
99 | if (bcm47xx_bus_type == BCM47XX_BUS_TYPE_BCMA) | ||
100 | return bcm47xx_pcibios_plat_dev_init_bcma(dev); | ||
101 | else | ||
102 | #endif | ||
103 | return 0; | ||
104 | } | ||
diff --git a/arch/mips/pci/pci-ip27.c b/arch/mips/pci/pci-ip27.c index 193e9494f98e..0fbe4c0c170a 100644 --- a/arch/mips/pci/pci-ip27.c +++ b/arch/mips/pci/pci-ip27.c | |||
@@ -50,7 +50,7 @@ int __cpuinit bridge_probe(nasid_t nasid, int widget_id, int masterwid) | |||
50 | bridge_t *bridge; | 50 | bridge_t *bridge; |
51 | int slot; | 51 | int slot; |
52 | 52 | ||
53 | pci_probe_only = 1; | 53 | pci_set_flags(PCI_PROBE_ONLY); |
54 | 54 | ||
55 | printk("a bridge\n"); | 55 | printk("a bridge\n"); |
56 | 56 | ||
diff --git a/arch/mips/pci/pci-lantiq.c b/arch/mips/pci/pci-lantiq.c index df3dca0ca622..70fdf2c7919b 100644 --- a/arch/mips/pci/pci-lantiq.c +++ b/arch/mips/pci/pci-lantiq.c | |||
@@ -270,7 +270,8 @@ static int __devinit ltq_pci_probe(struct platform_device *pdev) | |||
270 | { | 270 | { |
271 | struct ltq_pci_data *ltq_pci_data = | 271 | struct ltq_pci_data *ltq_pci_data = |
272 | (struct ltq_pci_data *) pdev->dev.platform_data; | 272 | (struct ltq_pci_data *) pdev->dev.platform_data; |
273 | pci_probe_only = 0; | 273 | |
274 | pci_clear_flags(PCI_PROBE_ONLY); | ||
274 | ltq_pci_irq_map = ltq_pci_data->irq; | 275 | ltq_pci_irq_map = ltq_pci_data->irq; |
275 | ltq_pci_membase = ioremap_nocache(PCI_CR_BASE_ADDR, PCI_CR_SIZE); | 276 | ltq_pci_membase = ioremap_nocache(PCI_CR_BASE_ADDR, PCI_CR_SIZE); |
276 | ltq_pci_mapped_cfg = | 277 | ltq_pci_mapped_cfg = |
diff --git a/arch/mips/pci/pci-sb1250.c b/arch/mips/pci/pci-sb1250.c index 1711e8e101bc..dd97f3a83baa 100644 --- a/arch/mips/pci/pci-sb1250.c +++ b/arch/mips/pci/pci-sb1250.c | |||
@@ -213,7 +213,7 @@ static int __init sb1250_pcibios_init(void) | |||
213 | uint64_t reg; | 213 | uint64_t reg; |
214 | 214 | ||
215 | /* CFE will assign PCI resources */ | 215 | /* CFE will assign PCI resources */ |
216 | pci_probe_only = 1; | 216 | pci_set_flags(PCI_PROBE_ONLY); |
217 | 217 | ||
218 | /* Avoid ISA compat ranges. */ | 218 | /* Avoid ISA compat ranges. */ |
219 | PCIBIOS_MIN_IO = 0x00008000UL; | 219 | PCIBIOS_MIN_IO = 0x00008000UL; |
diff --git a/arch/mips/pci/pci-xlr.c b/arch/mips/pci/pci-xlr.c index 3d701a962ef4..1644805a6730 100644 --- a/arch/mips/pci/pci-xlr.c +++ b/arch/mips/pci/pci-xlr.c | |||
@@ -292,7 +292,7 @@ int pcibios_plat_dev_init(struct pci_dev *dev) | |||
292 | static int __init pcibios_init(void) | 292 | static int __init pcibios_init(void) |
293 | { | 293 | { |
294 | /* PSB assigns PCI resources */ | 294 | /* PSB assigns PCI resources */ |
295 | pci_probe_only = 1; | 295 | pci_set_flags(PCI_PROBE_ONLY); |
296 | pci_config_base = ioremap(DEFAULT_PCI_CONFIG_BASE, 16 << 20); | 296 | pci_config_base = ioremap(DEFAULT_PCI_CONFIG_BASE, 16 << 20); |
297 | 297 | ||
298 | /* Extend IO port for memory mapped io */ | 298 | /* Extend IO port for memory mapped io */ |
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c index aec2b111d35b..0514866fa925 100644 --- a/arch/mips/pci/pci.c +++ b/arch/mips/pci/pci.c | |||
@@ -20,16 +20,9 @@ | |||
20 | #include <asm/cpu-info.h> | 20 | #include <asm/cpu-info.h> |
21 | 21 | ||
22 | /* | 22 | /* |
23 | * Indicate whether we respect the PCI setup left by the firmware. | 23 | * If PCI_PROBE_ONLY in pci_flags is set, we don't change any PCI resource |
24 | * | 24 | * assignments. |
25 | * Make this long-lived so that we know when shutting down | ||
26 | * whether we probed only or not. | ||
27 | */ | 25 | */ |
28 | int pci_probe_only; | ||
29 | |||
30 | #define PCI_ASSIGN_ALL_BUSSES 1 | ||
31 | |||
32 | unsigned int pci_probe = PCI_ASSIGN_ALL_BUSSES; | ||
33 | 26 | ||
34 | /* | 27 | /* |
35 | * The PCI controller list. | 28 | * The PCI controller list. |
@@ -92,11 +85,12 @@ static void __devinit pcibios_scanbus(struct pci_controller *hose) | |||
92 | if (!hose->iommu) | 85 | if (!hose->iommu) |
93 | PCI_DMA_BUS_IS_PHYS = 1; | 86 | PCI_DMA_BUS_IS_PHYS = 1; |
94 | 87 | ||
95 | if (hose->get_busno && pci_probe_only) | 88 | if (hose->get_busno && pci_has_flag(PCI_PROBE_ONLY)) |
96 | next_busno = (*hose->get_busno)(); | 89 | next_busno = (*hose->get_busno)(); |
97 | 90 | ||
98 | pci_add_resource(&resources, hose->mem_resource); | 91 | pci_add_resource_offset(&resources, |
99 | pci_add_resource(&resources, hose->io_resource); | 92 | hose->mem_resource, hose->mem_offset); |
93 | pci_add_resource_offset(&resources, hose->io_resource, hose->io_offset); | ||
100 | bus = pci_scan_root_bus(NULL, next_busno, hose->pci_ops, hose, | 94 | bus = pci_scan_root_bus(NULL, next_busno, hose->pci_ops, hose, |
101 | &resources); | 95 | &resources); |
102 | if (!bus) | 96 | if (!bus) |
@@ -115,7 +109,7 @@ static void __devinit pcibios_scanbus(struct pci_controller *hose) | |||
115 | need_domain_info = 1; | 109 | need_domain_info = 1; |
116 | } | 110 | } |
117 | 111 | ||
118 | if (!pci_probe_only) { | 112 | if (!pci_has_flag(PCI_PROBE_ONLY)) { |
119 | pci_bus_size_bridges(bus); | 113 | pci_bus_size_bridges(bus); |
120 | pci_bus_assign_resources(bus); | 114 | pci_bus_assign_resources(bus); |
121 | pci_enable_bridges(bus); | 115 | pci_enable_bridges(bus); |
@@ -241,7 +235,7 @@ static int pcibios_enable_resources(struct pci_dev *dev, int mask) | |||
241 | 235 | ||
242 | unsigned int pcibios_assign_all_busses(void) | 236 | unsigned int pcibios_assign_all_busses(void) |
243 | { | 237 | { |
244 | return (pci_probe & PCI_ASSIGN_ALL_BUSSES) ? 1 : 0; | 238 | return 1; |
245 | } | 239 | } |
246 | 240 | ||
247 | int pcibios_enable_device(struct pci_dev *dev, int mask) | 241 | int pcibios_enable_device(struct pci_dev *dev, int mask) |
@@ -254,45 +248,13 @@ int pcibios_enable_device(struct pci_dev *dev, int mask) | |||
254 | return pcibios_plat_dev_init(dev); | 248 | return pcibios_plat_dev_init(dev); |
255 | } | 249 | } |
256 | 250 | ||
257 | static void pcibios_fixup_device_resources(struct pci_dev *dev, | ||
258 | struct pci_bus *bus) | ||
259 | { | ||
260 | /* Update device resources. */ | ||
261 | struct pci_controller *hose = (struct pci_controller *)bus->sysdata; | ||
262 | unsigned long offset = 0; | ||
263 | int i; | ||
264 | |||
265 | for (i = 0; i < PCI_NUM_RESOURCES; i++) { | ||
266 | if (!dev->resource[i].start) | ||
267 | continue; | ||
268 | if (dev->resource[i].flags & IORESOURCE_IO) | ||
269 | offset = hose->io_offset; | ||
270 | else if (dev->resource[i].flags & IORESOURCE_MEM) | ||
271 | offset = hose->mem_offset; | ||
272 | |||
273 | dev->resource[i].start += offset; | ||
274 | dev->resource[i].end += offset; | ||
275 | } | ||
276 | } | ||
277 | |||
278 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 251 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) |
279 | { | 252 | { |
280 | /* Propagate hose info into the subordinate devices. */ | ||
281 | |||
282 | struct list_head *ln; | ||
283 | struct pci_dev *dev = bus->self; | 253 | struct pci_dev *dev = bus->self; |
284 | 254 | ||
285 | if (pci_probe_only && dev && | 255 | if (pci_has_flag(PCI_PROBE_ONLY) && dev && |
286 | (dev->class >> 8) == PCI_CLASS_BRIDGE_PCI) { | 256 | (dev->class >> 8) == PCI_CLASS_BRIDGE_PCI) { |
287 | pci_read_bridge_bases(bus); | 257 | pci_read_bridge_bases(bus); |
288 | pcibios_fixup_device_resources(dev, bus); | ||
289 | } | ||
290 | |||
291 | for (ln = bus->devices.next; ln != &bus->devices; ln = ln->next) { | ||
292 | dev = pci_dev_b(ln); | ||
293 | |||
294 | if ((dev->class >> 8) != PCI_CLASS_BRIDGE_PCI) | ||
295 | pcibios_fixup_device_resources(dev, bus); | ||
296 | } | 258 | } |
297 | } | 259 | } |
298 | 260 | ||
@@ -302,40 +264,7 @@ pcibios_update_irq(struct pci_dev *dev, int irq) | |||
302 | pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq); | 264 | pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq); |
303 | } | 265 | } |
304 | 266 | ||
305 | void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region, | ||
306 | struct resource *res) | ||
307 | { | ||
308 | struct pci_controller *hose = (struct pci_controller *)dev->sysdata; | ||
309 | unsigned long offset = 0; | ||
310 | |||
311 | if (res->flags & IORESOURCE_IO) | ||
312 | offset = hose->io_offset; | ||
313 | else if (res->flags & IORESOURCE_MEM) | ||
314 | offset = hose->mem_offset; | ||
315 | |||
316 | region->start = res->start - offset; | ||
317 | region->end = res->end - offset; | ||
318 | } | ||
319 | |||
320 | void __devinit | ||
321 | pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, | ||
322 | struct pci_bus_region *region) | ||
323 | { | ||
324 | struct pci_controller *hose = (struct pci_controller *)dev->sysdata; | ||
325 | unsigned long offset = 0; | ||
326 | |||
327 | if (res->flags & IORESOURCE_IO) | ||
328 | offset = hose->io_offset; | ||
329 | else if (res->flags & IORESOURCE_MEM) | ||
330 | offset = hose->mem_offset; | ||
331 | |||
332 | res->start = region->start + offset; | ||
333 | res->end = region->end + offset; | ||
334 | } | ||
335 | |||
336 | #ifdef CONFIG_HOTPLUG | 267 | #ifdef CONFIG_HOTPLUG |
337 | EXPORT_SYMBOL(pcibios_resource_to_bus); | ||
338 | EXPORT_SYMBOL(pcibios_bus_to_resource); | ||
339 | EXPORT_SYMBOL(PCIBIOS_MIN_IO); | 268 | EXPORT_SYMBOL(PCIBIOS_MIN_IO); |
340 | EXPORT_SYMBOL(PCIBIOS_MIN_MEM); | 269 | EXPORT_SYMBOL(PCIBIOS_MIN_MEM); |
341 | #endif | 270 | #endif |
diff --git a/arch/mips/pmc-sierra/msp71xx/msp_irq_cic.c b/arch/mips/pmc-sierra/msp71xx/msp_irq_cic.c index c4fa2d775d8b..2e6f7cab24c1 100644 --- a/arch/mips/pmc-sierra/msp71xx/msp_irq_cic.c +++ b/arch/mips/pmc-sierra/msp71xx/msp_irq_cic.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
17 | 17 | ||
18 | #include <asm/mipsregs.h> | 18 | #include <asm/mipsregs.h> |
19 | #include <asm/system.h> | ||
20 | 19 | ||
21 | #include <msp_cic_int.h> | 20 | #include <msp_cic_int.h> |
22 | #include <msp_regs.h> | 21 | #include <msp_regs.h> |
diff --git a/arch/mips/pmc-sierra/msp71xx/msp_irq_per.c b/arch/mips/pmc-sierra/msp71xx/msp_irq_per.c index 98fd0099d964..598b6a66b970 100644 --- a/arch/mips/pmc-sierra/msp71xx/msp_irq_per.c +++ b/arch/mips/pmc-sierra/msp71xx/msp_irq_per.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/bitops.h> | 16 | #include <linux/bitops.h> |
17 | 17 | ||
18 | #include <asm/mipsregs.h> | 18 | #include <asm/mipsregs.h> |
19 | #include <asm/system.h> | ||
20 | 19 | ||
21 | #include <msp_cic_int.h> | 20 | #include <msp_cic_int.h> |
22 | #include <msp_regs.h> | 21 | #include <msp_regs.h> |
diff --git a/arch/mips/pmc-sierra/msp71xx/msp_irq_slp.c b/arch/mips/pmc-sierra/msp71xx/msp_irq_slp.c index 5bbcc47da6b9..83a1c5eae3f8 100644 --- a/arch/mips/pmc-sierra/msp71xx/msp_irq_slp.c +++ b/arch/mips/pmc-sierra/msp71xx/msp_irq_slp.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/bitops.h> | 16 | #include <linux/bitops.h> |
17 | 17 | ||
18 | #include <asm/mipsregs.h> | 18 | #include <asm/mipsregs.h> |
19 | #include <asm/system.h> | ||
20 | 19 | ||
21 | #include <msp_slp_int.h> | 20 | #include <msp_slp_int.h> |
22 | #include <msp_regs.h> | 21 | #include <msp_regs.h> |
diff --git a/arch/mips/pmc-sierra/yosemite/ht-irq.c b/arch/mips/pmc-sierra/yosemite/ht-irq.c index 86b98e98fb4f..62ead6601c69 100644 --- a/arch/mips/pmc-sierra/yosemite/ht-irq.c +++ b/arch/mips/pmc-sierra/yosemite/ht-irq.c | |||
@@ -35,16 +35,6 @@ | |||
35 | */ | 35 | */ |
36 | void __init titan_ht_pcibios_fixup_bus(struct pci_bus *bus) | 36 | void __init titan_ht_pcibios_fixup_bus(struct pci_bus *bus) |
37 | { | 37 | { |
38 | struct pci_bus *current_bus = bus; | ||
39 | struct pci_dev *devices; | ||
40 | struct list_head *devices_link; | ||
41 | |||
42 | list_for_each(devices_link, &(current_bus->devices)) { | ||
43 | devices = pci_dev_b(devices_link); | ||
44 | if (devices == NULL) | ||
45 | continue; | ||
46 | } | ||
47 | |||
48 | /* | 38 | /* |
49 | * PLX and SPKT related changes go here | 39 | * PLX and SPKT related changes go here |
50 | */ | 40 | */ |
diff --git a/arch/mips/pmc-sierra/yosemite/irq.c b/arch/mips/pmc-sierra/yosemite/irq.c index 25bbbf428be9..6590812daa56 100644 --- a/arch/mips/pmc-sierra/yosemite/irq.c +++ b/arch/mips/pmc-sierra/yosemite/irq.c | |||
@@ -44,7 +44,6 @@ | |||
44 | #include <asm/irq.h> | 44 | #include <asm/irq.h> |
45 | #include <asm/irq_cpu.h> | 45 | #include <asm/irq_cpu.h> |
46 | #include <asm/mipsregs.h> | 46 | #include <asm/mipsregs.h> |
47 | #include <asm/system.h> | ||
48 | #include <asm/titan_dep.h> | 47 | #include <asm/titan_dep.h> |
49 | 48 | ||
50 | /* Hypertransport specific */ | 49 | /* Hypertransport specific */ |
diff --git a/arch/mips/pmc-sierra/yosemite/prom.c b/arch/mips/pmc-sierra/yosemite/prom.c index dcc926e06fce..6a2754c4f106 100644 --- a/arch/mips/pmc-sierra/yosemite/prom.c +++ b/arch/mips/pmc-sierra/yosemite/prom.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <asm/processor.h> | 20 | #include <asm/processor.h> |
21 | #include <asm/reboot.h> | 21 | #include <asm/reboot.h> |
22 | #include <asm/smp-ops.h> | 22 | #include <asm/smp-ops.h> |
23 | #include <asm/system.h> | ||
24 | #include <asm/bootinfo.h> | 23 | #include <asm/bootinfo.h> |
25 | #include <asm/pmon.h> | 24 | #include <asm/pmon.h> |
26 | 25 | ||
diff --git a/arch/mips/pmc-sierra/yosemite/smp.c b/arch/mips/pmc-sierra/yosemite/smp.c index 2608752898c0..b71fae231049 100644 --- a/arch/mips/pmc-sierra/yosemite/smp.c +++ b/arch/mips/pmc-sierra/yosemite/smp.c | |||
@@ -146,7 +146,7 @@ static void __cpuinit yos_boot_secondary(int cpu, struct task_struct *idle) | |||
146 | } | 146 | } |
147 | 147 | ||
148 | /* | 148 | /* |
149 | * Detect available CPUs, populate cpu_possible_map before smp_init | 149 | * Detect available CPUs, populate cpu_possible_mask before smp_init |
150 | * | 150 | * |
151 | * We don't want to start the secondary CPU yet nor do we have a nice probing | 151 | * We don't want to start the secondary CPU yet nor do we have a nice probing |
152 | * feature in PMON so we just assume presence of the secondary core. | 152 | * feature in PMON so we just assume presence of the secondary core. |
@@ -155,10 +155,10 @@ static void __init yos_smp_setup(void) | |||
155 | { | 155 | { |
156 | int i; | 156 | int i; |
157 | 157 | ||
158 | cpus_clear(cpu_possible_map); | 158 | init_cpu_possible(cpu_none_mask); |
159 | 159 | ||
160 | for (i = 0; i < 2; i++) { | 160 | for (i = 0; i < 2; i++) { |
161 | cpu_set(i, cpu_possible_map); | 161 | set_cpu_possible(i, true); |
162 | __cpu_number_map[i] = i; | 162 | __cpu_number_map[i] = i; |
163 | __cpu_logical_map[i] = i; | 163 | __cpu_logical_map[i] = i; |
164 | } | 164 | } |
@@ -169,7 +169,7 @@ static void __init yos_prepare_cpus(unsigned int max_cpus) | |||
169 | /* | 169 | /* |
170 | * Be paranoid. Enable the IPI only if we're really about to go SMP. | 170 | * Be paranoid. Enable the IPI only if we're really about to go SMP. |
171 | */ | 171 | */ |
172 | if (cpus_weight(cpu_possible_map)) | 172 | if (num_possible_cpus()) |
173 | set_c0_status(STATUSF_IP5); | 173 | set_c0_status(STATUSF_IP5); |
174 | } | 174 | } |
175 | 175 | ||
diff --git a/arch/mips/pnx833x/common/interrupts.c b/arch/mips/pnx833x/common/interrupts.c index adc171c8846f..a86d5d5fceb0 100644 --- a/arch/mips/pnx833x/common/interrupts.c +++ b/arch/mips/pnx833x/common/interrupts.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
26 | #include <asm/mipsregs.h> | 26 | #include <asm/mipsregs.h> |
27 | #include <asm/irq_cpu.h> | 27 | #include <asm/irq_cpu.h> |
28 | #include <asm/setup.h> | ||
28 | #include <irq.h> | 29 | #include <irq.h> |
29 | #include <irq-mapping.h> | 30 | #include <irq-mapping.h> |
30 | #include <gpio.h> | 31 | #include <gpio.h> |
diff --git a/arch/mips/powertv/asic/asic_int.c b/arch/mips/powertv/asic/asic_int.c index 529c44a52d64..99d82e10000b 100644 --- a/arch/mips/powertv/asic/asic_int.c +++ b/arch/mips/powertv/asic/asic_int.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <asm/irq_cpu.h> | 34 | #include <asm/irq_cpu.h> |
35 | #include <linux/io.h> | 35 | #include <linux/io.h> |
36 | #include <asm/irq_regs.h> | 36 | #include <asm/irq_regs.h> |
37 | #include <asm/setup.h> | ||
37 | #include <asm/mips-boards/generic.h> | 38 | #include <asm/mips-boards/generic.h> |
38 | 39 | ||
39 | #include <asm/mach-powertv/asic_regs.h> | 40 | #include <asm/mach-powertv/asic_regs.h> |
diff --git a/arch/mips/powertv/asic/irq_asic.c b/arch/mips/powertv/asic/irq_asic.c index 7fb97fb0931e..fa9ae9584710 100644 --- a/arch/mips/powertv/asic/irq_asic.c +++ b/arch/mips/powertv/asic/irq_asic.c | |||
@@ -17,7 +17,6 @@ | |||
17 | 17 | ||
18 | #include <asm/irq_cpu.h> | 18 | #include <asm/irq_cpu.h> |
19 | #include <asm/mipsregs.h> | 19 | #include <asm/mipsregs.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | #include <asm/mach-powertv/asic_regs.h> | 21 | #include <asm/mach-powertv/asic_regs.h> |
23 | 22 | ||
diff --git a/arch/mips/powertv/init.c b/arch/mips/powertv/init.c index 83552288e802..1cf5abbef715 100644 --- a/arch/mips/powertv/init.c +++ b/arch/mips/powertv/init.c | |||
@@ -26,7 +26,6 @@ | |||
26 | 26 | ||
27 | #include <asm/bootinfo.h> | 27 | #include <asm/bootinfo.h> |
28 | #include <linux/io.h> | 28 | #include <linux/io.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/cacheflush.h> | 29 | #include <asm/cacheflush.h> |
31 | #include <asm/traps.h> | 30 | #include <asm/traps.h> |
32 | 31 | ||
diff --git a/arch/mips/rb532/irq.c b/arch/mips/rb532/irq.c index 7c6db74e3fad..f298430cff07 100644 --- a/arch/mips/rb532/irq.c +++ b/arch/mips/rb532/irq.c | |||
@@ -42,7 +42,6 @@ | |||
42 | #include <asm/bootinfo.h> | 42 | #include <asm/bootinfo.h> |
43 | #include <asm/time.h> | 43 | #include <asm/time.h> |
44 | #include <asm/mipsregs.h> | 44 | #include <asm/mipsregs.h> |
45 | #include <asm/system.h> | ||
46 | 45 | ||
47 | #include <asm/mach-rc32434/irq.h> | 46 | #include <asm/mach-rc32434/irq.h> |
48 | #include <asm/mach-rc32434/gpio.h> | 47 | #include <asm/mach-rc32434/gpio.h> |
diff --git a/arch/mips/sgi-ip22/ip22-berr.c b/arch/mips/sgi-ip22/ip22-berr.c index 911d3999c0c7..3f6ccd53c15d 100644 --- a/arch/mips/sgi-ip22/ip22-berr.c +++ b/arch/mips/sgi-ip22/ip22-berr.c | |||
@@ -9,7 +9,6 @@ | |||
9 | #include <linux/sched.h> | 9 | #include <linux/sched.h> |
10 | 10 | ||
11 | #include <asm/addrspace.h> | 11 | #include <asm/addrspace.h> |
12 | #include <asm/system.h> | ||
13 | #include <asm/traps.h> | 12 | #include <asm/traps.h> |
14 | #include <asm/branch.h> | 13 | #include <asm/branch.h> |
15 | #include <asm/irq_regs.h> | 14 | #include <asm/irq_regs.h> |
diff --git a/arch/mips/sgi-ip22/ip22-reset.c b/arch/mips/sgi-ip22/ip22-reset.c index 45b6694c2079..20363d29cb58 100644 --- a/arch/mips/sgi-ip22/ip22-reset.c +++ b/arch/mips/sgi-ip22/ip22-reset.c | |||
@@ -18,7 +18,6 @@ | |||
18 | 18 | ||
19 | #include <asm/io.h> | 19 | #include <asm/io.h> |
20 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/reboot.h> | 21 | #include <asm/reboot.h> |
23 | #include <asm/sgialib.h> | 22 | #include <asm/sgialib.h> |
24 | #include <asm/sgi/ioc.h> | 23 | #include <asm/sgi/ioc.h> |
diff --git a/arch/mips/sgi-ip22/ip28-berr.c b/arch/mips/sgi-ip22/ip28-berr.c index 88c684e05a3d..0626555fd1a3 100644 --- a/arch/mips/sgi-ip22/ip28-berr.c +++ b/arch/mips/sgi-ip22/ip28-berr.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/seq_file.h> | 11 | #include <linux/seq_file.h> |
12 | 12 | ||
13 | #include <asm/addrspace.h> | 13 | #include <asm/addrspace.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/traps.h> | 14 | #include <asm/traps.h> |
16 | #include <asm/branch.h> | 15 | #include <asm/branch.h> |
17 | #include <asm/irq_regs.h> | 16 | #include <asm/irq_regs.h> |
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c index 23642238c689..69a939ae65e4 100644 --- a/arch/mips/sgi-ip27/ip27-irq.c +++ b/arch/mips/sgi-ip27/ip27-irq.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/bootinfo.h> | 27 | #include <asm/bootinfo.h> |
28 | #include <asm/io.h> | 28 | #include <asm/io.h> |
29 | #include <asm/mipsregs.h> | 29 | #include <asm/mipsregs.h> |
30 | #include <asm/system.h> | ||
31 | 30 | ||
32 | #include <asm/processor.h> | 31 | #include <asm/processor.h> |
33 | #include <asm/pci/bridge.h> | 32 | #include <asm/pci/bridge.h> |
diff --git a/arch/mips/sgi-ip27/ip27-reset.c b/arch/mips/sgi-ip27/ip27-reset.c index c17076108d47..f347bc6b7954 100644 --- a/arch/mips/sgi-ip27/ip27-reset.c +++ b/arch/mips/sgi-ip27/ip27-reset.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/io.h> | 19 | #include <asm/io.h> |
20 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
21 | #include <asm/reboot.h> | 21 | #include <asm/reboot.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/sgialib.h> | 22 | #include <asm/sgialib.h> |
24 | #include <asm/sn/addrs.h> | 23 | #include <asm/sn/addrs.h> |
25 | #include <asm/sn/arch.h> | 24 | #include <asm/sn/arch.h> |
diff --git a/arch/mips/sgi-ip27/ip27-smp.c b/arch/mips/sgi-ip27/ip27-smp.c index c6851df9ab74..735b43bf8f82 100644 --- a/arch/mips/sgi-ip27/ip27-smp.c +++ b/arch/mips/sgi-ip27/ip27-smp.c | |||
@@ -76,7 +76,7 @@ static int do_cpumask(cnodeid_t cnode, nasid_t nasid, int highest) | |||
76 | /* Only let it join in if it's marked enabled */ | 76 | /* Only let it join in if it's marked enabled */ |
77 | if ((acpu->cpu_info.flags & KLINFO_ENABLE) && | 77 | if ((acpu->cpu_info.flags & KLINFO_ENABLE) && |
78 | (tot_cpus_found != NR_CPUS)) { | 78 | (tot_cpus_found != NR_CPUS)) { |
79 | cpu_set(cpuid, cpu_possible_map); | 79 | set_cpu_possible(cpuid, true); |
80 | alloc_cpupda(cpuid, tot_cpus_found); | 80 | alloc_cpupda(cpuid, tot_cpus_found); |
81 | cpus_found++; | 81 | cpus_found++; |
82 | tot_cpus_found++; | 82 | tot_cpus_found++; |
diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c index a092860d5196..e7d5054de8c8 100644 --- a/arch/mips/sgi-ip32/ip32-irq.c +++ b/arch/mips/sgi-ip32/ip32-irq.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/irq_cpu.h> | 22 | #include <asm/irq_cpu.h> |
23 | #include <asm/mipsregs.h> | 23 | #include <asm/mipsregs.h> |
24 | #include <asm/signal.h> | 24 | #include <asm/signal.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/time.h> | 25 | #include <asm/time.h> |
27 | #include <asm/ip32/crime.h> | 26 | #include <asm/ip32/crime.h> |
28 | #include <asm/ip32/mace.h> | 27 | #include <asm/ip32/mace.h> |
diff --git a/arch/mips/sgi-ip32/ip32-reset.c b/arch/mips/sgi-ip32/ip32-reset.c index 9b95d80ebc6e..1f823da4c77b 100644 --- a/arch/mips/sgi-ip32/ip32-reset.c +++ b/arch/mips/sgi-ip32/ip32-reset.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <asm/addrspace.h> | 20 | #include <asm/addrspace.h> |
21 | #include <asm/irq.h> | 21 | #include <asm/irq.h> |
22 | #include <asm/reboot.h> | 22 | #include <asm/reboot.h> |
23 | #include <asm/system.h> | ||
24 | #include <asm/wbflush.h> | 23 | #include <asm/wbflush.h> |
25 | #include <asm/ip32/mace.h> | 24 | #include <asm/ip32/mace.h> |
26 | #include <asm/ip32/crime.h> | 25 | #include <asm/ip32/crime.h> |
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c index 09740d60e187..215713e1f3c4 100644 --- a/arch/mips/sibyte/bcm1480/irq.c +++ b/arch/mips/sibyte/bcm1480/irq.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/errno.h> | 27 | #include <asm/errno.h> |
28 | #include <asm/irq_regs.h> | 28 | #include <asm/irq_regs.h> |
29 | #include <asm/signal.h> | 29 | #include <asm/signal.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/io.h> | 30 | #include <asm/io.h> |
32 | 31 | ||
33 | #include <asm/sibyte/bcm1480_regs.h> | 32 | #include <asm/sibyte/bcm1480_regs.h> |
diff --git a/arch/mips/sibyte/bcm1480/smp.c b/arch/mips/sibyte/bcm1480/smp.c index d667875be564..de88e22694a0 100644 --- a/arch/mips/sibyte/bcm1480/smp.c +++ b/arch/mips/sibyte/bcm1480/smp.c | |||
@@ -138,7 +138,7 @@ static void __cpuinit bcm1480_boot_secondary(int cpu, struct task_struct *idle) | |||
138 | 138 | ||
139 | /* | 139 | /* |
140 | * Use CFE to find out how many CPUs are available, setting up | 140 | * Use CFE to find out how many CPUs are available, setting up |
141 | * cpu_possible_map and the logical/physical mappings. | 141 | * cpu_possible_mask and the logical/physical mappings. |
142 | * XXXKW will the boot CPU ever not be physical 0? | 142 | * XXXKW will the boot CPU ever not be physical 0? |
143 | * | 143 | * |
144 | * Common setup before any secondaries are started | 144 | * Common setup before any secondaries are started |
@@ -147,14 +147,13 @@ static void __init bcm1480_smp_setup(void) | |||
147 | { | 147 | { |
148 | int i, num; | 148 | int i, num; |
149 | 149 | ||
150 | cpus_clear(cpu_possible_map); | 150 | init_cpu_possible(cpumask_of(0)); |
151 | cpu_set(0, cpu_possible_map); | ||
152 | __cpu_number_map[0] = 0; | 151 | __cpu_number_map[0] = 0; |
153 | __cpu_logical_map[0] = 0; | 152 | __cpu_logical_map[0] = 0; |
154 | 153 | ||
155 | for (i = 1, num = 0; i < NR_CPUS; i++) { | 154 | for (i = 1, num = 0; i < NR_CPUS; i++) { |
156 | if (cfe_cpu_stop(i) == 0) { | 155 | if (cfe_cpu_stop(i) == 0) { |
157 | cpu_set(i, cpu_possible_map); | 156 | set_cpu_possible(i, true); |
158 | __cpu_number_map[i] = ++num; | 157 | __cpu_number_map[i] = ++num; |
159 | __cpu_logical_map[num] = i; | 158 | __cpu_logical_map[num] = i; |
160 | } | 159 | } |
diff --git a/arch/mips/sibyte/common/sb_tbprof.c b/arch/mips/sibyte/common/sb_tbprof.c index 48853ab5bcf0..e8c4538c5f61 100644 --- a/arch/mips/sibyte/common/sb_tbprof.c +++ b/arch/mips/sibyte/common/sb_tbprof.c | |||
@@ -53,7 +53,6 @@ | |||
53 | #define K_INT_PERF_CNT K_BCM1480_INT_PERF_CNT | 53 | #define K_INT_PERF_CNT K_BCM1480_INT_PERF_CNT |
54 | #endif | 54 | #endif |
55 | 55 | ||
56 | #include <asm/system.h> | ||
57 | #include <asm/uaccess.h> | 56 | #include <asm/uaccess.h> |
58 | 57 | ||
59 | #define SBPROF_TB_MAJOR 240 | 58 | #define SBPROF_TB_MAJOR 240 |
diff --git a/arch/mips/sibyte/sb1250/bus_watcher.c b/arch/mips/sibyte/sb1250/bus_watcher.c index 45274bd3cd8b..86e6e54dd15d 100644 --- a/arch/mips/sibyte/sb1250/bus_watcher.c +++ b/arch/mips/sibyte/sb1250/bus_watcher.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <linux/interrupt.h> | 30 | #include <linux/interrupt.h> |
31 | #include <linux/sched.h> | 31 | #include <linux/sched.h> |
32 | #include <linux/proc_fs.h> | 32 | #include <linux/proc_fs.h> |
33 | #include <asm/system.h> | ||
34 | #include <asm/io.h> | 33 | #include <asm/io.h> |
35 | 34 | ||
36 | #include <asm/sibyte/sb1250.h> | 35 | #include <asm/sibyte/sb1250.h> |
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c index 76ee045e2ce4..340aaf626659 100644 --- a/arch/mips/sibyte/sb1250/irq.c +++ b/arch/mips/sibyte/sb1250/irq.c | |||
@@ -26,7 +26,6 @@ | |||
26 | 26 | ||
27 | #include <asm/errno.h> | 27 | #include <asm/errno.h> |
28 | #include <asm/signal.h> | 28 | #include <asm/signal.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/time.h> | 29 | #include <asm/time.h> |
31 | #include <asm/io.h> | 30 | #include <asm/io.h> |
32 | 31 | ||
diff --git a/arch/mips/sibyte/sb1250/smp.c b/arch/mips/sibyte/sb1250/smp.c index 38e7f6bd7922..285cfef4ebc0 100644 --- a/arch/mips/sibyte/sb1250/smp.c +++ b/arch/mips/sibyte/sb1250/smp.c | |||
@@ -126,7 +126,7 @@ static void __cpuinit sb1250_boot_secondary(int cpu, struct task_struct *idle) | |||
126 | 126 | ||
127 | /* | 127 | /* |
128 | * Use CFE to find out how many CPUs are available, setting up | 128 | * Use CFE to find out how many CPUs are available, setting up |
129 | * cpu_possible_map and the logical/physical mappings. | 129 | * cpu_possible_mask and the logical/physical mappings. |
130 | * XXXKW will the boot CPU ever not be physical 0? | 130 | * XXXKW will the boot CPU ever not be physical 0? |
131 | * | 131 | * |
132 | * Common setup before any secondaries are started | 132 | * Common setup before any secondaries are started |
@@ -135,14 +135,13 @@ static void __init sb1250_smp_setup(void) | |||
135 | { | 135 | { |
136 | int i, num; | 136 | int i, num; |
137 | 137 | ||
138 | cpus_clear(cpu_possible_map); | 138 | init_cpu_possible(cpumask_of(0)); |
139 | cpu_set(0, cpu_possible_map); | ||
140 | __cpu_number_map[0] = 0; | 139 | __cpu_number_map[0] = 0; |
141 | __cpu_logical_map[0] = 0; | 140 | __cpu_logical_map[0] = 0; |
142 | 141 | ||
143 | for (i = 1, num = 0; i < NR_CPUS; i++) { | 142 | for (i = 1, num = 0; i < NR_CPUS; i++) { |
144 | if (cfe_cpu_stop(i) == 0) { | 143 | if (cfe_cpu_stop(i) == 0) { |
145 | cpu_set(i, cpu_possible_map); | 144 | set_cpu_possible(i, true); |
146 | __cpu_number_map[i] = ++num; | 145 | __cpu_number_map[i] = ++num; |
147 | __cpu_logical_map[num] = i; | 146 | __cpu_logical_map[num] = i; |
148 | } | 147 | } |
diff --git a/arch/mips/sni/reset.c b/arch/mips/sni/reset.c index 79f8d70f48c9..244f9427625b 100644 --- a/arch/mips/sni/reset.c +++ b/arch/mips/sni/reset.c | |||
@@ -5,7 +5,6 @@ | |||
5 | */ | 5 | */ |
6 | #include <asm/io.h> | 6 | #include <asm/io.h> |
7 | #include <asm/reboot.h> | 7 | #include <asm/reboot.h> |
8 | #include <asm/system.h> | ||
9 | #include <asm/sni.h> | 8 | #include <asm/sni.h> |
10 | 9 | ||
11 | /* | 10 | /* |
diff --git a/arch/mips/txx9/generic/7segled.c b/arch/mips/txx9/generic/7segled.c index 8e93b2122524..4642f56e70e5 100644 --- a/arch/mips/txx9/generic/7segled.c +++ b/arch/mips/txx9/generic/7segled.c | |||
@@ -102,7 +102,7 @@ static int __init tx_7segled_init_sysfs(void) | |||
102 | break; | 102 | break; |
103 | } | 103 | } |
104 | dev->id = i; | 104 | dev->id = i; |
105 | dev->dev = &tx_7segled_subsys; | 105 | dev->bus = &tx_7segled_subsys; |
106 | error = device_register(dev); | 106 | error = device_register(dev); |
107 | if (!error) { | 107 | if (!error) { |
108 | device_create_file(dev, &dev_attr_ascii); | 108 | device_create_file(dev, &dev_attr_ascii); |
diff --git a/arch/mips/vr41xx/common/irq.c b/arch/mips/vr41xx/common/irq.c index fad2bef432cd..ae0e4ee6c617 100644 --- a/arch/mips/vr41xx/common/irq.c +++ b/arch/mips/vr41xx/common/irq.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/irq.h> | 22 | #include <linux/irq.h> |
23 | 23 | ||
24 | #include <asm/irq_cpu.h> | 24 | #include <asm/irq_cpu.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/vr41xx/irq.h> | 25 | #include <asm/vr41xx/irq.h> |
27 | 26 | ||
28 | typedef struct irq_cascade { | 27 | typedef struct irq_cascade { |
diff --git a/arch/mips/vr41xx/common/pmu.c b/arch/mips/vr41xx/common/pmu.c index 692b4e85b7fc..9fbf5f0d1faf 100644 --- a/arch/mips/vr41xx/common/pmu.c +++ b/arch/mips/vr41xx/common/pmu.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/io.h> | 30 | #include <asm/io.h> |
31 | #include <asm/processor.h> | 31 | #include <asm/processor.h> |
32 | #include <asm/reboot.h> | 32 | #include <asm/reboot.h> |
33 | #include <asm/system.h> | ||
34 | 33 | ||
35 | #define PMU_TYPE1_BASE 0x0b0000a0UL | 34 | #define PMU_TYPE1_BASE 0x0b0000a0UL |
36 | #define PMU_TYPE1_SIZE 0x0eUL | 35 | #define PMU_TYPE1_SIZE 0x0eUL |