diff options
Diffstat (limited to 'arch/microblaze/kernel/setup.c')
-rw-r--r-- | arch/microblaze/kernel/setup.c | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/arch/microblaze/kernel/setup.c b/arch/microblaze/kernel/setup.c index bb8c4b9ccb80..f974ec7aa357 100644 --- a/arch/microblaze/kernel/setup.c +++ b/arch/microblaze/kernel/setup.c | |||
@@ -22,7 +22,10 @@ | |||
22 | #include <linux/io.h> | 22 | #include <linux/io.h> |
23 | #include <linux/bug.h> | 23 | #include <linux/bug.h> |
24 | #include <linux/param.h> | 24 | #include <linux/param.h> |
25 | #include <linux/pci.h> | ||
25 | #include <linux/cache.h> | 26 | #include <linux/cache.h> |
27 | #include <linux/of_platform.h> | ||
28 | #include <linux/dma-mapping.h> | ||
26 | #include <asm/cacheflush.h> | 29 | #include <asm/cacheflush.h> |
27 | #include <asm/entry.h> | 30 | #include <asm/entry.h> |
28 | #include <asm/cpuinfo.h> | 31 | #include <asm/cpuinfo.h> |
@@ -54,14 +57,10 @@ void __init setup_arch(char **cmdline_p) | |||
54 | 57 | ||
55 | microblaze_cache_init(); | 58 | microblaze_cache_init(); |
56 | 59 | ||
57 | invalidate_dcache(); | ||
58 | enable_dcache(); | ||
59 | |||
60 | invalidate_icache(); | ||
61 | enable_icache(); | ||
62 | |||
63 | setup_memory(); | 60 | setup_memory(); |
64 | 61 | ||
62 | xilinx_pci_init(); | ||
63 | |||
65 | #if defined(CONFIG_SELFMOD_INTC) || defined(CONFIG_SELFMOD_TIMER) | 64 | #if defined(CONFIG_SELFMOD_INTC) || defined(CONFIG_SELFMOD_TIMER) |
66 | printk(KERN_NOTICE "Self modified code enable\n"); | 65 | printk(KERN_NOTICE "Self modified code enable\n"); |
67 | #endif | 66 | #endif |
@@ -188,3 +187,37 @@ static int microblaze_debugfs_init(void) | |||
188 | } | 187 | } |
189 | arch_initcall(microblaze_debugfs_init); | 188 | arch_initcall(microblaze_debugfs_init); |
190 | #endif | 189 | #endif |
190 | |||
191 | static int dflt_bus_notify(struct notifier_block *nb, | ||
192 | unsigned long action, void *data) | ||
193 | { | ||
194 | struct device *dev = data; | ||
195 | |||
196 | /* We are only intereted in device addition */ | ||
197 | if (action != BUS_NOTIFY_ADD_DEVICE) | ||
198 | return 0; | ||
199 | |||
200 | set_dma_ops(dev, &dma_direct_ops); | ||
201 | |||
202 | return NOTIFY_DONE; | ||
203 | } | ||
204 | |||
205 | static struct notifier_block dflt_plat_bus_notifier = { | ||
206 | .notifier_call = dflt_bus_notify, | ||
207 | .priority = INT_MAX, | ||
208 | }; | ||
209 | |||
210 | static struct notifier_block dflt_of_bus_notifier = { | ||
211 | .notifier_call = dflt_bus_notify, | ||
212 | .priority = INT_MAX, | ||
213 | }; | ||
214 | |||
215 | static int __init setup_bus_notifier(void) | ||
216 | { | ||
217 | bus_register_notifier(&platform_bus_type, &dflt_plat_bus_notifier); | ||
218 | bus_register_notifier(&of_platform_bus_type, &dflt_of_bus_notifier); | ||
219 | |||
220 | return 0; | ||
221 | } | ||
222 | |||
223 | arch_initcall(setup_bus_notifier); | ||