aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/kernel/osf_sys.c1
-rw-r--r--arch/alpha/kernel/pci.c22
-rw-r--r--arch/alpha/kernel/sys_nautilus.c2
-rw-r--r--arch/arm/mach-integrator/time.c5
-rw-r--r--arch/arm/mach-lh7a40x/arch-kev7a400.c5
-rw-r--r--arch/arm/mm/Kconfig6
-rw-r--r--arch/arm/mm/proc-arm1020.S2
-rw-r--r--arch/arm/mm/proc-arm1020e.S2
-rw-r--r--arch/arm/mm/proc-arm1022.S2
-rw-r--r--arch/arm/mm/proc-arm1026.S2
-rw-r--r--arch/arm/mm/proc-arm6_7.S4
-rw-r--r--arch/arm/mm/proc-arm720.S2
-rw-r--r--arch/arm/mm/proc-arm740.S1
-rw-r--r--arch/arm/mm/proc-arm7tdmi.S1
-rw-r--r--arch/arm/mm/proc-arm920.S2
-rw-r--r--arch/arm/mm/proc-arm922.S2
-rw-r--r--arch/arm/mm/proc-arm925.S2
-rw-r--r--arch/arm/mm/proc-arm926.S2
-rw-r--r--arch/arm/mm/proc-arm940.S1
-rw-r--r--arch/arm/mm/proc-arm946.S1
-rw-r--r--arch/arm/mm/proc-arm9tdmi.S1
-rw-r--r--arch/arm/mm/proc-feroceon.S2
-rw-r--r--arch/arm/mm/proc-sa110.S2
-rw-r--r--arch/arm/mm/proc-sa1100.S2
-rw-r--r--arch/arm/mm/proc-v6.S2
-rw-r--r--arch/arm/mm/proc-v7.S2
-rw-r--r--arch/arm/mm/proc-xsc3.S1
-rw-r--r--arch/arm/mm/proc-xscale.S2
-rw-r--r--arch/blackfin/Kconfig161
-rw-r--r--arch/blackfin/Makefile5
-rw-r--r--arch/blackfin/boot/.gitignore1
-rw-r--r--arch/blackfin/configs/BF527-EZKIT_defconfig8
-rw-r--r--arch/blackfin/configs/BF533-EZKIT_defconfig4
-rw-r--r--arch/blackfin/configs/BF533-STAMP_defconfig4
-rw-r--r--arch/blackfin/configs/BF537-STAMP_defconfig4
-rw-r--r--arch/blackfin/configs/BF548-EZKIT_defconfig8
-rw-r--r--arch/blackfin/configs/BF561-EZKIT_defconfig4
-rw-r--r--arch/blackfin/configs/CM-BF533_defconfig912
-rw-r--r--arch/blackfin/configs/CM-BF537E_defconfig940
-rw-r--r--arch/blackfin/configs/CM-BF537U_defconfig940
-rw-r--r--arch/blackfin/configs/CM-BF548_defconfig1373
-rw-r--r--arch/blackfin/configs/CM-BF561_defconfig876
-rw-r--r--arch/blackfin/configs/H8606_defconfig4
-rw-r--r--arch/blackfin/configs/IP0X_defconfig1252
-rw-r--r--arch/blackfin/configs/PNAV-10_defconfig4
-rw-r--r--arch/blackfin/configs/SRV1_defconfig1290
-rw-r--r--arch/blackfin/kernel/Makefile8
-rw-r--r--arch/blackfin/kernel/bfin_dma_5xx.c13
-rw-r--r--arch/blackfin/kernel/bfin_gpio.c169
-rw-r--r--arch/blackfin/kernel/cplb-mpu/cplbinfo.c8
-rw-r--r--arch/blackfin/kernel/cplb-mpu/cplbinit.c4
-rw-r--r--arch/blackfin/kernel/cplb-mpu/cplbmgr.c128
-rw-r--r--arch/blackfin/kernel/cplb-nompu/cplbinfo.c15
-rw-r--r--arch/blackfin/kernel/cplb-nompu/cplbinit.c31
-rw-r--r--arch/blackfin/kernel/dma-mapping.c4
-rw-r--r--arch/blackfin/kernel/gptimers.c24
-rw-r--r--arch/blackfin/kernel/process.c69
-rw-r--r--arch/blackfin/kernel/ptrace.c7
-rw-r--r--arch/blackfin/kernel/reboot.c69
-rw-r--r--arch/blackfin/kernel/setup.c131
-rw-r--r--arch/blackfin/kernel/signal.c24
-rw-r--r--arch/blackfin/kernel/sys_bfin.c2
-rw-r--r--arch/blackfin/kernel/time-ts.c219
-rw-r--r--arch/blackfin/kernel/time.c19
-rw-r--r--arch/blackfin/kernel/traps.c94
-rw-r--r--arch/blackfin/kernel/vmlinux.lds.S54
-rw-r--r--arch/blackfin/mach-bf527/Makefile2
-rw-r--r--arch/blackfin/mach-bf527/boards/ezkit.c36
-rw-r--r--arch/blackfin/mach-bf527/cpu.c161
-rw-r--r--arch/blackfin/mach-bf527/dma.c5
-rw-r--r--arch/blackfin/mach-bf527/head.S18
-rw-r--r--arch/blackfin/mach-bf533/Makefile2
-rw-r--r--arch/blackfin/mach-bf533/boards/H8606.c25
-rw-r--r--arch/blackfin/mach-bf533/boards/Kconfig6
-rw-r--r--arch/blackfin/mach-bf533/boards/Makefile1
-rw-r--r--arch/blackfin/mach-bf533/boards/cm_bf533.c25
-rw-r--r--arch/blackfin/mach-bf533/boards/ezkit.c25
-rw-r--r--arch/blackfin/mach-bf533/boards/generic_board.c2
-rw-r--r--arch/blackfin/mach-bf533/boards/ip0x.c303
-rw-r--r--arch/blackfin/mach-bf533/boards/stamp.c62
-rw-r--r--arch/blackfin/mach-bf533/cpu.c158
-rw-r--r--arch/blackfin/mach-bf533/dma.c5
-rw-r--r--arch/blackfin/mach-bf533/head.S34
-rw-r--r--arch/blackfin/mach-bf537/Makefile2
-rw-r--r--arch/blackfin/mach-bf537/boards/cm_bf537.c58
-rw-r--r--arch/blackfin/mach-bf537/boards/generic_board.c34
-rw-r--r--arch/blackfin/mach-bf537/boards/minotaur.c36
-rw-r--r--arch/blackfin/mach-bf537/boards/pnav10.c31
-rw-r--r--arch/blackfin/mach-bf537/boards/stamp.c93
-rw-r--r--arch/blackfin/mach-bf537/cpu.c159
-rw-r--r--arch/blackfin/mach-bf537/dma.c5
-rw-r--r--arch/blackfin/mach-bf537/head.S46
-rw-r--r--arch/blackfin/mach-bf548/Makefile2
-rw-r--r--arch/blackfin/mach-bf548/boards/Kconfig6
-rw-r--r--arch/blackfin/mach-bf548/boards/Makefile1
-rw-r--r--arch/blackfin/mach-bf548/boards/cm_bf548.c664
-rw-r--r--arch/blackfin/mach-bf548/boards/ezkit.c105
-rw-r--r--arch/blackfin/mach-bf548/cpu.c159
-rw-r--r--arch/blackfin/mach-bf548/dma.c4
-rw-r--r--arch/blackfin/mach-bf548/head.S18
-rw-r--r--arch/blackfin/mach-bf561/boards/cm_bf561.c25
-rw-r--r--arch/blackfin/mach-bf561/boards/ezkit.c32
-rw-r--r--arch/blackfin/mach-bf561/boards/generic_board.c2
-rw-r--r--arch/blackfin/mach-bf561/boards/tepla.c2
-rw-r--r--arch/blackfin/mach-bf561/dma.c5
-rw-r--r--arch/blackfin/mach-bf561/head.S34
-rw-r--r--arch/blackfin/mach-common/Makefile3
-rw-r--r--arch/blackfin/mach-common/arch_checks.c3
-rw-r--r--arch/blackfin/mach-common/cpufreq.c194
-rw-r--r--arch/blackfin/mach-common/entry.S128
-rw-r--r--arch/blackfin/mach-common/ints-priority.c56
-rw-r--r--arch/blackfin/mach-common/lock.S2
-rw-r--r--arch/blackfin/mm/blackfin_sram.c2
-rw-r--r--arch/blackfin/oprofile/common.c2
-rw-r--r--arch/blackfin/oprofile/op_model_bf533.c2
-rw-r--r--arch/sparc/kernel/entry.S1
-rw-r--r--arch/sparc/kernel/signal.c5
-rw-r--r--arch/sparc64/Kconfig20
-rw-r--r--arch/sparc64/defconfig99
-rw-r--r--arch/sparc64/kernel/ebus.c1
-rw-r--r--arch/sparc64/kernel/entry.S37
-rw-r--r--arch/sparc64/kernel/entry.h1
-rw-r--r--arch/sparc64/kernel/etrap.S4
-rw-r--r--arch/sparc64/kernel/iommu.c33
-rw-r--r--arch/sparc64/kernel/isa.c1
-rw-r--r--arch/sparc64/kernel/mdesc.c28
-rw-r--r--arch/sparc64/kernel/of_device.c12
-rw-r--r--arch/sparc64/kernel/pci.c12
-rw-r--r--arch/sparc64/kernel/pci_fire.c5
-rw-r--r--arch/sparc64/kernel/pci_impl.h4
-rw-r--r--arch/sparc64/kernel/pci_msi.c8
-rw-r--r--arch/sparc64/kernel/pci_psycho.c5
-rw-r--r--arch/sparc64/kernel/pci_sabre.c4
-rw-r--r--arch/sparc64/kernel/pci_schizo.c5
-rw-r--r--arch/sparc64/kernel/pci_sun4v.c13
-rw-r--r--arch/sparc64/kernel/prom.c14
-rw-r--r--arch/sparc64/kernel/rtrap.S21
-rw-r--r--arch/sparc64/kernel/sbus.c3
-rw-r--r--arch/sparc64/kernel/setup.c3
-rw-r--r--arch/sparc64/kernel/signal.c25
-rw-r--r--arch/sparc64/kernel/signal32.c20
-rw-r--r--arch/sparc64/kernel/smp.c38
-rw-r--r--arch/sparc64/kernel/sparc64_ksyms.c2
-rw-r--r--arch/sparc64/kernel/stacktrace.c16
-rw-r--r--arch/sparc64/kernel/sun4v_tlb_miss.S16
-rw-r--r--arch/sparc64/kernel/sys_sparc.c4
-rw-r--r--arch/sparc64/kernel/sysfs.c12
-rw-r--r--arch/sparc64/kernel/traps.c19
-rw-r--r--arch/sparc64/kernel/tsb.S2
-rw-r--r--arch/sparc64/kernel/winfixup.S12
-rw-r--r--arch/sparc64/mm/init.c989
-rw-r--r--arch/sparc64/mm/tsb.c3
-rw-r--r--arch/sparc64/mm/ultra.S4
-rw-r--r--arch/x86/Kconfig2
-rw-r--r--arch/x86/boot/.gitignore5
-rw-r--r--arch/x86/kernel/acpi/realmode/.gitignore3
-rw-r--r--arch/x86/kernel/alternative.c39
-rw-r--r--arch/x86/kernel/apic_32.c2
-rw-r--r--arch/x86/kernel/apic_64.c4
-rw-r--r--arch/x86/kernel/process_32.c2
-rw-r--r--arch/x86/kernel/process_64.c2
-rw-r--r--arch/x86/kernel/setup.c2
-rw-r--r--arch/x86/kernel/setup_32.c4
-rw-r--r--arch/x86/kernel/smpboot.c12
-rw-r--r--arch/x86/kernel/tlb_64.c2
-rw-r--r--arch/x86/kernel/vsyscall_64.c2
-rw-r--r--arch/x86/mach-visws/mpparse.c15
-rw-r--r--arch/x86/mach-voyager/voyager_smp.c17
-rw-r--r--arch/x86/mm/dump_pagetables.c2
-rw-r--r--arch/x86/mm/init_64.c7
-rw-r--r--arch/x86/mm/pageattr.c2
-rw-r--r--arch/x86/mm/srat_64.c2
172 files changed, 11404 insertions, 1971 deletions
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
index 8c71daf94a59..9fee37e2596f 100644
--- a/arch/alpha/kernel/osf_sys.c
+++ b/arch/alpha/kernel/osf_sys.c
@@ -75,6 +75,7 @@ osf_set_program_attributes(unsigned long text_start, unsigned long text_len,
75 lock_kernel(); 75 lock_kernel();
76 mm = current->mm; 76 mm = current->mm;
77 mm->end_code = bss_start + bss_len; 77 mm->end_code = bss_start + bss_len;
78 mm->start_brk = bss_start + bss_len;
78 mm->brk = bss_start + bss_len; 79 mm->brk = bss_start + bss_len;
79#if 0 80#if 0
80 printk("set_program_attributes(%lx %lx %lx %lx)\n", 81 printk("set_program_attributes(%lx %lx %lx %lx)\n",
diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c
index c107cc08daf4..78357798b6fd 100644
--- a/arch/alpha/kernel/pci.c
+++ b/arch/alpha/kernel/pci.c
@@ -71,25 +71,13 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82378, quirk_i
71static void __init 71static void __init
72quirk_cypress(struct pci_dev *dev) 72quirk_cypress(struct pci_dev *dev)
73{ 73{
74 /* The Notorious Cy82C693 chip. */
75
76 /* The Cypress IDE controller doesn't support native mode, but it
77 has programmable addresses of IDE command/control registers.
78 This violates PCI specifications, confuses the IDE subsystem and
79 causes resource conflicts between the primary HD_CMD register and
80 the floppy controller. Ugh. Fix that. */
81 if (dev->class >> 8 == PCI_CLASS_STORAGE_IDE) {
82 dev->resource[0].flags = 0;
83 dev->resource[1].flags = 0;
84 }
85
86 /* The Cypress bridge responds on the PCI bus in the address range 74 /* The Cypress bridge responds on the PCI bus in the address range
87 0xffff0000-0xffffffff (conventional x86 BIOS ROM). There is no 75 0xffff0000-0xffffffff (conventional x86 BIOS ROM). There is no
88 way to turn this off. The bridge also supports several extended 76 way to turn this off. The bridge also supports several extended
89 BIOS ranges (disabled after power-up), and some consoles do turn 77 BIOS ranges (disabled after power-up), and some consoles do turn
90 them on. So if we use a large direct-map window, or a large SG 78 them on. So if we use a large direct-map window, or a large SG
91 window, we must avoid the entire 0xfff00000-0xffffffff region. */ 79 window, we must avoid the entire 0xfff00000-0xffffffff region. */
92 else if (dev->class >> 8 == PCI_CLASS_BRIDGE_ISA) { 80 if (dev->class >> 8 == PCI_CLASS_BRIDGE_ISA) {
93 if (__direct_map_base + __direct_map_size >= 0xfff00000UL) 81 if (__direct_map_base + __direct_map_size >= 0xfff00000UL)
94 __direct_map_size = 0xfff00000UL - __direct_map_base; 82 __direct_map_size = 0xfff00000UL - __direct_map_base;
95 else { 83 else {
@@ -391,7 +379,7 @@ pcibios_set_master(struct pci_dev *dev)
391 pci_write_config_byte(dev, PCI_LATENCY_TIMER, 64); 379 pci_write_config_byte(dev, PCI_LATENCY_TIMER, 64);
392} 380}
393 381
394static void __init 382void __init
395pcibios_claim_one_bus(struct pci_bus *b) 383pcibios_claim_one_bus(struct pci_bus *b)
396{ 384{
397 struct pci_dev *dev; 385 struct pci_dev *dev;
@@ -405,7 +393,8 @@ pcibios_claim_one_bus(struct pci_bus *b)
405 393
406 if (r->parent || !r->start || !r->flags) 394 if (r->parent || !r->start || !r->flags)
407 continue; 395 continue;
408 pci_claim_resource(dev, i); 396 if (pci_probe_only || (r->flags & IORESOURCE_PCI_FIXED))
397 pci_claim_resource(dev, i);
409 } 398 }
410 } 399 }
411 400
@@ -444,8 +433,7 @@ common_init_pci(void)
444 } 433 }
445 } 434 }
446 435
447 if (pci_probe_only) 436 pcibios_claim_console_setup();
448 pcibios_claim_console_setup();
449 437
450 pci_assign_unassigned_resources(); 438 pci_assign_unassigned_resources();
451 pci_fixup_irqs(alpha_mv.pci_swizzle, alpha_mv.pci_map_irq); 439 pci_fixup_irqs(alpha_mv.pci_swizzle, alpha_mv.pci_map_irq);
diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c
index 920196bcbb61..a7f23b5ab814 100644
--- a/arch/alpha/kernel/sys_nautilus.c
+++ b/arch/alpha/kernel/sys_nautilus.c
@@ -187,6 +187,7 @@ nautilus_machine_check(unsigned long vector, unsigned long la_ptr)
187} 187}
188 188
189extern void free_reserved_mem(void *, void *); 189extern void free_reserved_mem(void *, void *);
190extern void pcibios_claim_one_bus(struct pci_bus *);
190 191
191static struct resource irongate_mem = { 192static struct resource irongate_mem = {
192 .name = "Irongate PCI MEM", 193 .name = "Irongate PCI MEM",
@@ -205,6 +206,7 @@ nautilus_init_pci(void)
205 /* Scan our single hose. */ 206 /* Scan our single hose. */
206 bus = pci_scan_bus(0, alpha_mv.pci_ops, hose); 207 bus = pci_scan_bus(0, alpha_mv.pci_ops, hose);
207 hose->bus = bus; 208 hose->bus = bus;
209 pcibios_claim_one_bus(bus);
208 210
209 irongate = pci_get_bus_and_slot(0, 0); 211 irongate = pci_get_bus_and_slot(0, 0);
210 bus->self = irongate; 212 bus->self = irongate;
diff --git a/arch/arm/mach-integrator/time.c b/arch/arm/mach-integrator/time.c
index 5235f64f235b..8508a0db3eaf 100644
--- a/arch/arm/mach-integrator/time.c
+++ b/arch/arm/mach-integrator/time.c
@@ -124,8 +124,11 @@ static int rtc_probe(struct amba_device *dev, void *id)
124 124
125 xtime.tv_sec = __raw_readl(rtc_base + RTC_DR); 125 xtime.tv_sec = __raw_readl(rtc_base + RTC_DR);
126 126
127 /* note that 'dev' is merely used for irq disambiguation;
128 * it is not actually referenced in the irq handler
129 */
127 ret = request_irq(dev->irq[0], arm_rtc_interrupt, IRQF_DISABLED, 130 ret = request_irq(dev->irq[0], arm_rtc_interrupt, IRQF_DISABLED,
128 "rtc-pl030", NULL); 131 "rtc-pl030", dev);
129 if (ret) 132 if (ret)
130 goto map_out; 133 goto map_out;
131 134
diff --git a/arch/arm/mach-lh7a40x/arch-kev7a400.c b/arch/arm/mach-lh7a40x/arch-kev7a400.c
index 6d26661d99f6..2ef7d0097b38 100644
--- a/arch/arm/mach-lh7a40x/arch-kev7a400.c
+++ b/arch/arm/mach-lh7a40x/arch-kev7a400.c
@@ -75,10 +75,9 @@ static void kev7a400_cpld_handler (unsigned int irq, struct irq_desc *desc)
75{ 75{
76 u32 mask = CPLD_LATCHED_INTS; 76 u32 mask = CPLD_LATCHED_INTS;
77 irq = IRQ_KEV7A400_CPLD; 77 irq = IRQ_KEV7A400_CPLD;
78 for (; mask; mask >>= 1, ++irq) { 78 for (; mask; mask >>= 1, ++irq)
79 if (mask & 1) 79 if (mask & 1)
80 desc[irq].handle (irq, desc); 80 desc_handle_irq(irq, desc);
81 }
82} 81}
83 82
84void __init lh7a40x_init_board_irq (void) 83void __init lh7a40x_init_board_irq (void)
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index 746cbb7c8e95..1b8229d9c9d5 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -32,6 +32,7 @@ config CPU_ARM7TDMI
32 depends on !MMU 32 depends on !MMU
33 select CPU_32v4T 33 select CPU_32v4T
34 select CPU_ABRT_LV4T 34 select CPU_ABRT_LV4T
35 select CPU_PABRT_NOIFAR
35 select CPU_CACHE_V4 36 select CPU_CACHE_V4
36 help 37 help
37 A 32-bit RISC microprocessor based on the ARM7 processor core 38 A 32-bit RISC microprocessor based on the ARM7 processor core
@@ -85,6 +86,7 @@ config CPU_ARM740T
85 depends on !MMU 86 depends on !MMU
86 select CPU_32v4T 87 select CPU_32v4T
87 select CPU_ABRT_LV4T 88 select CPU_ABRT_LV4T
89 select CPU_PABRT_NOIFAR
88 select CPU_CACHE_V3 # although the core is v4t 90 select CPU_CACHE_V3 # although the core is v4t
89 select CPU_CP15_MPU 91 select CPU_CP15_MPU
90 help 92 help
@@ -101,6 +103,7 @@ config CPU_ARM9TDMI
101 depends on !MMU 103 depends on !MMU
102 select CPU_32v4T 104 select CPU_32v4T
103 select CPU_ABRT_NOMMU 105 select CPU_ABRT_NOMMU
106 select CPU_PABRT_NOIFAR
104 select CPU_CACHE_V4 107 select CPU_CACHE_V4
105 help 108 help
106 A 32-bit RISC microprocessor based on the ARM9 processor core 109 A 32-bit RISC microprocessor based on the ARM9 processor core
@@ -200,6 +203,7 @@ config CPU_ARM940T
200 depends on !MMU 203 depends on !MMU
201 select CPU_32v4T 204 select CPU_32v4T
202 select CPU_ABRT_NOMMU 205 select CPU_ABRT_NOMMU
206 select CPU_PABRT_NOIFAR
203 select CPU_CACHE_VIVT 207 select CPU_CACHE_VIVT
204 select CPU_CP15_MPU 208 select CPU_CP15_MPU
205 help 209 help
@@ -217,6 +221,7 @@ config CPU_ARM946E
217 depends on !MMU 221 depends on !MMU
218 select CPU_32v5 222 select CPU_32v5
219 select CPU_ABRT_NOMMU 223 select CPU_ABRT_NOMMU
224 select CPU_PABRT_NOIFAR
220 select CPU_CACHE_VIVT 225 select CPU_CACHE_VIVT
221 select CPU_CP15_MPU 226 select CPU_CP15_MPU
222 help 227 help
@@ -351,6 +356,7 @@ config CPU_XSC3
351 default y 356 default y
352 select CPU_32v5 357 select CPU_32v5
353 select CPU_ABRT_EV5T 358 select CPU_ABRT_EV5T
359 select CPU_PABRT_NOIFAR
354 select CPU_CACHE_VIVT 360 select CPU_CACHE_VIVT
355 select CPU_CP15_MMU 361 select CPU_CP15_MMU
356 select CPU_TLB_V4WBI if MMU 362 select CPU_TLB_V4WBI if MMU
diff --git a/arch/arm/mm/proc-arm1020.S b/arch/arm/mm/proc-arm1020.S
index 32fd7ea533f2..5673f4d6113b 100644
--- a/arch/arm/mm/proc-arm1020.S
+++ b/arch/arm/mm/proc-arm1020.S
@@ -471,6 +471,7 @@ arm1020_crval:
471 .type arm1020_processor_functions, #object 471 .type arm1020_processor_functions, #object
472arm1020_processor_functions: 472arm1020_processor_functions:
473 .word v4t_early_abort 473 .word v4t_early_abort
474 .word pabort_noifar
474 .word cpu_arm1020_proc_init 475 .word cpu_arm1020_proc_init
475 .word cpu_arm1020_proc_fin 476 .word cpu_arm1020_proc_fin
476 .word cpu_arm1020_reset 477 .word cpu_arm1020_reset
@@ -478,7 +479,6 @@ arm1020_processor_functions:
478 .word cpu_arm1020_dcache_clean_area 479 .word cpu_arm1020_dcache_clean_area
479 .word cpu_arm1020_switch_mm 480 .word cpu_arm1020_switch_mm
480 .word cpu_arm1020_set_pte_ext 481 .word cpu_arm1020_set_pte_ext
481 .word pabort_noifar
482 .size arm1020_processor_functions, . - arm1020_processor_functions 482 .size arm1020_processor_functions, . - arm1020_processor_functions
483 483
484 .section ".rodata" 484 .section ".rodata"
diff --git a/arch/arm/mm/proc-arm1020e.S b/arch/arm/mm/proc-arm1020e.S
index fe2b0ae70274..4343fdb0e9e5 100644
--- a/arch/arm/mm/proc-arm1020e.S
+++ b/arch/arm/mm/proc-arm1020e.S
@@ -452,6 +452,7 @@ arm1020e_crval:
452 .type arm1020e_processor_functions, #object 452 .type arm1020e_processor_functions, #object
453arm1020e_processor_functions: 453arm1020e_processor_functions:
454 .word v4t_early_abort 454 .word v4t_early_abort
455 .word pabort_noifar
455 .word cpu_arm1020e_proc_init 456 .word cpu_arm1020e_proc_init
456 .word cpu_arm1020e_proc_fin 457 .word cpu_arm1020e_proc_fin
457 .word cpu_arm1020e_reset 458 .word cpu_arm1020e_reset
@@ -459,7 +460,6 @@ arm1020e_processor_functions:
459 .word cpu_arm1020e_dcache_clean_area 460 .word cpu_arm1020e_dcache_clean_area
460 .word cpu_arm1020e_switch_mm 461 .word cpu_arm1020e_switch_mm
461 .word cpu_arm1020e_set_pte_ext 462 .word cpu_arm1020e_set_pte_ext
462 .word pabort_noifar
463 .size arm1020e_processor_functions, . - arm1020e_processor_functions 463 .size arm1020e_processor_functions, . - arm1020e_processor_functions
464 464
465 .section ".rodata" 465 .section ".rodata"
diff --git a/arch/arm/mm/proc-arm1022.S b/arch/arm/mm/proc-arm1022.S
index 06dde678e19d..2a4ea1659e96 100644
--- a/arch/arm/mm/proc-arm1022.S
+++ b/arch/arm/mm/proc-arm1022.S
@@ -435,6 +435,7 @@ arm1022_crval:
435 .type arm1022_processor_functions, #object 435 .type arm1022_processor_functions, #object
436arm1022_processor_functions: 436arm1022_processor_functions:
437 .word v4t_early_abort 437 .word v4t_early_abort
438 .word pabort_noifar
438 .word cpu_arm1022_proc_init 439 .word cpu_arm1022_proc_init
439 .word cpu_arm1022_proc_fin 440 .word cpu_arm1022_proc_fin
440 .word cpu_arm1022_reset 441 .word cpu_arm1022_reset
@@ -442,7 +443,6 @@ arm1022_processor_functions:
442 .word cpu_arm1022_dcache_clean_area 443 .word cpu_arm1022_dcache_clean_area
443 .word cpu_arm1022_switch_mm 444 .word cpu_arm1022_switch_mm
444 .word cpu_arm1022_set_pte_ext 445 .word cpu_arm1022_set_pte_ext
445 .word pabort_noifar
446 .size arm1022_processor_functions, . - arm1022_processor_functions 446 .size arm1022_processor_functions, . - arm1022_processor_functions
447 447
448 .section ".rodata" 448 .section ".rodata"
diff --git a/arch/arm/mm/proc-arm1026.S b/arch/arm/mm/proc-arm1026.S
index f5506e6e681e..77a1babd421c 100644
--- a/arch/arm/mm/proc-arm1026.S
+++ b/arch/arm/mm/proc-arm1026.S
@@ -430,6 +430,7 @@ arm1026_crval:
430 .type arm1026_processor_functions, #object 430 .type arm1026_processor_functions, #object
431arm1026_processor_functions: 431arm1026_processor_functions:
432 .word v5t_early_abort 432 .word v5t_early_abort
433 .word pabort_noifar
433 .word cpu_arm1026_proc_init 434 .word cpu_arm1026_proc_init
434 .word cpu_arm1026_proc_fin 435 .word cpu_arm1026_proc_fin
435 .word cpu_arm1026_reset 436 .word cpu_arm1026_reset
@@ -437,7 +438,6 @@ arm1026_processor_functions:
437 .word cpu_arm1026_dcache_clean_area 438 .word cpu_arm1026_dcache_clean_area
438 .word cpu_arm1026_switch_mm 439 .word cpu_arm1026_switch_mm
439 .word cpu_arm1026_set_pte_ext 440 .word cpu_arm1026_set_pte_ext
440 .word pabort_noifar
441 .size arm1026_processor_functions, . - arm1026_processor_functions 441 .size arm1026_processor_functions, . - arm1026_processor_functions
442 442
443 .section .rodata 443 .section .rodata
diff --git a/arch/arm/mm/proc-arm6_7.S b/arch/arm/mm/proc-arm6_7.S
index 14b6a95c8d45..c371fc87776e 100644
--- a/arch/arm/mm/proc-arm6_7.S
+++ b/arch/arm/mm/proc-arm6_7.S
@@ -293,6 +293,7 @@ __arm7_setup: mov r0, #0
293 .type arm6_processor_functions, #object 293 .type arm6_processor_functions, #object
294ENTRY(arm6_processor_functions) 294ENTRY(arm6_processor_functions)
295 .word cpu_arm6_data_abort 295 .word cpu_arm6_data_abort
296 .word pabort_noifar
296 .word cpu_arm6_proc_init 297 .word cpu_arm6_proc_init
297 .word cpu_arm6_proc_fin 298 .word cpu_arm6_proc_fin
298 .word cpu_arm6_reset 299 .word cpu_arm6_reset
@@ -300,7 +301,6 @@ ENTRY(arm6_processor_functions)
300 .word cpu_arm6_dcache_clean_area 301 .word cpu_arm6_dcache_clean_area
301 .word cpu_arm6_switch_mm 302 .word cpu_arm6_switch_mm
302 .word cpu_arm6_set_pte_ext 303 .word cpu_arm6_set_pte_ext
303 .word pabort_noifar
304 .size arm6_processor_functions, . - arm6_processor_functions 304 .size arm6_processor_functions, . - arm6_processor_functions
305 305
306/* 306/*
@@ -310,6 +310,7 @@ ENTRY(arm6_processor_functions)
310 .type arm7_processor_functions, #object 310 .type arm7_processor_functions, #object
311ENTRY(arm7_processor_functions) 311ENTRY(arm7_processor_functions)
312 .word cpu_arm7_data_abort 312 .word cpu_arm7_data_abort
313 .word pabort_noifar
313 .word cpu_arm7_proc_init 314 .word cpu_arm7_proc_init
314 .word cpu_arm7_proc_fin 315 .word cpu_arm7_proc_fin
315 .word cpu_arm7_reset 316 .word cpu_arm7_reset
@@ -317,7 +318,6 @@ ENTRY(arm7_processor_functions)
317 .word cpu_arm7_dcache_clean_area 318 .word cpu_arm7_dcache_clean_area
318 .word cpu_arm7_switch_mm 319 .word cpu_arm7_switch_mm
319 .word cpu_arm7_set_pte_ext 320 .word cpu_arm7_set_pte_ext
320 .word pabort_noifar
321 .size arm7_processor_functions, . - arm7_processor_functions 321 .size arm7_processor_functions, . - arm7_processor_functions
322 322
323 .section ".rodata" 323 .section ".rodata"
diff --git a/arch/arm/mm/proc-arm720.S b/arch/arm/mm/proc-arm720.S
index ca5e7aac2da7..d64f8e6f75ab 100644
--- a/arch/arm/mm/proc-arm720.S
+++ b/arch/arm/mm/proc-arm720.S
@@ -198,6 +198,7 @@ arm720_crval:
198 .type arm720_processor_functions, #object 198 .type arm720_processor_functions, #object
199ENTRY(arm720_processor_functions) 199ENTRY(arm720_processor_functions)
200 .word v4t_late_abort 200 .word v4t_late_abort
201 .word pabort_noifar
201 .word cpu_arm720_proc_init 202 .word cpu_arm720_proc_init
202 .word cpu_arm720_proc_fin 203 .word cpu_arm720_proc_fin
203 .word cpu_arm720_reset 204 .word cpu_arm720_reset
@@ -205,7 +206,6 @@ ENTRY(arm720_processor_functions)
205 .word cpu_arm720_dcache_clean_area 206 .word cpu_arm720_dcache_clean_area
206 .word cpu_arm720_switch_mm 207 .word cpu_arm720_switch_mm
207 .word cpu_arm720_set_pte_ext 208 .word cpu_arm720_set_pte_ext
208 .word pabort_noifar
209 .size arm720_processor_functions, . - arm720_processor_functions 209 .size arm720_processor_functions, . - arm720_processor_functions
210 210
211 .section ".rodata" 211 .section ".rodata"
diff --git a/arch/arm/mm/proc-arm740.S b/arch/arm/mm/proc-arm740.S
index 7069f495cf9b..3a57376c8bc9 100644
--- a/arch/arm/mm/proc-arm740.S
+++ b/arch/arm/mm/proc-arm740.S
@@ -126,6 +126,7 @@ __arm740_setup:
126 .type arm740_processor_functions, #object 126 .type arm740_processor_functions, #object
127ENTRY(arm740_processor_functions) 127ENTRY(arm740_processor_functions)
128 .word v4t_late_abort 128 .word v4t_late_abort
129 .word pabort_noifar
129 .word cpu_arm740_proc_init 130 .word cpu_arm740_proc_init
130 .word cpu_arm740_proc_fin 131 .word cpu_arm740_proc_fin
131 .word cpu_arm740_reset 132 .word cpu_arm740_reset
diff --git a/arch/arm/mm/proc-arm7tdmi.S b/arch/arm/mm/proc-arm7tdmi.S
index d091c2571823..7b3ecdeb5370 100644
--- a/arch/arm/mm/proc-arm7tdmi.S
+++ b/arch/arm/mm/proc-arm7tdmi.S
@@ -64,6 +64,7 @@ __arm7tdmi_setup:
64 .type arm7tdmi_processor_functions, #object 64 .type arm7tdmi_processor_functions, #object
65ENTRY(arm7tdmi_processor_functions) 65ENTRY(arm7tdmi_processor_functions)
66 .word v4t_late_abort 66 .word v4t_late_abort
67 .word pabort_noifar
67 .word cpu_arm7tdmi_proc_init 68 .word cpu_arm7tdmi_proc_init
68 .word cpu_arm7tdmi_proc_fin 69 .word cpu_arm7tdmi_proc_fin
69 .word cpu_arm7tdmi_reset 70 .word cpu_arm7tdmi_reset
diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S
index 0170d4f466ea..28cdb060df45 100644
--- a/arch/arm/mm/proc-arm920.S
+++ b/arch/arm/mm/proc-arm920.S
@@ -417,6 +417,7 @@ arm920_crval:
417 .type arm920_processor_functions, #object 417 .type arm920_processor_functions, #object
418arm920_processor_functions: 418arm920_processor_functions:
419 .word v4t_early_abort 419 .word v4t_early_abort
420 .word pabort_noifar
420 .word cpu_arm920_proc_init 421 .word cpu_arm920_proc_init
421 .word cpu_arm920_proc_fin 422 .word cpu_arm920_proc_fin
422 .word cpu_arm920_reset 423 .word cpu_arm920_reset
@@ -424,7 +425,6 @@ arm920_processor_functions:
424 .word cpu_arm920_dcache_clean_area 425 .word cpu_arm920_dcache_clean_area
425 .word cpu_arm920_switch_mm 426 .word cpu_arm920_switch_mm
426 .word cpu_arm920_set_pte_ext 427 .word cpu_arm920_set_pte_ext
427 .word pabort_noifar
428 .size arm920_processor_functions, . - arm920_processor_functions 428 .size arm920_processor_functions, . - arm920_processor_functions
429 429
430 .section ".rodata" 430 .section ".rodata"
diff --git a/arch/arm/mm/proc-arm922.S b/arch/arm/mm/proc-arm922.S
index b7952493d404..94ddcb4a4b76 100644
--- a/arch/arm/mm/proc-arm922.S
+++ b/arch/arm/mm/proc-arm922.S
@@ -421,6 +421,7 @@ arm922_crval:
421 .type arm922_processor_functions, #object 421 .type arm922_processor_functions, #object
422arm922_processor_functions: 422arm922_processor_functions:
423 .word v4t_early_abort 423 .word v4t_early_abort
424 .word pabort_noifar
424 .word cpu_arm922_proc_init 425 .word cpu_arm922_proc_init
425 .word cpu_arm922_proc_fin 426 .word cpu_arm922_proc_fin
426 .word cpu_arm922_reset 427 .word cpu_arm922_reset
@@ -428,7 +429,6 @@ arm922_processor_functions:
428 .word cpu_arm922_dcache_clean_area 429 .word cpu_arm922_dcache_clean_area
429 .word cpu_arm922_switch_mm 430 .word cpu_arm922_switch_mm
430 .word cpu_arm922_set_pte_ext 431 .word cpu_arm922_set_pte_ext
431 .word pabort_noifar
432 .size arm922_processor_functions, . - arm922_processor_functions 432 .size arm922_processor_functions, . - arm922_processor_functions
433 433
434 .section ".rodata" 434 .section ".rodata"
diff --git a/arch/arm/mm/proc-arm925.S b/arch/arm/mm/proc-arm925.S
index e2988eba4cf6..065087afb772 100644
--- a/arch/arm/mm/proc-arm925.S
+++ b/arch/arm/mm/proc-arm925.S
@@ -484,6 +484,7 @@ arm925_crval:
484 .type arm925_processor_functions, #object 484 .type arm925_processor_functions, #object
485arm925_processor_functions: 485arm925_processor_functions:
486 .word v4t_early_abort 486 .word v4t_early_abort
487 .word pabort_noifar
487 .word cpu_arm925_proc_init 488 .word cpu_arm925_proc_init
488 .word cpu_arm925_proc_fin 489 .word cpu_arm925_proc_fin
489 .word cpu_arm925_reset 490 .word cpu_arm925_reset
@@ -491,7 +492,6 @@ arm925_processor_functions:
491 .word cpu_arm925_dcache_clean_area 492 .word cpu_arm925_dcache_clean_area
492 .word cpu_arm925_switch_mm 493 .word cpu_arm925_switch_mm
493 .word cpu_arm925_set_pte_ext 494 .word cpu_arm925_set_pte_ext
494 .word pabort_noifar
495 .size arm925_processor_functions, . - arm925_processor_functions 495 .size arm925_processor_functions, . - arm925_processor_functions
496 496
497 .section ".rodata" 497 .section ".rodata"
diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S
index 62f7d1dfe016..997db8472b5c 100644
--- a/arch/arm/mm/proc-arm926.S
+++ b/arch/arm/mm/proc-arm926.S
@@ -437,6 +437,7 @@ arm926_crval:
437 .type arm926_processor_functions, #object 437 .type arm926_processor_functions, #object
438arm926_processor_functions: 438arm926_processor_functions:
439 .word v5tj_early_abort 439 .word v5tj_early_abort
440 .word pabort_noifar
440 .word cpu_arm926_proc_init 441 .word cpu_arm926_proc_init
441 .word cpu_arm926_proc_fin 442 .word cpu_arm926_proc_fin
442 .word cpu_arm926_reset 443 .word cpu_arm926_reset
@@ -444,7 +445,6 @@ arm926_processor_functions:
444 .word cpu_arm926_dcache_clean_area 445 .word cpu_arm926_dcache_clean_area
445 .word cpu_arm926_switch_mm 446 .word cpu_arm926_switch_mm
446 .word cpu_arm926_set_pte_ext 447 .word cpu_arm926_set_pte_ext
447 .word pabort_noifar
448 .size arm926_processor_functions, . - arm926_processor_functions 448 .size arm926_processor_functions, . - arm926_processor_functions
449 449
450 .section ".rodata" 450 .section ".rodata"
diff --git a/arch/arm/mm/proc-arm940.S b/arch/arm/mm/proc-arm940.S
index 786c593778f0..44ead902bd54 100644
--- a/arch/arm/mm/proc-arm940.S
+++ b/arch/arm/mm/proc-arm940.S
@@ -321,6 +321,7 @@ __arm940_setup:
321 .type arm940_processor_functions, #object 321 .type arm940_processor_functions, #object
322ENTRY(arm940_processor_functions) 322ENTRY(arm940_processor_functions)
323 .word nommu_early_abort 323 .word nommu_early_abort
324 .word pabort_noifar
324 .word cpu_arm940_proc_init 325 .word cpu_arm940_proc_init
325 .word cpu_arm940_proc_fin 326 .word cpu_arm940_proc_fin
326 .word cpu_arm940_reset 327 .word cpu_arm940_reset
diff --git a/arch/arm/mm/proc-arm946.S b/arch/arm/mm/proc-arm946.S
index a60c1421d450..2218b0c01330 100644
--- a/arch/arm/mm/proc-arm946.S
+++ b/arch/arm/mm/proc-arm946.S
@@ -376,6 +376,7 @@ __arm946_setup:
376 .type arm946_processor_functions, #object 376 .type arm946_processor_functions, #object
377ENTRY(arm946_processor_functions) 377ENTRY(arm946_processor_functions)
378 .word nommu_early_abort 378 .word nommu_early_abort
379 .word pabort_noifar
379 .word cpu_arm946_proc_init 380 .word cpu_arm946_proc_init
380 .word cpu_arm946_proc_fin 381 .word cpu_arm946_proc_fin
381 .word cpu_arm946_reset 382 .word cpu_arm946_reset
diff --git a/arch/arm/mm/proc-arm9tdmi.S b/arch/arm/mm/proc-arm9tdmi.S
index 4848eeac86b6..c85c1f50e396 100644
--- a/arch/arm/mm/proc-arm9tdmi.S
+++ b/arch/arm/mm/proc-arm9tdmi.S
@@ -64,6 +64,7 @@ __arm9tdmi_setup:
64 .type arm9tdmi_processor_functions, #object 64 .type arm9tdmi_processor_functions, #object
65ENTRY(arm9tdmi_processor_functions) 65ENTRY(arm9tdmi_processor_functions)
66 .word nommu_early_abort 66 .word nommu_early_abort
67 .word pabort_noifar
67 .word cpu_arm9tdmi_proc_init 68 .word cpu_arm9tdmi_proc_init
68 .word cpu_arm9tdmi_proc_fin 69 .word cpu_arm9tdmi_proc_fin
69 .word cpu_arm9tdmi_reset 70 .word cpu_arm9tdmi_reset
diff --git a/arch/arm/mm/proc-feroceon.S b/arch/arm/mm/proc-feroceon.S
index 2f169b28e938..90e7594e29b1 100644
--- a/arch/arm/mm/proc-feroceon.S
+++ b/arch/arm/mm/proc-feroceon.S
@@ -423,6 +423,7 @@ feroceon_crval:
423 .type feroceon_processor_functions, #object 423 .type feroceon_processor_functions, #object
424feroceon_processor_functions: 424feroceon_processor_functions:
425 .word v5t_early_abort 425 .word v5t_early_abort
426 .word pabort_noifar
426 .word cpu_feroceon_proc_init 427 .word cpu_feroceon_proc_init
427 .word cpu_feroceon_proc_fin 428 .word cpu_feroceon_proc_fin
428 .word cpu_feroceon_reset 429 .word cpu_feroceon_reset
@@ -430,7 +431,6 @@ feroceon_processor_functions:
430 .word cpu_feroceon_dcache_clean_area 431 .word cpu_feroceon_dcache_clean_area
431 .word cpu_feroceon_switch_mm 432 .word cpu_feroceon_switch_mm
432 .word cpu_feroceon_set_pte_ext 433 .word cpu_feroceon_set_pte_ext
433 .word pabort_noifar
434 .size feroceon_processor_functions, . - feroceon_processor_functions 434 .size feroceon_processor_functions, . - feroceon_processor_functions
435 435
436 .section ".rodata" 436 .section ".rodata"
diff --git a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S
index 4db3d6299a2b..9818195dbf11 100644
--- a/arch/arm/mm/proc-sa110.S
+++ b/arch/arm/mm/proc-sa110.S
@@ -216,6 +216,7 @@ sa110_crval:
216 .type sa110_processor_functions, #object 216 .type sa110_processor_functions, #object
217ENTRY(sa110_processor_functions) 217ENTRY(sa110_processor_functions)
218 .word v4_early_abort 218 .word v4_early_abort
219 .word pabort_noifar
219 .word cpu_sa110_proc_init 220 .word cpu_sa110_proc_init
220 .word cpu_sa110_proc_fin 221 .word cpu_sa110_proc_fin
221 .word cpu_sa110_reset 222 .word cpu_sa110_reset
@@ -223,7 +224,6 @@ ENTRY(sa110_processor_functions)
223 .word cpu_sa110_dcache_clean_area 224 .word cpu_sa110_dcache_clean_area
224 .word cpu_sa110_switch_mm 225 .word cpu_sa110_switch_mm
225 .word cpu_sa110_set_pte_ext 226 .word cpu_sa110_set_pte_ext
226 .word pabort_noifar
227 .size sa110_processor_functions, . - sa110_processor_functions 227 .size sa110_processor_functions, . - sa110_processor_functions
228 228
229 .section ".rodata" 229 .section ".rodata"
diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S
index 3cdef043760f..c5fe27ad2892 100644
--- a/arch/arm/mm/proc-sa1100.S
+++ b/arch/arm/mm/proc-sa1100.S
@@ -231,6 +231,7 @@ sa1100_crval:
231 .type sa1100_processor_functions, #object 231 .type sa1100_processor_functions, #object
232ENTRY(sa1100_processor_functions) 232ENTRY(sa1100_processor_functions)
233 .word v4_early_abort 233 .word v4_early_abort
234 .word pabort_noifar
234 .word cpu_sa1100_proc_init 235 .word cpu_sa1100_proc_init
235 .word cpu_sa1100_proc_fin 236 .word cpu_sa1100_proc_fin
236 .word cpu_sa1100_reset 237 .word cpu_sa1100_reset
@@ -238,7 +239,6 @@ ENTRY(sa1100_processor_functions)
238 .word cpu_sa1100_dcache_clean_area 239 .word cpu_sa1100_dcache_clean_area
239 .word cpu_sa1100_switch_mm 240 .word cpu_sa1100_switch_mm
240 .word cpu_sa1100_set_pte_ext 241 .word cpu_sa1100_set_pte_ext
241 .word pabort_noifar
242 .size sa1100_processor_functions, . - sa1100_processor_functions 242 .size sa1100_processor_functions, . - sa1100_processor_functions
243 243
244 .section ".rodata" 244 .section ".rodata"
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S
index bf760ea2f789..5702ec58b2a2 100644
--- a/arch/arm/mm/proc-v6.S
+++ b/arch/arm/mm/proc-v6.S
@@ -219,6 +219,7 @@ v6_crval:
219 .type v6_processor_functions, #object 219 .type v6_processor_functions, #object
220ENTRY(v6_processor_functions) 220ENTRY(v6_processor_functions)
221 .word v6_early_abort 221 .word v6_early_abort
222 .word pabort_noifar
222 .word cpu_v6_proc_init 223 .word cpu_v6_proc_init
223 .word cpu_v6_proc_fin 224 .word cpu_v6_proc_fin
224 .word cpu_v6_reset 225 .word cpu_v6_reset
@@ -226,7 +227,6 @@ ENTRY(v6_processor_functions)
226 .word cpu_v6_dcache_clean_area 227 .word cpu_v6_dcache_clean_area
227 .word cpu_v6_switch_mm 228 .word cpu_v6_switch_mm
228 .word cpu_v6_set_pte_ext 229 .word cpu_v6_set_pte_ext
229 .word pabort_noifar
230 .size v6_processor_functions, . - v6_processor_functions 230 .size v6_processor_functions, . - v6_processor_functions
231 231
232 .type cpu_arch_name, #object 232 .type cpu_arch_name, #object
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
index a1d7331cd64c..b49f9a4c82c8 100644
--- a/arch/arm/mm/proc-v7.S
+++ b/arch/arm/mm/proc-v7.S
@@ -205,6 +205,7 @@ __v7_setup_stack:
205 .type v7_processor_functions, #object 205 .type v7_processor_functions, #object
206ENTRY(v7_processor_functions) 206ENTRY(v7_processor_functions)
207 .word v7_early_abort 207 .word v7_early_abort
208 .word pabort_ifar
208 .word cpu_v7_proc_init 209 .word cpu_v7_proc_init
209 .word cpu_v7_proc_fin 210 .word cpu_v7_proc_fin
210 .word cpu_v7_reset 211 .word cpu_v7_reset
@@ -212,7 +213,6 @@ ENTRY(v7_processor_functions)
212 .word cpu_v7_dcache_clean_area 213 .word cpu_v7_dcache_clean_area
213 .word cpu_v7_switch_mm 214 .word cpu_v7_switch_mm
214 .word cpu_v7_set_pte_ext 215 .word cpu_v7_set_pte_ext
215 .word pabort_ifar
216 .size v7_processor_functions, . - v7_processor_functions 216 .size v7_processor_functions, . - v7_processor_functions
217 217
218 .type cpu_arch_name, #object 218 .type cpu_arch_name, #object
diff --git a/arch/arm/mm/proc-xsc3.S b/arch/arm/mm/proc-xsc3.S
index d95921a2ab99..3533741a76f6 100644
--- a/arch/arm/mm/proc-xsc3.S
+++ b/arch/arm/mm/proc-xsc3.S
@@ -450,6 +450,7 @@ xsc3_crval:
450 .type xsc3_processor_functions, #object 450 .type xsc3_processor_functions, #object
451ENTRY(xsc3_processor_functions) 451ENTRY(xsc3_processor_functions)
452 .word v5t_early_abort 452 .word v5t_early_abort
453 .word pabort_noifar
453 .word cpu_xsc3_proc_init 454 .word cpu_xsc3_proc_init
454 .word cpu_xsc3_proc_fin 455 .word cpu_xsc3_proc_fin
455 .word cpu_xsc3_reset 456 .word cpu_xsc3_reset
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S
index 1a6d89823dff..2dd85273976f 100644
--- a/arch/arm/mm/proc-xscale.S
+++ b/arch/arm/mm/proc-xscale.S
@@ -527,6 +527,7 @@ xscale_crval:
527 .type xscale_processor_functions, #object 527 .type xscale_processor_functions, #object
528ENTRY(xscale_processor_functions) 528ENTRY(xscale_processor_functions)
529 .word v5t_early_abort 529 .word v5t_early_abort
530 .word pabort_noifar
530 .word cpu_xscale_proc_init 531 .word cpu_xscale_proc_init
531 .word cpu_xscale_proc_fin 532 .word cpu_xscale_proc_fin
532 .word cpu_xscale_reset 533 .word cpu_xscale_reset
@@ -534,7 +535,6 @@ ENTRY(xscale_processor_functions)
534 .word cpu_xscale_dcache_clean_area 535 .word cpu_xscale_dcache_clean_area
535 .word cpu_xscale_switch_mm 536 .word cpu_xscale_switch_mm
536 .word cpu_xscale_set_pte_ext 537 .word cpu_xscale_set_pte_ext
537 .word pabort_noifar
538 .size xscale_processor_functions, . - xscale_processor_functions 538 .size xscale_processor_functions, . - xscale_processor_functions
539 539
540 .section ".rodata" 540 .section ".rodata"
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig
index 2dd1f300a5cf..795d0ac67c21 100644
--- a/arch/blackfin/Kconfig
+++ b/arch/blackfin/Kconfig
@@ -47,10 +47,6 @@ config GENERIC_IRQ_PROBE
47 bool 47 bool
48 default y 48 default y
49 49
50config GENERIC_TIME
51 bool
52 default n
53
54config GENERIC_GPIO 50config GENERIC_GPIO
55 bool 51 bool
56 default y 52 default y
@@ -224,16 +220,6 @@ config BF54x
224 depends on (BF542 || BF544 || BF547 || BF548 || BF549) 220 depends on (BF542 || BF544 || BF547 || BF548 || BF549)
225 default y 221 default y
226 222
227config BFIN_DUAL_CORE
228 bool
229 depends on (BF561)
230 default y
231
232config BFIN_SINGLE_CORE
233 bool
234 depends on !BFIN_DUAL_CORE
235 default y
236
237config MEM_GENERIC_BOARD 223config MEM_GENERIC_BOARD
238 bool 224 bool
239 depends on GENERIC_BOARD 225 depends on GENERIC_BOARD
@@ -263,7 +249,7 @@ config MEM_MT48LC8M32B2B5_7
263 249
264config MEM_MT48LC32M16A2TG_75 250config MEM_MT48LC32M16A2TG_75
265 bool 251 bool
266 depends on (BFIN527_EZKIT) 252 depends on (BFIN527_EZKIT || BFIN532_IP0X)
267 default y 253 default y
268 254
269source "arch/blackfin/mach-bf527/Kconfig" 255source "arch/blackfin/mach-bf527/Kconfig"
@@ -286,17 +272,34 @@ config CMDLINE
286 to the kernel, you may specify one here. As a minimum, you should specify 272 to the kernel, you may specify one here. As a minimum, you should specify
287 the memory size and the root device (e.g., mem=8M, root=/dev/nfs). 273 the memory size and the root device (e.g., mem=8M, root=/dev/nfs).
288 274
275config BOOT_LOAD
276 hex "Kernel load address for booting"
277 default "0x1000"
278 range 0x1000 0x20000000
279 help
280 This option allows you to set the load address of the kernel.
281 This can be useful if you are on a board which has a small amount
282 of memory or you wish to reserve some memory at the beginning of
283 the address space.
284
285 Note that you need to keep this value above 4k (0x1000) as this
286 memory region is used to capture NULL pointer references as well
287 as some core kernel functions.
288
289comment "Clock/PLL Setup" 289comment "Clock/PLL Setup"
290 290
291config CLKIN_HZ 291config CLKIN_HZ
292 int "Crystal Frequency in Hz" 292 int "Frequency of the crystal on the board in Hz"
293 default "11059200" if BFIN533_STAMP 293 default "11059200" if BFIN533_STAMP
294 default "27000000" if BFIN533_EZKIT 294 default "27000000" if BFIN533_EZKIT
295 default "25000000" if (BFIN537_STAMP || BFIN527_EZKIT || H8606_HVSISTEMAS) 295 default "25000000" if (BFIN537_STAMP || BFIN527_EZKIT || H8606_HVSISTEMAS)
296 default "30000000" if BFIN561_EZKIT 296 default "30000000" if BFIN561_EZKIT
297 default "24576000" if PNAV10 297 default "24576000" if PNAV10
298 default "10000000" if BFIN532_IP0X
298 help 299 help
299 The frequency of CLKIN crystal oscillator on the board in Hz. 300 The frequency of CLKIN crystal oscillator on the board in Hz.
301 Warning: This value should match the crystal on the board. Otherwise,
302 peripherals won't work properly.
300 303
301config BFIN_KERNEL_CLOCK 304config BFIN_KERNEL_CLOCK
302 bool "Re-program Clocks while Kernel boots?" 305 bool "Re-program Clocks while Kernel boots?"
@@ -307,6 +310,25 @@ config BFIN_KERNEL_CLOCK
307 are also not changed, and the Bootloader does 100% of the hardware 310 are also not changed, and the Bootloader does 100% of the hardware
308 configuration. 311 configuration.
309 312
313config MEM_SIZE
314 int "SDRAM Memory Size in MBytes"
315 depends on BFIN_KERNEL_CLOCK
316 default 64
317
318config MEM_ADD_WIDTH
319 int "Memory Address Width"
320 depends on BFIN_KERNEL_CLOCK
321 depends on (!BF54x)
322 range 8 11
323 default 9 if BFIN533_EZKIT
324 default 9 if BFIN561_EZKIT
325 default 9 if H8606_HVSISTEMAS
326 default 10 if BFIN527_EZKIT
327 default 10 if BFIN537_STAMP
328 default 11 if BFIN533_STAMP
329 default 10 if PNAV10
330 default 10 if BFIN532_IP0X
331
310config PLL_BYPASS 332config PLL_BYPASS
311 bool "Bypass PLL" 333 bool "Bypass PLL"
312 depends on BFIN_KERNEL_CLOCK 334 depends on BFIN_KERNEL_CLOCK
@@ -325,7 +347,7 @@ config VCO_MULT
325 range 1 64 347 range 1 64
326 default "22" if BFIN533_EZKIT 348 default "22" if BFIN533_EZKIT
327 default "45" if BFIN533_STAMP 349 default "45" if BFIN533_STAMP
328 default "20" if (BFIN537_STAMP || BFIN527_EZKIT || BFIN548_EZKIT) 350 default "20" if (BFIN537_STAMP || BFIN527_EZKIT || BFIN548_EZKIT || BFIN548_BLUETECHNIX_CM)
329 default "22" if BFIN533_BLUETECHNIX_CM 351 default "22" if BFIN533_BLUETECHNIX_CM
330 default "20" if BFIN537_BLUETECHNIX_CM 352 default "20" if BFIN537_BLUETECHNIX_CM
331 default "20" if BFIN561_BLUETECHNIX_CM 353 default "20" if BFIN561_BLUETECHNIX_CM
@@ -360,19 +382,33 @@ config SCLK_DIV
360 int "System Clock Divider" 382 int "System Clock Divider"
361 depends on BFIN_KERNEL_CLOCK 383 depends on BFIN_KERNEL_CLOCK
362 range 1 15 384 range 1 15
363 default 5 if BFIN533_EZKIT 385 default 5
364 default 5 if BFIN533_STAMP
365 default 4 if (BFIN537_STAMP || BFIN527_EZKIT || BFIN548_EZKIT)
366 default 5 if BFIN533_BLUETECHNIX_CM
367 default 4 if BFIN537_BLUETECHNIX_CM
368 default 4 if BFIN561_BLUETECHNIX_CM
369 default 5 if BFIN561_EZKIT
370 default 3 if H8606_HVSISTEMAS
371 help 386 help
372 This sets the frequency of the system clock (including SDRAM or DDR). 387 This sets the frequency of the system clock (including SDRAM or DDR).
373 This can be between 1 and 15 388 This can be between 1 and 15
374 System Clock = (PLL frequency) / (this setting) 389 System Clock = (PLL frequency) / (this setting)
375 390
391config MAX_MEM_SIZE
392 int "Max SDRAM Memory Size in MBytes"
393 depends on !BFIN_KERNEL_CLOCK && !MPU
394 default 512
395 help
396 This is the max memory size that the kernel will create CPLB
397 tables for. Your system will not be able to handle any more.
398
399choice
400 prompt "DDR SDRAM Chip Type"
401 depends on BFIN_KERNEL_CLOCK
402 depends on BF54x
403 default MEM_MT46V32M16_5B
404
405config MEM_MT46V32M16_6T
406 bool "MT46V32M16_6T"
407
408config MEM_MT46V32M16_5B
409 bool "MT46V32M16_5B"
410endchoice
411
376# 412#
377# Max & Min Speeds for various Chips 413# Max & Min Speeds for various Chips
378# 414#
@@ -415,42 +451,33 @@ comment "Kernel Timer/Scheduler"
415 451
416source kernel/Kconfig.hz 452source kernel/Kconfig.hz
417 453
418comment "Memory Setup" 454config GENERIC_TIME
419 455 bool "Generic time"
420config MEM_SIZE 456 default y
421 int "SDRAM Memory Size in MBytes"
422 default 32 if BFIN533_EZKIT
423 default 64 if BFIN527_EZKIT
424 default 64 if BFIN537_STAMP
425 default 64 if BFIN548_EZKIT
426 default 64 if BFIN561_EZKIT
427 default 128 if BFIN533_STAMP
428 default 64 if PNAV10
429 default 32 if H8606_HVSISTEMAS
430 457
431config MEM_ADD_WIDTH 458config GENERIC_CLOCKEVENTS
432 int "SDRAM Memory Address Width" 459 bool "Generic clock events"
433 depends on (!BF54x) 460 depends on GENERIC_TIME
434 default 9 if BFIN533_EZKIT 461 default y
435 default 9 if BFIN561_EZKIT
436 default 9 if H8606_HVSISTEMAS
437 default 10 if BFIN527_EZKIT
438 default 10 if BFIN537_STAMP
439 default 11 if BFIN533_STAMP
440 default 10 if PNAV10
441 462
463config CYCLES_CLOCKSOURCE
464 bool "Use 'CYCLES' as a clocksource (EXPERIMENTAL)"
465 depends on EXPERIMENTAL
466 depends on GENERIC_CLOCKEVENTS
467 depends on !BFIN_SCRATCH_REG_CYCLES
468 default n
469 help
470 If you say Y here, you will enable support for using the 'cycles'
471 registers as a clock source. Doing so means you will be unable to
472 safely write to the 'cycles' register during runtime. You will
473 still be able to read it (such as for performance monitoring), but
474 writing the registers will most likely crash the kernel.
442 475
443choice 476source kernel/time/Kconfig
444 prompt "DDR SDRAM Chip Type"
445 depends on BFIN548_EZKIT
446 default MEM_MT46V32M16_5B
447 477
448config MEM_MT46V32M16_6T 478comment "Memory Setup"
449 bool "MT46V32M16_6T"
450 479
451config MEM_MT46V32M16_5B 480comment "Misc"
452 bool "MT46V32M16_5B"
453endchoice
454 481
455config ENET_FLASH_PIN 482config ENET_FLASH_PIN
456 int "PF port/pin used for flash and ethernet sharing" 483 int "PF port/pin used for flash and ethernet sharing"
@@ -462,20 +489,6 @@ config ENET_FLASH_PIN
462 code. 489 code.
463 For example: PF0 --> 0,PF1 --> 1,PF2 --> 2, etc. 490 For example: PF0 --> 0,PF1 --> 1,PF2 --> 2, etc.
464 491
465config BOOT_LOAD
466 hex "Kernel load address for booting"
467 default "0x1000"
468 range 0x1000 0x20000000
469 help
470 This option allows you to set the load address of the kernel.
471 This can be useful if you are on a board which has a small amount
472 of memory or you wish to reserve some memory at the beginning of
473 the address space.
474
475 Note that you need to keep this value above 4k (0x1000) as this
476 memory region is used to capture NULL pointer references as well
477 as some core kernel functions.
478
479choice 492choice
480 prompt "Blackfin Exception Scratch Register" 493 prompt "Blackfin Exception Scratch Register"
481 default BFIN_SCRATCH_REG_RETN 494 default BFIN_SCRATCH_REG_RETN
@@ -661,14 +674,6 @@ endchoice
661 674
662source "mm/Kconfig" 675source "mm/Kconfig"
663 676
664config LARGE_ALLOCS
665 bool "Allow allocating large blocks (> 1MB) of memory"
666 help
667 Allow the slab memory allocator to keep chains for very large
668 memory sizes - upto 32MB. You may need this if your system has
669 a lot of RAM, and you need to able to allocate very large
670 contiguous chunks. If unsure, say N.
671
672config BFIN_GPTIMERS 677config BFIN_GPTIMERS
673 tristate "Enable Blackfin General Purpose Timers API" 678 tristate "Enable Blackfin General Purpose Timers API"
674 default n 679 default n
diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile
index 75eba2ca7881..3cbe16caad4b 100644
--- a/arch/blackfin/Makefile
+++ b/arch/blackfin/Makefile
@@ -72,6 +72,11 @@ rev-$(CONFIG_BF_REV_ANY) := any
72KBUILD_CFLAGS += -mcpu=$(cpu-y)-$(rev-y) 72KBUILD_CFLAGS += -mcpu=$(cpu-y)-$(rev-y)
73KBUILD_AFLAGS += -mcpu=$(cpu-y)-$(rev-y) 73KBUILD_AFLAGS += -mcpu=$(cpu-y)-$(rev-y)
74 74
75# - we utilize the silicon rev from the toolchain, so move it over to the checkflags
76# - the l1_text attribute is Blackfin specific, so fake it out as used to kill warnings
77CHECKFLAGS_SILICON = $(shell echo "" | $(CPP) $(KBUILD_CFLAGS) -dD - 2>/dev/null | awk '$$2 == "__SILICON_REVISION__" { print $$3 }')
78CHECKFLAGS += -D__SILICON_REVISION__=$(CHECKFLAGS_SILICON) -Dl1_text=__used__
79
75head-y := arch/$(ARCH)/mach-$(MACHINE)/head.o arch/$(ARCH)/kernel/init_task.o 80head-y := arch/$(ARCH)/mach-$(MACHINE)/head.o arch/$(ARCH)/kernel/init_task.o
76 81
77core-y += arch/$(ARCH)/kernel/ arch/$(ARCH)/mm/ arch/$(ARCH)/mach-common/ 82core-y += arch/$(ARCH)/kernel/ arch/$(ARCH)/mm/ arch/$(ARCH)/mach-common/
diff --git a/arch/blackfin/boot/.gitignore b/arch/blackfin/boot/.gitignore
new file mode 100644
index 000000000000..3ae03994b88d
--- /dev/null
+++ b/arch/blackfin/boot/.gitignore
@@ -0,0 +1 @@
+vmImage
diff --git a/arch/blackfin/configs/BF527-EZKIT_defconfig b/arch/blackfin/configs/BF527-EZKIT_defconfig
index ae320dcfedef..64876dfc2e55 100644
--- a/arch/blackfin/configs/BF527-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF527-EZKIT_defconfig
@@ -13,7 +13,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y 13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_TIME is not set 16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
@@ -250,7 +250,7 @@ CONFIG_HZ=250
250# 250#
251# Memory Setup 251# Memory Setup
252# 252#
253CONFIG_MEM_SIZE=64 253CONFIG_MAX_MEM_SIZE=512
254CONFIG_MEM_ADD_WIDTH=10 254CONFIG_MEM_ADD_WIDTH=10
255CONFIG_BOOT_LOAD=0x1000 255CONFIG_BOOT_LOAD=0x1000
256CONFIG_BFIN_SCRATCH_REG_RETN=y 256CONFIG_BFIN_SCRATCH_REG_RETN=y
@@ -720,8 +720,8 @@ CONFIG_BFIN_OTP=y
720# 720#
721CONFIG_SERIAL_BFIN=y 721CONFIG_SERIAL_BFIN=y
722CONFIG_SERIAL_BFIN_CONSOLE=y 722CONFIG_SERIAL_BFIN_CONSOLE=y
723# CONFIG_SERIAL_BFIN_DMA is not set 723CONFIG_SERIAL_BFIN_DMA=y
724CONFIG_SERIAL_BFIN_PIO=y 724# CONFIG_SERIAL_BFIN_PIO is not set
725# CONFIG_SERIAL_BFIN_UART0 is not set 725# CONFIG_SERIAL_BFIN_UART0 is not set
726CONFIG_SERIAL_BFIN_UART1=y 726CONFIG_SERIAL_BFIN_UART1=y
727# CONFIG_BFIN_UART1_CTSRTS is not set 727# CONFIG_BFIN_UART1_CTSRTS is not set
diff --git a/arch/blackfin/configs/BF533-EZKIT_defconfig b/arch/blackfin/configs/BF533-EZKIT_defconfig
index 9621caa60b5f..8d817ba01945 100644
--- a/arch/blackfin/configs/BF533-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF533-EZKIT_defconfig
@@ -13,7 +13,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y 13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_TIME is not set 16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
@@ -212,7 +212,7 @@ CONFIG_HZ=250
212# 212#
213# Memory Setup 213# Memory Setup
214# 214#
215CONFIG_MEM_SIZE=32 215CONFIG_MAX_MEM_SIZE=512
216CONFIG_MEM_ADD_WIDTH=9 216CONFIG_MEM_ADD_WIDTH=9
217CONFIG_BOOT_LOAD=0x1000 217CONFIG_BOOT_LOAD=0x1000
218CONFIG_BFIN_SCRATCH_REG_RETN=y 218CONFIG_BFIN_SCRATCH_REG_RETN=y
diff --git a/arch/blackfin/configs/BF533-STAMP_defconfig b/arch/blackfin/configs/BF533-STAMP_defconfig
index b51e76ce7f4f..20d598d17bd1 100644
--- a/arch/blackfin/configs/BF533-STAMP_defconfig
+++ b/arch/blackfin/configs/BF533-STAMP_defconfig
@@ -13,7 +13,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y 13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_TIME is not set 16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
@@ -212,7 +212,7 @@ CONFIG_HZ=250
212# 212#
213# Memory Setup 213# Memory Setup
214# 214#
215CONFIG_MEM_SIZE=128 215CONFIG_MAX_MEM_SIZE=512
216CONFIG_MEM_ADD_WIDTH=11 216CONFIG_MEM_ADD_WIDTH=11
217CONFIG_ENET_FLASH_PIN=0 217CONFIG_ENET_FLASH_PIN=0
218CONFIG_BOOT_LOAD=0x1000 218CONFIG_BOOT_LOAD=0x1000
diff --git a/arch/blackfin/configs/BF537-STAMP_defconfig b/arch/blackfin/configs/BF537-STAMP_defconfig
index d45fa535dad7..b5189c8ba263 100644
--- a/arch/blackfin/configs/BF537-STAMP_defconfig
+++ b/arch/blackfin/configs/BF537-STAMP_defconfig
@@ -13,7 +13,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y 13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_TIME is not set 16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
@@ -220,7 +220,7 @@ CONFIG_HZ=250
220# 220#
221# Memory Setup 221# Memory Setup
222# 222#
223CONFIG_MEM_SIZE=64 223CONFIG_MAX_MEM_SIZE=512
224CONFIG_MEM_ADD_WIDTH=10 224CONFIG_MEM_ADD_WIDTH=10
225CONFIG_BOOT_LOAD=0x1000 225CONFIG_BOOT_LOAD=0x1000
226CONFIG_BFIN_SCRATCH_REG_RETN=y 226CONFIG_BFIN_SCRATCH_REG_RETN=y
diff --git a/arch/blackfin/configs/BF548-EZKIT_defconfig b/arch/blackfin/configs/BF548-EZKIT_defconfig
index c9707f7665ad..5bfdfb287d13 100644
--- a/arch/blackfin/configs/BF548-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF548-EZKIT_defconfig
@@ -13,7 +13,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y 13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_TIME is not set 16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
@@ -285,7 +285,7 @@ CONFIG_HZ=250
285# 285#
286# Memory Setup 286# Memory Setup
287# 287#
288CONFIG_MEM_SIZE=64 288CONFIG_MAX_MEM_SIZE=512
289# CONFIG_MEM_MT46V32M16_6T is not set 289# CONFIG_MEM_MT46V32M16_6T is not set
290CONFIG_MEM_MT46V32M16_5B=y 290CONFIG_MEM_MT46V32M16_5B=y
291CONFIG_BOOT_LOAD=0x1000 291CONFIG_BOOT_LOAD=0x1000
@@ -813,8 +813,8 @@ CONFIG_HW_CONSOLE=y
813# 813#
814CONFIG_SERIAL_BFIN=y 814CONFIG_SERIAL_BFIN=y
815CONFIG_SERIAL_BFIN_CONSOLE=y 815CONFIG_SERIAL_BFIN_CONSOLE=y
816# CONFIG_SERIAL_BFIN_DMA is not set 816CONFIG_SERIAL_BFIN_DMA=y
817CONFIG_SERIAL_BFIN_PIO=y 817# CONFIG_SERIAL_BFIN_PIO is not set
818# CONFIG_SERIAL_BFIN_UART0 is not set 818# CONFIG_SERIAL_BFIN_UART0 is not set
819CONFIG_SERIAL_BFIN_UART1=y 819CONFIG_SERIAL_BFIN_UART1=y
820# CONFIG_BFIN_UART1_CTSRTS is not set 820# CONFIG_BFIN_UART1_CTSRTS is not set
diff --git a/arch/blackfin/configs/BF561-EZKIT_defconfig b/arch/blackfin/configs/BF561-EZKIT_defconfig
index 4d8a63331309..b4a20c890816 100644
--- a/arch/blackfin/configs/BF561-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF561-EZKIT_defconfig
@@ -13,7 +13,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y 13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_TIME is not set 16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
@@ -256,7 +256,7 @@ CONFIG_HZ=250
256# 256#
257# Memory Setup 257# Memory Setup
258# 258#
259CONFIG_MEM_SIZE=64 259CONFIG_MAX_MEM_SIZE=512
260CONFIG_MEM_ADD_WIDTH=9 260CONFIG_MEM_ADD_WIDTH=9
261CONFIG_BOOT_LOAD=0x1000 261CONFIG_BOOT_LOAD=0x1000
262CONFIG_BFIN_SCRATCH_REG_RETN=y 262CONFIG_BFIN_SCRATCH_REG_RETN=y
diff --git a/arch/blackfin/configs/CM-BF533_defconfig b/arch/blackfin/configs/CM-BF533_defconfig
new file mode 100644
index 000000000000..560890fe0d30
--- /dev/null
+++ b/arch/blackfin/configs/CM-BF533_defconfig
@@ -0,0 +1,912 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22.16
4#
5# CONFIG_MMU is not set
6# CONFIG_FPU is not set
7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
9CONFIG_BLACKFIN=y
10CONFIG_ZONE_DMA=y
11CONFIG_SEMAPHORE_SLEEPERS=y
12CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
21
22#
23# Code maturity level options
24#
25CONFIG_EXPERIMENTAL=y
26CONFIG_BROKEN_ON_SMP=y
27CONFIG_INIT_ENV_ARG_LIMIT=32
28
29#
30# General setup
31#
32CONFIG_LOCALVERSION=""
33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_SYSVIPC=y
35# CONFIG_IPC_NS is not set
36CONFIG_SYSVIPC_SYSCTL=y
37# CONFIG_POSIX_MQUEUE is not set
38# CONFIG_BSD_PROCESS_ACCT is not set
39# CONFIG_TASKSTATS is not set
40# CONFIG_UTS_NS is not set
41# CONFIG_AUDIT is not set
42# CONFIG_IKCONFIG is not set
43CONFIG_LOG_BUF_SHIFT=14
44CONFIG_SYSFS_DEPRECATED=y
45# CONFIG_RELAY is not set
46# CONFIG_BLK_DEV_INITRD is not set
47# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
48CONFIG_SYSCTL=y
49CONFIG_EMBEDDED=y
50# CONFIG_UID16 is not set
51CONFIG_SYSCTL_SYSCALL=y
52CONFIG_KALLSYMS=y
53# CONFIG_KALLSYMS_EXTRA_PASS is not set
54# CONFIG_HOTPLUG is not set
55CONFIG_PRINTK=y
56CONFIG_BUG=y
57CONFIG_ELF_CORE=y
58CONFIG_BASE_FULL=y
59CONFIG_FUTEX=y
60CONFIG_ANON_INODES=y
61CONFIG_EPOLL=y
62CONFIG_SIGNALFD=y
63CONFIG_EVENTFD=y
64CONFIG_VM_EVENT_COUNTERS=y
65CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
66# CONFIG_NP2 is not set
67CONFIG_SLAB=y
68# CONFIG_SLUB is not set
69# CONFIG_SLOB is not set
70CONFIG_RT_MUTEXES=y
71CONFIG_TINY_SHMEM=y
72CONFIG_BASE_SMALL=0
73
74#
75# Loadable module support
76#
77CONFIG_MODULES=y
78CONFIG_MODULE_UNLOAD=y
79# CONFIG_MODULE_FORCE_UNLOAD is not set
80# CONFIG_MODVERSIONS is not set
81# CONFIG_MODULE_SRCVERSION_ALL is not set
82CONFIG_KMOD=y
83
84#
85# Block layer
86#
87CONFIG_BLOCK=y
88# CONFIG_LBD is not set
89# CONFIG_BLK_DEV_IO_TRACE is not set
90# CONFIG_LSF is not set
91
92#
93# IO Schedulers
94#
95CONFIG_IOSCHED_NOOP=y
96# CONFIG_IOSCHED_AS is not set
97# CONFIG_IOSCHED_DEADLINE is not set
98CONFIG_IOSCHED_CFQ=y
99# CONFIG_DEFAULT_AS is not set
100# CONFIG_DEFAULT_DEADLINE is not set
101# CONFIG_DEFAULT_CFQ is not set
102CONFIG_DEFAULT_NOOP=y
103CONFIG_DEFAULT_IOSCHED="noop"
104CONFIG_PREEMPT_NONE=y
105# CONFIG_PREEMPT_VOLUNTARY is not set
106# CONFIG_PREEMPT is not set
107
108#
109# Blackfin Processor Options
110#
111
112#
113# Processor and Board Settings
114#
115# CONFIG_BF522 is not set
116# CONFIG_BF523 is not set
117# CONFIG_BF524 is not set
118# CONFIG_BF525 is not set
119# CONFIG_BF526 is not set
120# CONFIG_BF527 is not set
121# CONFIG_BF531 is not set
122# CONFIG_BF532 is not set
123CONFIG_BF533=y
124# CONFIG_BF534 is not set
125# CONFIG_BF536 is not set
126# CONFIG_BF537 is not set
127# CONFIG_BF542 is not set
128# CONFIG_BF544 is not set
129# CONFIG_BF547 is not set
130# CONFIG_BF548 is not set
131# CONFIG_BF549 is not set
132# CONFIG_BF561 is not set
133# CONFIG_BF_REV_0_0 is not set
134# CONFIG_BF_REV_0_1 is not set
135# CONFIG_BF_REV_0_2 is not set
136CONFIG_BF_REV_0_3=y
137# CONFIG_BF_REV_0_4 is not set
138# CONFIG_BF_REV_0_5 is not set
139# CONFIG_BF_REV_ANY is not set
140# CONFIG_BF_REV_NONE is not set
141CONFIG_BF53x=y
142CONFIG_BFIN_SINGLE_CORE=y
143CONFIG_MEM_MT48LC16M16A2TG_75=y
144# CONFIG_BFIN533_EZKIT is not set
145# CONFIG_BFIN533_STAMP is not set
146CONFIG_BFIN533_BLUETECHNIX_CM=y
147# CONFIG_H8606_HVSISTEMAS is not set
148# CONFIG_GENERIC_BF533_BOARD is not set
149
150#
151# BF533/2/1 Specific Configuration
152#
153
154#
155# Interrupt Priority Assignment
156#
157
158#
159# Priority
160#
161CONFIG_UART_ERROR=7
162CONFIG_SPORT0_ERROR=7
163CONFIG_SPI_ERROR=7
164CONFIG_SPORT1_ERROR=7
165CONFIG_PPI_ERROR=7
166CONFIG_DMA_ERROR=7
167CONFIG_PLLWAKE_ERROR=7
168CONFIG_RTC_ERROR=8
169CONFIG_DMA0_PPI=8
170CONFIG_DMA1_SPORT0RX=9
171CONFIG_DMA2_SPORT0TX=9
172CONFIG_DMA3_SPORT1RX=9
173CONFIG_DMA4_SPORT1TX=9
174CONFIG_DMA5_SPI=10
175CONFIG_DMA6_UARTRX=10
176CONFIG_DMA7_UARTTX=10
177CONFIG_TIMER0=11
178CONFIG_TIMER1=11
179CONFIG_TIMER2=11
180CONFIG_PFA=12
181CONFIG_PFB=12
182CONFIG_MEMDMA0=13
183CONFIG_MEMDMA1=13
184CONFIG_WDTIMER=13
185
186#
187# Board customizations
188#
189# CONFIG_CMDLINE_BOOL is not set
190
191#
192# Clock/PLL Setup
193#
194CONFIG_CLKIN_HZ=25000000
195# CONFIG_BFIN_KERNEL_CLOCK is not set
196CONFIG_MAX_VCO_HZ=750000000
197CONFIG_MIN_VCO_HZ=50000000
198CONFIG_MAX_SCLK_HZ=133333333
199CONFIG_MIN_SCLK_HZ=27000000
200
201#
202# Kernel Timer/Scheduler
203#
204# CONFIG_HZ_100 is not set
205CONFIG_HZ_250=y
206# CONFIG_HZ_300 is not set
207# CONFIG_HZ_1000 is not set
208CONFIG_HZ=250
209
210#
211# Memory Setup
212#
213CONFIG_MAX_MEM_SIZE=32
214CONFIG_MEM_ADD_WIDTH=9
215CONFIG_BOOT_LOAD=0x1000
216CONFIG_BFIN_SCRATCH_REG_RETN=y
217# CONFIG_BFIN_SCRATCH_REG_RETE is not set
218# CONFIG_BFIN_SCRATCH_REG_CYCLES is not set
219
220#
221# Blackfin Kernel Optimizations
222#
223
224#
225# Memory Optimizations
226#
227CONFIG_I_ENTRY_L1=y
228CONFIG_EXCPT_IRQ_SYSC_L1=y
229CONFIG_DO_IRQ_L1=y
230CONFIG_CORE_TIMER_IRQ_L1=y
231CONFIG_IDLE_L1=y
232CONFIG_SCHEDULE_L1=y
233CONFIG_ARITHMETIC_OPS_L1=y
234CONFIG_ACCESS_OK_L1=y
235CONFIG_MEMSET_L1=y
236CONFIG_MEMCPY_L1=y
237CONFIG_SYS_BFIN_SPINLOCK_L1=y
238CONFIG_IP_CHECKSUM_L1=y
239CONFIG_CACHELINE_ALIGNED_L1=y
240CONFIG_SYSCALL_TAB_L1=y
241CONFIG_CPLB_SWITCH_TAB_L1=y
242CONFIG_RAMKERNEL=y
243# CONFIG_ROMKERNEL is not set
244CONFIG_SELECT_MEMORY_MODEL=y
245CONFIG_FLATMEM_MANUAL=y
246# CONFIG_DISCONTIGMEM_MANUAL is not set
247# CONFIG_SPARSEMEM_MANUAL is not set
248CONFIG_FLATMEM=y
249CONFIG_FLAT_NODE_MEM_MAP=y
250# CONFIG_SPARSEMEM_STATIC is not set
251CONFIG_SPLIT_PTLOCK_CPUS=4
252# CONFIG_RESOURCES_64BIT is not set
253CONFIG_ZONE_DMA_FLAG=1
254CONFIG_LARGE_ALLOCS=y
255# CONFIG_BFIN_GPTIMERS is not set
256CONFIG_BFIN_DMA_5XX=y
257# CONFIG_DMA_UNCACHED_2M is not set
258CONFIG_DMA_UNCACHED_1M=y
259# CONFIG_DMA_UNCACHED_NONE is not set
260
261#
262# Cache Support
263#
264CONFIG_BFIN_ICACHE=y
265CONFIG_BFIN_DCACHE=y
266# CONFIG_BFIN_DCACHE_BANKA is not set
267# CONFIG_BFIN_ICACHE_LOCK is not set
268CONFIG_BFIN_WB=y
269# CONFIG_BFIN_WT is not set
270CONFIG_L1_MAX_PIECE=16
271# CONFIG_MPU is not set
272
273#
274# Asynchonous Memory Configuration
275#
276
277#
278# EBIU_AMGCTL Global Control
279#
280CONFIG_C_AMCKEN=y
281CONFIG_C_CDPRIO=y
282# CONFIG_C_AMBEN is not set
283# CONFIG_C_AMBEN_B0 is not set
284# CONFIG_C_AMBEN_B0_B1 is not set
285# CONFIG_C_AMBEN_B0_B1_B2 is not set
286CONFIG_C_AMBEN_ALL=y
287
288#
289# EBIU_AMBCTL Control
290#
291CONFIG_BANK_0=0x7BB0
292CONFIG_BANK_1=0x7BB0
293CONFIG_BANK_2=0x7BB0
294CONFIG_BANK_3=0xFFC3
295
296#
297# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
298#
299# CONFIG_PCI is not set
300# CONFIG_ARCH_SUPPORTS_MSI is not set
301
302#
303# PCCARD (PCMCIA/CardBus) support
304#
305
306#
307# Executable file formats
308#
309CONFIG_BINFMT_ELF_FDPIC=y
310CONFIG_BINFMT_FLAT=y
311CONFIG_BINFMT_ZFLAT=y
312CONFIG_BINFMT_SHARED_FLAT=y
313# CONFIG_BINFMT_MISC is not set
314
315#
316# Power management options
317#
318# CONFIG_PM is not set
319# CONFIG_PM_WAKEUP_BY_GPIO is not set
320
321#
322# CPU Frequency scaling
323#
324# CONFIG_CPU_FREQ is not set
325
326#
327# Networking
328#
329CONFIG_NET=y
330
331#
332# Networking options
333#
334CONFIG_PACKET=y
335# CONFIG_PACKET_MMAP is not set
336CONFIG_UNIX=y
337CONFIG_XFRM=y
338# CONFIG_XFRM_USER is not set
339# CONFIG_XFRM_SUB_POLICY is not set
340# CONFIG_XFRM_MIGRATE is not set
341# CONFIG_NET_KEY is not set
342CONFIG_INET=y
343# CONFIG_IP_MULTICAST is not set
344# CONFIG_IP_ADVANCED_ROUTER is not set
345CONFIG_IP_FIB_HASH=y
346# CONFIG_IP_PNP is not set
347# CONFIG_NET_IPIP is not set
348# CONFIG_NET_IPGRE is not set
349# CONFIG_ARPD is not set
350CONFIG_SYN_COOKIES=y
351# CONFIG_INET_AH is not set
352# CONFIG_INET_ESP is not set
353# CONFIG_INET_IPCOMP is not set
354# CONFIG_INET_XFRM_TUNNEL is not set
355# CONFIG_INET_TUNNEL is not set
356CONFIG_INET_XFRM_MODE_TRANSPORT=y
357CONFIG_INET_XFRM_MODE_TUNNEL=y
358CONFIG_INET_XFRM_MODE_BEET=y
359CONFIG_INET_DIAG=y
360CONFIG_INET_TCP_DIAG=y
361# CONFIG_TCP_CONG_ADVANCED is not set
362CONFIG_TCP_CONG_CUBIC=y
363CONFIG_DEFAULT_TCP_CONG="cubic"
364# CONFIG_TCP_MD5SIG is not set
365# CONFIG_IPV6 is not set
366# CONFIG_INET6_XFRM_TUNNEL is not set
367# CONFIG_INET6_TUNNEL is not set
368# CONFIG_NETLABEL is not set
369# CONFIG_NETWORK_SECMARK is not set
370# CONFIG_NETFILTER is not set
371# CONFIG_IP_DCCP is not set
372# CONFIG_IP_SCTP is not set
373# CONFIG_TIPC is not set
374# CONFIG_ATM is not set
375# CONFIG_BRIDGE is not set
376# CONFIG_VLAN_8021Q is not set
377# CONFIG_DECNET is not set
378# CONFIG_LLC2 is not set
379# CONFIG_IPX is not set
380# CONFIG_ATALK is not set
381# CONFIG_X25 is not set
382# CONFIG_LAPB is not set
383# CONFIG_ECONET is not set
384# CONFIG_WAN_ROUTER is not set
385
386#
387# QoS and/or fair queueing
388#
389# CONFIG_NET_SCHED is not set
390
391#
392# Network testing
393#
394# CONFIG_NET_PKTGEN is not set
395# CONFIG_HAMRADIO is not set
396# CONFIG_IRDA is not set
397# CONFIG_BT is not set
398# CONFIG_AF_RXRPC is not set
399
400#
401# Wireless
402#
403# CONFIG_CFG80211 is not set
404# CONFIG_WIRELESS_EXT is not set
405# CONFIG_MAC80211 is not set
406# CONFIG_IEEE80211 is not set
407# CONFIG_RFKILL is not set
408
409#
410# Device Drivers
411#
412
413#
414# Generic Driver Options
415#
416CONFIG_STANDALONE=y
417CONFIG_PREVENT_FIRMWARE_BUILD=y
418# CONFIG_SYS_HYPERVISOR is not set
419
420#
421# Connector - unified userspace <-> kernelspace linker
422#
423# CONFIG_CONNECTOR is not set
424CONFIG_MTD=y
425# CONFIG_MTD_DEBUG is not set
426# CONFIG_MTD_CONCAT is not set
427CONFIG_MTD_PARTITIONS=y
428# CONFIG_MTD_REDBOOT_PARTS is not set
429# CONFIG_MTD_CMDLINE_PARTS is not set
430
431#
432# User Modules And Translation Layers
433#
434CONFIG_MTD_CHAR=y
435CONFIG_MTD_BLKDEVS=y
436CONFIG_MTD_BLOCK=y
437# CONFIG_FTL is not set
438# CONFIG_NFTL is not set
439# CONFIG_INFTL is not set
440# CONFIG_RFD_FTL is not set
441# CONFIG_SSFDC is not set
442
443#
444# RAM/ROM/Flash chip drivers
445#
446# CONFIG_MTD_CFI is not set
447# CONFIG_MTD_JEDECPROBE is not set
448CONFIG_MTD_MAP_BANK_WIDTH_1=y
449CONFIG_MTD_MAP_BANK_WIDTH_2=y
450CONFIG_MTD_MAP_BANK_WIDTH_4=y
451# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
452# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
453# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
454CONFIG_MTD_CFI_I1=y
455CONFIG_MTD_CFI_I2=y
456# CONFIG_MTD_CFI_I4 is not set
457# CONFIG_MTD_CFI_I8 is not set
458CONFIG_MTD_RAM=y
459# CONFIG_MTD_ROM is not set
460# CONFIG_MTD_ABSENT is not set
461
462#
463# Mapping drivers for chip access
464#
465# CONFIG_MTD_COMPLEX_MAPPINGS is not set
466CONFIG_MTD_UCLINUX=y
467# CONFIG_MTD_PLATRAM is not set
468
469#
470# Self-contained MTD device drivers
471#
472# CONFIG_MTD_SLRAM is not set
473# CONFIG_MTD_PHRAM is not set
474# CONFIG_MTD_MTDRAM is not set
475# CONFIG_MTD_BLOCK2MTD is not set
476
477#
478# Disk-On-Chip Device Drivers
479#
480# CONFIG_MTD_DOC2000 is not set
481# CONFIG_MTD_DOC2001 is not set
482# CONFIG_MTD_DOC2001PLUS is not set
483# CONFIG_MTD_NAND is not set
484# CONFIG_MTD_ONENAND is not set
485
486#
487# UBI - Unsorted block images
488#
489# CONFIG_MTD_UBI is not set
490
491#
492# Parallel port support
493#
494# CONFIG_PARPORT is not set
495
496#
497# Plug and Play support
498#
499# CONFIG_PNPACPI is not set
500
501#
502# Block devices
503#
504# CONFIG_BLK_DEV_COW_COMMON is not set
505# CONFIG_BLK_DEV_LOOP is not set
506# CONFIG_BLK_DEV_NBD is not set
507CONFIG_BLK_DEV_RAM=y
508CONFIG_BLK_DEV_RAM_COUNT=16
509CONFIG_BLK_DEV_RAM_SIZE=4096
510CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
511# CONFIG_CDROM_PKTCDVD is not set
512# CONFIG_ATA_OVER_ETH is not set
513
514#
515# Misc devices
516#
517# CONFIG_IDE is not set
518
519#
520# SCSI device support
521#
522# CONFIG_RAID_ATTRS is not set
523# CONFIG_SCSI is not set
524# CONFIG_SCSI_NETLINK is not set
525# CONFIG_ATA is not set
526
527#
528# Multi-device support (RAID and LVM)
529#
530# CONFIG_MD is not set
531
532#
533# Network device support
534#
535CONFIG_NETDEVICES=y
536# CONFIG_DUMMY is not set
537# CONFIG_BONDING is not set
538# CONFIG_EQUALIZER is not set
539# CONFIG_TUN is not set
540# CONFIG_PHYLIB is not set
541
542#
543# Ethernet (10 or 100Mbit)
544#
545CONFIG_NET_ETHERNET=y
546CONFIG_MII=y
547CONFIG_SMC91X=y
548# CONFIG_SMSC911X is not set
549# CONFIG_DM9000 is not set
550CONFIG_NETDEV_1000=y
551# CONFIG_AX88180 is not set
552CONFIG_NETDEV_10000=y
553
554#
555# Wireless LAN
556#
557# CONFIG_WLAN_PRE80211 is not set
558# CONFIG_WLAN_80211 is not set
559# CONFIG_WAN is not set
560# CONFIG_PPP is not set
561# CONFIG_SLIP is not set
562# CONFIG_SHAPER is not set
563# CONFIG_NETCONSOLE is not set
564# CONFIG_NETPOLL is not set
565# CONFIG_NET_POLL_CONTROLLER is not set
566
567#
568# ISDN subsystem
569#
570# CONFIG_ISDN is not set
571
572#
573# Telephony Support
574#
575# CONFIG_PHONE is not set
576
577#
578# Input device support
579#
580# CONFIG_INPUT is not set
581
582#
583# Hardware I/O ports
584#
585# CONFIG_SERIO is not set
586# CONFIG_GAMEPORT is not set
587
588#
589# Character devices
590#
591# CONFIG_AD9960 is not set
592# CONFIG_SPI_ADC_BF533 is not set
593# CONFIG_BF5xx_PFLAGS is not set
594# CONFIG_BF5xx_PPIFCD is not set
595# CONFIG_BFIN_SIMPLE_TIMER is not set
596# CONFIG_BF5xx_PPI is not set
597CONFIG_BFIN_SPORT=y
598# CONFIG_BFIN_TIMER_LATENCY is not set
599# CONFIG_VT is not set
600# CONFIG_SERIAL_NONSTANDARD is not set
601
602#
603# Serial drivers
604#
605# CONFIG_SERIAL_8250 is not set
606
607#
608# Non-8250 serial port support
609#
610CONFIG_SERIAL_BFIN=y
611CONFIG_SERIAL_BFIN_CONSOLE=y
612CONFIG_SERIAL_BFIN_DMA=y
613# CONFIG_SERIAL_BFIN_PIO is not set
614CONFIG_SERIAL_BFIN_UART0=y
615# CONFIG_BFIN_UART0_CTSRTS is not set
616CONFIG_SERIAL_CORE=y
617CONFIG_SERIAL_CORE_CONSOLE=y
618# CONFIG_SERIAL_BFIN_SPORT is not set
619CONFIG_UNIX98_PTYS=y
620CONFIG_LEGACY_PTYS=y
621CONFIG_LEGACY_PTY_COUNT=256
622
623#
624# CAN, the car bus and industrial fieldbus
625#
626# CONFIG_CAN4LINUX is not set
627
628#
629# IPMI
630#
631# CONFIG_IPMI_HANDLER is not set
632# CONFIG_WATCHDOG is not set
633# CONFIG_HW_RANDOM is not set
634# CONFIG_GEN_RTC is not set
635# CONFIG_R3964 is not set
636# CONFIG_RAW_DRIVER is not set
637
638#
639# TPM devices
640#
641# CONFIG_TCG_TPM is not set
642# CONFIG_I2C is not set
643
644#
645# SPI support
646#
647# CONFIG_SPI is not set
648# CONFIG_SPI_MASTER is not set
649
650#
651# Dallas's 1-wire bus
652#
653# CONFIG_W1 is not set
654CONFIG_HWMON=y
655# CONFIG_HWMON_VID is not set
656# CONFIG_SENSORS_ABITUGURU is not set
657# CONFIG_SENSORS_F71805F is not set
658# CONFIG_SENSORS_PC87427 is not set
659# CONFIG_SENSORS_SMSC47M1 is not set
660# CONFIG_SENSORS_SMSC47B397 is not set
661# CONFIG_SENSORS_VT1211 is not set
662# CONFIG_SENSORS_W83627HF is not set
663# CONFIG_HWMON_DEBUG_CHIP is not set
664
665#
666# Multifunction device drivers
667#
668# CONFIG_MFD_SM501 is not set
669
670#
671# Multimedia devices
672#
673# CONFIG_VIDEO_DEV is not set
674# CONFIG_DVB_CORE is not set
675CONFIG_DAB=y
676
677#
678# Graphics support
679#
680# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
681
682#
683# Display device support
684#
685# CONFIG_DISPLAY_SUPPORT is not set
686# CONFIG_VGASTATE is not set
687# CONFIG_FB is not set
688
689#
690# Sound
691#
692# CONFIG_SOUND is not set
693
694#
695# USB support
696#
697CONFIG_USB_ARCH_HAS_HCD=y
698# CONFIG_USB_ARCH_HAS_OHCI is not set
699# CONFIG_USB_ARCH_HAS_EHCI is not set
700# CONFIG_USB is not set
701
702#
703# Enable Host or Gadget support to see Inventra options
704#
705
706#
707# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
708#
709
710#
711# USB Gadget Support
712#
713# CONFIG_USB_GADGET is not set
714# CONFIG_MMC is not set
715
716#
717# LED devices
718#
719# CONFIG_NEW_LEDS is not set
720
721#
722# LED drivers
723#
724
725#
726# LED Triggers
727#
728
729#
730# InfiniBand support
731#
732
733#
734# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
735#
736
737#
738# Real Time Clock
739#
740# CONFIG_RTC_CLASS is not set
741
742#
743# DMA Engine support
744#
745# CONFIG_DMA_ENGINE is not set
746
747#
748# DMA Clients
749#
750
751#
752# DMA Devices
753#
754
755#
756# PBX support
757#
758# CONFIG_PBX is not set
759
760#
761# File systems
762#
763CONFIG_EXT2_FS=y
764CONFIG_EXT2_FS_XATTR=y
765# CONFIG_EXT2_FS_POSIX_ACL is not set
766# CONFIG_EXT2_FS_SECURITY is not set
767# CONFIG_EXT3_FS is not set
768# CONFIG_EXT4DEV_FS is not set
769CONFIG_FS_MBCACHE=y
770# CONFIG_REISERFS_FS is not set
771# CONFIG_JFS_FS is not set
772# CONFIG_FS_POSIX_ACL is not set
773# CONFIG_XFS_FS is not set
774# CONFIG_GFS2_FS is not set
775# CONFIG_OCFS2_FS is not set
776# CONFIG_MINIX_FS is not set
777# CONFIG_ROMFS_FS is not set
778CONFIG_INOTIFY=y
779CONFIG_INOTIFY_USER=y
780# CONFIG_QUOTA is not set
781CONFIG_DNOTIFY=y
782# CONFIG_AUTOFS_FS is not set
783# CONFIG_AUTOFS4_FS is not set
784# CONFIG_FUSE_FS is not set
785
786#
787# CD-ROM/DVD Filesystems
788#
789# CONFIG_ISO9660_FS is not set
790# CONFIG_UDF_FS is not set
791
792#
793# DOS/FAT/NT Filesystems
794#
795# CONFIG_MSDOS_FS is not set
796# CONFIG_VFAT_FS is not set
797# CONFIG_NTFS_FS is not set
798
799#
800# Pseudo filesystems
801#
802CONFIG_PROC_FS=y
803CONFIG_PROC_SYSCTL=y
804CONFIG_SYSFS=y
805# CONFIG_TMPFS is not set
806# CONFIG_HUGETLB_PAGE is not set
807CONFIG_RAMFS=y
808# CONFIG_CONFIGFS_FS is not set
809
810#
811# Miscellaneous filesystems
812#
813# CONFIG_ADFS_FS is not set
814# CONFIG_AFFS_FS is not set
815# CONFIG_HFS_FS is not set
816# CONFIG_HFSPLUS_FS is not set
817# CONFIG_BEFS_FS is not set
818# CONFIG_BFS_FS is not set
819# CONFIG_EFS_FS is not set
820# CONFIG_YAFFS_FS is not set
821# CONFIG_JFFS2_FS is not set
822# CONFIG_CRAMFS is not set
823# CONFIG_VXFS_FS is not set
824# CONFIG_HPFS_FS is not set
825# CONFIG_QNX4FS_FS is not set
826# CONFIG_SYSV_FS is not set
827# CONFIG_UFS_FS is not set
828
829#
830# Network File Systems
831#
832# CONFIG_NFS_FS is not set
833# CONFIG_NFSD is not set
834# CONFIG_SMB_FS is not set
835# CONFIG_CIFS is not set
836# CONFIG_NCP_FS is not set
837# CONFIG_CODA_FS is not set
838# CONFIG_AFS_FS is not set
839# CONFIG_9P_FS is not set
840
841#
842# Partition Types
843#
844# CONFIG_PARTITION_ADVANCED is not set
845CONFIG_MSDOS_PARTITION=y
846
847#
848# Native Language Support
849#
850# CONFIG_NLS is not set
851
852#
853# Distributed Lock Manager
854#
855# CONFIG_DLM is not set
856
857#
858# Profiling support
859#
860# CONFIG_PROFILING is not set
861
862#
863# Kernel hacking
864#
865# CONFIG_PRINTK_TIME is not set
866CONFIG_ENABLE_MUST_CHECK=y
867# CONFIG_MAGIC_SYSRQ is not set
868# CONFIG_UNUSED_SYMBOLS is not set
869# CONFIG_DEBUG_FS is not set
870# CONFIG_HEADERS_CHECK is not set
871# CONFIG_DEBUG_KERNEL is not set
872# CONFIG_DEBUG_BUGVERBOSE is not set
873# CONFIG_DEBUG_MMRS is not set
874CONFIG_DEBUG_HUNT_FOR_ZERO=y
875CONFIG_DEBUG_BFIN_HWTRACE_ON=y
876CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF=y
877# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE is not set
878# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_TWO is not set
879CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0
880# CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set
881# CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE is not set
882# CONFIG_EARLY_PRINTK is not set
883CONFIG_CPLB_INFO=y
884CONFIG_ACCESS_CHECK=y
885
886#
887# Security options
888#
889# CONFIG_KEYS is not set
890CONFIG_SECURITY=y
891# CONFIG_SECURITY_NETWORK is not set
892CONFIG_SECURITY_CAPABILITIES=y
893
894#
895# Cryptographic options
896#
897# CONFIG_CRYPTO is not set
898
899#
900# Library routines
901#
902CONFIG_BITREVERSE=y
903CONFIG_CRC_CCITT=m
904# CONFIG_CRC16 is not set
905# CONFIG_CRC_ITU_T is not set
906CONFIG_CRC32=y
907# CONFIG_LIBCRC32C is not set
908CONFIG_ZLIB_INFLATE=y
909CONFIG_PLIST=y
910CONFIG_HAS_IOMEM=y
911CONFIG_HAS_IOPORT=y
912CONFIG_HAS_DMA=y
diff --git a/arch/blackfin/configs/CM-BF537E_defconfig b/arch/blackfin/configs/CM-BF537E_defconfig
new file mode 100644
index 000000000000..9f66d2de1007
--- /dev/null
+++ b/arch/blackfin/configs/CM-BF537E_defconfig
@@ -0,0 +1,940 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22.16
4#
5# CONFIG_MMU is not set
6# CONFIG_FPU is not set
7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
9CONFIG_BLACKFIN=y
10CONFIG_ZONE_DMA=y
11CONFIG_SEMAPHORE_SLEEPERS=y
12CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
21
22#
23# Code maturity level options
24#
25CONFIG_EXPERIMENTAL=y
26CONFIG_BROKEN_ON_SMP=y
27CONFIG_INIT_ENV_ARG_LIMIT=32
28
29#
30# General setup
31#
32CONFIG_LOCALVERSION=""
33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_SYSVIPC=y
35# CONFIG_IPC_NS is not set
36CONFIG_SYSVIPC_SYSCTL=y
37# CONFIG_POSIX_MQUEUE is not set
38# CONFIG_BSD_PROCESS_ACCT is not set
39# CONFIG_TASKSTATS is not set
40# CONFIG_UTS_NS is not set
41# CONFIG_AUDIT is not set
42# CONFIG_IKCONFIG is not set
43CONFIG_LOG_BUF_SHIFT=14
44CONFIG_SYSFS_DEPRECATED=y
45# CONFIG_RELAY is not set
46# CONFIG_BLK_DEV_INITRD is not set
47# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
48CONFIG_SYSCTL=y
49CONFIG_EMBEDDED=y
50# CONFIG_UID16 is not set
51CONFIG_SYSCTL_SYSCALL=y
52CONFIG_KALLSYMS=y
53# CONFIG_KALLSYMS_EXTRA_PASS is not set
54# CONFIG_HOTPLUG is not set
55CONFIG_PRINTK=y
56CONFIG_BUG=y
57CONFIG_ELF_CORE=y
58CONFIG_BASE_FULL=y
59CONFIG_FUTEX=y
60CONFIG_ANON_INODES=y
61CONFIG_EPOLL=y
62CONFIG_SIGNALFD=y
63CONFIG_EVENTFD=y
64CONFIG_VM_EVENT_COUNTERS=y
65CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
66# CONFIG_NP2 is not set
67CONFIG_SLAB=y
68# CONFIG_SLUB is not set
69# CONFIG_SLOB is not set
70CONFIG_RT_MUTEXES=y
71CONFIG_TINY_SHMEM=y
72CONFIG_BASE_SMALL=0
73
74#
75# Loadable module support
76#
77CONFIG_MODULES=y
78CONFIG_MODULE_UNLOAD=y
79# CONFIG_MODULE_FORCE_UNLOAD is not set
80# CONFIG_MODVERSIONS is not set
81# CONFIG_MODULE_SRCVERSION_ALL is not set
82CONFIG_KMOD=y
83
84#
85# Block layer
86#
87CONFIG_BLOCK=y
88# CONFIG_LBD is not set
89# CONFIG_BLK_DEV_IO_TRACE is not set
90# CONFIG_LSF is not set
91
92#
93# IO Schedulers
94#
95CONFIG_IOSCHED_NOOP=y
96# CONFIG_IOSCHED_AS is not set
97# CONFIG_IOSCHED_DEADLINE is not set
98CONFIG_IOSCHED_CFQ=y
99# CONFIG_DEFAULT_AS is not set
100# CONFIG_DEFAULT_DEADLINE is not set
101# CONFIG_DEFAULT_CFQ is not set
102CONFIG_DEFAULT_NOOP=y
103CONFIG_DEFAULT_IOSCHED="noop"
104CONFIG_PREEMPT_NONE=y
105# CONFIG_PREEMPT_VOLUNTARY is not set
106# CONFIG_PREEMPT is not set
107
108#
109# Blackfin Processor Options
110#
111
112#
113# Processor and Board Settings
114#
115# CONFIG_BF522 is not set
116# CONFIG_BF523 is not set
117# CONFIG_BF524 is not set
118# CONFIG_BF525 is not set
119# CONFIG_BF526 is not set
120# CONFIG_BF527 is not set
121# CONFIG_BF531 is not set
122# CONFIG_BF532 is not set
123# CONFIG_BF533 is not set
124# CONFIG_BF534 is not set
125# CONFIG_BF536 is not set
126CONFIG_BF537=y
127# CONFIG_BF542 is not set
128# CONFIG_BF544 is not set
129# CONFIG_BF547 is not set
130# CONFIG_BF548 is not set
131# CONFIG_BF549 is not set
132# CONFIG_BF561 is not set
133# CONFIG_BF_REV_0_0 is not set
134# CONFIG_BF_REV_0_1 is not set
135CONFIG_BF_REV_0_2=y
136# CONFIG_BF_REV_0_3 is not set
137# CONFIG_BF_REV_0_4 is not set
138# CONFIG_BF_REV_0_5 is not set
139# CONFIG_BF_REV_ANY is not set
140# CONFIG_BF_REV_NONE is not set
141CONFIG_BF53x=y
142CONFIG_BFIN_SINGLE_CORE=y
143CONFIG_MEM_MT48LC16M16A2TG_75=y
144CONFIG_IRQ_PLL_WAKEUP=7
145CONFIG_IRQ_RTC=8
146CONFIG_IRQ_PPI=8
147CONFIG_IRQ_SPORT0_RX=9
148CONFIG_IRQ_SPORT0_TX=9
149CONFIG_IRQ_SPORT1_RX=9
150CONFIG_IRQ_SPORT1_TX=9
151CONFIG_IRQ_TWI=10
152CONFIG_IRQ_SPI=10
153CONFIG_IRQ_UART0_RX=10
154CONFIG_IRQ_UART0_TX=10
155CONFIG_IRQ_UART1_RX=10
156CONFIG_IRQ_UART1_TX=10
157CONFIG_IRQ_MAC_RX=11
158CONFIG_IRQ_MAC_TX=11
159CONFIG_IRQ_TMR0=12
160CONFIG_IRQ_TMR1=12
161CONFIG_IRQ_TMR2=12
162CONFIG_IRQ_TMR3=12
163CONFIG_IRQ_TMR4=12
164CONFIG_IRQ_TMR5=12
165CONFIG_IRQ_TMR6=12
166CONFIG_IRQ_TMR7=12
167CONFIG_IRQ_PORTG_INTB=12
168CONFIG_IRQ_MEM_DMA0=13
169CONFIG_IRQ_MEM_DMA1=13
170CONFIG_IRQ_WATCH=13
171# CONFIG_BFIN537_STAMP is not set
172CONFIG_BFIN537_BLUETECHNIX_CM=y
173# CONFIG_PNAV10 is not set
174# CONFIG_CAMSIG_MINOTAUR is not set
175# CONFIG_GENERIC_BF537_BOARD is not set
176
177#
178# BF537 Specific Configuration
179#
180
181#
182# Interrupt Priority Assignment
183#
184
185#
186# Priority
187#
188CONFIG_IRQ_DMA_ERROR=7
189CONFIG_IRQ_ERROR=7
190CONFIG_IRQ_CAN_RX=11
191CONFIG_IRQ_CAN_TX=11
192CONFIG_IRQ_PROG_INTA=12
193
194#
195# Board customizations
196#
197# CONFIG_CMDLINE_BOOL is not set
198
199#
200# Clock/PLL Setup
201#
202CONFIG_CLKIN_HZ=25000000
203# CONFIG_BFIN_KERNEL_CLOCK is not set
204CONFIG_MAX_VCO_HZ=600000000
205CONFIG_MIN_VCO_HZ=50000000
206CONFIG_MAX_SCLK_HZ=133333333
207CONFIG_MIN_SCLK_HZ=27000000
208
209#
210# Kernel Timer/Scheduler
211#
212# CONFIG_HZ_100 is not set
213CONFIG_HZ_250=y
214# CONFIG_HZ_300 is not set
215# CONFIG_HZ_1000 is not set
216CONFIG_HZ=250
217
218#
219# Memory Setup
220#
221CONFIG_MAX_MEM_SIZE=32
222CONFIG_MEM_ADD_WIDTH=9
223CONFIG_BOOT_LOAD=0x1000
224CONFIG_BFIN_SCRATCH_REG_RETN=y
225# CONFIG_BFIN_SCRATCH_REG_RETE is not set
226# CONFIG_BFIN_SCRATCH_REG_CYCLES is not set
227
228#
229# Blackfin Kernel Optimizations
230#
231
232#
233# Memory Optimizations
234#
235CONFIG_I_ENTRY_L1=y
236CONFIG_EXCPT_IRQ_SYSC_L1=y
237CONFIG_DO_IRQ_L1=y
238CONFIG_CORE_TIMER_IRQ_L1=y
239CONFIG_IDLE_L1=y
240CONFIG_SCHEDULE_L1=y
241CONFIG_ARITHMETIC_OPS_L1=y
242CONFIG_ACCESS_OK_L1=y
243CONFIG_MEMSET_L1=y
244CONFIG_MEMCPY_L1=y
245CONFIG_SYS_BFIN_SPINLOCK_L1=y
246CONFIG_IP_CHECKSUM_L1=y
247CONFIG_CACHELINE_ALIGNED_L1=y
248CONFIG_SYSCALL_TAB_L1=y
249CONFIG_CPLB_SWITCH_TAB_L1=y
250CONFIG_RAMKERNEL=y
251# CONFIG_ROMKERNEL is not set
252CONFIG_SELECT_MEMORY_MODEL=y
253CONFIG_FLATMEM_MANUAL=y
254# CONFIG_DISCONTIGMEM_MANUAL is not set
255# CONFIG_SPARSEMEM_MANUAL is not set
256CONFIG_FLATMEM=y
257CONFIG_FLAT_NODE_MEM_MAP=y
258# CONFIG_SPARSEMEM_STATIC is not set
259CONFIG_SPLIT_PTLOCK_CPUS=4
260# CONFIG_RESOURCES_64BIT is not set
261CONFIG_ZONE_DMA_FLAG=1
262CONFIG_LARGE_ALLOCS=y
263# CONFIG_BFIN_GPTIMERS is not set
264CONFIG_BFIN_DMA_5XX=y
265# CONFIG_DMA_UNCACHED_2M is not set
266CONFIG_DMA_UNCACHED_1M=y
267# CONFIG_DMA_UNCACHED_NONE is not set
268
269#
270# Cache Support
271#
272CONFIG_BFIN_ICACHE=y
273CONFIG_BFIN_DCACHE=y
274# CONFIG_BFIN_DCACHE_BANKA is not set
275# CONFIG_BFIN_ICACHE_LOCK is not set
276CONFIG_BFIN_WB=y
277# CONFIG_BFIN_WT is not set
278CONFIG_L1_MAX_PIECE=16
279# CONFIG_MPU is not set
280
281#
282# Asynchonous Memory Configuration
283#
284
285#
286# EBIU_AMGCTL Global Control
287#
288CONFIG_C_AMCKEN=y
289CONFIG_C_CDPRIO=y
290# CONFIG_C_AMBEN is not set
291# CONFIG_C_AMBEN_B0 is not set
292# CONFIG_C_AMBEN_B0_B1 is not set
293# CONFIG_C_AMBEN_B0_B1_B2 is not set
294CONFIG_C_AMBEN_ALL=y
295
296#
297# EBIU_AMBCTL Control
298#
299CONFIG_BANK_0=0x7BB0
300CONFIG_BANK_1=0x7BB0
301CONFIG_BANK_2=0x7BB0
302CONFIG_BANK_3=0xFFC3
303
304#
305# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
306#
307# CONFIG_PCI is not set
308# CONFIG_ARCH_SUPPORTS_MSI is not set
309
310#
311# PCCARD (PCMCIA/CardBus) support
312#
313
314#
315# Executable file formats
316#
317CONFIG_BINFMT_ELF_FDPIC=y
318CONFIG_BINFMT_FLAT=y
319CONFIG_BINFMT_ZFLAT=y
320CONFIG_BINFMT_SHARED_FLAT=y
321# CONFIG_BINFMT_MISC is not set
322
323#
324# Power management options
325#
326# CONFIG_PM is not set
327# CONFIG_PM_WAKEUP_BY_GPIO is not set
328
329#
330# CPU Frequency scaling
331#
332# CONFIG_CPU_FREQ is not set
333
334#
335# Networking
336#
337CONFIG_NET=y
338
339#
340# Networking options
341#
342CONFIG_PACKET=y
343# CONFIG_PACKET_MMAP is not set
344CONFIG_UNIX=y
345CONFIG_XFRM=y
346# CONFIG_XFRM_USER is not set
347# CONFIG_XFRM_SUB_POLICY is not set
348# CONFIG_XFRM_MIGRATE is not set
349# CONFIG_NET_KEY is not set
350CONFIG_INET=y
351# CONFIG_IP_MULTICAST is not set
352# CONFIG_IP_ADVANCED_ROUTER is not set
353CONFIG_IP_FIB_HASH=y
354# CONFIG_IP_PNP is not set
355# CONFIG_NET_IPIP is not set
356# CONFIG_NET_IPGRE is not set
357# CONFIG_ARPD is not set
358CONFIG_SYN_COOKIES=y
359# CONFIG_INET_AH is not set
360# CONFIG_INET_ESP is not set
361# CONFIG_INET_IPCOMP is not set
362# CONFIG_INET_XFRM_TUNNEL is not set
363# CONFIG_INET_TUNNEL is not set
364CONFIG_INET_XFRM_MODE_TRANSPORT=y
365CONFIG_INET_XFRM_MODE_TUNNEL=y
366CONFIG_INET_XFRM_MODE_BEET=y
367CONFIG_INET_DIAG=y
368CONFIG_INET_TCP_DIAG=y
369# CONFIG_TCP_CONG_ADVANCED is not set
370CONFIG_TCP_CONG_CUBIC=y
371CONFIG_DEFAULT_TCP_CONG="cubic"
372# CONFIG_TCP_MD5SIG is not set
373# CONFIG_IPV6 is not set
374# CONFIG_INET6_XFRM_TUNNEL is not set
375# CONFIG_INET6_TUNNEL is not set
376# CONFIG_NETLABEL is not set
377# CONFIG_NETWORK_SECMARK is not set
378# CONFIG_NETFILTER is not set
379# CONFIG_IP_DCCP is not set
380# CONFIG_IP_SCTP is not set
381# CONFIG_TIPC is not set
382# CONFIG_ATM is not set
383# CONFIG_BRIDGE is not set
384# CONFIG_VLAN_8021Q is not set
385# CONFIG_DECNET is not set
386# CONFIG_LLC2 is not set
387# CONFIG_IPX is not set
388# CONFIG_ATALK is not set
389# CONFIG_X25 is not set
390# CONFIG_LAPB is not set
391# CONFIG_ECONET is not set
392# CONFIG_WAN_ROUTER is not set
393
394#
395# QoS and/or fair queueing
396#
397# CONFIG_NET_SCHED is not set
398
399#
400# Network testing
401#
402# CONFIG_NET_PKTGEN is not set
403# CONFIG_HAMRADIO is not set
404# CONFIG_IRDA is not set
405# CONFIG_BT is not set
406# CONFIG_AF_RXRPC is not set
407
408#
409# Wireless
410#
411# CONFIG_CFG80211 is not set
412# CONFIG_WIRELESS_EXT is not set
413# CONFIG_MAC80211 is not set
414# CONFIG_IEEE80211 is not set
415# CONFIG_RFKILL is not set
416
417#
418# Device Drivers
419#
420
421#
422# Generic Driver Options
423#
424CONFIG_STANDALONE=y
425CONFIG_PREVENT_FIRMWARE_BUILD=y
426# CONFIG_SYS_HYPERVISOR is not set
427
428#
429# Connector - unified userspace <-> kernelspace linker
430#
431# CONFIG_CONNECTOR is not set
432CONFIG_MTD=y
433# CONFIG_MTD_DEBUG is not set
434# CONFIG_MTD_CONCAT is not set
435CONFIG_MTD_PARTITIONS=y
436# CONFIG_MTD_REDBOOT_PARTS is not set
437# CONFIG_MTD_CMDLINE_PARTS is not set
438
439#
440# User Modules And Translation Layers
441#
442CONFIG_MTD_CHAR=y
443CONFIG_MTD_BLKDEVS=y
444CONFIG_MTD_BLOCK=y
445# CONFIG_FTL is not set
446# CONFIG_NFTL is not set
447# CONFIG_INFTL is not set
448# CONFIG_RFD_FTL is not set
449# CONFIG_SSFDC is not set
450
451#
452# RAM/ROM/Flash chip drivers
453#
454# CONFIG_MTD_CFI is not set
455# CONFIG_MTD_JEDECPROBE is not set
456CONFIG_MTD_MAP_BANK_WIDTH_1=y
457CONFIG_MTD_MAP_BANK_WIDTH_2=y
458CONFIG_MTD_MAP_BANK_WIDTH_4=y
459# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
460# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
461# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
462CONFIG_MTD_CFI_I1=y
463CONFIG_MTD_CFI_I2=y
464# CONFIG_MTD_CFI_I4 is not set
465# CONFIG_MTD_CFI_I8 is not set
466CONFIG_MTD_RAM=y
467# CONFIG_MTD_ROM is not set
468# CONFIG_MTD_ABSENT is not set
469
470#
471# Mapping drivers for chip access
472#
473# CONFIG_MTD_COMPLEX_MAPPINGS is not set
474CONFIG_MTD_UCLINUX=y
475# CONFIG_MTD_PLATRAM is not set
476
477#
478# Self-contained MTD device drivers
479#
480# CONFIG_MTD_SLRAM is not set
481# CONFIG_MTD_PHRAM is not set
482# CONFIG_MTD_MTDRAM is not set
483# CONFIG_MTD_BLOCK2MTD is not set
484
485#
486# Disk-On-Chip Device Drivers
487#
488# CONFIG_MTD_DOC2000 is not set
489# CONFIG_MTD_DOC2001 is not set
490# CONFIG_MTD_DOC2001PLUS is not set
491# CONFIG_MTD_NAND is not set
492# CONFIG_MTD_ONENAND is not set
493
494#
495# UBI - Unsorted block images
496#
497# CONFIG_MTD_UBI is not set
498
499#
500# Parallel port support
501#
502# CONFIG_PARPORT is not set
503
504#
505# Plug and Play support
506#
507# CONFIG_PNPACPI is not set
508
509#
510# Block devices
511#
512# CONFIG_BLK_DEV_COW_COMMON is not set
513# CONFIG_BLK_DEV_LOOP is not set
514# CONFIG_BLK_DEV_NBD is not set
515CONFIG_BLK_DEV_RAM=y
516CONFIG_BLK_DEV_RAM_COUNT=16
517CONFIG_BLK_DEV_RAM_SIZE=4096
518CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
519# CONFIG_CDROM_PKTCDVD is not set
520# CONFIG_ATA_OVER_ETH is not set
521
522#
523# Misc devices
524#
525# CONFIG_IDE is not set
526
527#
528# SCSI device support
529#
530# CONFIG_RAID_ATTRS is not set
531# CONFIG_SCSI is not set
532# CONFIG_SCSI_NETLINK is not set
533# CONFIG_ATA is not set
534
535#
536# Multi-device support (RAID and LVM)
537#
538# CONFIG_MD is not set
539
540#
541# Network device support
542#
543CONFIG_NETDEVICES=y
544# CONFIG_DUMMY is not set
545# CONFIG_BONDING is not set
546# CONFIG_EQUALIZER is not set
547# CONFIG_TUN is not set
548CONFIG_PHYLIB=y
549
550#
551# MII PHY device drivers
552#
553# CONFIG_MARVELL_PHY is not set
554# CONFIG_DAVICOM_PHY is not set
555# CONFIG_QSEMI_PHY is not set
556# CONFIG_LXT_PHY is not set
557# CONFIG_CICADA_PHY is not set
558# CONFIG_VITESSE_PHY is not set
559# CONFIG_SMSC_PHY is not set
560# CONFIG_BROADCOM_PHY is not set
561# CONFIG_FIXED_PHY is not set
562
563#
564# Ethernet (10 or 100Mbit)
565#
566CONFIG_NET_ETHERNET=y
567CONFIG_MII=y
568# CONFIG_SMC91X is not set
569CONFIG_BFIN_MAC=y
570CONFIG_BFIN_MAC_USE_L1=y
571CONFIG_BFIN_TX_DESC_NUM=10
572CONFIG_BFIN_RX_DESC_NUM=20
573# CONFIG_BFIN_MAC_RMII is not set
574# CONFIG_SMSC911X is not set
575# CONFIG_DM9000 is not set
576CONFIG_NETDEV_1000=y
577# CONFIG_AX88180 is not set
578CONFIG_NETDEV_10000=y
579
580#
581# Wireless LAN
582#
583# CONFIG_WLAN_PRE80211 is not set
584# CONFIG_WLAN_80211 is not set
585# CONFIG_WAN is not set
586# CONFIG_PPP is not set
587# CONFIG_SLIP is not set
588# CONFIG_SHAPER is not set
589# CONFIG_NETCONSOLE is not set
590# CONFIG_NETPOLL is not set
591# CONFIG_NET_POLL_CONTROLLER is not set
592
593#
594# ISDN subsystem
595#
596# CONFIG_ISDN is not set
597
598#
599# Telephony Support
600#
601# CONFIG_PHONE is not set
602
603#
604# Input device support
605#
606# CONFIG_INPUT is not set
607
608#
609# Hardware I/O ports
610#
611# CONFIG_SERIO is not set
612# CONFIG_GAMEPORT is not set
613
614#
615# Character devices
616#
617# CONFIG_AD9960 is not set
618# CONFIG_SPI_ADC_BF533 is not set
619# CONFIG_BF5xx_PFLAGS is not set
620# CONFIG_BF5xx_PPIFCD is not set
621# CONFIG_BFIN_SIMPLE_TIMER is not set
622# CONFIG_BF5xx_PPI is not set
623CONFIG_BFIN_SPORT=y
624# CONFIG_BFIN_TIMER_LATENCY is not set
625# CONFIG_VT is not set
626# CONFIG_SERIAL_NONSTANDARD is not set
627
628#
629# Serial drivers
630#
631# CONFIG_SERIAL_8250 is not set
632
633#
634# Non-8250 serial port support
635#
636CONFIG_SERIAL_BFIN=y
637CONFIG_SERIAL_BFIN_CONSOLE=y
638CONFIG_SERIAL_BFIN_DMA=y
639# CONFIG_SERIAL_BFIN_PIO is not set
640CONFIG_SERIAL_BFIN_UART0=y
641# CONFIG_BFIN_UART0_CTSRTS is not set
642CONFIG_SERIAL_BFIN_UART1=y
643# CONFIG_BFIN_UART1_CTSRTS is not set
644CONFIG_SERIAL_CORE=y
645CONFIG_SERIAL_CORE_CONSOLE=y
646# CONFIG_SERIAL_BFIN_SPORT is not set
647CONFIG_UNIX98_PTYS=y
648CONFIG_LEGACY_PTYS=y
649CONFIG_LEGACY_PTY_COUNT=256
650
651#
652# CAN, the car bus and industrial fieldbus
653#
654# CONFIG_CAN4LINUX is not set
655
656#
657# IPMI
658#
659# CONFIG_IPMI_HANDLER is not set
660# CONFIG_WATCHDOG is not set
661# CONFIG_HW_RANDOM is not set
662# CONFIG_GEN_RTC is not set
663# CONFIG_R3964 is not set
664# CONFIG_RAW_DRIVER is not set
665
666#
667# TPM devices
668#
669# CONFIG_TCG_TPM is not set
670# CONFIG_I2C is not set
671
672#
673# SPI support
674#
675# CONFIG_SPI is not set
676# CONFIG_SPI_MASTER is not set
677
678#
679# Dallas's 1-wire bus
680#
681# CONFIG_W1 is not set
682CONFIG_HWMON=y
683# CONFIG_HWMON_VID is not set
684# CONFIG_SENSORS_ABITUGURU is not set
685# CONFIG_SENSORS_F71805F is not set
686# CONFIG_SENSORS_PC87427 is not set
687# CONFIG_SENSORS_SMSC47M1 is not set
688# CONFIG_SENSORS_SMSC47B397 is not set
689# CONFIG_SENSORS_VT1211 is not set
690# CONFIG_SENSORS_W83627HF is not set
691# CONFIG_HWMON_DEBUG_CHIP is not set
692
693#
694# Multifunction device drivers
695#
696# CONFIG_MFD_SM501 is not set
697
698#
699# Multimedia devices
700#
701# CONFIG_VIDEO_DEV is not set
702# CONFIG_DVB_CORE is not set
703CONFIG_DAB=y
704
705#
706# Graphics support
707#
708# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
709
710#
711# Display device support
712#
713# CONFIG_DISPLAY_SUPPORT is not set
714# CONFIG_VGASTATE is not set
715# CONFIG_FB is not set
716
717#
718# Sound
719#
720# CONFIG_SOUND is not set
721
722#
723# USB support
724#
725CONFIG_USB_ARCH_HAS_HCD=y
726# CONFIG_USB_ARCH_HAS_OHCI is not set
727# CONFIG_USB_ARCH_HAS_EHCI is not set
728# CONFIG_USB is not set
729
730#
731# Enable Host or Gadget support to see Inventra options
732#
733
734#
735# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
736#
737
738#
739# USB Gadget Support
740#
741# CONFIG_USB_GADGET is not set
742# CONFIG_MMC is not set
743
744#
745# LED devices
746#
747# CONFIG_NEW_LEDS is not set
748
749#
750# LED drivers
751#
752
753#
754# LED Triggers
755#
756
757#
758# InfiniBand support
759#
760
761#
762# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
763#
764
765#
766# Real Time Clock
767#
768# CONFIG_RTC_CLASS is not set
769
770#
771# DMA Engine support
772#
773# CONFIG_DMA_ENGINE is not set
774
775#
776# DMA Clients
777#
778
779#
780# DMA Devices
781#
782
783#
784# PBX support
785#
786# CONFIG_PBX is not set
787
788#
789# File systems
790#
791CONFIG_EXT2_FS=y
792CONFIG_EXT2_FS_XATTR=y
793# CONFIG_EXT2_FS_POSIX_ACL is not set
794# CONFIG_EXT2_FS_SECURITY is not set
795# CONFIG_EXT3_FS is not set
796# CONFIG_EXT4DEV_FS is not set
797CONFIG_FS_MBCACHE=y
798# CONFIG_REISERFS_FS is not set
799# CONFIG_JFS_FS is not set
800# CONFIG_FS_POSIX_ACL is not set
801# CONFIG_XFS_FS is not set
802# CONFIG_GFS2_FS is not set
803# CONFIG_OCFS2_FS is not set
804# CONFIG_MINIX_FS is not set
805# CONFIG_ROMFS_FS is not set
806CONFIG_INOTIFY=y
807CONFIG_INOTIFY_USER=y
808# CONFIG_QUOTA is not set
809CONFIG_DNOTIFY=y
810# CONFIG_AUTOFS_FS is not set
811# CONFIG_AUTOFS4_FS is not set
812# CONFIG_FUSE_FS is not set
813
814#
815# CD-ROM/DVD Filesystems
816#
817# CONFIG_ISO9660_FS is not set
818# CONFIG_UDF_FS is not set
819
820#
821# DOS/FAT/NT Filesystems
822#
823# CONFIG_MSDOS_FS is not set
824# CONFIG_VFAT_FS is not set
825# CONFIG_NTFS_FS is not set
826
827#
828# Pseudo filesystems
829#
830CONFIG_PROC_FS=y
831CONFIG_PROC_SYSCTL=y
832CONFIG_SYSFS=y
833# CONFIG_TMPFS is not set
834# CONFIG_HUGETLB_PAGE is not set
835CONFIG_RAMFS=y
836# CONFIG_CONFIGFS_FS is not set
837
838#
839# Miscellaneous filesystems
840#
841# CONFIG_ADFS_FS is not set
842# CONFIG_AFFS_FS is not set
843# CONFIG_HFS_FS is not set
844# CONFIG_HFSPLUS_FS is not set
845# CONFIG_BEFS_FS is not set
846# CONFIG_BFS_FS is not set
847# CONFIG_EFS_FS is not set
848# CONFIG_YAFFS_FS is not set
849# CONFIG_JFFS2_FS is not set
850# CONFIG_CRAMFS is not set
851# CONFIG_VXFS_FS is not set
852# CONFIG_HPFS_FS is not set
853# CONFIG_QNX4FS_FS is not set
854# CONFIG_SYSV_FS is not set
855# CONFIG_UFS_FS is not set
856
857#
858# Network File Systems
859#
860# CONFIG_NFS_FS is not set
861# CONFIG_NFSD is not set
862# CONFIG_SMB_FS is not set
863# CONFIG_CIFS is not set
864# CONFIG_NCP_FS is not set
865# CONFIG_CODA_FS is not set
866# CONFIG_AFS_FS is not set
867# CONFIG_9P_FS is not set
868
869#
870# Partition Types
871#
872# CONFIG_PARTITION_ADVANCED is not set
873CONFIG_MSDOS_PARTITION=y
874
875#
876# Native Language Support
877#
878# CONFIG_NLS is not set
879
880#
881# Distributed Lock Manager
882#
883# CONFIG_DLM is not set
884
885#
886# Profiling support
887#
888# CONFIG_PROFILING is not set
889
890#
891# Kernel hacking
892#
893# CONFIG_PRINTK_TIME is not set
894CONFIG_ENABLE_MUST_CHECK=y
895# CONFIG_MAGIC_SYSRQ is not set
896# CONFIG_UNUSED_SYMBOLS is not set
897# CONFIG_DEBUG_FS is not set
898# CONFIG_HEADERS_CHECK is not set
899# CONFIG_DEBUG_KERNEL is not set
900# CONFIG_DEBUG_BUGVERBOSE is not set
901# CONFIG_DEBUG_MMRS is not set
902# CONFIG_DEBUG_HUNT_FOR_ZERO is not set
903CONFIG_DEBUG_BFIN_HWTRACE_ON=y
904CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF=y
905# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE is not set
906# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_TWO is not set
907CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0
908# CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set
909# CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE is not set
910# CONFIG_EARLY_PRINTK is not set
911CONFIG_CPLB_INFO=y
912CONFIG_ACCESS_CHECK=y
913
914#
915# Security options
916#
917# CONFIG_KEYS is not set
918CONFIG_SECURITY=y
919# CONFIG_SECURITY_NETWORK is not set
920CONFIG_SECURITY_CAPABILITIES=y
921
922#
923# Cryptographic options
924#
925# CONFIG_CRYPTO is not set
926
927#
928# Library routines
929#
930CONFIG_BITREVERSE=y
931CONFIG_CRC_CCITT=m
932# CONFIG_CRC16 is not set
933# CONFIG_CRC_ITU_T is not set
934CONFIG_CRC32=y
935# CONFIG_LIBCRC32C is not set
936CONFIG_ZLIB_INFLATE=y
937CONFIG_PLIST=y
938CONFIG_HAS_IOMEM=y
939CONFIG_HAS_IOPORT=y
940CONFIG_HAS_DMA=y
diff --git a/arch/blackfin/configs/CM-BF537U_defconfig b/arch/blackfin/configs/CM-BF537U_defconfig
new file mode 100644
index 000000000000..2694d06c5bde
--- /dev/null
+++ b/arch/blackfin/configs/CM-BF537U_defconfig
@@ -0,0 +1,940 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22.16
4#
5# CONFIG_MMU is not set
6# CONFIG_FPU is not set
7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
9CONFIG_BLACKFIN=y
10CONFIG_ZONE_DMA=y
11CONFIG_SEMAPHORE_SLEEPERS=y
12CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
21
22#
23# Code maturity level options
24#
25CONFIG_EXPERIMENTAL=y
26CONFIG_BROKEN_ON_SMP=y
27CONFIG_INIT_ENV_ARG_LIMIT=32
28
29#
30# General setup
31#
32CONFIG_LOCALVERSION=""
33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_SYSVIPC=y
35# CONFIG_IPC_NS is not set
36CONFIG_SYSVIPC_SYSCTL=y
37# CONFIG_POSIX_MQUEUE is not set
38# CONFIG_BSD_PROCESS_ACCT is not set
39# CONFIG_TASKSTATS is not set
40# CONFIG_UTS_NS is not set
41# CONFIG_AUDIT is not set
42# CONFIG_IKCONFIG is not set
43CONFIG_LOG_BUF_SHIFT=14
44CONFIG_SYSFS_DEPRECATED=y
45# CONFIG_RELAY is not set
46# CONFIG_BLK_DEV_INITRD is not set
47# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
48CONFIG_SYSCTL=y
49CONFIG_EMBEDDED=y
50# CONFIG_UID16 is not set
51CONFIG_SYSCTL_SYSCALL=y
52CONFIG_KALLSYMS=y
53# CONFIG_KALLSYMS_EXTRA_PASS is not set
54# CONFIG_HOTPLUG is not set
55CONFIG_PRINTK=y
56CONFIG_BUG=y
57CONFIG_ELF_CORE=y
58CONFIG_BASE_FULL=y
59CONFIG_FUTEX=y
60CONFIG_ANON_INODES=y
61CONFIG_EPOLL=y
62CONFIG_SIGNALFD=y
63CONFIG_EVENTFD=y
64CONFIG_VM_EVENT_COUNTERS=y
65CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
66# CONFIG_NP2 is not set
67CONFIG_SLAB=y
68# CONFIG_SLUB is not set
69# CONFIG_SLOB is not set
70CONFIG_RT_MUTEXES=y
71CONFIG_TINY_SHMEM=y
72CONFIG_BASE_SMALL=0
73
74#
75# Loadable module support
76#
77CONFIG_MODULES=y
78CONFIG_MODULE_UNLOAD=y
79# CONFIG_MODULE_FORCE_UNLOAD is not set
80# CONFIG_MODVERSIONS is not set
81# CONFIG_MODULE_SRCVERSION_ALL is not set
82CONFIG_KMOD=y
83
84#
85# Block layer
86#
87CONFIG_BLOCK=y
88# CONFIG_LBD is not set
89# CONFIG_BLK_DEV_IO_TRACE is not set
90# CONFIG_LSF is not set
91
92#
93# IO Schedulers
94#
95CONFIG_IOSCHED_NOOP=y
96# CONFIG_IOSCHED_AS is not set
97# CONFIG_IOSCHED_DEADLINE is not set
98CONFIG_IOSCHED_CFQ=y
99# CONFIG_DEFAULT_AS is not set
100# CONFIG_DEFAULT_DEADLINE is not set
101# CONFIG_DEFAULT_CFQ is not set
102CONFIG_DEFAULT_NOOP=y
103CONFIG_DEFAULT_IOSCHED="noop"
104CONFIG_PREEMPT_NONE=y
105# CONFIG_PREEMPT_VOLUNTARY is not set
106# CONFIG_PREEMPT is not set
107
108#
109# Blackfin Processor Options
110#
111
112#
113# Processor and Board Settings
114#
115# CONFIG_BF522 is not set
116# CONFIG_BF523 is not set
117# CONFIG_BF524 is not set
118# CONFIG_BF525 is not set
119# CONFIG_BF526 is not set
120# CONFIG_BF527 is not set
121# CONFIG_BF531 is not set
122# CONFIG_BF532 is not set
123# CONFIG_BF533 is not set
124# CONFIG_BF534 is not set
125# CONFIG_BF536 is not set
126CONFIG_BF537=y
127# CONFIG_BF542 is not set
128# CONFIG_BF544 is not set
129# CONFIG_BF547 is not set
130# CONFIG_BF548 is not set
131# CONFIG_BF549 is not set
132# CONFIG_BF561 is not set
133# CONFIG_BF_REV_0_0 is not set
134# CONFIG_BF_REV_0_1 is not set
135CONFIG_BF_REV_0_2=y
136# CONFIG_BF_REV_0_3 is not set
137# CONFIG_BF_REV_0_4 is not set
138# CONFIG_BF_REV_0_5 is not set
139# CONFIG_BF_REV_ANY is not set
140# CONFIG_BF_REV_NONE is not set
141CONFIG_BF53x=y
142CONFIG_BFIN_SINGLE_CORE=y
143CONFIG_MEM_MT48LC16M16A2TG_75=y
144CONFIG_IRQ_PLL_WAKEUP=7
145CONFIG_IRQ_RTC=8
146CONFIG_IRQ_PPI=8
147CONFIG_IRQ_SPORT0_RX=9
148CONFIG_IRQ_SPORT0_TX=9
149CONFIG_IRQ_SPORT1_RX=9
150CONFIG_IRQ_SPORT1_TX=9
151CONFIG_IRQ_TWI=10
152CONFIG_IRQ_SPI=10
153CONFIG_IRQ_UART0_RX=10
154CONFIG_IRQ_UART0_TX=10
155CONFIG_IRQ_UART1_RX=10
156CONFIG_IRQ_UART1_TX=10
157CONFIG_IRQ_MAC_RX=11
158CONFIG_IRQ_MAC_TX=11
159CONFIG_IRQ_TMR0=12
160CONFIG_IRQ_TMR1=12
161CONFIG_IRQ_TMR2=12
162CONFIG_IRQ_TMR3=12
163CONFIG_IRQ_TMR4=12
164CONFIG_IRQ_TMR5=12
165CONFIG_IRQ_TMR6=12
166CONFIG_IRQ_TMR7=12
167CONFIG_IRQ_PORTG_INTB=12
168CONFIG_IRQ_MEM_DMA0=13
169CONFIG_IRQ_MEM_DMA1=13
170CONFIG_IRQ_WATCH=13
171# CONFIG_BFIN537_STAMP is not set
172CONFIG_BFIN537_BLUETECHNIX_CM=y
173# CONFIG_PNAV10 is not set
174# CONFIG_CAMSIG_MINOTAUR is not set
175# CONFIG_GENERIC_BF537_BOARD is not set
176
177#
178# BF537 Specific Configuration
179#
180
181#
182# Interrupt Priority Assignment
183#
184
185#
186# Priority
187#
188CONFIG_IRQ_DMA_ERROR=7
189CONFIG_IRQ_ERROR=7
190CONFIG_IRQ_CAN_RX=11
191CONFIG_IRQ_CAN_TX=11
192CONFIG_IRQ_PROG_INTA=12
193
194#
195# Board customizations
196#
197# CONFIG_CMDLINE_BOOL is not set
198
199#
200# Clock/PLL Setup
201#
202CONFIG_CLKIN_HZ=30000000
203# CONFIG_BFIN_KERNEL_CLOCK is not set
204CONFIG_MAX_VCO_HZ=600000000
205CONFIG_MIN_VCO_HZ=50000000
206CONFIG_MAX_SCLK_HZ=133333333
207CONFIG_MIN_SCLK_HZ=27000000
208
209#
210# Kernel Timer/Scheduler
211#
212# CONFIG_HZ_100 is not set
213CONFIG_HZ_250=y
214# CONFIG_HZ_300 is not set
215# CONFIG_HZ_1000 is not set
216CONFIG_HZ=250
217
218#
219# Memory Setup
220#
221CONFIG_MAX_MEM_SIZE=32
222CONFIG_MEM_ADD_WIDTH=9
223CONFIG_BOOT_LOAD=0x1000
224CONFIG_BFIN_SCRATCH_REG_RETN=y
225# CONFIG_BFIN_SCRATCH_REG_RETE is not set
226# CONFIG_BFIN_SCRATCH_REG_CYCLES is not set
227
228#
229# Blackfin Kernel Optimizations
230#
231
232#
233# Memory Optimizations
234#
235CONFIG_I_ENTRY_L1=y
236CONFIG_EXCPT_IRQ_SYSC_L1=y
237CONFIG_DO_IRQ_L1=y
238CONFIG_CORE_TIMER_IRQ_L1=y
239CONFIG_IDLE_L1=y
240CONFIG_SCHEDULE_L1=y
241CONFIG_ARITHMETIC_OPS_L1=y
242CONFIG_ACCESS_OK_L1=y
243CONFIG_MEMSET_L1=y
244CONFIG_MEMCPY_L1=y
245CONFIG_SYS_BFIN_SPINLOCK_L1=y
246CONFIG_IP_CHECKSUM_L1=y
247CONFIG_CACHELINE_ALIGNED_L1=y
248CONFIG_SYSCALL_TAB_L1=y
249CONFIG_CPLB_SWITCH_TAB_L1=y
250CONFIG_RAMKERNEL=y
251# CONFIG_ROMKERNEL is not set
252CONFIG_SELECT_MEMORY_MODEL=y
253CONFIG_FLATMEM_MANUAL=y
254# CONFIG_DISCONTIGMEM_MANUAL is not set
255# CONFIG_SPARSEMEM_MANUAL is not set
256CONFIG_FLATMEM=y
257CONFIG_FLAT_NODE_MEM_MAP=y
258# CONFIG_SPARSEMEM_STATIC is not set
259CONFIG_SPLIT_PTLOCK_CPUS=4
260# CONFIG_RESOURCES_64BIT is not set
261CONFIG_ZONE_DMA_FLAG=1
262CONFIG_LARGE_ALLOCS=y
263# CONFIG_BFIN_GPTIMERS is not set
264CONFIG_BFIN_DMA_5XX=y
265# CONFIG_DMA_UNCACHED_2M is not set
266CONFIG_DMA_UNCACHED_1M=y
267# CONFIG_DMA_UNCACHED_NONE is not set
268
269#
270# Cache Support
271#
272CONFIG_BFIN_ICACHE=y
273CONFIG_BFIN_DCACHE=y
274# CONFIG_BFIN_DCACHE_BANKA is not set
275# CONFIG_BFIN_ICACHE_LOCK is not set
276CONFIG_BFIN_WB=y
277# CONFIG_BFIN_WT is not set
278CONFIG_L1_MAX_PIECE=16
279# CONFIG_MPU is not set
280
281#
282# Asynchonous Memory Configuration
283#
284
285#
286# EBIU_AMGCTL Global Control
287#
288CONFIG_C_AMCKEN=y
289CONFIG_C_CDPRIO=y
290# CONFIG_C_AMBEN is not set
291# CONFIG_C_AMBEN_B0 is not set
292# CONFIG_C_AMBEN_B0_B1 is not set
293# CONFIG_C_AMBEN_B0_B1_B2 is not set
294CONFIG_C_AMBEN_ALL=y
295
296#
297# EBIU_AMBCTL Control
298#
299CONFIG_BANK_0=0x7BB0
300CONFIG_BANK_1=0x7BB0
301CONFIG_BANK_2=0xFFC3
302CONFIG_BANK_3=0xFFC3
303
304#
305# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
306#
307# CONFIG_PCI is not set
308# CONFIG_ARCH_SUPPORTS_MSI is not set
309
310#
311# PCCARD (PCMCIA/CardBus) support
312#
313
314#
315# Executable file formats
316#
317CONFIG_BINFMT_ELF_FDPIC=y
318CONFIG_BINFMT_FLAT=y
319CONFIG_BINFMT_ZFLAT=y
320CONFIG_BINFMT_SHARED_FLAT=y
321# CONFIG_BINFMT_MISC is not set
322
323#
324# Power management options
325#
326# CONFIG_PM is not set
327# CONFIG_PM_WAKEUP_BY_GPIO is not set
328
329#
330# CPU Frequency scaling
331#
332# CONFIG_CPU_FREQ is not set
333
334#
335# Networking
336#
337CONFIG_NET=y
338
339#
340# Networking options
341#
342CONFIG_PACKET=y
343# CONFIG_PACKET_MMAP is not set
344CONFIG_UNIX=y
345CONFIG_XFRM=y
346# CONFIG_XFRM_USER is not set
347# CONFIG_XFRM_SUB_POLICY is not set
348# CONFIG_XFRM_MIGRATE is not set
349# CONFIG_NET_KEY is not set
350CONFIG_INET=y
351# CONFIG_IP_MULTICAST is not set
352# CONFIG_IP_ADVANCED_ROUTER is not set
353CONFIG_IP_FIB_HASH=y
354# CONFIG_IP_PNP is not set
355# CONFIG_NET_IPIP is not set
356# CONFIG_NET_IPGRE is not set
357# CONFIG_ARPD is not set
358CONFIG_SYN_COOKIES=y
359# CONFIG_INET_AH is not set
360# CONFIG_INET_ESP is not set
361# CONFIG_INET_IPCOMP is not set
362# CONFIG_INET_XFRM_TUNNEL is not set
363# CONFIG_INET_TUNNEL is not set
364CONFIG_INET_XFRM_MODE_TRANSPORT=y
365CONFIG_INET_XFRM_MODE_TUNNEL=y
366CONFIG_INET_XFRM_MODE_BEET=y
367CONFIG_INET_DIAG=y
368CONFIG_INET_TCP_DIAG=y
369# CONFIG_TCP_CONG_ADVANCED is not set
370CONFIG_TCP_CONG_CUBIC=y
371CONFIG_DEFAULT_TCP_CONG="cubic"
372# CONFIG_TCP_MD5SIG is not set
373# CONFIG_IPV6 is not set
374# CONFIG_INET6_XFRM_TUNNEL is not set
375# CONFIG_INET6_TUNNEL is not set
376# CONFIG_NETLABEL is not set
377# CONFIG_NETWORK_SECMARK is not set
378# CONFIG_NETFILTER is not set
379# CONFIG_IP_DCCP is not set
380# CONFIG_IP_SCTP is not set
381# CONFIG_TIPC is not set
382# CONFIG_ATM is not set
383# CONFIG_BRIDGE is not set
384# CONFIG_VLAN_8021Q is not set
385# CONFIG_DECNET is not set
386# CONFIG_LLC2 is not set
387# CONFIG_IPX is not set
388# CONFIG_ATALK is not set
389# CONFIG_X25 is not set
390# CONFIG_LAPB is not set
391# CONFIG_ECONET is not set
392# CONFIG_WAN_ROUTER is not set
393
394#
395# QoS and/or fair queueing
396#
397# CONFIG_NET_SCHED is not set
398
399#
400# Network testing
401#
402# CONFIG_NET_PKTGEN is not set
403# CONFIG_HAMRADIO is not set
404# CONFIG_IRDA is not set
405# CONFIG_BT is not set
406# CONFIG_AF_RXRPC is not set
407
408#
409# Wireless
410#
411# CONFIG_CFG80211 is not set
412# CONFIG_WIRELESS_EXT is not set
413# CONFIG_MAC80211 is not set
414# CONFIG_IEEE80211 is not set
415# CONFIG_RFKILL is not set
416
417#
418# Device Drivers
419#
420
421#
422# Generic Driver Options
423#
424CONFIG_STANDALONE=y
425CONFIG_PREVENT_FIRMWARE_BUILD=y
426# CONFIG_SYS_HYPERVISOR is not set
427
428#
429# Connector - unified userspace <-> kernelspace linker
430#
431# CONFIG_CONNECTOR is not set
432CONFIG_MTD=y
433# CONFIG_MTD_DEBUG is not set
434# CONFIG_MTD_CONCAT is not set
435CONFIG_MTD_PARTITIONS=y
436# CONFIG_MTD_REDBOOT_PARTS is not set
437# CONFIG_MTD_CMDLINE_PARTS is not set
438
439#
440# User Modules And Translation Layers
441#
442CONFIG_MTD_CHAR=y
443CONFIG_MTD_BLKDEVS=y
444CONFIG_MTD_BLOCK=y
445# CONFIG_FTL is not set
446# CONFIG_NFTL is not set
447# CONFIG_INFTL is not set
448# CONFIG_RFD_FTL is not set
449# CONFIG_SSFDC is not set
450
451#
452# RAM/ROM/Flash chip drivers
453#
454# CONFIG_MTD_CFI is not set
455# CONFIG_MTD_JEDECPROBE is not set
456CONFIG_MTD_MAP_BANK_WIDTH_1=y
457CONFIG_MTD_MAP_BANK_WIDTH_2=y
458CONFIG_MTD_MAP_BANK_WIDTH_4=y
459# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
460# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
461# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
462CONFIG_MTD_CFI_I1=y
463CONFIG_MTD_CFI_I2=y
464# CONFIG_MTD_CFI_I4 is not set
465# CONFIG_MTD_CFI_I8 is not set
466CONFIG_MTD_RAM=y
467# CONFIG_MTD_ROM is not set
468# CONFIG_MTD_ABSENT is not set
469
470#
471# Mapping drivers for chip access
472#
473# CONFIG_MTD_COMPLEX_MAPPINGS is not set
474CONFIG_MTD_UCLINUX=y
475# CONFIG_MTD_PLATRAM is not set
476
477#
478# Self-contained MTD device drivers
479#
480# CONFIG_MTD_SLRAM is not set
481# CONFIG_MTD_PHRAM is not set
482# CONFIG_MTD_MTDRAM is not set
483# CONFIG_MTD_BLOCK2MTD is not set
484
485#
486# Disk-On-Chip Device Drivers
487#
488# CONFIG_MTD_DOC2000 is not set
489# CONFIG_MTD_DOC2001 is not set
490# CONFIG_MTD_DOC2001PLUS is not set
491# CONFIG_MTD_NAND is not set
492# CONFIG_MTD_ONENAND is not set
493
494#
495# UBI - Unsorted block images
496#
497# CONFIG_MTD_UBI is not set
498
499#
500# Parallel port support
501#
502# CONFIG_PARPORT is not set
503
504#
505# Plug and Play support
506#
507# CONFIG_PNPACPI is not set
508
509#
510# Block devices
511#
512# CONFIG_BLK_DEV_COW_COMMON is not set
513# CONFIG_BLK_DEV_LOOP is not set
514# CONFIG_BLK_DEV_NBD is not set
515CONFIG_BLK_DEV_RAM=y
516CONFIG_BLK_DEV_RAM_COUNT=16
517CONFIG_BLK_DEV_RAM_SIZE=4096
518CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
519# CONFIG_CDROM_PKTCDVD is not set
520# CONFIG_ATA_OVER_ETH is not set
521
522#
523# Misc devices
524#
525# CONFIG_IDE is not set
526
527#
528# SCSI device support
529#
530# CONFIG_RAID_ATTRS is not set
531# CONFIG_SCSI is not set
532# CONFIG_SCSI_NETLINK is not set
533# CONFIG_ATA is not set
534
535#
536# Multi-device support (RAID and LVM)
537#
538# CONFIG_MD is not set
539
540#
541# Network device support
542#
543CONFIG_NETDEVICES=y
544# CONFIG_DUMMY is not set
545# CONFIG_BONDING is not set
546# CONFIG_EQUALIZER is not set
547# CONFIG_TUN is not set
548# CONFIG_PHYLIB is not set
549
550#
551# Ethernet (10 or 100Mbit)
552#
553CONFIG_NET_ETHERNET=y
554CONFIG_MII=y
555CONFIG_SMC91X=y
556# CONFIG_BFIN_MAC is not set
557# CONFIG_SMSC911X is not set
558# CONFIG_DM9000 is not set
559CONFIG_NETDEV_1000=y
560# CONFIG_AX88180 is not set
561CONFIG_NETDEV_10000=y
562
563#
564# Wireless LAN
565#
566# CONFIG_WLAN_PRE80211 is not set
567# CONFIG_WLAN_80211 is not set
568# CONFIG_WAN is not set
569# CONFIG_PPP is not set
570# CONFIG_SLIP is not set
571# CONFIG_SHAPER is not set
572# CONFIG_NETCONSOLE is not set
573# CONFIG_NETPOLL is not set
574# CONFIG_NET_POLL_CONTROLLER is not set
575
576#
577# ISDN subsystem
578#
579# CONFIG_ISDN is not set
580
581#
582# Telephony Support
583#
584# CONFIG_PHONE is not set
585
586#
587# Input device support
588#
589# CONFIG_INPUT is not set
590
591#
592# Hardware I/O ports
593#
594# CONFIG_SERIO is not set
595# CONFIG_GAMEPORT is not set
596
597#
598# Character devices
599#
600# CONFIG_AD9960 is not set
601# CONFIG_SPI_ADC_BF533 is not set
602# CONFIG_BF5xx_PFLAGS is not set
603# CONFIG_BF5xx_PPIFCD is not set
604# CONFIG_BFIN_SIMPLE_TIMER is not set
605# CONFIG_BF5xx_PPI is not set
606CONFIG_BFIN_SPORT=y
607# CONFIG_BFIN_TIMER_LATENCY is not set
608# CONFIG_VT is not set
609# CONFIG_SERIAL_NONSTANDARD is not set
610
611#
612# Serial drivers
613#
614# CONFIG_SERIAL_8250 is not set
615
616#
617# Non-8250 serial port support
618#
619CONFIG_SERIAL_BFIN=y
620CONFIG_SERIAL_BFIN_CONSOLE=y
621CONFIG_SERIAL_BFIN_DMA=y
622# CONFIG_SERIAL_BFIN_PIO is not set
623CONFIG_SERIAL_BFIN_UART0=y
624# CONFIG_BFIN_UART0_CTSRTS is not set
625CONFIG_SERIAL_BFIN_UART1=y
626# CONFIG_BFIN_UART1_CTSRTS is not set
627CONFIG_SERIAL_CORE=y
628CONFIG_SERIAL_CORE_CONSOLE=y
629# CONFIG_SERIAL_BFIN_SPORT is not set
630CONFIG_UNIX98_PTYS=y
631CONFIG_LEGACY_PTYS=y
632CONFIG_LEGACY_PTY_COUNT=256
633
634#
635# CAN, the car bus and industrial fieldbus
636#
637# CONFIG_CAN4LINUX is not set
638
639#
640# IPMI
641#
642# CONFIG_IPMI_HANDLER is not set
643# CONFIG_WATCHDOG is not set
644# CONFIG_HW_RANDOM is not set
645# CONFIG_GEN_RTC is not set
646# CONFIG_R3964 is not set
647# CONFIG_RAW_DRIVER is not set
648
649#
650# TPM devices
651#
652# CONFIG_TCG_TPM is not set
653# CONFIG_I2C is not set
654
655#
656# SPI support
657#
658# CONFIG_SPI is not set
659# CONFIG_SPI_MASTER is not set
660
661#
662# Dallas's 1-wire bus
663#
664# CONFIG_W1 is not set
665CONFIG_HWMON=y
666# CONFIG_HWMON_VID is not set
667# CONFIG_SENSORS_ABITUGURU is not set
668# CONFIG_SENSORS_F71805F is not set
669# CONFIG_SENSORS_PC87427 is not set
670# CONFIG_SENSORS_SMSC47M1 is not set
671# CONFIG_SENSORS_SMSC47B397 is not set
672# CONFIG_SENSORS_VT1211 is not set
673# CONFIG_SENSORS_W83627HF is not set
674# CONFIG_HWMON_DEBUG_CHIP is not set
675
676#
677# Multifunction device drivers
678#
679# CONFIG_MFD_SM501 is not set
680
681#
682# Multimedia devices
683#
684# CONFIG_VIDEO_DEV is not set
685# CONFIG_DVB_CORE is not set
686CONFIG_DAB=y
687
688#
689# Graphics support
690#
691# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
692
693#
694# Display device support
695#
696# CONFIG_DISPLAY_SUPPORT is not set
697# CONFIG_VGASTATE is not set
698# CONFIG_FB is not set
699
700#
701# Sound
702#
703# CONFIG_SOUND is not set
704
705#
706# USB support
707#
708CONFIG_USB_ARCH_HAS_HCD=y
709# CONFIG_USB_ARCH_HAS_OHCI is not set
710# CONFIG_USB_ARCH_HAS_EHCI is not set
711# CONFIG_USB is not set
712# CONFIG_USB_MUSB_HDRC is not set
713# CONFIG_USB_GADGET_MUSB_HDRC is not set
714
715#
716# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
717#
718
719#
720# USB Gadget Support
721#
722CONFIG_USB_GADGET=y
723# CONFIG_USB_GADGET_DEBUG_FILES is not set
724CONFIG_USB_GADGET_SELECTED=y
725# CONFIG_USB_GADGET_FSL_USB2 is not set
726CONFIG_USB_GADGET_NET2272=y
727CONFIG_USB_NET2272=y
728# CONFIG_USB_GADGET_NET2280 is not set
729# CONFIG_USB_GADGET_PXA2XX is not set
730# CONFIG_USB_GADGET_GOKU is not set
731# CONFIG_USB_GADGET_LH7A40X is not set
732# CONFIG_USB_GADGET_OMAP is not set
733# CONFIG_USB_GADGET_AT91 is not set
734# CONFIG_USB_GADGET_DUMMY_HCD is not set
735CONFIG_USB_GADGET_DUALSPEED=y
736# CONFIG_USB_ZERO is not set
737# CONFIG_USB_ETH is not set
738# CONFIG_USB_GADGETFS is not set
739# CONFIG_USB_FILE_STORAGE is not set
740# CONFIG_USB_G_SERIAL is not set
741# CONFIG_USB_MIDI_GADGET is not set
742# CONFIG_MMC is not set
743
744#
745# LED devices
746#
747# CONFIG_NEW_LEDS is not set
748
749#
750# LED drivers
751#
752
753#
754# LED Triggers
755#
756
757#
758# InfiniBand support
759#
760
761#
762# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
763#
764
765#
766# Real Time Clock
767#
768# CONFIG_RTC_CLASS is not set
769
770#
771# DMA Engine support
772#
773# CONFIG_DMA_ENGINE is not set
774
775#
776# DMA Clients
777#
778
779#
780# DMA Devices
781#
782
783#
784# PBX support
785#
786# CONFIG_PBX is not set
787
788#
789# File systems
790#
791CONFIG_EXT2_FS=y
792CONFIG_EXT2_FS_XATTR=y
793# CONFIG_EXT2_FS_POSIX_ACL is not set
794# CONFIG_EXT2_FS_SECURITY is not set
795# CONFIG_EXT3_FS is not set
796# CONFIG_EXT4DEV_FS is not set
797CONFIG_FS_MBCACHE=y
798# CONFIG_REISERFS_FS is not set
799# CONFIG_JFS_FS is not set
800# CONFIG_FS_POSIX_ACL is not set
801# CONFIG_XFS_FS is not set
802# CONFIG_GFS2_FS is not set
803# CONFIG_OCFS2_FS is not set
804# CONFIG_MINIX_FS is not set
805# CONFIG_ROMFS_FS is not set
806CONFIG_INOTIFY=y
807CONFIG_INOTIFY_USER=y
808# CONFIG_QUOTA is not set
809CONFIG_DNOTIFY=y
810# CONFIG_AUTOFS_FS is not set
811# CONFIG_AUTOFS4_FS is not set
812# CONFIG_FUSE_FS is not set
813
814#
815# CD-ROM/DVD Filesystems
816#
817# CONFIG_ISO9660_FS is not set
818# CONFIG_UDF_FS is not set
819
820#
821# DOS/FAT/NT Filesystems
822#
823# CONFIG_MSDOS_FS is not set
824# CONFIG_VFAT_FS is not set
825# CONFIG_NTFS_FS is not set
826
827#
828# Pseudo filesystems
829#
830CONFIG_PROC_FS=y
831CONFIG_PROC_SYSCTL=y
832CONFIG_SYSFS=y
833# CONFIG_TMPFS is not set
834# CONFIG_HUGETLB_PAGE is not set
835CONFIG_RAMFS=y
836# CONFIG_CONFIGFS_FS is not set
837
838#
839# Miscellaneous filesystems
840#
841# CONFIG_ADFS_FS is not set
842# CONFIG_AFFS_FS is not set
843# CONFIG_HFS_FS is not set
844# CONFIG_HFSPLUS_FS is not set
845# CONFIG_BEFS_FS is not set
846# CONFIG_BFS_FS is not set
847# CONFIG_EFS_FS is not set
848# CONFIG_YAFFS_FS is not set
849# CONFIG_JFFS2_FS is not set
850# CONFIG_CRAMFS is not set
851# CONFIG_VXFS_FS is not set
852# CONFIG_HPFS_FS is not set
853# CONFIG_QNX4FS_FS is not set
854# CONFIG_SYSV_FS is not set
855# CONFIG_UFS_FS is not set
856
857#
858# Network File Systems
859#
860# CONFIG_NFS_FS is not set
861# CONFIG_NFSD is not set
862# CONFIG_SMB_FS is not set
863# CONFIG_CIFS is not set
864# CONFIG_NCP_FS is not set
865# CONFIG_CODA_FS is not set
866# CONFIG_AFS_FS is not set
867# CONFIG_9P_FS is not set
868
869#
870# Partition Types
871#
872# CONFIG_PARTITION_ADVANCED is not set
873CONFIG_MSDOS_PARTITION=y
874
875#
876# Native Language Support
877#
878# CONFIG_NLS is not set
879
880#
881# Distributed Lock Manager
882#
883# CONFIG_DLM is not set
884
885#
886# Profiling support
887#
888# CONFIG_PROFILING is not set
889
890#
891# Kernel hacking
892#
893# CONFIG_PRINTK_TIME is not set
894CONFIG_ENABLE_MUST_CHECK=y
895# CONFIG_MAGIC_SYSRQ is not set
896# CONFIG_UNUSED_SYMBOLS is not set
897# CONFIG_DEBUG_FS is not set
898# CONFIG_HEADERS_CHECK is not set
899# CONFIG_DEBUG_KERNEL is not set
900# CONFIG_DEBUG_BUGVERBOSE is not set
901# CONFIG_DEBUG_MMRS is not set
902# CONFIG_DEBUG_HUNT_FOR_ZERO is not set
903CONFIG_DEBUG_BFIN_HWTRACE_ON=y
904CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF=y
905# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE is not set
906# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_TWO is not set
907CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0
908# CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set
909# CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE is not set
910# CONFIG_EARLY_PRINTK is not set
911CONFIG_CPLB_INFO=y
912CONFIG_ACCESS_CHECK=y
913
914#
915# Security options
916#
917# CONFIG_KEYS is not set
918CONFIG_SECURITY=y
919# CONFIG_SECURITY_NETWORK is not set
920CONFIG_SECURITY_CAPABILITIES=y
921
922#
923# Cryptographic options
924#
925# CONFIG_CRYPTO is not set
926
927#
928# Library routines
929#
930CONFIG_BITREVERSE=y
931CONFIG_CRC_CCITT=m
932# CONFIG_CRC16 is not set
933# CONFIG_CRC_ITU_T is not set
934CONFIG_CRC32=y
935# CONFIG_LIBCRC32C is not set
936CONFIG_ZLIB_INFLATE=y
937CONFIG_PLIST=y
938CONFIG_HAS_IOMEM=y
939CONFIG_HAS_IOPORT=y
940CONFIG_HAS_DMA=y
diff --git a/arch/blackfin/configs/CM-BF548_defconfig b/arch/blackfin/configs/CM-BF548_defconfig
new file mode 100644
index 000000000000..90207251c533
--- /dev/null
+++ b/arch/blackfin/configs/CM-BF548_defconfig
@@ -0,0 +1,1373 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24.4
4#
5# CONFIG_MMU is not set
6# CONFIG_FPU is not set
7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
9CONFIG_BLACKFIN=y
10CONFIG_ZONE_DMA=y
11CONFIG_SEMAPHORE_SLEEPERS=y
12CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_GPIO=y
17CONFIG_FORCE_MAX_ZONEORDER=14
18CONFIG_GENERIC_CALIBRATE_DELAY=y
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20
21#
22# General setup
23#
24CONFIG_EXPERIMENTAL=y
25CONFIG_BROKEN_ON_SMP=y
26CONFIG_INIT_ENV_ARG_LIMIT=32
27CONFIG_LOCALVERSION=""
28CONFIG_LOCALVERSION_AUTO=y
29CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y
31# CONFIG_POSIX_MQUEUE is not set
32# CONFIG_BSD_PROCESS_ACCT is not set
33# CONFIG_TASKSTATS is not set
34# CONFIG_USER_NS is not set
35# CONFIG_PID_NS is not set
36# CONFIG_AUDIT is not set
37CONFIG_IKCONFIG=y
38CONFIG_IKCONFIG_PROC=y
39CONFIG_LOG_BUF_SHIFT=14
40# CONFIG_CGROUPS is not set
41CONFIG_FAIR_GROUP_SCHED=y
42CONFIG_FAIR_USER_SCHED=y
43# CONFIG_FAIR_CGROUP_SCHED is not set
44CONFIG_SYSFS_DEPRECATED=y
45# CONFIG_RELAY is not set
46CONFIG_BLK_DEV_INITRD=y
47CONFIG_INITRAMFS_SOURCE=""
48# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
49CONFIG_SYSCTL=y
50CONFIG_EMBEDDED=y
51CONFIG_UID16=y
52CONFIG_SYSCTL_SYSCALL=y
53CONFIG_KALLSYMS=y
54# CONFIG_KALLSYMS_EXTRA_PASS is not set
55CONFIG_HOTPLUG=y
56CONFIG_PRINTK=y
57CONFIG_BUG=y
58CONFIG_ELF_CORE=y
59CONFIG_BASE_FULL=y
60CONFIG_FUTEX=y
61CONFIG_ANON_INODES=y
62CONFIG_EPOLL=y
63CONFIG_SIGNALFD=y
64CONFIG_EVENTFD=y
65CONFIG_VM_EVENT_COUNTERS=y
66CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
67# CONFIG_NP2 is not set
68CONFIG_SLAB=y
69# CONFIG_SLUB is not set
70# CONFIG_SLOB is not set
71CONFIG_SLABINFO=y
72CONFIG_RT_MUTEXES=y
73CONFIG_TINY_SHMEM=y
74CONFIG_BASE_SMALL=0
75CONFIG_MODULES=y
76CONFIG_MODULE_UNLOAD=y
77# CONFIG_MODULE_FORCE_UNLOAD is not set
78# CONFIG_MODVERSIONS is not set
79# CONFIG_MODULE_SRCVERSION_ALL is not set
80CONFIG_KMOD=y
81CONFIG_BLOCK=y
82# CONFIG_LBD is not set
83# CONFIG_BLK_DEV_IO_TRACE is not set
84# CONFIG_LSF is not set
85# CONFIG_BLK_DEV_BSG is not set
86
87#
88# IO Schedulers
89#
90CONFIG_IOSCHED_NOOP=y
91CONFIG_IOSCHED_AS=y
92# CONFIG_IOSCHED_DEADLINE is not set
93CONFIG_IOSCHED_CFQ=y
94CONFIG_DEFAULT_AS=y
95# CONFIG_DEFAULT_DEADLINE is not set
96# CONFIG_DEFAULT_CFQ is not set
97# CONFIG_DEFAULT_NOOP is not set
98CONFIG_DEFAULT_IOSCHED="anticipatory"
99# CONFIG_PREEMPT_NONE is not set
100CONFIG_PREEMPT_VOLUNTARY=y
101# CONFIG_PREEMPT is not set
102
103#
104# Blackfin Processor Options
105#
106
107#
108# Processor and Board Settings
109#
110# CONFIG_BF522 is not set
111# CONFIG_BF523 is not set
112# CONFIG_BF524 is not set
113# CONFIG_BF525 is not set
114# CONFIG_BF526 is not set
115# CONFIG_BF527 is not set
116# CONFIG_BF531 is not set
117# CONFIG_BF532 is not set
118# CONFIG_BF533 is not set
119# CONFIG_BF534 is not set
120# CONFIG_BF536 is not set
121# CONFIG_BF537 is not set
122# CONFIG_BF542 is not set
123# CONFIG_BF544 is not set
124# CONFIG_BF547 is not set
125CONFIG_BF548=y
126# CONFIG_BF549 is not set
127# CONFIG_BF561 is not set
128CONFIG_BF_REV_0_0=y
129# CONFIG_BF_REV_0_1 is not set
130# CONFIG_BF_REV_0_2 is not set
131# CONFIG_BF_REV_0_3 is not set
132# CONFIG_BF_REV_0_4 is not set
133# CONFIG_BF_REV_0_5 is not set
134# CONFIG_BF_REV_ANY is not set
135# CONFIG_BF_REV_NONE is not set
136CONFIG_BF54x=y
137CONFIG_IRQ_PLL_WAKEUP=7
138CONFIG_IRQ_RTC=8
139CONFIG_IRQ_SPORT0_RX=9
140CONFIG_IRQ_SPORT0_TX=9
141CONFIG_IRQ_SPORT1_RX=9
142CONFIG_IRQ_SPORT1_TX=9
143CONFIG_IRQ_UART0_RX=10
144CONFIG_IRQ_UART0_TX=10
145CONFIG_IRQ_UART1_RX=10
146CONFIG_IRQ_UART1_TX=10
147CONFIG_IRQ_CNT=8
148CONFIG_IRQ_USB_INT0=11
149CONFIG_IRQ_USB_INT1=11
150CONFIG_IRQ_USB_INT2=11
151CONFIG_IRQ_USB_DMA=11
152CONFIG_IRQ_TIMER0=11
153CONFIG_IRQ_TIMER1=11
154CONFIG_IRQ_TIMER2=11
155CONFIG_IRQ_TIMER3=11
156CONFIG_IRQ_TIMER4=11
157CONFIG_IRQ_TIMER5=11
158CONFIG_IRQ_TIMER6=11
159CONFIG_IRQ_TIMER7=11
160CONFIG_IRQ_TIMER8=11
161CONFIG_IRQ_TIMER9=11
162CONFIG_IRQ_TIMER10=11
163# CONFIG_BFIN548_EZKIT is not set
164CONFIG_BFIN548_BLUETECHNIX_CM=y
165
166#
167# BF548 Specific Configuration
168#
169# CONFIG_DEB_DMA_URGENT is not set
170
171#
172# Interrupt Priority Assignment
173#
174
175#
176# Priority
177#
178CONFIG_IRQ_DMAC0_ERR=7
179CONFIG_IRQ_EPPI0_ERR=7
180CONFIG_IRQ_SPORT0_ERR=7
181CONFIG_IRQ_SPORT1_ERR=7
182CONFIG_IRQ_SPI0_ERR=7
183CONFIG_IRQ_UART0_ERR=7
184CONFIG_IRQ_EPPI0=8
185CONFIG_IRQ_SPI0=10
186CONFIG_IRQ_PINT0=12
187CONFIG_IRQ_PINT1=12
188CONFIG_IRQ_MDMAS0=13
189CONFIG_IRQ_MDMAS1=13
190CONFIG_IRQ_WATCHDOG=13
191CONFIG_IRQ_DMAC1_ERR=7
192CONFIG_IRQ_SPORT2_ERR=7
193CONFIG_IRQ_SPORT3_ERR=7
194CONFIG_IRQ_MXVR_DATA=7
195CONFIG_IRQ_SPI1_ERR=7
196CONFIG_IRQ_SPI2_ERR=7
197CONFIG_IRQ_UART1_ERR=7
198CONFIG_IRQ_UART2_ERR=7
199CONFIG_IRQ_CAN0_ERR=7
200CONFIG_IRQ_SPORT2_RX=9
201CONFIG_IRQ_SPORT2_TX=9
202CONFIG_IRQ_SPORT3_RX=9
203CONFIG_IRQ_SPORT3_TX=9
204CONFIG_IRQ_EPPI1=9
205CONFIG_IRQ_EPPI2=9
206CONFIG_IRQ_SPI1=10
207CONFIG_IRQ_SPI2=10
208CONFIG_IRQ_ATAPI_RX=10
209CONFIG_IRQ_ATAPI_TX=10
210CONFIG_IRQ_TWI0=11
211CONFIG_IRQ_TWI1=11
212CONFIG_IRQ_CAN0_RX=11
213CONFIG_IRQ_CAN0_TX=11
214CONFIG_IRQ_MDMAS2=13
215CONFIG_IRQ_MDMAS3=13
216CONFIG_IRQ_MXVR_ERR=11
217CONFIG_IRQ_MXVR_MSG=11
218CONFIG_IRQ_MXVR_PKT=11
219CONFIG_IRQ_EPPI1_ERR=7
220CONFIG_IRQ_EPPI2_ERR=7
221CONFIG_IRQ_UART3_ERR=7
222CONFIG_IRQ_HOST_ERR=7
223CONFIG_IRQ_PIXC_ERR=7
224CONFIG_IRQ_NFC_ERR=7
225CONFIG_IRQ_ATAPI_ERR=7
226CONFIG_IRQ_CAN1_ERR=7
227CONFIG_IRQ_HS_DMA_ERR=7
228CONFIG_IRQ_PIXC_IN0=8
229CONFIG_IRQ_PIXC_IN1=8
230CONFIG_IRQ_PIXC_OUT=8
231CONFIG_IRQ_SDH=8
232CONFIG_IRQ_KEY=8
233CONFIG_IRQ_CAN1_RX=11
234CONFIG_IRQ_CAN1_TX=11
235CONFIG_IRQ_SDH_MASK0=11
236CONFIG_IRQ_SDH_MASK1=11
237CONFIG_IRQ_OTPSEC=11
238CONFIG_IRQ_PINT2=11
239CONFIG_IRQ_PINT3=11
240
241#
242# Pin Interrupt to Port Assignment
243#
244
245#
246# Assignment
247#
248CONFIG_PINTx_REASSIGN=y
249CONFIG_PINT0_ASSIGN=0x00000101
250CONFIG_PINT1_ASSIGN=0x01010000
251CONFIG_PINT2_ASSIGN=0x07000101
252CONFIG_PINT3_ASSIGN=0x02020303
253
254#
255# Board customizations
256#
257# CONFIG_CMDLINE_BOOL is not set
258
259#
260# Clock/PLL Setup
261#
262CONFIG_CLKIN_HZ=25000000
263# CONFIG_BFIN_KERNEL_CLOCK is not set
264CONFIG_MAX_VCO_HZ=600000000
265CONFIG_MIN_VCO_HZ=50000000
266CONFIG_MAX_SCLK_HZ=133333333
267CONFIG_MIN_SCLK_HZ=27000000
268
269#
270# Kernel Timer/Scheduler
271#
272# CONFIG_HZ_100 is not set
273CONFIG_HZ_250=y
274# CONFIG_HZ_300 is not set
275# CONFIG_HZ_1000 is not set
276CONFIG_HZ=250
277# CONFIG_GENERIC_TIME is not set
278# CONFIG_TICK_ONESHOT is not set
279
280#
281# Memory Setup
282#
283CONFIG_MAX_MEM_SIZE=64
284# CONFIG_MEM_MT46V32M16_6T is not set
285CONFIG_MEM_MT46V32M16_5B=y
286CONFIG_BOOT_LOAD=0x1000
287CONFIG_BFIN_SCRATCH_REG_RETN=y
288# CONFIG_BFIN_SCRATCH_REG_RETE is not set
289# CONFIG_BFIN_SCRATCH_REG_CYCLES is not set
290
291#
292# Blackfin Kernel Optimizations
293#
294
295#
296# Memory Optimizations
297#
298CONFIG_I_ENTRY_L1=y
299CONFIG_EXCPT_IRQ_SYSC_L1=y
300CONFIG_DO_IRQ_L1=y
301CONFIG_CORE_TIMER_IRQ_L1=y
302CONFIG_IDLE_L1=y
303# CONFIG_SCHEDULE_L1 is not set
304CONFIG_ARITHMETIC_OPS_L1=y
305CONFIG_ACCESS_OK_L1=y
306# CONFIG_MEMSET_L1 is not set
307# CONFIG_MEMCPY_L1 is not set
308# CONFIG_SYS_BFIN_SPINLOCK_L1 is not set
309# CONFIG_IP_CHECKSUM_L1 is not set
310CONFIG_CACHELINE_ALIGNED_L1=y
311# CONFIG_SYSCALL_TAB_L1 is not set
312# CONFIG_CPLB_SWITCH_TAB_L1 is not set
313CONFIG_RAMKERNEL=y
314# CONFIG_ROMKERNEL is not set
315CONFIG_SELECT_MEMORY_MODEL=y
316CONFIG_FLATMEM_MANUAL=y
317# CONFIG_DISCONTIGMEM_MANUAL is not set
318# CONFIG_SPARSEMEM_MANUAL is not set
319CONFIG_FLATMEM=y
320CONFIG_FLAT_NODE_MEM_MAP=y
321# CONFIG_SPARSEMEM_STATIC is not set
322# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
323CONFIG_SPLIT_PTLOCK_CPUS=4
324# CONFIG_RESOURCES_64BIT is not set
325CONFIG_ZONE_DMA_FLAG=1
326CONFIG_VIRT_TO_BUS=y
327# CONFIG_BFIN_GPTIMERS is not set
328CONFIG_BFIN_DMA_5XX=y
329# CONFIG_DMA_UNCACHED_2M is not set
330CONFIG_DMA_UNCACHED_1M=y
331# CONFIG_DMA_UNCACHED_NONE is not set
332
333#
334# Cache Support
335#
336CONFIG_BFIN_ICACHE=y
337CONFIG_BFIN_DCACHE=y
338# CONFIG_BFIN_DCACHE_BANKA is not set
339# CONFIG_BFIN_ICACHE_LOCK is not set
340# CONFIG_BFIN_WB is not set
341CONFIG_BFIN_WT=y
342CONFIG_L1_MAX_PIECE=16
343# CONFIG_MPU is not set
344
345#
346# Asynchonous Memory Configuration
347#
348
349#
350# EBIU_AMGCTL Global Control
351#
352CONFIG_C_AMCKEN=y
353# CONFIG_C_CDPRIO is not set
354# CONFIG_C_AMBEN is not set
355# CONFIG_C_AMBEN_B0 is not set
356# CONFIG_C_AMBEN_B0_B1 is not set
357# CONFIG_C_AMBEN_B0_B1_B2 is not set
358CONFIG_C_AMBEN_ALL=y
359
360#
361# EBIU_AMBCTL Control
362#
363CONFIG_BANK_0=0x7BB0
364CONFIG_BANK_1=0x5554
365CONFIG_BANK_2=0x7BB0
366CONFIG_BANK_3=0x99B3
367CONFIG_EBIU_MBSCTLVAL=0x0
368CONFIG_EBIU_MODEVAL=0x1
369CONFIG_EBIU_FCTLVAL=0x6
370
371#
372# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
373#
374# CONFIG_PCI is not set
375# CONFIG_ARCH_SUPPORTS_MSI is not set
376# CONFIG_PCCARD is not set
377
378#
379# Executable file formats
380#
381CONFIG_BINFMT_ELF_FDPIC=y
382CONFIG_BINFMT_FLAT=y
383CONFIG_BINFMT_ZFLAT=y
384# CONFIG_BINFMT_SHARED_FLAT is not set
385# CONFIG_BINFMT_MISC is not set
386
387#
388# Power management options
389#
390# CONFIG_PM is not set
391CONFIG_SUSPEND_UP_POSSIBLE=y
392# CONFIG_PM_WAKEUP_BY_GPIO is not set
393
394#
395# CPU Frequency scaling
396#
397# CONFIG_CPU_FREQ is not set
398
399#
400# Networking
401#
402CONFIG_NET=y
403
404#
405# Networking options
406#
407CONFIG_PACKET=y
408# CONFIG_PACKET_MMAP is not set
409CONFIG_UNIX=y
410CONFIG_XFRM=y
411# CONFIG_XFRM_USER is not set
412# CONFIG_XFRM_SUB_POLICY is not set
413# CONFIG_XFRM_MIGRATE is not set
414# CONFIG_NET_KEY is not set
415CONFIG_INET=y
416# CONFIG_IP_MULTICAST is not set
417# CONFIG_IP_ADVANCED_ROUTER is not set
418CONFIG_IP_FIB_HASH=y
419CONFIG_IP_PNP=y
420# CONFIG_IP_PNP_DHCP is not set
421# CONFIG_IP_PNP_BOOTP is not set
422# CONFIG_IP_PNP_RARP is not set
423# CONFIG_NET_IPIP is not set
424# CONFIG_NET_IPGRE is not set
425# CONFIG_ARPD is not set
426CONFIG_SYN_COOKIES=y
427# CONFIG_INET_AH is not set
428# CONFIG_INET_ESP is not set
429# CONFIG_INET_IPCOMP is not set
430# CONFIG_INET_XFRM_TUNNEL is not set
431# CONFIG_INET_TUNNEL is not set
432CONFIG_INET_XFRM_MODE_TRANSPORT=y
433CONFIG_INET_XFRM_MODE_TUNNEL=y
434CONFIG_INET_XFRM_MODE_BEET=y
435# CONFIG_INET_LRO is not set
436CONFIG_INET_DIAG=y
437CONFIG_INET_TCP_DIAG=y
438# CONFIG_TCP_CONG_ADVANCED is not set
439CONFIG_TCP_CONG_CUBIC=y
440CONFIG_DEFAULT_TCP_CONG="cubic"
441# CONFIG_TCP_MD5SIG is not set
442# CONFIG_IPV6 is not set
443# CONFIG_INET6_XFRM_TUNNEL is not set
444# CONFIG_INET6_TUNNEL is not set
445# CONFIG_NETLABEL is not set
446# CONFIG_NETWORK_SECMARK is not set
447# CONFIG_NETFILTER is not set
448# CONFIG_IP_DCCP is not set
449# CONFIG_IP_SCTP is not set
450# CONFIG_TIPC is not set
451# CONFIG_ATM is not set
452# CONFIG_BRIDGE is not set
453# CONFIG_VLAN_8021Q is not set
454# CONFIG_DECNET is not set
455# CONFIG_LLC2 is not set
456# CONFIG_IPX is not set
457# CONFIG_ATALK is not set
458# CONFIG_X25 is not set
459# CONFIG_LAPB is not set
460# CONFIG_ECONET is not set
461# CONFIG_WAN_ROUTER is not set
462# CONFIG_NET_SCHED is not set
463
464#
465# Network testing
466#
467# CONFIG_NET_PKTGEN is not set
468# CONFIG_HAMRADIO is not set
469# CONFIG_IRDA is not set
470# CONFIG_BT is not set
471# CONFIG_AF_RXRPC is not set
472
473#
474# Wireless
475#
476# CONFIG_CFG80211 is not set
477# CONFIG_WIRELESS_EXT is not set
478# CONFIG_MAC80211 is not set
479# CONFIG_IEEE80211 is not set
480# CONFIG_RFKILL is not set
481# CONFIG_NET_9P is not set
482
483#
484# Device Drivers
485#
486
487#
488# Generic Driver Options
489#
490CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
491CONFIG_STANDALONE=y
492CONFIG_PREVENT_FIRMWARE_BUILD=y
493# CONFIG_FW_LOADER is not set
494# CONFIG_SYS_HYPERVISOR is not set
495# CONFIG_CONNECTOR is not set
496CONFIG_MTD=y
497# CONFIG_MTD_DEBUG is not set
498# CONFIG_MTD_CONCAT is not set
499CONFIG_MTD_PARTITIONS=y
500# CONFIG_MTD_REDBOOT_PARTS is not set
501CONFIG_MTD_CMDLINE_PARTS=y
502
503#
504# User Modules And Translation Layers
505#
506CONFIG_MTD_CHAR=y
507CONFIG_MTD_BLKDEVS=y
508CONFIG_MTD_BLOCK=y
509# CONFIG_FTL is not set
510# CONFIG_NFTL is not set
511# CONFIG_INFTL is not set
512# CONFIG_RFD_FTL is not set
513# CONFIG_SSFDC is not set
514# CONFIG_MTD_OOPS is not set
515
516#
517# RAM/ROM/Flash chip drivers
518#
519CONFIG_MTD_CFI=y
520# CONFIG_MTD_JEDECPROBE is not set
521CONFIG_MTD_GEN_PROBE=y
522# CONFIG_MTD_CFI_ADV_OPTIONS is not set
523CONFIG_MTD_MAP_BANK_WIDTH_1=y
524CONFIG_MTD_MAP_BANK_WIDTH_2=y
525CONFIG_MTD_MAP_BANK_WIDTH_4=y
526# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
527# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
528# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
529CONFIG_MTD_CFI_I1=y
530CONFIG_MTD_CFI_I2=y
531# CONFIG_MTD_CFI_I4 is not set
532# CONFIG_MTD_CFI_I8 is not set
533CONFIG_MTD_CFI_INTELEXT=y
534# CONFIG_MTD_CFI_AMDSTD is not set
535# CONFIG_MTD_CFI_STAA is not set
536CONFIG_MTD_CFI_UTIL=y
537CONFIG_MTD_RAM=y
538# CONFIG_MTD_ROM is not set
539# CONFIG_MTD_ABSENT is not set
540
541#
542# Mapping drivers for chip access
543#
544CONFIG_MTD_COMPLEX_MAPPINGS=y
545CONFIG_MTD_PHYSMAP=y
546CONFIG_MTD_PHYSMAP_START=0x20000000
547CONFIG_MTD_PHYSMAP_LEN=0x800000
548CONFIG_MTD_PHYSMAP_BANKWIDTH=2
549# CONFIG_MTD_UCLINUX is not set
550# CONFIG_MTD_PLATRAM is not set
551
552#
553# Self-contained MTD device drivers
554#
555# CONFIG_MTD_DATAFLASH is not set
556# CONFIG_MTD_M25P80 is not set
557# CONFIG_MTD_SLRAM is not set
558# CONFIG_MTD_PHRAM is not set
559# CONFIG_MTD_MTDRAM is not set
560# CONFIG_MTD_BLOCK2MTD is not set
561
562#
563# Disk-On-Chip Device Drivers
564#
565# CONFIG_MTD_DOC2000 is not set
566# CONFIG_MTD_DOC2001 is not set
567# CONFIG_MTD_DOC2001PLUS is not set
568# CONFIG_MTD_NAND is not set
569# CONFIG_MTD_ONENAND is not set
570
571#
572# UBI - Unsorted block images
573#
574# CONFIG_MTD_UBI is not set
575# CONFIG_PARPORT is not set
576CONFIG_BLK_DEV=y
577# CONFIG_BLK_DEV_COW_COMMON is not set
578# CONFIG_BLK_DEV_LOOP is not set
579# CONFIG_BLK_DEV_NBD is not set
580# CONFIG_BLK_DEV_UB is not set
581CONFIG_BLK_DEV_RAM=y
582CONFIG_BLK_DEV_RAM_COUNT=16
583CONFIG_BLK_DEV_RAM_SIZE=4096
584CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
585# CONFIG_CDROM_PKTCDVD is not set
586# CONFIG_ATA_OVER_ETH is not set
587CONFIG_MISC_DEVICES=y
588# CONFIG_EEPROM_93CX6 is not set
589# CONFIG_IDE is not set
590
591#
592# SCSI device support
593#
594# CONFIG_RAID_ATTRS is not set
595CONFIG_SCSI=y
596CONFIG_SCSI_DMA=y
597# CONFIG_SCSI_TGT is not set
598# CONFIG_SCSI_NETLINK is not set
599CONFIG_SCSI_PROC_FS=y
600
601#
602# SCSI support type (disk, tape, CD-ROM)
603#
604CONFIG_BLK_DEV_SD=y
605# CONFIG_CHR_DEV_ST is not set
606# CONFIG_CHR_DEV_OSST is not set
607CONFIG_BLK_DEV_SR=y
608# CONFIG_BLK_DEV_SR_VENDOR is not set
609# CONFIG_CHR_DEV_SG is not set
610# CONFIG_CHR_DEV_SCH is not set
611
612#
613# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
614#
615# CONFIG_SCSI_MULTI_LUN is not set
616# CONFIG_SCSI_CONSTANTS is not set
617# CONFIG_SCSI_LOGGING is not set
618# CONFIG_SCSI_SCAN_ASYNC is not set
619CONFIG_SCSI_WAIT_SCAN=m
620
621#
622# SCSI Transports
623#
624# CONFIG_SCSI_SPI_ATTRS is not set
625# CONFIG_SCSI_FC_ATTRS is not set
626# CONFIG_SCSI_ISCSI_ATTRS is not set
627# CONFIG_SCSI_SAS_LIBSAS is not set
628# CONFIG_SCSI_SRP_ATTRS is not set
629CONFIG_SCSI_LOWLEVEL=y
630# CONFIG_ISCSI_TCP is not set
631# CONFIG_SCSI_DEBUG is not set
632# CONFIG_ATA is not set
633# CONFIG_MD is not set
634CONFIG_NETDEVICES=y
635# CONFIG_NETDEVICES_MULTIQUEUE is not set
636# CONFIG_DUMMY is not set
637# CONFIG_BONDING is not set
638# CONFIG_MACVLAN is not set
639# CONFIG_EQUALIZER is not set
640# CONFIG_TUN is not set
641# CONFIG_VETH is not set
642# CONFIG_PHYLIB is not set
643CONFIG_NET_ETHERNET=y
644CONFIG_MII=y
645# CONFIG_SMC91X is not set
646CONFIG_SMSC911X=y
647# CONFIG_DM9000 is not set
648# CONFIG_IBM_NEW_EMAC_ZMII is not set
649# CONFIG_IBM_NEW_EMAC_RGMII is not set
650# CONFIG_IBM_NEW_EMAC_TAH is not set
651# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
652# CONFIG_B44 is not set
653# CONFIG_NETDEV_1000 is not set
654# CONFIG_NETDEV_10000 is not set
655
656#
657# Wireless LAN
658#
659# CONFIG_WLAN_PRE80211 is not set
660# CONFIG_WLAN_80211 is not set
661
662#
663# USB Network Adapters
664#
665# CONFIG_USB_CATC is not set
666# CONFIG_USB_KAWETH is not set
667# CONFIG_USB_PEGASUS is not set
668# CONFIG_USB_RTL8150 is not set
669# CONFIG_USB_USBNET is not set
670# CONFIG_WAN is not set
671# CONFIG_PPP is not set
672# CONFIG_SLIP is not set
673# CONFIG_SHAPER is not set
674# CONFIG_NETCONSOLE is not set
675# CONFIG_NETPOLL is not set
676# CONFIG_NET_POLL_CONTROLLER is not set
677# CONFIG_ISDN is not set
678# CONFIG_PHONE is not set
679
680#
681# Input device support
682#
683CONFIG_INPUT=y
684# CONFIG_INPUT_FF_MEMLESS is not set
685# CONFIG_INPUT_POLLDEV is not set
686
687#
688# Userland interfaces
689#
690# CONFIG_INPUT_MOUSEDEV is not set
691# CONFIG_INPUT_JOYDEV is not set
692CONFIG_INPUT_EVDEV=m
693CONFIG_INPUT_EVBUG=m
694
695#
696# Input Device Drivers
697#
698CONFIG_INPUT_KEYBOARD=y
699# CONFIG_KEYBOARD_ATKBD is not set
700# CONFIG_KEYBOARD_SUNKBD is not set
701# CONFIG_KEYBOARD_LKKBD is not set
702# CONFIG_KEYBOARD_XTKBD is not set
703# CONFIG_KEYBOARD_NEWTON is not set
704# CONFIG_KEYBOARD_STOWAWAY is not set
705# CONFIG_KEYBOARD_GPIO is not set
706# CONFIG_KEYBOARD_BFIN is not set
707# CONFIG_KEYBOARD_OPENCORES is not set
708# CONFIG_INPUT_MOUSE is not set
709# CONFIG_INPUT_JOYSTICK is not set
710# CONFIG_INPUT_TABLET is not set
711# CONFIG_INPUT_TOUCHSCREEN is not set
712# CONFIG_INPUT_MISC is not set
713
714#
715# Hardware I/O ports
716#
717# CONFIG_SERIO is not set
718# CONFIG_GAMEPORT is not set
719
720#
721# Character devices
722#
723# CONFIG_AD9960 is not set
724# CONFIG_SPI_ADC_BF533 is not set
725# CONFIG_BF5xx_PPIFCD is not set
726# CONFIG_BFIN_SIMPLE_TIMER is not set
727# CONFIG_BF5xx_PPI is not set
728CONFIG_BFIN_OTP=y
729# CONFIG_BFIN_OTP_WRITE_ENABLE is not set
730# CONFIG_BFIN_SPORT is not set
731# CONFIG_BFIN_TIMER_LATENCY is not set
732# CONFIG_TWI_LCD is not set
733# CONFIG_SIMPLE_GPIO is not set
734# CONFIG_VT is not set
735# CONFIG_SERIAL_NONSTANDARD is not set
736
737#
738# Serial drivers
739#
740# CONFIG_SERIAL_8250 is not set
741
742#
743# Non-8250 serial port support
744#
745CONFIG_SERIAL_BFIN=y
746CONFIG_SERIAL_BFIN_CONSOLE=y
747# CONFIG_SERIAL_BFIN_DMA is not set
748CONFIG_SERIAL_BFIN_PIO=y
749# CONFIG_SERIAL_BFIN_UART0 is not set
750CONFIG_SERIAL_BFIN_UART1=y
751# CONFIG_BFIN_UART1_CTSRTS is not set
752# CONFIG_SERIAL_BFIN_UART2 is not set
753# CONFIG_SERIAL_BFIN_UART3 is not set
754CONFIG_SERIAL_CORE=y
755CONFIG_SERIAL_CORE_CONSOLE=y
756# CONFIG_SERIAL_BFIN_SPORT is not set
757CONFIG_UNIX98_PTYS=y
758# CONFIG_LEGACY_PTYS is not set
759
760#
761# CAN, the car bus and industrial fieldbus
762#
763# CONFIG_CAN4LINUX is not set
764# CONFIG_IPMI_HANDLER is not set
765CONFIG_HW_RANDOM=y
766# CONFIG_GEN_RTC is not set
767# CONFIG_R3964 is not set
768# CONFIG_RAW_DRIVER is not set
769# CONFIG_TCG_TPM is not set
770CONFIG_I2C=y
771CONFIG_I2C_BOARDINFO=y
772CONFIG_I2C_CHARDEV=y
773
774#
775# I2C Algorithms
776#
777# CONFIG_I2C_ALGOBIT is not set
778# CONFIG_I2C_ALGOPCF is not set
779# CONFIG_I2C_ALGOPCA is not set
780
781#
782# I2C Hardware Bus support
783#
784CONFIG_I2C_BLACKFIN_TWI=y
785CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50
786# CONFIG_I2C_GPIO is not set
787# CONFIG_I2C_OCORES is not set
788# CONFIG_I2C_PARPORT_LIGHT is not set
789# CONFIG_I2C_SIMTEC is not set
790# CONFIG_I2C_TAOS_EVM is not set
791# CONFIG_I2C_STUB is not set
792# CONFIG_I2C_TINY_USB is not set
793
794#
795# Miscellaneous I2C Chip support
796#
797# CONFIG_SENSORS_DS1337 is not set
798# CONFIG_SENSORS_DS1374 is not set
799# CONFIG_DS1682 is not set
800# CONFIG_SENSORS_AD5252 is not set
801# CONFIG_SENSORS_EEPROM is not set
802# CONFIG_SENSORS_PCF8574 is not set
803# CONFIG_SENSORS_PCF8575 is not set
804# CONFIG_SENSORS_PCA9543 is not set
805# CONFIG_SENSORS_PCA9539 is not set
806# CONFIG_SENSORS_PCF8591 is not set
807# CONFIG_SENSORS_MAX6875 is not set
808# CONFIG_SENSORS_TSL2550 is not set
809# CONFIG_I2C_DEBUG_CORE is not set
810# CONFIG_I2C_DEBUG_ALGO is not set
811# CONFIG_I2C_DEBUG_BUS is not set
812# CONFIG_I2C_DEBUG_CHIP is not set
813
814#
815# SPI support
816#
817CONFIG_SPI=y
818CONFIG_SPI_MASTER=y
819
820#
821# SPI Master Controller Drivers
822#
823CONFIG_SPI_BFIN=y
824# CONFIG_SPI_BITBANG is not set
825
826#
827# SPI Protocol Masters
828#
829# CONFIG_SPI_AT25 is not set
830# CONFIG_SPI_SPIDEV is not set
831# CONFIG_SPI_TLE62X0 is not set
832# CONFIG_W1 is not set
833# CONFIG_POWER_SUPPLY is not set
834CONFIG_HWMON=y
835# CONFIG_HWMON_VID is not set
836# CONFIG_SENSORS_AD7418 is not set
837# CONFIG_SENSORS_ADM1021 is not set
838# CONFIG_SENSORS_ADM1025 is not set
839# CONFIG_SENSORS_ADM1026 is not set
840# CONFIG_SENSORS_ADM1029 is not set
841# CONFIG_SENSORS_ADM1031 is not set
842# CONFIG_SENSORS_ADM9240 is not set
843# CONFIG_SENSORS_ADT7470 is not set
844# CONFIG_SENSORS_ATXP1 is not set
845# CONFIG_SENSORS_DS1621 is not set
846# CONFIG_SENSORS_F71805F is not set
847# CONFIG_SENSORS_F71882FG is not set
848# CONFIG_SENSORS_F75375S is not set
849# CONFIG_SENSORS_GL518SM is not set
850# CONFIG_SENSORS_GL520SM is not set
851# CONFIG_SENSORS_IT87 is not set
852# CONFIG_SENSORS_LM63 is not set
853# CONFIG_SENSORS_LM70 is not set
854# CONFIG_SENSORS_LM75 is not set
855# CONFIG_SENSORS_LM77 is not set
856# CONFIG_SENSORS_LM78 is not set
857# CONFIG_SENSORS_LM80 is not set
858# CONFIG_SENSORS_LM83 is not set
859# CONFIG_SENSORS_LM85 is not set
860# CONFIG_SENSORS_LM87 is not set
861# CONFIG_SENSORS_LM90 is not set
862# CONFIG_SENSORS_LM92 is not set
863# CONFIG_SENSORS_LM93 is not set
864# CONFIG_SENSORS_MAX1619 is not set
865# CONFIG_SENSORS_MAX6650 is not set
866# CONFIG_SENSORS_PC87360 is not set
867# CONFIG_SENSORS_PC87427 is not set
868# CONFIG_SENSORS_DME1737 is not set
869# CONFIG_SENSORS_SMSC47M1 is not set
870# CONFIG_SENSORS_SMSC47M192 is not set
871# CONFIG_SENSORS_SMSC47B397 is not set
872# CONFIG_SENSORS_THMC50 is not set
873# CONFIG_SENSORS_VT1211 is not set
874# CONFIG_SENSORS_W83781D is not set
875# CONFIG_SENSORS_W83791D is not set
876# CONFIG_SENSORS_W83792D is not set
877# CONFIG_SENSORS_W83793 is not set
878# CONFIG_SENSORS_W83L785TS is not set
879# CONFIG_SENSORS_W83627HF is not set
880# CONFIG_SENSORS_W83627EHF is not set
881# CONFIG_HWMON_DEBUG_CHIP is not set
882CONFIG_WATCHDOG=y
883# CONFIG_WATCHDOG_NOWAYOUT is not set
884
885#
886# Watchdog Device Drivers
887#
888# CONFIG_SOFT_WATCHDOG is not set
889CONFIG_BFIN_WDT=y
890
891#
892# USB-based Watchdog Cards
893#
894# CONFIG_USBPCWATCHDOG is not set
895
896#
897# Sonics Silicon Backplane
898#
899CONFIG_SSB_POSSIBLE=y
900# CONFIG_SSB is not set
901
902#
903# Multifunction device drivers
904#
905# CONFIG_MFD_SM501 is not set
906
907#
908# Multimedia devices
909#
910# CONFIG_VIDEO_DEV is not set
911# CONFIG_DVB_CORE is not set
912CONFIG_DAB=y
913# CONFIG_USB_DABUSB is not set
914
915#
916# Graphics support
917#
918# CONFIG_VGASTATE is not set
919# CONFIG_VIDEO_OUTPUT_CONTROL is not set
920# CONFIG_FB is not set
921# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
922
923#
924# Display device support
925#
926# CONFIG_DISPLAY_SUPPORT is not set
927
928#
929# Sound
930#
931# CONFIG_SOUND is not set
932CONFIG_HID_SUPPORT=y
933CONFIG_HID=y
934# CONFIG_HID_DEBUG is not set
935# CONFIG_HIDRAW is not set
936
937#
938# USB Input Devices
939#
940CONFIG_USB_HID=y
941# CONFIG_USB_HIDINPUT_POWERBOOK is not set
942# CONFIG_HID_FF is not set
943# CONFIG_USB_HIDDEV is not set
944CONFIG_USB_SUPPORT=y
945CONFIG_USB_ARCH_HAS_HCD=y
946# CONFIG_USB_ARCH_HAS_OHCI is not set
947# CONFIG_USB_ARCH_HAS_EHCI is not set
948CONFIG_USB=y
949# CONFIG_USB_DEBUG is not set
950
951#
952# Miscellaneous USB options
953#
954# CONFIG_USB_DEVICEFS is not set
955CONFIG_USB_DEVICE_CLASS=y
956# CONFIG_USB_DYNAMIC_MINORS is not set
957# CONFIG_USB_OTG is not set
958
959#
960# USB Host Controller Drivers
961#
962# CONFIG_USB_ISP116X_HCD is not set
963# CONFIG_USB_ISP1362_HCD is not set
964# CONFIG_USB_ISP1760_HCD is not set
965# CONFIG_USB_SL811_HCD is not set
966# CONFIG_USB_R8A66597_HCD is not set
967CONFIG_USB_MUSB_HDRC=y
968CONFIG_USB_MUSB_SOC=y
969
970#
971# Blackfin BF54x, BF525 and BF527 high speed USB support
972#
973CONFIG_USB_MUSB_HOST=y
974# CONFIG_USB_MUSB_PERIPHERAL is not set
975# CONFIG_USB_MUSB_OTG is not set
976CONFIG_USB_MUSB_HDRC_HCD=y
977# CONFIG_MUSB_PIO_ONLY is not set
978# CONFIG_USB_INVENTRA_DMA is not set
979# CONFIG_USB_TI_CPPI_DMA is not set
980CONFIG_USB_MUSB_LOGLEVEL=0
981
982#
983# USB Device Class drivers
984#
985# CONFIG_USB_ACM is not set
986# CONFIG_USB_PRINTER is not set
987
988#
989# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
990#
991
992#
993# may also be needed; see USB_STORAGE Help for more information
994#
995CONFIG_USB_STORAGE=y
996# CONFIG_USB_STORAGE_DEBUG is not set
997# CONFIG_USB_STORAGE_DATAFAB is not set
998# CONFIG_USB_STORAGE_FREECOM is not set
999# CONFIG_USB_STORAGE_ISD200 is not set
1000# CONFIG_USB_STORAGE_DPCM is not set
1001# CONFIG_USB_STORAGE_USBAT is not set
1002# CONFIG_USB_STORAGE_SDDR09 is not set
1003# CONFIG_USB_STORAGE_SDDR55 is not set
1004# CONFIG_USB_STORAGE_JUMPSHOT is not set
1005# CONFIG_USB_STORAGE_ALAUDA is not set
1006# CONFIG_USB_STORAGE_ONETOUCH is not set
1007# CONFIG_USB_STORAGE_KARMA is not set
1008# CONFIG_USB_LIBUSUAL is not set
1009
1010#
1011# USB Imaging devices
1012#
1013# CONFIG_USB_MDC800 is not set
1014# CONFIG_USB_MICROTEK is not set
1015CONFIG_USB_MON=y
1016
1017#
1018# USB port drivers
1019#
1020
1021#
1022# USB Serial Converter support
1023#
1024# CONFIG_USB_SERIAL is not set
1025
1026#
1027# USB Miscellaneous drivers
1028#
1029# CONFIG_USB_EMI62 is not set
1030# CONFIG_USB_EMI26 is not set
1031# CONFIG_USB_ADUTUX is not set
1032# CONFIG_USB_AUERSWALD is not set
1033# CONFIG_USB_RIO500 is not set
1034# CONFIG_USB_LEGOTOWER is not set
1035# CONFIG_USB_LCD is not set
1036# CONFIG_USB_BERRY_CHARGE is not set
1037# CONFIG_USB_LED is not set
1038# CONFIG_USB_CYPRESS_CY7C63 is not set
1039# CONFIG_USB_CYTHERM is not set
1040# CONFIG_USB_PHIDGET is not set
1041# CONFIG_USB_IDMOUSE is not set
1042# CONFIG_USB_FTDI_ELAN is not set
1043# CONFIG_USB_APPLEDISPLAY is not set
1044# CONFIG_USB_SISUSBVGA is not set
1045# CONFIG_USB_LD is not set
1046# CONFIG_USB_TRANCEVIBRATOR is not set
1047# CONFIG_USB_IOWARRIOR is not set
1048
1049#
1050# USB DSL modem support
1051#
1052
1053#
1054# USB Gadget Support
1055#
1056# CONFIG_USB_GADGET is not set
1057CONFIG_MMC=y
1058# CONFIG_MMC_DEBUG is not set
1059# CONFIG_MMC_UNSAFE_RESUME is not set
1060
1061#
1062# MMC/SD Card Drivers
1063#
1064CONFIG_MMC_BLOCK=y
1065CONFIG_MMC_BLOCK_BOUNCE=y
1066# CONFIG_SDIO_UART is not set
1067
1068#
1069# MMC/SD Host Controller Drivers
1070#
1071CONFIG_SDH_BFIN=y
1072# CONFIG_MMC_SPI is not set
1073# CONFIG_SPI_MMC is not set
1074# CONFIG_NEW_LEDS is not set
1075CONFIG_RTC_LIB=y
1076CONFIG_RTC_CLASS=y
1077CONFIG_RTC_HCTOSYS=y
1078CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1079# CONFIG_RTC_DEBUG is not set
1080
1081#
1082# RTC interfaces
1083#
1084CONFIG_RTC_INTF_SYSFS=y
1085CONFIG_RTC_INTF_PROC=y
1086CONFIG_RTC_INTF_DEV=y
1087# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1088# CONFIG_RTC_DRV_TEST is not set
1089
1090#
1091# I2C RTC drivers
1092#
1093# CONFIG_RTC_DRV_DS1307 is not set
1094# CONFIG_RTC_DRV_DS1374 is not set
1095# CONFIG_RTC_DRV_DS1672 is not set
1096# CONFIG_RTC_DRV_MAX6900 is not set
1097# CONFIG_RTC_DRV_RS5C372 is not set
1098# CONFIG_RTC_DRV_ISL1208 is not set
1099# CONFIG_RTC_DRV_X1205 is not set
1100# CONFIG_RTC_DRV_PCF8563 is not set
1101# CONFIG_RTC_DRV_PCF8583 is not set
1102# CONFIG_RTC_DRV_M41T80 is not set
1103
1104#
1105# SPI RTC drivers
1106#
1107# CONFIG_RTC_DRV_RS5C348 is not set
1108# CONFIG_RTC_DRV_MAX6902 is not set
1109
1110#
1111# Platform RTC drivers
1112#
1113# CONFIG_RTC_DRV_DS1553 is not set
1114# CONFIG_RTC_DRV_STK17TA8 is not set
1115# CONFIG_RTC_DRV_DS1742 is not set
1116# CONFIG_RTC_DRV_M48T86 is not set
1117# CONFIG_RTC_DRV_M48T59 is not set
1118# CONFIG_RTC_DRV_V3020 is not set
1119
1120#
1121# on-CPU RTC drivers
1122#
1123CONFIG_RTC_DRV_BFIN=y
1124
1125#
1126# Userspace I/O
1127#
1128# CONFIG_UIO is not set
1129
1130#
1131# PBX support
1132#
1133# CONFIG_PBX is not set
1134
1135#
1136# File systems
1137#
1138# CONFIG_EXT2_FS is not set
1139# CONFIG_EXT3_FS is not set
1140# CONFIG_EXT4DEV_FS is not set
1141# CONFIG_REISERFS_FS is not set
1142# CONFIG_JFS_FS is not set
1143# CONFIG_FS_POSIX_ACL is not set
1144# CONFIG_XFS_FS is not set
1145# CONFIG_GFS2_FS is not set
1146# CONFIG_OCFS2_FS is not set
1147# CONFIG_MINIX_FS is not set
1148# CONFIG_ROMFS_FS is not set
1149CONFIG_INOTIFY=y
1150CONFIG_INOTIFY_USER=y
1151# CONFIG_QUOTA is not set
1152CONFIG_DNOTIFY=y
1153# CONFIG_AUTOFS_FS is not set
1154# CONFIG_AUTOFS4_FS is not set
1155# CONFIG_FUSE_FS is not set
1156
1157#
1158# CD-ROM/DVD Filesystems
1159#
1160CONFIG_ISO9660_FS=m
1161CONFIG_JOLIET=y
1162CONFIG_ZISOFS=y
1163# CONFIG_UDF_FS is not set
1164
1165#
1166# DOS/FAT/NT Filesystems
1167#
1168CONFIG_FAT_FS=m
1169CONFIG_MSDOS_FS=m
1170CONFIG_VFAT_FS=m
1171CONFIG_FAT_DEFAULT_CODEPAGE=437
1172CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1173CONFIG_NTFS_FS=m
1174# CONFIG_NTFS_DEBUG is not set
1175CONFIG_NTFS_RW=y
1176
1177#
1178# Pseudo filesystems
1179#
1180CONFIG_PROC_FS=y
1181CONFIG_PROC_SYSCTL=y
1182CONFIG_SYSFS=y
1183# CONFIG_TMPFS is not set
1184# CONFIG_HUGETLB_PAGE is not set
1185# CONFIG_CONFIGFS_FS is not set
1186
1187#
1188# Miscellaneous filesystems
1189#
1190# CONFIG_ADFS_FS is not set
1191# CONFIG_AFFS_FS is not set
1192# CONFIG_HFS_FS is not set
1193# CONFIG_HFSPLUS_FS is not set
1194# CONFIG_BEFS_FS is not set
1195# CONFIG_BFS_FS is not set
1196# CONFIG_EFS_FS is not set
1197CONFIG_YAFFS_FS=m
1198CONFIG_YAFFS_YAFFS1=y
1199# CONFIG_YAFFS_DOES_ECC is not set
1200CONFIG_YAFFS_YAFFS2=y
1201CONFIG_YAFFS_AUTO_YAFFS2=y
1202# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
1203CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
1204# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
1205# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
1206CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
1207CONFIG_JFFS2_FS=m
1208CONFIG_JFFS2_FS_DEBUG=0
1209CONFIG_JFFS2_FS_WRITEBUFFER=y
1210# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1211# CONFIG_JFFS2_SUMMARY is not set
1212# CONFIG_JFFS2_FS_XATTR is not set
1213# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1214CONFIG_JFFS2_ZLIB=y
1215# CONFIG_JFFS2_LZO is not set
1216CONFIG_JFFS2_RTIME=y
1217# CONFIG_JFFS2_RUBIN is not set
1218# CONFIG_CRAMFS is not set
1219# CONFIG_VXFS_FS is not set
1220# CONFIG_HPFS_FS is not set
1221# CONFIG_QNX4FS_FS is not set
1222# CONFIG_SYSV_FS is not set
1223# CONFIG_UFS_FS is not set
1224CONFIG_NETWORK_FILESYSTEMS=y
1225CONFIG_NFS_FS=m
1226CONFIG_NFS_V3=y
1227# CONFIG_NFS_V3_ACL is not set
1228# CONFIG_NFS_V4 is not set
1229# CONFIG_NFS_DIRECTIO is not set
1230CONFIG_NFSD=m
1231CONFIG_NFSD_V3=y
1232# CONFIG_NFSD_V3_ACL is not set
1233# CONFIG_NFSD_V4 is not set
1234CONFIG_NFSD_TCP=y
1235CONFIG_LOCKD=m
1236CONFIG_LOCKD_V4=y
1237CONFIG_EXPORTFS=m
1238CONFIG_NFS_COMMON=y
1239CONFIG_SUNRPC=m
1240# CONFIG_SUNRPC_BIND34 is not set
1241# CONFIG_RPCSEC_GSS_KRB5 is not set
1242# CONFIG_RPCSEC_GSS_SPKM3 is not set
1243CONFIG_SMB_FS=m
1244CONFIG_SMB_NLS_DEFAULT=y
1245CONFIG_SMB_NLS_REMOTE="cp437"
1246CONFIG_CIFS=y
1247# CONFIG_CIFS_STATS is not set
1248# CONFIG_CIFS_WEAK_PW_HASH is not set
1249# CONFIG_CIFS_XATTR is not set
1250# CONFIG_CIFS_DEBUG2 is not set
1251# CONFIG_CIFS_EXPERIMENTAL is not set
1252# CONFIG_NCP_FS is not set
1253# CONFIG_CODA_FS is not set
1254# CONFIG_AFS_FS is not set
1255
1256#
1257# Partition Types
1258#
1259CONFIG_PARTITION_ADVANCED=y
1260# CONFIG_ACORN_PARTITION is not set
1261# CONFIG_OSF_PARTITION is not set
1262# CONFIG_AMIGA_PARTITION is not set
1263# CONFIG_ATARI_PARTITION is not set
1264# CONFIG_MAC_PARTITION is not set
1265CONFIG_MSDOS_PARTITION=y
1266# CONFIG_BSD_DISKLABEL is not set
1267# CONFIG_MINIX_SUBPARTITION is not set
1268# CONFIG_SOLARIS_X86_PARTITION is not set
1269# CONFIG_UNIXWARE_DISKLABEL is not set
1270# CONFIG_LDM_PARTITION is not set
1271# CONFIG_SGI_PARTITION is not set
1272# CONFIG_ULTRIX_PARTITION is not set
1273# CONFIG_SUN_PARTITION is not set
1274# CONFIG_KARMA_PARTITION is not set
1275# CONFIG_EFI_PARTITION is not set
1276# CONFIG_SYSV68_PARTITION is not set
1277CONFIG_NLS=y
1278CONFIG_NLS_DEFAULT="iso8859-1"
1279CONFIG_NLS_CODEPAGE_437=m
1280CONFIG_NLS_CODEPAGE_737=m
1281CONFIG_NLS_CODEPAGE_775=m
1282CONFIG_NLS_CODEPAGE_850=m
1283CONFIG_NLS_CODEPAGE_852=m
1284CONFIG_NLS_CODEPAGE_855=m
1285CONFIG_NLS_CODEPAGE_857=m
1286CONFIG_NLS_CODEPAGE_860=m
1287CONFIG_NLS_CODEPAGE_861=m
1288CONFIG_NLS_CODEPAGE_862=m
1289CONFIG_NLS_CODEPAGE_863=m
1290CONFIG_NLS_CODEPAGE_864=m
1291CONFIG_NLS_CODEPAGE_865=m
1292CONFIG_NLS_CODEPAGE_866=m
1293CONFIG_NLS_CODEPAGE_869=m
1294CONFIG_NLS_CODEPAGE_936=m
1295CONFIG_NLS_CODEPAGE_950=m
1296CONFIG_NLS_CODEPAGE_932=m
1297CONFIG_NLS_CODEPAGE_949=m
1298CONFIG_NLS_CODEPAGE_874=m
1299CONFIG_NLS_ISO8859_8=m
1300CONFIG_NLS_CODEPAGE_1250=m
1301CONFIG_NLS_CODEPAGE_1251=m
1302CONFIG_NLS_ASCII=m
1303CONFIG_NLS_ISO8859_1=m
1304CONFIG_NLS_ISO8859_2=m
1305CONFIG_NLS_ISO8859_3=m
1306CONFIG_NLS_ISO8859_4=m
1307CONFIG_NLS_ISO8859_5=m
1308CONFIG_NLS_ISO8859_6=m
1309CONFIG_NLS_ISO8859_7=m
1310CONFIG_NLS_ISO8859_9=m
1311CONFIG_NLS_ISO8859_13=m
1312CONFIG_NLS_ISO8859_14=m
1313CONFIG_NLS_ISO8859_15=m
1314CONFIG_NLS_KOI8_R=m
1315CONFIG_NLS_KOI8_U=m
1316CONFIG_NLS_UTF8=m
1317# CONFIG_DLM is not set
1318CONFIG_INSTRUMENTATION=y
1319# CONFIG_PROFILING is not set
1320# CONFIG_MARKERS is not set
1321
1322#
1323# Kernel hacking
1324#
1325# CONFIG_PRINTK_TIME is not set
1326CONFIG_ENABLE_WARN_DEPRECATED=y
1327CONFIG_ENABLE_MUST_CHECK=y
1328# CONFIG_MAGIC_SYSRQ is not set
1329# CONFIG_UNUSED_SYMBOLS is not set
1330CONFIG_DEBUG_FS=y
1331# CONFIG_HEADERS_CHECK is not set
1332# CONFIG_DEBUG_KERNEL is not set
1333# CONFIG_DEBUG_BUGVERBOSE is not set
1334# CONFIG_SAMPLES is not set
1335# CONFIG_DEBUG_MMRS is not set
1336CONFIG_DEBUG_HUNT_FOR_ZERO=y
1337CONFIG_DEBUG_BFIN_HWTRACE_ON=y
1338CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF=y
1339# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE is not set
1340# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_TWO is not set
1341CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0
1342# CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set
1343# CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE is not set
1344# CONFIG_EARLY_PRINTK is not set
1345CONFIG_CPLB_INFO=y
1346CONFIG_ACCESS_CHECK=y
1347
1348#
1349# Security options
1350#
1351# CONFIG_KEYS is not set
1352CONFIG_SECURITY=y
1353# CONFIG_SECURITY_NETWORK is not set
1354# CONFIG_SECURITY_CAPABILITIES is not set
1355# CONFIG_SECURITY_ROOTPLUG is not set
1356# CONFIG_CRYPTO is not set
1357
1358#
1359# Library routines
1360#
1361CONFIG_BITREVERSE=y
1362CONFIG_CRC_CCITT=m
1363# CONFIG_CRC16 is not set
1364# CONFIG_CRC_ITU_T is not set
1365CONFIG_CRC32=y
1366# CONFIG_CRC7 is not set
1367# CONFIG_LIBCRC32C is not set
1368CONFIG_ZLIB_INFLATE=y
1369CONFIG_ZLIB_DEFLATE=m
1370CONFIG_PLIST=y
1371CONFIG_HAS_IOMEM=y
1372CONFIG_HAS_IOPORT=y
1373CONFIG_HAS_DMA=y
diff --git a/arch/blackfin/configs/CM-BF561_defconfig b/arch/blackfin/configs/CM-BF561_defconfig
new file mode 100644
index 000000000000..daf00906c1ef
--- /dev/null
+++ b/arch/blackfin/configs/CM-BF561_defconfig
@@ -0,0 +1,876 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24.4
4# Tue Apr 1 10:50:11 2008
5#
6# CONFIG_MMU is not set
7# CONFIG_FPU is not set
8CONFIG_RWSEM_GENERIC_SPINLOCK=y
9# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
10CONFIG_BLACKFIN=y
11CONFIG_ZONE_DMA=y
12CONFIG_SEMAPHORE_SLEEPERS=y
13CONFIG_GENERIC_FIND_NEXT_BIT=y
14CONFIG_GENERIC_HWEIGHT=y
15CONFIG_GENERIC_HARDIRQS=y
16CONFIG_GENERIC_IRQ_PROBE=y
17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
21
22#
23# General setup
24#
25CONFIG_EXPERIMENTAL=y
26CONFIG_BROKEN_ON_SMP=y
27CONFIG_INIT_ENV_ARG_LIMIT=32
28CONFIG_LOCALVERSION=""
29CONFIG_LOCALVERSION_AUTO=y
30CONFIG_SYSVIPC=y
31CONFIG_SYSVIPC_SYSCTL=y
32# CONFIG_POSIX_MQUEUE is not set
33# CONFIG_BSD_PROCESS_ACCT is not set
34# CONFIG_TASKSTATS is not set
35# CONFIG_USER_NS is not set
36# CONFIG_PID_NS is not set
37# CONFIG_AUDIT is not set
38# CONFIG_IKCONFIG is not set
39CONFIG_LOG_BUF_SHIFT=14
40# CONFIG_CGROUPS is not set
41CONFIG_FAIR_GROUP_SCHED=y
42CONFIG_FAIR_USER_SCHED=y
43# CONFIG_FAIR_CGROUP_SCHED is not set
44CONFIG_SYSFS_DEPRECATED=y
45# CONFIG_RELAY is not set
46# CONFIG_BLK_DEV_INITRD is not set
47# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
48CONFIG_SYSCTL=y
49CONFIG_EMBEDDED=y
50# CONFIG_UID16 is not set
51CONFIG_SYSCTL_SYSCALL=y
52CONFIG_KALLSYMS=y
53# CONFIG_KALLSYMS_EXTRA_PASS is not set
54# CONFIG_HOTPLUG is not set
55CONFIG_PRINTK=y
56CONFIG_BUG=y
57CONFIG_ELF_CORE=y
58CONFIG_BASE_FULL=y
59CONFIG_FUTEX=y
60CONFIG_ANON_INODES=y
61CONFIG_EPOLL=y
62CONFIG_SIGNALFD=y
63CONFIG_EVENTFD=y
64CONFIG_VM_EVENT_COUNTERS=y
65CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
66# CONFIG_NP2 is not set
67CONFIG_SLAB=y
68# CONFIG_SLUB is not set
69# CONFIG_SLOB is not set
70CONFIG_SLABINFO=y
71CONFIG_RT_MUTEXES=y
72CONFIG_TINY_SHMEM=y
73CONFIG_BASE_SMALL=0
74CONFIG_MODULES=y
75CONFIG_MODULE_UNLOAD=y
76# CONFIG_MODULE_FORCE_UNLOAD is not set
77# CONFIG_MODVERSIONS is not set
78# CONFIG_MODULE_SRCVERSION_ALL is not set
79CONFIG_KMOD=y
80CONFIG_BLOCK=y
81# CONFIG_LBD is not set
82# CONFIG_BLK_DEV_IO_TRACE is not set
83# CONFIG_LSF is not set
84# CONFIG_BLK_DEV_BSG is not set
85
86#
87# IO Schedulers
88#
89CONFIG_IOSCHED_NOOP=y
90# CONFIG_IOSCHED_AS is not set
91# CONFIG_IOSCHED_DEADLINE is not set
92CONFIG_IOSCHED_CFQ=y
93# CONFIG_DEFAULT_AS is not set
94# CONFIG_DEFAULT_DEADLINE is not set
95# CONFIG_DEFAULT_CFQ is not set
96CONFIG_DEFAULT_NOOP=y
97CONFIG_DEFAULT_IOSCHED="noop"
98CONFIG_PREEMPT_NONE=y
99# CONFIG_PREEMPT_VOLUNTARY is not set
100# CONFIG_PREEMPT is not set
101
102#
103# Blackfin Processor Options
104#
105
106#
107# Processor and Board Settings
108#
109# CONFIG_BF522 is not set
110# CONFIG_BF523 is not set
111# CONFIG_BF524 is not set
112# CONFIG_BF525 is not set
113# CONFIG_BF526 is not set
114# CONFIG_BF527 is not set
115# CONFIG_BF531 is not set
116# CONFIG_BF532 is not set
117# CONFIG_BF533 is not set
118# CONFIG_BF534 is not set
119# CONFIG_BF536 is not set
120# CONFIG_BF537 is not set
121# CONFIG_BF542 is not set
122# CONFIG_BF544 is not set
123# CONFIG_BF547 is not set
124# CONFIG_BF548 is not set
125# CONFIG_BF549 is not set
126CONFIG_BF561=y
127# CONFIG_BF_REV_0_0 is not set
128# CONFIG_BF_REV_0_1 is not set
129# CONFIG_BF_REV_0_2 is not set
130CONFIG_BF_REV_0_3=y
131# CONFIG_BF_REV_0_4 is not set
132# CONFIG_BF_REV_0_5 is not set
133# CONFIG_BF_REV_ANY is not set
134# CONFIG_BF_REV_NONE is not set
135CONFIG_BFIN_DUAL_CORE=y
136CONFIG_MEM_MT48LC8M32B2B5_7=y
137CONFIG_IRQ_PLL_WAKEUP=7
138CONFIG_IRQ_SPORT0_ERROR=7
139CONFIG_IRQ_SPORT1_ERROR=7
140CONFIG_IRQ_SPI_ERROR=7
141# CONFIG_BFIN561_EZKIT is not set
142# CONFIG_BFIN561_TEPLA is not set
143CONFIG_BFIN561_BLUETECHNIX_CM=y
144# CONFIG_GENERIC_BF561_BOARD is not set
145
146#
147# BF561 Specific Configuration
148#
149
150#
151# Core B Support
152#
153
154#
155# Core B Support
156#
157CONFIG_BF561_COREB=y
158# CONFIG_BF561_COREB_RESET is not set
159
160#
161# Interrupt Priority Assignment
162#
163
164#
165# Priority
166#
167CONFIG_IRQ_DMA1_ERROR=7
168CONFIG_IRQ_DMA2_ERROR=7
169CONFIG_IRQ_IMDMA_ERROR=7
170CONFIG_IRQ_PPI0_ERROR=7
171CONFIG_IRQ_PPI1_ERROR=7
172CONFIG_IRQ_UART_ERROR=7
173CONFIG_IRQ_RESERVED_ERROR=7
174CONFIG_IRQ_DMA1_0=8
175CONFIG_IRQ_DMA1_1=8
176CONFIG_IRQ_DMA1_2=8
177CONFIG_IRQ_DMA1_3=8
178CONFIG_IRQ_DMA1_4=8
179CONFIG_IRQ_DMA1_5=8
180CONFIG_IRQ_DMA1_6=8
181CONFIG_IRQ_DMA1_7=8
182CONFIG_IRQ_DMA1_8=8
183CONFIG_IRQ_DMA1_9=8
184CONFIG_IRQ_DMA1_10=8
185CONFIG_IRQ_DMA1_11=8
186CONFIG_IRQ_DMA2_0=9
187CONFIG_IRQ_DMA2_1=9
188CONFIG_IRQ_DMA2_2=9
189CONFIG_IRQ_DMA2_3=9
190CONFIG_IRQ_DMA2_4=9
191CONFIG_IRQ_DMA2_5=9
192CONFIG_IRQ_DMA2_6=9
193CONFIG_IRQ_DMA2_7=9
194CONFIG_IRQ_DMA2_8=9
195CONFIG_IRQ_DMA2_9=9
196CONFIG_IRQ_DMA2_10=9
197CONFIG_IRQ_DMA2_11=9
198CONFIG_IRQ_TIMER0=10
199CONFIG_IRQ_TIMER1=10
200CONFIG_IRQ_TIMER2=10
201CONFIG_IRQ_TIMER3=10
202CONFIG_IRQ_TIMER4=10
203CONFIG_IRQ_TIMER5=10
204CONFIG_IRQ_TIMER6=10
205CONFIG_IRQ_TIMER7=10
206CONFIG_IRQ_TIMER8=10
207CONFIG_IRQ_TIMER9=10
208CONFIG_IRQ_TIMER10=10
209CONFIG_IRQ_TIMER11=10
210CONFIG_IRQ_PROG0_INTA=11
211CONFIG_IRQ_PROG0_INTB=11
212CONFIG_IRQ_PROG1_INTA=11
213CONFIG_IRQ_PROG1_INTB=11
214CONFIG_IRQ_PROG2_INTA=11
215CONFIG_IRQ_PROG2_INTB=11
216CONFIG_IRQ_DMA1_WRRD0=8
217CONFIG_IRQ_DMA1_WRRD1=8
218CONFIG_IRQ_DMA2_WRRD0=9
219CONFIG_IRQ_DMA2_WRRD1=9
220CONFIG_IRQ_IMDMA_WRRD0=12
221CONFIG_IRQ_IMDMA_WRRD1=12
222CONFIG_IRQ_WDTIMER=13
223
224#
225# Board customizations
226#
227# CONFIG_CMDLINE_BOOL is not set
228
229#
230# Clock/PLL Setup
231#
232CONFIG_CLKIN_HZ=25000000
233# CONFIG_BFIN_KERNEL_CLOCK is not set
234CONFIG_MAX_VCO_HZ=600000000
235CONFIG_MIN_VCO_HZ=50000000
236CONFIG_MAX_SCLK_HZ=133333333
237CONFIG_MIN_SCLK_HZ=27000000
238
239#
240# Kernel Timer/Scheduler
241#
242# CONFIG_HZ_100 is not set
243CONFIG_HZ_250=y
244# CONFIG_HZ_300 is not set
245# CONFIG_HZ_1000 is not set
246CONFIG_HZ=250
247CONFIG_GENERIC_TIME=y
248CONFIG_GENERIC_CLOCKEVENTS=y
249# CONFIG_CYCLES_CLOCKSOURCE is not set
250# CONFIG_TICK_ONESHOT is not set
251# CONFIG_NO_HZ is not set
252# CONFIG_HIGH_RES_TIMERS is not set
253CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
254
255#
256# Memory Setup
257#
258CONFIG_MAX_MEM_SIZE=32
259CONFIG_BOOT_LOAD=0x1000
260CONFIG_BFIN_SCRATCH_REG_RETN=y
261# CONFIG_BFIN_SCRATCH_REG_RETE is not set
262# CONFIG_BFIN_SCRATCH_REG_CYCLES is not set
263
264#
265# Blackfin Kernel Optimizations
266#
267
268#
269# Memory Optimizations
270#
271CONFIG_I_ENTRY_L1=y
272CONFIG_EXCPT_IRQ_SYSC_L1=y
273CONFIG_DO_IRQ_L1=y
274CONFIG_CORE_TIMER_IRQ_L1=y
275CONFIG_IDLE_L1=y
276CONFIG_SCHEDULE_L1=y
277CONFIG_ARITHMETIC_OPS_L1=y
278CONFIG_ACCESS_OK_L1=y
279CONFIG_MEMSET_L1=y
280CONFIG_MEMCPY_L1=y
281CONFIG_SYS_BFIN_SPINLOCK_L1=y
282CONFIG_IP_CHECKSUM_L1=y
283CONFIG_CACHELINE_ALIGNED_L1=y
284CONFIG_SYSCALL_TAB_L1=y
285CONFIG_CPLB_SWITCH_TAB_L1=y
286CONFIG_RAMKERNEL=y
287# CONFIG_ROMKERNEL is not set
288CONFIG_SELECT_MEMORY_MODEL=y
289CONFIG_FLATMEM_MANUAL=y
290# CONFIG_DISCONTIGMEM_MANUAL is not set
291# CONFIG_SPARSEMEM_MANUAL is not set
292CONFIG_FLATMEM=y
293CONFIG_FLAT_NODE_MEM_MAP=y
294# CONFIG_SPARSEMEM_STATIC is not set
295# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
296CONFIG_SPLIT_PTLOCK_CPUS=4
297# CONFIG_RESOURCES_64BIT is not set
298CONFIG_ZONE_DMA_FLAG=1
299CONFIG_VIRT_TO_BUS=y
300CONFIG_LARGE_ALLOCS=y
301# CONFIG_BFIN_GPTIMERS is not set
302CONFIG_BFIN_DMA_5XX=y
303# CONFIG_DMA_UNCACHED_2M is not set
304CONFIG_DMA_UNCACHED_1M=y
305# CONFIG_DMA_UNCACHED_NONE is not set
306
307#
308# Cache Support
309#
310CONFIG_BFIN_ICACHE=y
311CONFIG_BFIN_DCACHE=y
312# CONFIG_BFIN_DCACHE_BANKA is not set
313# CONFIG_BFIN_ICACHE_LOCK is not set
314CONFIG_BFIN_WB=y
315# CONFIG_BFIN_WT is not set
316CONFIG_L1_MAX_PIECE=16
317# CONFIG_MPU is not set
318
319#
320# Asynchonous Memory Configuration
321#
322
323#
324# EBIU_AMGCTL Global Control
325#
326CONFIG_C_AMCKEN=y
327CONFIG_C_CDPRIO=y
328CONFIG_C_B0PEN=y
329CONFIG_C_B1PEN=y
330CONFIG_C_B2PEN=y
331# CONFIG_C_B3PEN is not set
332# CONFIG_C_AMBEN is not set
333# CONFIG_C_AMBEN_B0 is not set
334# CONFIG_C_AMBEN_B0_B1 is not set
335# CONFIG_C_AMBEN_B0_B1_B2 is not set
336CONFIG_C_AMBEN_ALL=y
337
338#
339# EBIU_AMBCTL Control
340#
341CONFIG_BANK_0=0x7BB0
342CONFIG_BANK_1=0x7BB0
343CONFIG_BANK_2=0x7BB0
344CONFIG_BANK_3=0xFFC3
345
346#
347# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
348#
349# CONFIG_PCI is not set
350# CONFIG_ARCH_SUPPORTS_MSI is not set
351
352#
353# Executable file formats
354#
355CONFIG_BINFMT_ELF_FDPIC=y
356CONFIG_BINFMT_FLAT=y
357CONFIG_BINFMT_ZFLAT=y
358CONFIG_BINFMT_SHARED_FLAT=y
359# CONFIG_BINFMT_MISC is not set
360
361#
362# Power management options
363#
364# CONFIG_PM is not set
365CONFIG_SUSPEND_UP_POSSIBLE=y
366# CONFIG_PM_WAKEUP_BY_GPIO is not set
367
368#
369# Networking
370#
371CONFIG_NET=y
372
373#
374# Networking options
375#
376CONFIG_PACKET=y
377# CONFIG_PACKET_MMAP is not set
378CONFIG_UNIX=y
379CONFIG_XFRM=y
380# CONFIG_XFRM_USER is not set
381# CONFIG_XFRM_SUB_POLICY is not set
382# CONFIG_XFRM_MIGRATE is not set
383# CONFIG_NET_KEY is not set
384CONFIG_INET=y
385# CONFIG_IP_MULTICAST is not set
386# CONFIG_IP_ADVANCED_ROUTER is not set
387CONFIG_IP_FIB_HASH=y
388# CONFIG_IP_PNP is not set
389# CONFIG_NET_IPIP is not set
390# CONFIG_NET_IPGRE is not set
391# CONFIG_ARPD is not set
392CONFIG_SYN_COOKIES=y
393# CONFIG_INET_AH is not set
394# CONFIG_INET_ESP is not set
395# CONFIG_INET_IPCOMP is not set
396# CONFIG_INET_XFRM_TUNNEL is not set
397# CONFIG_INET_TUNNEL is not set
398CONFIG_INET_XFRM_MODE_TRANSPORT=y
399CONFIG_INET_XFRM_MODE_TUNNEL=y
400CONFIG_INET_XFRM_MODE_BEET=y
401# CONFIG_INET_LRO is not set
402CONFIG_INET_DIAG=y
403CONFIG_INET_TCP_DIAG=y
404# CONFIG_TCP_CONG_ADVANCED is not set
405CONFIG_TCP_CONG_CUBIC=y
406CONFIG_DEFAULT_TCP_CONG="cubic"
407# CONFIG_TCP_MD5SIG is not set
408# CONFIG_IPV6 is not set
409# CONFIG_INET6_XFRM_TUNNEL is not set
410# CONFIG_INET6_TUNNEL is not set
411# CONFIG_NETLABEL is not set
412# CONFIG_NETWORK_SECMARK is not set
413# CONFIG_NETFILTER is not set
414# CONFIG_IP_DCCP is not set
415# CONFIG_IP_SCTP is not set
416# CONFIG_TIPC is not set
417# CONFIG_ATM is not set
418# CONFIG_BRIDGE is not set
419# CONFIG_VLAN_8021Q is not set
420# CONFIG_DECNET is not set
421# CONFIG_LLC2 is not set
422# CONFIG_IPX is not set
423# CONFIG_ATALK is not set
424# CONFIG_X25 is not set
425# CONFIG_LAPB is not set
426# CONFIG_ECONET is not set
427# CONFIG_WAN_ROUTER is not set
428# CONFIG_NET_SCHED is not set
429
430#
431# Network testing
432#
433# CONFIG_NET_PKTGEN is not set
434# CONFIG_HAMRADIO is not set
435# CONFIG_IRDA is not set
436# CONFIG_BT is not set
437# CONFIG_AF_RXRPC is not set
438
439#
440# Wireless
441#
442# CONFIG_CFG80211 is not set
443# CONFIG_WIRELESS_EXT is not set
444# CONFIG_MAC80211 is not set
445# CONFIG_IEEE80211 is not set
446# CONFIG_RFKILL is not set
447# CONFIG_NET_9P is not set
448
449#
450# Device Drivers
451#
452
453#
454# Generic Driver Options
455#
456CONFIG_STANDALONE=y
457CONFIG_PREVENT_FIRMWARE_BUILD=y
458# CONFIG_SYS_HYPERVISOR is not set
459# CONFIG_CONNECTOR is not set
460CONFIG_MTD=y
461# CONFIG_MTD_DEBUG is not set
462# CONFIG_MTD_CONCAT is not set
463CONFIG_MTD_PARTITIONS=y
464# CONFIG_MTD_REDBOOT_PARTS is not set
465# CONFIG_MTD_CMDLINE_PARTS is not set
466
467#
468# User Modules And Translation Layers
469#
470CONFIG_MTD_CHAR=y
471CONFIG_MTD_BLKDEVS=y
472CONFIG_MTD_BLOCK=y
473# CONFIG_FTL is not set
474# CONFIG_NFTL is not set
475# CONFIG_INFTL is not set
476# CONFIG_RFD_FTL is not set
477# CONFIG_SSFDC is not set
478# CONFIG_MTD_OOPS is not set
479
480#
481# RAM/ROM/Flash chip drivers
482#
483# CONFIG_MTD_CFI is not set
484# CONFIG_MTD_JEDECPROBE is not set
485CONFIG_MTD_MAP_BANK_WIDTH_1=y
486CONFIG_MTD_MAP_BANK_WIDTH_2=y
487CONFIG_MTD_MAP_BANK_WIDTH_4=y
488# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
489# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
490# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
491CONFIG_MTD_CFI_I1=y
492CONFIG_MTD_CFI_I2=y
493# CONFIG_MTD_CFI_I4 is not set
494# CONFIG_MTD_CFI_I8 is not set
495CONFIG_MTD_RAM=y
496# CONFIG_MTD_ROM is not set
497# CONFIG_MTD_ABSENT is not set
498
499#
500# Mapping drivers for chip access
501#
502# CONFIG_MTD_COMPLEX_MAPPINGS is not set
503CONFIG_MTD_UCLINUX=y
504# CONFIG_MTD_PLATRAM is not set
505
506#
507# Self-contained MTD device drivers
508#
509# CONFIG_MTD_SLRAM is not set
510# CONFIG_MTD_PHRAM is not set
511# CONFIG_MTD_MTDRAM is not set
512# CONFIG_MTD_BLOCK2MTD is not set
513
514#
515# Disk-On-Chip Device Drivers
516#
517# CONFIG_MTD_DOC2000 is not set
518# CONFIG_MTD_DOC2001 is not set
519# CONFIG_MTD_DOC2001PLUS is not set
520# CONFIG_MTD_NAND is not set
521# CONFIG_MTD_ONENAND is not set
522
523#
524# UBI - Unsorted block images
525#
526# CONFIG_MTD_UBI is not set
527# CONFIG_PARPORT is not set
528CONFIG_BLK_DEV=y
529# CONFIG_BLK_DEV_COW_COMMON is not set
530# CONFIG_BLK_DEV_LOOP is not set
531# CONFIG_BLK_DEV_NBD is not set
532CONFIG_BLK_DEV_RAM=y
533CONFIG_BLK_DEV_RAM_COUNT=16
534CONFIG_BLK_DEV_RAM_SIZE=4096
535CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
536# CONFIG_CDROM_PKTCDVD is not set
537# CONFIG_ATA_OVER_ETH is not set
538CONFIG_MISC_DEVICES=y
539# CONFIG_EEPROM_93CX6 is not set
540# CONFIG_IDE is not set
541# CONFIG_BFIN_IDE_ADDRESS_MAPPING_MODE0 is not set
542# CONFIG_BFIN_IDE_ADDRESS_MAPPING_MODE1 is not set
543
544#
545# SCSI device support
546#
547# CONFIG_RAID_ATTRS is not set
548# CONFIG_SCSI is not set
549# CONFIG_SCSI_DMA is not set
550# CONFIG_SCSI_NETLINK is not set
551# CONFIG_ATA is not set
552# CONFIG_MD is not set
553CONFIG_NETDEVICES=y
554# CONFIG_NETDEVICES_MULTIQUEUE is not set
555# CONFIG_DUMMY is not set
556# CONFIG_BONDING is not set
557# CONFIG_MACVLAN is not set
558# CONFIG_EQUALIZER is not set
559# CONFIG_TUN is not set
560# CONFIG_VETH is not set
561# CONFIG_PHYLIB is not set
562CONFIG_NET_ETHERNET=y
563CONFIG_MII=y
564CONFIG_SMC91X=y
565# CONFIG_SMSC911X is not set
566# CONFIG_DM9000 is not set
567# CONFIG_IBM_NEW_EMAC_ZMII is not set
568# CONFIG_IBM_NEW_EMAC_RGMII is not set
569# CONFIG_IBM_NEW_EMAC_TAH is not set
570# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
571# CONFIG_B44 is not set
572CONFIG_NETDEV_1000=y
573# CONFIG_AX88180 is not set
574CONFIG_NETDEV_10000=y
575
576#
577# Wireless LAN
578#
579# CONFIG_WLAN_PRE80211 is not set
580# CONFIG_WLAN_80211 is not set
581# CONFIG_WAN is not set
582# CONFIG_PPP is not set
583# CONFIG_SLIP is not set
584# CONFIG_SHAPER is not set
585# CONFIG_NETCONSOLE is not set
586# CONFIG_NETPOLL is not set
587# CONFIG_NET_POLL_CONTROLLER is not set
588# CONFIG_ISDN is not set
589# CONFIG_PHONE is not set
590
591#
592# Input device support
593#
594# CONFIG_INPUT is not set
595
596#
597# Hardware I/O ports
598#
599# CONFIG_SERIO is not set
600# CONFIG_GAMEPORT is not set
601
602#
603# Character devices
604#
605# CONFIG_AD9960 is not set
606# CONFIG_SPI_ADC_BF533 is not set
607# CONFIG_BF5xx_PPIFCD is not set
608# CONFIG_BFIN_SIMPLE_TIMER is not set
609# CONFIG_BF5xx_PPI is not set
610# CONFIG_BFIN_SPORT is not set
611# CONFIG_BFIN_TIMER_LATENCY is not set
612# CONFIG_SIMPLE_GPIO is not set
613# CONFIG_VT is not set
614# CONFIG_SERIAL_NONSTANDARD is not set
615
616#
617# Serial drivers
618#
619# CONFIG_SERIAL_8250 is not set
620
621#
622# Non-8250 serial port support
623#
624CONFIG_SERIAL_BFIN=y
625CONFIG_SERIAL_BFIN_CONSOLE=y
626CONFIG_SERIAL_BFIN_DMA=y
627# CONFIG_SERIAL_BFIN_PIO is not set
628CONFIG_SERIAL_BFIN_UART0=y
629# CONFIG_BFIN_UART0_CTSRTS is not set
630CONFIG_SERIAL_CORE=y
631CONFIG_SERIAL_CORE_CONSOLE=y
632# CONFIG_SERIAL_BFIN_SPORT is not set
633CONFIG_UNIX98_PTYS=y
634CONFIG_LEGACY_PTYS=y
635CONFIG_LEGACY_PTY_COUNT=256
636
637#
638# CAN, the car bus and industrial fieldbus
639#
640# CONFIG_CAN4LINUX is not set
641# CONFIG_IPMI_HANDLER is not set
642# CONFIG_HW_RANDOM is not set
643# CONFIG_GEN_RTC is not set
644# CONFIG_R3964 is not set
645# CONFIG_RAW_DRIVER is not set
646# CONFIG_TCG_TPM is not set
647# CONFIG_I2C is not set
648
649#
650# SPI support
651#
652# CONFIG_SPI is not set
653# CONFIG_SPI_MASTER is not set
654# CONFIG_W1 is not set
655# CONFIG_POWER_SUPPLY is not set
656CONFIG_HWMON=y
657# CONFIG_HWMON_VID is not set
658# CONFIG_SENSORS_F71805F is not set
659# CONFIG_SENSORS_F71882FG is not set
660# CONFIG_SENSORS_IT87 is not set
661# CONFIG_SENSORS_PC87360 is not set
662# CONFIG_SENSORS_PC87427 is not set
663# CONFIG_SENSORS_SMSC47M1 is not set
664# CONFIG_SENSORS_SMSC47B397 is not set
665# CONFIG_SENSORS_VT1211 is not set
666# CONFIG_SENSORS_W83627HF is not set
667# CONFIG_SENSORS_W83627EHF is not set
668# CONFIG_HWMON_DEBUG_CHIP is not set
669# CONFIG_WATCHDOG is not set
670
671#
672# Sonics Silicon Backplane
673#
674CONFIG_SSB_POSSIBLE=y
675# CONFIG_SSB is not set
676
677#
678# Multifunction device drivers
679#
680# CONFIG_MFD_SM501 is not set
681
682#
683# Multimedia devices
684#
685# CONFIG_VIDEO_DEV is not set
686# CONFIG_DVB_CORE is not set
687CONFIG_DAB=y
688
689#
690# Graphics support
691#
692# CONFIG_VGASTATE is not set
693# CONFIG_VIDEO_OUTPUT_CONTROL is not set
694# CONFIG_FB is not set
695# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
696
697#
698# Display device support
699#
700# CONFIG_DISPLAY_SUPPORT is not set
701
702#
703# Sound
704#
705# CONFIG_SOUND is not set
706CONFIG_USB_SUPPORT=y
707CONFIG_USB_ARCH_HAS_HCD=y
708# CONFIG_USB_ARCH_HAS_OHCI is not set
709# CONFIG_USB_ARCH_HAS_EHCI is not set
710# CONFIG_USB is not set
711
712#
713# Enable Host or Gadget support to see Inventra options
714#
715
716#
717# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
718#
719
720#
721# USB Gadget Support
722#
723# CONFIG_USB_GADGET is not set
724# CONFIG_MMC is not set
725# CONFIG_NEW_LEDS is not set
726# CONFIG_RTC_CLASS is not set
727
728#
729# Userspace I/O
730#
731# CONFIG_UIO is not set
732
733#
734# PBX support
735#
736# CONFIG_PBX is not set
737
738#
739# File systems
740#
741CONFIG_EXT2_FS=y
742CONFIG_EXT2_FS_XATTR=y
743# CONFIG_EXT2_FS_POSIX_ACL is not set
744# CONFIG_EXT2_FS_SECURITY is not set
745# CONFIG_EXT3_FS is not set
746# CONFIG_EXT4DEV_FS is not set
747CONFIG_FS_MBCACHE=y
748# CONFIG_REISERFS_FS is not set
749# CONFIG_JFS_FS is not set
750# CONFIG_FS_POSIX_ACL is not set
751# CONFIG_XFS_FS is not set
752# CONFIG_GFS2_FS is not set
753# CONFIG_OCFS2_FS is not set
754# CONFIG_MINIX_FS is not set
755# CONFIG_ROMFS_FS is not set
756CONFIG_INOTIFY=y
757CONFIG_INOTIFY_USER=y
758# CONFIG_QUOTA is not set
759CONFIG_DNOTIFY=y
760# CONFIG_AUTOFS_FS is not set
761# CONFIG_AUTOFS4_FS is not set
762# CONFIG_FUSE_FS is not set
763
764#
765# CD-ROM/DVD Filesystems
766#
767# CONFIG_ISO9660_FS is not set
768# CONFIG_UDF_FS is not set
769
770#
771# DOS/FAT/NT Filesystems
772#
773# CONFIG_MSDOS_FS is not set
774# CONFIG_VFAT_FS is not set
775# CONFIG_NTFS_FS is not set
776
777#
778# Pseudo filesystems
779#
780CONFIG_PROC_FS=y
781CONFIG_PROC_SYSCTL=y
782CONFIG_SYSFS=y
783# CONFIG_TMPFS is not set
784# CONFIG_HUGETLB_PAGE is not set
785# CONFIG_CONFIGFS_FS is not set
786
787#
788# Miscellaneous filesystems
789#
790# CONFIG_ADFS_FS is not set
791# CONFIG_AFFS_FS is not set
792# CONFIG_HFS_FS is not set
793# CONFIG_HFSPLUS_FS is not set
794# CONFIG_BEFS_FS is not set
795# CONFIG_BFS_FS is not set
796# CONFIG_EFS_FS is not set
797# CONFIG_YAFFS_FS is not set
798# CONFIG_JFFS2_FS is not set
799# CONFIG_CRAMFS is not set
800# CONFIG_VXFS_FS is not set
801# CONFIG_HPFS_FS is not set
802# CONFIG_QNX4FS_FS is not set
803# CONFIG_SYSV_FS is not set
804# CONFIG_UFS_FS is not set
805CONFIG_NETWORK_FILESYSTEMS=y
806# CONFIG_NFS_FS is not set
807# CONFIG_NFSD is not set
808# CONFIG_SMB_FS is not set
809# CONFIG_CIFS is not set
810# CONFIG_NCP_FS is not set
811# CONFIG_CODA_FS is not set
812# CONFIG_AFS_FS is not set
813
814#
815# Partition Types
816#
817# CONFIG_PARTITION_ADVANCED is not set
818CONFIG_MSDOS_PARTITION=y
819# CONFIG_NLS is not set
820# CONFIG_DLM is not set
821CONFIG_INSTRUMENTATION=y
822# CONFIG_PROFILING is not set
823# CONFIG_MARKERS is not set
824
825#
826# Kernel hacking
827#
828# CONFIG_PRINTK_TIME is not set
829CONFIG_ENABLE_WARN_DEPRECATED=y
830CONFIG_ENABLE_MUST_CHECK=y
831# CONFIG_MAGIC_SYSRQ is not set
832# CONFIG_UNUSED_SYMBOLS is not set
833# CONFIG_DEBUG_FS is not set
834# CONFIG_HEADERS_CHECK is not set
835# CONFIG_DEBUG_KERNEL is not set
836# CONFIG_DEBUG_BUGVERBOSE is not set
837# CONFIG_SAMPLES is not set
838# CONFIG_DEBUG_MMRS is not set
839CONFIG_DEBUG_HUNT_FOR_ZERO=y
840CONFIG_DEBUG_BFIN_HWTRACE_ON=y
841CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF=y
842# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE is not set
843# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_TWO is not set
844CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0
845# CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set
846# CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE is not set
847# CONFIG_EARLY_PRINTK is not set
848# CONFIG_DUAL_CORE_TEST_MODULE is not set
849CONFIG_CPLB_INFO=y
850CONFIG_ACCESS_CHECK=y
851
852#
853# Security options
854#
855# CONFIG_KEYS is not set
856CONFIG_SECURITY=y
857# CONFIG_SECURITY_NETWORK is not set
858CONFIG_SECURITY_CAPABILITIES=y
859# CONFIG_SECURITY_FILE_CAPABILITIES is not set
860# CONFIG_CRYPTO is not set
861
862#
863# Library routines
864#
865CONFIG_BITREVERSE=y
866CONFIG_CRC_CCITT=m
867# CONFIG_CRC16 is not set
868# CONFIG_CRC_ITU_T is not set
869CONFIG_CRC32=y
870# CONFIG_CRC7 is not set
871# CONFIG_LIBCRC32C is not set
872CONFIG_ZLIB_INFLATE=y
873CONFIG_PLIST=y
874CONFIG_HAS_IOMEM=y
875CONFIG_HAS_IOPORT=y
876CONFIG_HAS_DMA=y
diff --git a/arch/blackfin/configs/H8606_defconfig b/arch/blackfin/configs/H8606_defconfig
index 18cbb8c3c373..679c7483ea71 100644
--- a/arch/blackfin/configs/H8606_defconfig
+++ b/arch/blackfin/configs/H8606_defconfig
@@ -13,7 +13,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y 13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_TIME is not set 16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
@@ -207,7 +207,7 @@ CONFIG_HZ=250
207# 207#
208# Memory Setup 208# Memory Setup
209# 209#
210CONFIG_MEM_SIZE=32 210CONFIG_MAX_MEM_SIZE=32
211CONFIG_MEM_ADD_WIDTH=9 211CONFIG_MEM_ADD_WIDTH=9
212CONFIG_BOOT_LOAD=0x1000 212CONFIG_BOOT_LOAD=0x1000
213CONFIG_BFIN_SCRATCH_REG_RETN=y 213CONFIG_BFIN_SCRATCH_REG_RETN=y
diff --git a/arch/blackfin/configs/IP0X_defconfig b/arch/blackfin/configs/IP0X_defconfig
new file mode 100644
index 000000000000..5f6ff04a86c3
--- /dev/null
+++ b/arch/blackfin/configs/IP0X_defconfig
@@ -0,0 +1,1252 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22.18
4#
5# CONFIG_MMU is not set
6# CONFIG_FPU is not set
7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
9CONFIG_BLACKFIN=y
10CONFIG_ZONE_DMA=y
11CONFIG_SEMAPHORE_SLEEPERS=y
12CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_TIME is not set
17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
21
22#
23# Code maturity level options
24#
25CONFIG_EXPERIMENTAL=y
26CONFIG_BROKEN_ON_SMP=y
27CONFIG_INIT_ENV_ARG_LIMIT=32
28
29#
30# General setup
31#
32CONFIG_LOCALVERSION=""
33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_SYSVIPC=y
35# CONFIG_IPC_NS is not set
36CONFIG_SYSVIPC_SYSCTL=y
37# CONFIG_POSIX_MQUEUE is not set
38# CONFIG_BSD_PROCESS_ACCT is not set
39# CONFIG_TASKSTATS is not set
40# CONFIG_UTS_NS is not set
41# CONFIG_AUDIT is not set
42# CONFIG_IKCONFIG is not set
43CONFIG_LOG_BUF_SHIFT=14
44CONFIG_SYSFS_DEPRECATED=y
45# CONFIG_RELAY is not set
46CONFIG_BLK_DEV_INITRD=y
47CONFIG_INITRAMFS_SOURCE=""
48# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
49CONFIG_SYSCTL=y
50CONFIG_EMBEDDED=y
51CONFIG_UID16=y
52CONFIG_SYSCTL_SYSCALL=y
53CONFIG_KALLSYMS=y
54# CONFIG_KALLSYMS_EXTRA_PASS is not set
55# CONFIG_HOTPLUG is not set
56CONFIG_PRINTK=y
57CONFIG_BUG=y
58CONFIG_ELF_CORE=y
59CONFIG_BASE_FULL=y
60CONFIG_FUTEX=y
61CONFIG_ANON_INODES=y
62CONFIG_EPOLL=y
63CONFIG_SIGNALFD=y
64CONFIG_EVENTFD=y
65CONFIG_VM_EVENT_COUNTERS=y
66CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
67# CONFIG_NP2 is not set
68CONFIG_SLAB=y
69# CONFIG_SLUB is not set
70# CONFIG_SLOB is not set
71CONFIG_RT_MUTEXES=y
72CONFIG_TINY_SHMEM=y
73CONFIG_BASE_SMALL=0
74
75#
76# Loadable module support
77#
78CONFIG_MODULES=y
79CONFIG_MODULE_UNLOAD=y
80# CONFIG_MODULE_FORCE_UNLOAD is not set
81# CONFIG_MODVERSIONS is not set
82# CONFIG_MODULE_SRCVERSION_ALL is not set
83CONFIG_KMOD=y
84
85#
86# Block layer
87#
88CONFIG_BLOCK=y
89# CONFIG_LBD is not set
90# CONFIG_BLK_DEV_IO_TRACE is not set
91# CONFIG_LSF is not set
92
93#
94# IO Schedulers
95#
96CONFIG_IOSCHED_NOOP=y
97CONFIG_IOSCHED_AS=y
98# CONFIG_IOSCHED_DEADLINE is not set
99CONFIG_IOSCHED_CFQ=y
100CONFIG_DEFAULT_AS=y
101# CONFIG_DEFAULT_DEADLINE is not set
102# CONFIG_DEFAULT_CFQ is not set
103# CONFIG_DEFAULT_NOOP is not set
104CONFIG_DEFAULT_IOSCHED="anticipatory"
105CONFIG_PREEMPT_NONE=y
106# CONFIG_PREEMPT_VOLUNTARY is not set
107# CONFIG_PREEMPT is not set
108
109#
110# Blackfin Processor Options
111#
112
113#
114# Processor and Board Settings
115#
116# CONFIG_BF522 is not set
117# CONFIG_BF523 is not set
118# CONFIG_BF524 is not set
119# CONFIG_BF525 is not set
120# CONFIG_BF526 is not set
121# CONFIG_BF527 is not set
122# CONFIG_BF531 is not set
123CONFIG_BF532=y
124# CONFIG_BF533 is not set
125# CONFIG_BF534 is not set
126# CONFIG_BF536 is not set
127# CONFIG_BF537 is not set
128# CONFIG_BF542 is not set
129# CONFIG_BF544 is not set
130# CONFIG_BF547 is not set
131# CONFIG_BF548 is not set
132# CONFIG_BF549 is not set
133# CONFIG_BF561 is not set
134# CONFIG_BF_REV_0_0 is not set
135# CONFIG_BF_REV_0_1 is not set
136# CONFIG_BF_REV_0_2 is not set
137# CONFIG_BF_REV_0_3 is not set
138# CONFIG_BF_REV_0_4 is not set
139CONFIG_BF_REV_0_5=y
140# CONFIG_BF_REV_ANY is not set
141# CONFIG_BF_REV_NONE is not set
142CONFIG_BF53x=y
143CONFIG_BFIN_SINGLE_CORE=y
144CONFIG_MEM_MT48LC32M16A2TG_75=y
145# CONFIG_BFIN533_EZKIT is not set
146# CONFIG_BFIN533_STAMP is not set
147# CONFIG_BFIN533_BLUETECHNIX_CM is not set
148# CONFIG_H8606_HVSISTEMAS is not set
149CONFIG_BFIN532_IP0X=y
150# CONFIG_GENERIC_BF533_BOARD is not set
151
152#
153# BF533/2/1 Specific Configuration
154#
155
156#
157# Interrupt Priority Assignment
158#
159
160#
161# Priority
162#
163CONFIG_UART_ERROR=7
164CONFIG_SPORT0_ERROR=7
165CONFIG_SPI_ERROR=7
166CONFIG_SPORT1_ERROR=7
167CONFIG_PPI_ERROR=7
168CONFIG_DMA_ERROR=7
169CONFIG_PLLWAKE_ERROR=7
170CONFIG_RTC_ERROR=8
171CONFIG_DMA0_PPI=8
172CONFIG_DMA1_SPORT0RX=9
173CONFIG_DMA2_SPORT0TX=9
174CONFIG_DMA3_SPORT1RX=9
175CONFIG_DMA4_SPORT1TX=9
176CONFIG_DMA5_SPI=10
177CONFIG_DMA6_UARTRX=10
178CONFIG_DMA7_UARTTX=10
179CONFIG_TIMER0=11
180CONFIG_TIMER1=11
181CONFIG_TIMER2=11
182CONFIG_PFA=12
183CONFIG_PFB=12
184CONFIG_MEMDMA0=13
185CONFIG_MEMDMA1=13
186CONFIG_WDTIMER=13
187
188#
189# Board customizations
190#
191# CONFIG_CMDLINE_BOOL is not set
192
193#
194# Clock/PLL Setup
195#
196CONFIG_CLKIN_HZ=10000000
197# CONFIG_BFIN_KERNEL_CLOCK is not set
198CONFIG_MAX_VCO_HZ=400000000
199CONFIG_MIN_VCO_HZ=50000000
200CONFIG_MAX_SCLK_HZ=133333333
201CONFIG_MIN_SCLK_HZ=27000000
202
203#
204# Kernel Timer/Scheduler
205#
206# CONFIG_HZ_100 is not set
207CONFIG_HZ_250=y
208# CONFIG_HZ_300 is not set
209# CONFIG_HZ_1000 is not set
210CONFIG_HZ=250
211
212#
213# Memory Setup
214#
215CONFIG_MEM_SIZE=64
216CONFIG_MEM_ADD_WIDTH=10
217
218#
219# Hardware addresses
220#
221CONFIG_IP0X_NET1=0x20100000
222CONFIG_IP0X_NET2=0x20200000
223CONFIG_IP0X_USB=0x20300000
224CONFIG_BOOT_LOAD=0x1000
225CONFIG_BFIN_SCRATCH_REG_RETN=y
226# CONFIG_BFIN_SCRATCH_REG_RETE is not set
227# CONFIG_BFIN_SCRATCH_REG_CYCLES is not set
228
229#
230# Blackfin Kernel Optimizations
231#
232
233#
234# Memory Optimizations
235#
236CONFIG_I_ENTRY_L1=y
237CONFIG_EXCPT_IRQ_SYSC_L1=y
238CONFIG_DO_IRQ_L1=y
239CONFIG_CORE_TIMER_IRQ_L1=y
240CONFIG_IDLE_L1=y
241CONFIG_SCHEDULE_L1=y
242CONFIG_ARITHMETIC_OPS_L1=y
243CONFIG_ACCESS_OK_L1=y
244CONFIG_MEMSET_L1=y
245CONFIG_MEMCPY_L1=y
246CONFIG_SYS_BFIN_SPINLOCK_L1=y
247# CONFIG_IP_CHECKSUM_L1 is not set
248CONFIG_CACHELINE_ALIGNED_L1=y
249# CONFIG_SYSCALL_TAB_L1 is not set
250# CONFIG_CPLB_SWITCH_TAB_L1 is not set
251CONFIG_RAMKERNEL=y
252# CONFIG_ROMKERNEL is not set
253CONFIG_SELECT_MEMORY_MODEL=y
254CONFIG_FLATMEM_MANUAL=y
255# CONFIG_DISCONTIGMEM_MANUAL is not set
256# CONFIG_SPARSEMEM_MANUAL is not set
257CONFIG_FLATMEM=y
258CONFIG_FLAT_NODE_MEM_MAP=y
259# CONFIG_SPARSEMEM_STATIC is not set
260CONFIG_SPLIT_PTLOCK_CPUS=4
261# CONFIG_RESOURCES_64BIT is not set
262CONFIG_ZONE_DMA_FLAG=1
263CONFIG_LARGE_ALLOCS=y
264# CONFIG_BFIN_GPTIMERS is not set
265CONFIG_BFIN_DMA_5XX=y
266# CONFIG_DMA_UNCACHED_2M is not set
267CONFIG_DMA_UNCACHED_1M=y
268# CONFIG_DMA_UNCACHED_NONE is not set
269
270#
271# Cache Support
272#
273# CONFIG_BFIN_ICACHE is not set
274# CONFIG_BFIN_DCACHE is not set
275# CONFIG_BFIN_ICACHE_LOCK is not set
276CONFIG_L1_MAX_PIECE=16
277# CONFIG_MPU is not set
278
279#
280# Asynchonous Memory Configuration
281#
282
283#
284# EBIU_AMGCTL Global Control
285#
286CONFIG_C_AMCKEN=y
287CONFIG_C_CDPRIO=y
288# CONFIG_C_AMBEN is not set
289# CONFIG_C_AMBEN_B0 is not set
290# CONFIG_C_AMBEN_B0_B1 is not set
291# CONFIG_C_AMBEN_B0_B1_B2 is not set
292CONFIG_C_AMBEN_ALL=y
293
294#
295# EBIU_AMBCTL Control
296#
297CONFIG_BANK_0=0xffc2
298CONFIG_BANK_1=0xffc2
299CONFIG_BANK_2=0xffc2
300CONFIG_BANK_3=0xffc2
301
302#
303# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
304#
305# CONFIG_PCI is not set
306# CONFIG_ARCH_SUPPORTS_MSI is not set
307
308#
309# PCCARD (PCMCIA/CardBus) support
310#
311
312#
313# Executable file formats
314#
315CONFIG_BINFMT_ELF_FDPIC=y
316CONFIG_BINFMT_FLAT=y
317CONFIG_BINFMT_ZFLAT=y
318# CONFIG_BINFMT_SHARED_FLAT is not set
319# CONFIG_BINFMT_MISC is not set
320
321#
322# Power management options
323#
324CONFIG_PM=y
325# CONFIG_PM_LEGACY is not set
326# CONFIG_PM_DEBUG is not set
327# CONFIG_PM_SYSFS_DEPRECATED is not set
328CONFIG_PM_BFIN_SLEEP_DEEPER=y
329# CONFIG_PM_BFIN_SLEEP is not set
330# CONFIG_PM_WAKEUP_BY_GPIO is not set
331
332#
333# Networking
334#
335CONFIG_NET=y
336
337#
338# Networking options
339#
340CONFIG_PACKET=y
341# CONFIG_PACKET_MMAP is not set
342CONFIG_UNIX=y
343CONFIG_XFRM=y
344# CONFIG_XFRM_USER is not set
345# CONFIG_XFRM_SUB_POLICY is not set
346# CONFIG_XFRM_MIGRATE is not set
347# CONFIG_NET_KEY is not set
348CONFIG_INET=y
349# CONFIG_IP_MULTICAST is not set
350# CONFIG_IP_ADVANCED_ROUTER is not set
351CONFIG_IP_FIB_HASH=y
352CONFIG_IP_PNP=y
353# CONFIG_IP_PNP_DHCP is not set
354# CONFIG_IP_PNP_BOOTP is not set
355# CONFIG_IP_PNP_RARP is not set
356# CONFIG_NET_IPIP is not set
357# CONFIG_NET_IPGRE is not set
358# CONFIG_ARPD is not set
359CONFIG_SYN_COOKIES=y
360# CONFIG_INET_AH is not set
361# CONFIG_INET_ESP is not set
362# CONFIG_INET_IPCOMP is not set
363# CONFIG_INET_XFRM_TUNNEL is not set
364# CONFIG_INET_TUNNEL is not set
365CONFIG_INET_XFRM_MODE_TRANSPORT=y
366CONFIG_INET_XFRM_MODE_TUNNEL=y
367CONFIG_INET_XFRM_MODE_BEET=y
368CONFIG_INET_DIAG=y
369CONFIG_INET_TCP_DIAG=y
370# CONFIG_TCP_CONG_ADVANCED is not set
371CONFIG_TCP_CONG_CUBIC=y
372CONFIG_DEFAULT_TCP_CONG="cubic"
373# CONFIG_TCP_MD5SIG is not set
374# CONFIG_IP_VS is not set
375# CONFIG_IPV6 is not set
376# CONFIG_INET6_XFRM_TUNNEL is not set
377# CONFIG_INET6_TUNNEL is not set
378# CONFIG_NETLABEL is not set
379# CONFIG_NETWORK_SECMARK is not set
380CONFIG_NETFILTER=y
381# CONFIG_NETFILTER_DEBUG is not set
382
383#
384# Core Netfilter Configuration
385#
386# CONFIG_NETFILTER_NETLINK is not set
387# CONFIG_NF_CONNTRACK_ENABLED is not set
388# CONFIG_NF_CONNTRACK is not set
389CONFIG_NETFILTER_XTABLES=y
390# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
391# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
392# CONFIG_NETFILTER_XT_TARGET_MARK is not set
393# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
394# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
395# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
396# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
397# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
398# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
399# CONFIG_NETFILTER_XT_MATCH_ESP is not set
400# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
401# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
402CONFIG_NETFILTER_XT_MATCH_MAC=y
403# CONFIG_NETFILTER_XT_MATCH_MARK is not set
404# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
405CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y
406# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
407# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
408# CONFIG_NETFILTER_XT_MATCH_REALM is not set
409# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
410# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
411# CONFIG_NETFILTER_XT_MATCH_STRING is not set
412# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
413# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
414
415#
416# IP: Netfilter Configuration
417#
418# CONFIG_IP_NF_QUEUE is not set
419CONFIG_IP_NF_IPTABLES=y
420CONFIG_IP_NF_MATCH_IPRANGE=y
421CONFIG_IP_NF_MATCH_TOS=y
422# CONFIG_IP_NF_MATCH_RECENT is not set
423# CONFIG_IP_NF_MATCH_ECN is not set
424# CONFIG_IP_NF_MATCH_AH is not set
425# CONFIG_IP_NF_MATCH_TTL is not set
426# CONFIG_IP_NF_MATCH_OWNER is not set
427# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
428CONFIG_IP_NF_FILTER=y
429CONFIG_IP_NF_TARGET_REJECT=y
430# CONFIG_IP_NF_TARGET_LOG is not set
431# CONFIG_IP_NF_TARGET_ULOG is not set
432CONFIG_IP_NF_MANGLE=y
433CONFIG_IP_NF_TARGET_TOS=y
434# CONFIG_IP_NF_TARGET_ECN is not set
435# CONFIG_IP_NF_TARGET_TTL is not set
436# CONFIG_IP_NF_RAW is not set
437# CONFIG_IP_NF_ARPTABLES is not set
438# CONFIG_IP_DCCP is not set
439# CONFIG_IP_SCTP is not set
440# CONFIG_TIPC is not set
441# CONFIG_ATM is not set
442# CONFIG_BRIDGE is not set
443# CONFIG_VLAN_8021Q is not set
444# CONFIG_DECNET is not set
445# CONFIG_LLC2 is not set
446# CONFIG_IPX is not set
447# CONFIG_ATALK is not set
448# CONFIG_X25 is not set
449# CONFIG_LAPB is not set
450# CONFIG_ECONET is not set
451# CONFIG_WAN_ROUTER is not set
452
453#
454# QoS and/or fair queueing
455#
456# CONFIG_NET_SCHED is not set
457
458#
459# Network testing
460#
461# CONFIG_NET_PKTGEN is not set
462# CONFIG_HAMRADIO is not set
463# CONFIG_IRDA is not set
464# CONFIG_BT is not set
465# CONFIG_AF_RXRPC is not set
466
467#
468# Wireless
469#
470# CONFIG_CFG80211 is not set
471# CONFIG_WIRELESS_EXT is not set
472# CONFIG_MAC80211 is not set
473# CONFIG_IEEE80211 is not set
474# CONFIG_RFKILL is not set
475
476#
477# Device Drivers
478#
479
480#
481# Generic Driver Options
482#
483CONFIG_STANDALONE=y
484CONFIG_PREVENT_FIRMWARE_BUILD=y
485# CONFIG_SYS_HYPERVISOR is not set
486
487#
488# Connector - unified userspace <-> kernelspace linker
489#
490# CONFIG_CONNECTOR is not set
491CONFIG_MTD=y
492# CONFIG_MTD_DEBUG is not set
493# CONFIG_MTD_CONCAT is not set
494CONFIG_MTD_PARTITIONS=y
495# CONFIG_MTD_REDBOOT_PARTS is not set
496# CONFIG_MTD_CMDLINE_PARTS is not set
497
498#
499# User Modules And Translation Layers
500#
501CONFIG_MTD_CHAR=y
502CONFIG_MTD_BLKDEVS=y
503CONFIG_MTD_BLOCK=y
504# CONFIG_FTL is not set
505# CONFIG_NFTL is not set
506# CONFIG_INFTL is not set
507# CONFIG_RFD_FTL is not set
508# CONFIG_SSFDC is not set
509
510#
511# RAM/ROM/Flash chip drivers
512#
513CONFIG_MTD_CFI=y
514# CONFIG_MTD_JEDECPROBE is not set
515CONFIG_MTD_GEN_PROBE=y
516# CONFIG_MTD_CFI_ADV_OPTIONS is not set
517CONFIG_MTD_MAP_BANK_WIDTH_1=y
518CONFIG_MTD_MAP_BANK_WIDTH_2=y
519CONFIG_MTD_MAP_BANK_WIDTH_4=y
520# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
521# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
522# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
523CONFIG_MTD_CFI_I1=y
524CONFIG_MTD_CFI_I2=y
525# CONFIG_MTD_CFI_I4 is not set
526# CONFIG_MTD_CFI_I8 is not set
527# CONFIG_MTD_CFI_INTELEXT is not set
528CONFIG_MTD_CFI_AMDSTD=y
529# CONFIG_MTD_CFI_STAA is not set
530CONFIG_MTD_CFI_UTIL=y
531CONFIG_MTD_RAM=y
532# CONFIG_MTD_ROM is not set
533# CONFIG_MTD_ABSENT is not set
534
535#
536# Mapping drivers for chip access
537#
538CONFIG_MTD_COMPLEX_MAPPINGS=y
539# CONFIG_MTD_PHYSMAP is not set
540CONFIG_MTD_UCLINUX=y
541CONFIG_MTD_PLATRAM=y
542
543#
544# Self-contained MTD device drivers
545#
546# CONFIG_MTD_DATAFLASH is not set
547# CONFIG_MTD_M25P80 is not set
548# CONFIG_MTD_SLRAM is not set
549# CONFIG_MTD_PHRAM is not set
550# CONFIG_MTD_MTDRAM is not set
551# CONFIG_MTD_BLOCK2MTD is not set
552
553#
554# Disk-On-Chip Device Drivers
555#
556# CONFIG_MTD_DOC2000 is not set
557# CONFIG_MTD_DOC2001 is not set
558# CONFIG_MTD_DOC2001PLUS is not set
559CONFIG_MTD_NAND=y
560# CONFIG_MTD_NAND_VERIFY_WRITE is not set
561# CONFIG_MTD_NAND_ECC_SMC is not set
562# CONFIG_MTD_NAND_MUSEUM_IDS is not set
563CONFIG_MTD_NAND_BFIN=y
564CONFIG_BFIN_NAND_BASE=0x20000000
565CONFIG_BFIN_NAND_SIZE=0x10000000
566CONFIG_BFIN_NAND_CLE=2
567CONFIG_BFIN_NAND_ALE=1
568CONFIG_BFIN_NAND_READY=10
569CONFIG_MTD_NAND_IDS=y
570# CONFIG_MTD_NAND_DISKONCHIP is not set
571# CONFIG_MTD_NAND_NANDSIM is not set
572# CONFIG_MTD_NAND_PLATFORM is not set
573# CONFIG_MTD_ONENAND is not set
574
575#
576# UBI - Unsorted block images
577#
578# CONFIG_MTD_UBI is not set
579
580#
581# Parallel port support
582#
583# CONFIG_PARPORT is not set
584
585#
586# Plug and Play support
587#
588# CONFIG_PNPACPI is not set
589
590#
591# Block devices
592#
593# CONFIG_BLK_DEV_COW_COMMON is not set
594# CONFIG_BLK_DEV_LOOP is not set
595# CONFIG_BLK_DEV_NBD is not set
596# CONFIG_BLK_DEV_UB is not set
597CONFIG_BLK_DEV_RAM=y
598CONFIG_BLK_DEV_RAM_COUNT=16
599CONFIG_BLK_DEV_RAM_SIZE=4096
600CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
601# CONFIG_CDROM_PKTCDVD is not set
602# CONFIG_ATA_OVER_ETH is not set
603
604#
605# Misc devices
606#
607# CONFIG_IDE is not set
608
609#
610# SCSI device support
611#
612# CONFIG_RAID_ATTRS is not set
613CONFIG_SCSI=y
614# CONFIG_SCSI_TGT is not set
615# CONFIG_SCSI_NETLINK is not set
616CONFIG_SCSI_PROC_FS=y
617
618#
619# SCSI support type (disk, tape, CD-ROM)
620#
621CONFIG_BLK_DEV_SD=y
622# CONFIG_CHR_DEV_ST is not set
623# CONFIG_CHR_DEV_OSST is not set
624# CONFIG_BLK_DEV_SR is not set
625# CONFIG_CHR_DEV_SG is not set
626# CONFIG_CHR_DEV_SCH is not set
627
628#
629# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
630#
631# CONFIG_SCSI_MULTI_LUN is not set
632# CONFIG_SCSI_CONSTANTS is not set
633# CONFIG_SCSI_LOGGING is not set
634# CONFIG_SCSI_SCAN_ASYNC is not set
635CONFIG_SCSI_WAIT_SCAN=m
636
637#
638# SCSI Transports
639#
640# CONFIG_SCSI_SPI_ATTRS is not set
641# CONFIG_SCSI_FC_ATTRS is not set
642# CONFIG_SCSI_ISCSI_ATTRS is not set
643# CONFIG_SCSI_SAS_ATTRS is not set
644# CONFIG_SCSI_SAS_LIBSAS is not set
645
646#
647# SCSI low-level drivers
648#
649# CONFIG_ISCSI_TCP is not set
650# CONFIG_SCSI_DEBUG is not set
651# CONFIG_ATA is not set
652
653#
654# Multi-device support (RAID and LVM)
655#
656# CONFIG_MD is not set
657
658#
659# Network device support
660#
661CONFIG_NETDEVICES=y
662# CONFIG_DUMMY is not set
663# CONFIG_BONDING is not set
664# CONFIG_EQUALIZER is not set
665# CONFIG_TUN is not set
666# CONFIG_PHYLIB is not set
667
668#
669# Ethernet (10 or 100Mbit)
670#
671CONFIG_NET_ETHERNET=y
672CONFIG_MII=y
673# CONFIG_SMC91X is not set
674# CONFIG_SMSC911X is not set
675CONFIG_DM9000=y
676CONFIG_NETDEV_1000=y
677# CONFIG_AX88180 is not set
678CONFIG_NETDEV_10000=y
679
680#
681# Wireless LAN
682#
683# CONFIG_WLAN_PRE80211 is not set
684# CONFIG_WLAN_80211 is not set
685
686#
687# USB Network Adapters
688#
689# CONFIG_USB_CATC is not set
690# CONFIG_USB_KAWETH is not set
691# CONFIG_USB_PEGASUS is not set
692# CONFIG_USB_RTL8150 is not set
693# CONFIG_USB_USBNET_MII is not set
694# CONFIG_USB_USBNET is not set
695# CONFIG_WAN is not set
696# CONFIG_PPP is not set
697# CONFIG_SLIP is not set
698# CONFIG_SHAPER is not set
699# CONFIG_NETCONSOLE is not set
700# CONFIG_NETPOLL is not set
701# CONFIG_NET_POLL_CONTROLLER is not set
702
703#
704# ISDN subsystem
705#
706# CONFIG_ISDN is not set
707
708#
709# Telephony Support
710#
711# CONFIG_PHONE is not set
712
713#
714# Input device support
715#
716# CONFIG_INPUT is not set
717
718#
719# Hardware I/O ports
720#
721# CONFIG_SERIO is not set
722# CONFIG_GAMEPORT is not set
723
724#
725# Character devices
726#
727# CONFIG_AD9960 is not set
728# CONFIG_SPI_ADC_BF533 is not set
729# CONFIG_BF5xx_PFLAGS is not set
730# CONFIG_BF5xx_PPIFCD is not set
731# CONFIG_BFIN_SIMPLE_TIMER is not set
732# CONFIG_BF5xx_PPI is not set
733CONFIG_BFIN_SPORT=y
734# CONFIG_BFIN_TIMER_LATENCY is not set
735# CONFIG_AD5304 is not set
736# CONFIG_VT is not set
737# CONFIG_SERIAL_NONSTANDARD is not set
738
739#
740# Serial drivers
741#
742# CONFIG_SERIAL_8250 is not set
743
744#
745# Non-8250 serial port support
746#
747CONFIG_SERIAL_BFIN=y
748CONFIG_SERIAL_BFIN_CONSOLE=y
749CONFIG_SERIAL_BFIN_DMA=y
750# CONFIG_SERIAL_BFIN_PIO is not set
751CONFIG_SERIAL_BFIN_UART0=y
752# CONFIG_BFIN_UART0_CTSRTS is not set
753CONFIG_SERIAL_CORE=y
754CONFIG_SERIAL_CORE_CONSOLE=y
755# CONFIG_SERIAL_BFIN_SPORT is not set
756CONFIG_UNIX98_PTYS=y
757# CONFIG_LEGACY_PTYS is not set
758
759#
760# CAN, the car bus and industrial fieldbus
761#
762# CONFIG_CAN4LINUX is not set
763
764#
765# IPMI
766#
767# CONFIG_IPMI_HANDLER is not set
768CONFIG_WATCHDOG=y
769# CONFIG_WATCHDOG_NOWAYOUT is not set
770
771#
772# Watchdog Device Drivers
773#
774# CONFIG_SOFT_WATCHDOG is not set
775# CONFIG_BFIN_WDT is not set
776
777#
778# USB-based Watchdog Cards
779#
780# CONFIG_USBPCWATCHDOG is not set
781CONFIG_HW_RANDOM=y
782# CONFIG_GEN_RTC is not set
783# CONFIG_R3964 is not set
784# CONFIG_RAW_DRIVER is not set
785
786#
787# TPM devices
788#
789# CONFIG_TCG_TPM is not set
790# CONFIG_I2C is not set
791
792#
793# SPI support
794#
795CONFIG_SPI=y
796CONFIG_SPI_MASTER=y
797
798#
799# SPI Master Controller Drivers
800#
801CONFIG_SPI_BFIN=y
802# CONFIG_SPI_BITBANG is not set
803
804#
805# SPI Protocol Masters
806#
807# CONFIG_SPI_AT25 is not set
808# CONFIG_SPI_SPIDEV is not set
809
810#
811# Dallas's 1-wire bus
812#
813# CONFIG_W1 is not set
814# CONFIG_HWMON is not set
815
816#
817# Multifunction device drivers
818#
819# CONFIG_MFD_SM501 is not set
820
821#
822# Multimedia devices
823#
824# CONFIG_VIDEO_DEV is not set
825# CONFIG_DVB_CORE is not set
826CONFIG_DAB=y
827# CONFIG_USB_DABUSB is not set
828
829#
830# Graphics support
831#
832# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
833
834#
835# Display device support
836#
837# CONFIG_DISPLAY_SUPPORT is not set
838# CONFIG_VGASTATE is not set
839# CONFIG_FB is not set
840
841#
842# Sound
843#
844# CONFIG_SOUND is not set
845
846#
847# USB support
848#
849CONFIG_USB_ARCH_HAS_HCD=y
850# CONFIG_USB_ARCH_HAS_OHCI is not set
851# CONFIG_USB_ARCH_HAS_EHCI is not set
852CONFIG_USB=y
853# CONFIG_USB_DEBUG is not set
854
855#
856# Miscellaneous USB options
857#
858CONFIG_USB_DEVICEFS=y
859CONFIG_USB_DEVICE_CLASS=y
860# CONFIG_USB_DYNAMIC_MINORS is not set
861# CONFIG_USB_SUSPEND is not set
862# CONFIG_USB_OTG is not set
863CONFIG_USB_OTG_WHITELIST=y
864# CONFIG_USB_OTG_BLACKLIST_HUB is not set
865
866#
867# USB Host Controller Drivers
868#
869# CONFIG_USB_ISP116X_HCD is not set
870CONFIG_USB_ISP1362_HCD=y
871# CONFIG_USB_ISP1760_HCD is not set
872# CONFIG_USB_SL811_HCD is not set
873# CONFIG_USB_MUSB_HDRC is not set
874
875#
876# USB Device Class drivers
877#
878# CONFIG_USB_ACM is not set
879# CONFIG_USB_PRINTER is not set
880
881#
882# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
883#
884
885#
886# may also be needed; see USB_STORAGE Help for more information
887#
888CONFIG_USB_STORAGE=y
889# CONFIG_USB_STORAGE_DEBUG is not set
890# CONFIG_USB_STORAGE_DATAFAB is not set
891# CONFIG_USB_STORAGE_FREECOM is not set
892# CONFIG_USB_STORAGE_DPCM is not set
893# CONFIG_USB_STORAGE_USBAT is not set
894# CONFIG_USB_STORAGE_SDDR09 is not set
895# CONFIG_USB_STORAGE_SDDR55 is not set
896# CONFIG_USB_STORAGE_JUMPSHOT is not set
897# CONFIG_USB_STORAGE_ALAUDA is not set
898# CONFIG_USB_STORAGE_KARMA is not set
899# CONFIG_USB_LIBUSUAL is not set
900
901#
902# USB Imaging devices
903#
904# CONFIG_USB_MDC800 is not set
905# CONFIG_USB_MICROTEK is not set
906CONFIG_USB_MON=y
907
908#
909# USB port drivers
910#
911
912#
913# USB Serial Converter support
914#
915# CONFIG_USB_SERIAL is not set
916
917#
918# USB Miscellaneous drivers
919#
920# CONFIG_USB_EMI62 is not set
921# CONFIG_USB_EMI26 is not set
922# CONFIG_USB_ADUTUX is not set
923# CONFIG_USB_AUERSWALD is not set
924# CONFIG_USB_RIO500 is not set
925# CONFIG_USB_LEGOTOWER is not set
926# CONFIG_USB_LCD is not set
927# CONFIG_USB_BERRY_CHARGE is not set
928# CONFIG_USB_LED is not set
929# CONFIG_USB_CYPRESS_CY7C63 is not set
930# CONFIG_USB_CYTHERM is not set
931# CONFIG_USB_PHIDGET is not set
932# CONFIG_USB_IDMOUSE is not set
933# CONFIG_USB_FTDI_ELAN is not set
934# CONFIG_USB_APPLEDISPLAY is not set
935# CONFIG_USB_LD is not set
936# CONFIG_USB_TRANCEVIBRATOR is not set
937# CONFIG_USB_IOWARRIOR is not set
938# CONFIG_USB_TEST is not set
939
940#
941# USB DSL modem support
942#
943
944#
945# USB Gadget Support
946#
947# CONFIG_USB_GADGET is not set
948CONFIG_MMC=m
949# CONFIG_MMC_DEBUG is not set
950# CONFIG_MMC_UNSAFE_RESUME is not set
951
952#
953# MMC/SD Card Drivers
954#
955CONFIG_MMC_BLOCK=m
956
957#
958# MMC/SD Host Controller Drivers
959#
960CONFIG_SPI_MMC=m
961CONFIG_SPI_MMC_FRAMEWORK_DRIVER=y
962# CONFIG_SPI_MMC_BFIN_PIO_SPI is not set
963CONFIG_SPI_MMC_CS_CHAN=5
964CONFIG_SPI_MMC_MAX_HZ=20000000
965# CONFIG_SPI_MMC_CARD_DETECT is not set
966# CONFIG_SPI_MMC_DEBUG_MODE is not set
967
968#
969# LED devices
970#
971# CONFIG_NEW_LEDS is not set
972
973#
974# LED drivers
975#
976
977#
978# LED Triggers
979#
980
981#
982# InfiniBand support
983#
984
985#
986# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
987#
988
989#
990# Real Time Clock
991#
992CONFIG_RTC_LIB=y
993CONFIG_RTC_CLASS=y
994CONFIG_RTC_HCTOSYS=y
995CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
996# CONFIG_RTC_DEBUG is not set
997
998#
999# RTC interfaces
1000#
1001CONFIG_RTC_INTF_SYSFS=y
1002CONFIG_RTC_INTF_PROC=y
1003CONFIG_RTC_INTF_DEV=y
1004# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1005# CONFIG_RTC_DRV_TEST is not set
1006
1007#
1008# I2C RTC drivers
1009#
1010
1011#
1012# SPI RTC drivers
1013#
1014# CONFIG_RTC_DRV_RS5C348 is not set
1015# CONFIG_RTC_DRV_MAX6902 is not set
1016
1017#
1018# Platform RTC drivers
1019#
1020# CONFIG_RTC_DRV_DS1553 is not set
1021# CONFIG_RTC_DRV_DS1742 is not set
1022# CONFIG_RTC_DRV_M48T86 is not set
1023# CONFIG_RTC_DRV_V3020 is not set
1024
1025#
1026# on-CPU RTC drivers
1027#
1028CONFIG_RTC_DRV_BFIN=y
1029
1030#
1031# DMA Engine support
1032#
1033# CONFIG_DMA_ENGINE is not set
1034
1035#
1036# DMA Clients
1037#
1038
1039#
1040# DMA Devices
1041#
1042
1043#
1044# PBX support
1045#
1046# CONFIG_PBX is not set
1047
1048#
1049# File systems
1050#
1051CONFIG_EXT2_FS=y
1052CONFIG_EXT2_FS_XATTR=y
1053# CONFIG_EXT2_FS_POSIX_ACL is not set
1054# CONFIG_EXT2_FS_SECURITY is not set
1055# CONFIG_EXT3_FS is not set
1056# CONFIG_EXT4DEV_FS is not set
1057CONFIG_FS_MBCACHE=y
1058# CONFIG_REISERFS_FS is not set
1059# CONFIG_JFS_FS is not set
1060# CONFIG_FS_POSIX_ACL is not set
1061# CONFIG_XFS_FS is not set
1062# CONFIG_GFS2_FS is not set
1063# CONFIG_OCFS2_FS is not set
1064# CONFIG_MINIX_FS is not set
1065# CONFIG_ROMFS_FS is not set
1066CONFIG_INOTIFY=y
1067CONFIG_INOTIFY_USER=y
1068# CONFIG_QUOTA is not set
1069CONFIG_DNOTIFY=y
1070# CONFIG_AUTOFS_FS is not set
1071# CONFIG_AUTOFS4_FS is not set
1072# CONFIG_FUSE_FS is not set
1073
1074#
1075# CD-ROM/DVD Filesystems
1076#
1077# CONFIG_ISO9660_FS is not set
1078# CONFIG_UDF_FS is not set
1079
1080#
1081# DOS/FAT/NT Filesystems
1082#
1083CONFIG_FAT_FS=y
1084CONFIG_MSDOS_FS=y
1085CONFIG_VFAT_FS=y
1086CONFIG_FAT_DEFAULT_CODEPAGE=437
1087CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1088# CONFIG_NTFS_FS is not set
1089
1090#
1091# Pseudo filesystems
1092#
1093CONFIG_PROC_FS=y
1094CONFIG_PROC_SYSCTL=y
1095CONFIG_SYSFS=y
1096# CONFIG_TMPFS is not set
1097# CONFIG_HUGETLB_PAGE is not set
1098CONFIG_RAMFS=y
1099# CONFIG_CONFIGFS_FS is not set
1100
1101#
1102# Miscellaneous filesystems
1103#
1104# CONFIG_ADFS_FS is not set
1105# CONFIG_AFFS_FS is not set
1106# CONFIG_HFS_FS is not set
1107# CONFIG_HFSPLUS_FS is not set
1108# CONFIG_BEFS_FS is not set
1109# CONFIG_BFS_FS is not set
1110# CONFIG_EFS_FS is not set
1111CONFIG_YAFFS_FS=y
1112CONFIG_YAFFS_YAFFS1=y
1113# CONFIG_YAFFS_DOES_ECC is not set
1114CONFIG_YAFFS_YAFFS2=y
1115CONFIG_YAFFS_AUTO_YAFFS2=y
1116# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
1117CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
1118# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
1119# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
1120CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
1121# CONFIG_JFFS2_FS is not set
1122# CONFIG_CRAMFS is not set
1123# CONFIG_VXFS_FS is not set
1124# CONFIG_HPFS_FS is not set
1125# CONFIG_QNX4FS_FS is not set
1126# CONFIG_SYSV_FS is not set
1127# CONFIG_UFS_FS is not set
1128
1129#
1130# Network File Systems
1131#
1132# CONFIG_NFS_FS is not set
1133# CONFIG_NFSD is not set
1134# CONFIG_SMB_FS is not set
1135# CONFIG_CIFS is not set
1136# CONFIG_NCP_FS is not set
1137# CONFIG_CODA_FS is not set
1138# CONFIG_AFS_FS is not set
1139# CONFIG_9P_FS is not set
1140
1141#
1142# Partition Types
1143#
1144# CONFIG_PARTITION_ADVANCED is not set
1145CONFIG_MSDOS_PARTITION=y
1146
1147#
1148# Native Language Support
1149#
1150CONFIG_NLS=y
1151CONFIG_NLS_DEFAULT="iso8859-1"
1152CONFIG_NLS_CODEPAGE_437=y
1153# CONFIG_NLS_CODEPAGE_737 is not set
1154# CONFIG_NLS_CODEPAGE_775 is not set
1155# CONFIG_NLS_CODEPAGE_850 is not set
1156# CONFIG_NLS_CODEPAGE_852 is not set
1157# CONFIG_NLS_CODEPAGE_855 is not set
1158# CONFIG_NLS_CODEPAGE_857 is not set
1159# CONFIG_NLS_CODEPAGE_860 is not set
1160# CONFIG_NLS_CODEPAGE_861 is not set
1161# CONFIG_NLS_CODEPAGE_862 is not set
1162# CONFIG_NLS_CODEPAGE_863 is not set
1163# CONFIG_NLS_CODEPAGE_864 is not set
1164# CONFIG_NLS_CODEPAGE_865 is not set
1165# CONFIG_NLS_CODEPAGE_866 is not set
1166# CONFIG_NLS_CODEPAGE_869 is not set
1167# CONFIG_NLS_CODEPAGE_936 is not set
1168# CONFIG_NLS_CODEPAGE_950 is not set
1169# CONFIG_NLS_CODEPAGE_932 is not set
1170# CONFIG_NLS_CODEPAGE_949 is not set
1171# CONFIG_NLS_CODEPAGE_874 is not set
1172# CONFIG_NLS_ISO8859_8 is not set
1173# CONFIG_NLS_CODEPAGE_1250 is not set
1174# CONFIG_NLS_CODEPAGE_1251 is not set
1175# CONFIG_NLS_ASCII is not set
1176CONFIG_NLS_ISO8859_1=y
1177# CONFIG_NLS_ISO8859_2 is not set
1178# CONFIG_NLS_ISO8859_3 is not set
1179# CONFIG_NLS_ISO8859_4 is not set
1180# CONFIG_NLS_ISO8859_5 is not set
1181# CONFIG_NLS_ISO8859_6 is not set
1182# CONFIG_NLS_ISO8859_7 is not set
1183# CONFIG_NLS_ISO8859_9 is not set
1184# CONFIG_NLS_ISO8859_13 is not set
1185# CONFIG_NLS_ISO8859_14 is not set
1186# CONFIG_NLS_ISO8859_15 is not set
1187# CONFIG_NLS_KOI8_R is not set
1188# CONFIG_NLS_KOI8_U is not set
1189# CONFIG_NLS_UTF8 is not set
1190
1191#
1192# Distributed Lock Manager
1193#
1194# CONFIG_DLM is not set
1195
1196#
1197# Profiling support
1198#
1199# CONFIG_PROFILING is not set
1200
1201#
1202# Kernel hacking
1203#
1204# CONFIG_PRINTK_TIME is not set
1205CONFIG_ENABLE_MUST_CHECK=y
1206# CONFIG_MAGIC_SYSRQ is not set
1207# CONFIG_UNUSED_SYMBOLS is not set
1208# CONFIG_DEBUG_FS is not set
1209# CONFIG_HEADERS_CHECK is not set
1210# CONFIG_DEBUG_KERNEL is not set
1211# CONFIG_DEBUG_BUGVERBOSE is not set
1212# CONFIG_DEBUG_MMRS is not set
1213CONFIG_DEBUG_HUNT_FOR_ZERO=y
1214CONFIG_DEBUG_BFIN_HWTRACE_ON=y
1215CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF=y
1216# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE is not set
1217# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_TWO is not set
1218CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0
1219# CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set
1220# CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE is not set
1221# CONFIG_EARLY_PRINTK is not set
1222CONFIG_CPLB_INFO=y
1223CONFIG_ACCESS_CHECK=y
1224
1225#
1226# Security options
1227#
1228# CONFIG_KEYS is not set
1229CONFIG_SECURITY=y
1230# CONFIG_SECURITY_NETWORK is not set
1231CONFIG_SECURITY_CAPABILITIES=m
1232# CONFIG_SECURITY_ROOTPLUG is not set
1233
1234#
1235# Cryptographic options
1236#
1237# CONFIG_CRYPTO is not set
1238
1239#
1240# Library routines
1241#
1242CONFIG_BITREVERSE=y
1243CONFIG_CRC_CCITT=y
1244# CONFIG_CRC16 is not set
1245# CONFIG_CRC_ITU_T is not set
1246CONFIG_CRC32=y
1247# CONFIG_LIBCRC32C is not set
1248CONFIG_ZLIB_INFLATE=y
1249CONFIG_PLIST=y
1250CONFIG_HAS_IOMEM=y
1251CONFIG_HAS_IOPORT=y
1252CONFIG_HAS_DMA=y
diff --git a/arch/blackfin/configs/PNAV-10_defconfig b/arch/blackfin/configs/PNAV-10_defconfig
index 25709f504d8f..87622ad9df47 100644
--- a/arch/blackfin/configs/PNAV-10_defconfig
+++ b/arch/blackfin/configs/PNAV-10_defconfig
@@ -13,7 +13,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y 13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_TIME is not set 16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
@@ -214,7 +214,7 @@ CONFIG_HZ=250
214# 214#
215# Memory Setup 215# Memory Setup
216# 216#
217CONFIG_MEM_SIZE=64 217CONFIG_MAX_MEM_SIZE=64
218CONFIG_MEM_ADD_WIDTH=10 218CONFIG_MEM_ADD_WIDTH=10
219CONFIG_BOOT_LOAD=0x1000 219CONFIG_BOOT_LOAD=0x1000
220CONFIG_BFIN_SCRATCH_REG_RETN=y 220CONFIG_BFIN_SCRATCH_REG_RETN=y
diff --git a/arch/blackfin/configs/SRV1_defconfig b/arch/blackfin/configs/SRV1_defconfig
new file mode 100644
index 000000000000..951ea0412576
--- /dev/null
+++ b/arch/blackfin/configs/SRV1_defconfig
@@ -0,0 +1,1290 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22.10
4# Fri Nov 2 20:50:23 2007
5#
6# CONFIG_MMU is not set
7# CONFIG_FPU is not set
8CONFIG_RWSEM_GENERIC_SPINLOCK=y
9# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
10CONFIG_BLACKFIN=y
11CONFIG_ZONE_DMA=y
12CONFIG_BFIN=y
13CONFIG_SEMAPHORE_SLEEPERS=y
14CONFIG_GENERIC_FIND_NEXT_BIT=y
15CONFIG_GENERIC_HWEIGHT=y
16CONFIG_GENERIC_HARDIRQS=y
17CONFIG_GENERIC_IRQ_PROBE=y
18# CONFIG_GENERIC_TIME is not set
19CONFIG_GENERIC_GPIO=y
20CONFIG_FORCE_MAX_ZONEORDER=14
21CONFIG_GENERIC_CALIBRATE_DELAY=y
22CONFIG_IRQCHIP_DEMUX_GPIO=y
23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24
25#
26# Code maturity level options
27#
28CONFIG_EXPERIMENTAL=y
29CONFIG_BROKEN_ON_SMP=y
30CONFIG_INIT_ENV_ARG_LIMIT=32
31
32#
33# General setup
34#
35CONFIG_LOCALVERSION=""
36CONFIG_LOCALVERSION_AUTO=y
37CONFIG_SYSVIPC=y
38# CONFIG_IPC_NS is not set
39CONFIG_SYSVIPC_SYSCTL=y
40# CONFIG_POSIX_MQUEUE is not set
41# CONFIG_BSD_PROCESS_ACCT is not set
42# CONFIG_TASKSTATS is not set
43# CONFIG_UTS_NS is not set
44# CONFIG_AUDIT is not set
45# CONFIG_IKCONFIG is not set
46CONFIG_LOG_BUF_SHIFT=14
47CONFIG_SYSFS_DEPRECATED=y
48# CONFIG_RELAY is not set
49CONFIG_BLK_DEV_INITRD=y
50CONFIG_INITRAMFS_SOURCE=""
51# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
52CONFIG_SYSCTL=y
53CONFIG_EMBEDDED=y
54CONFIG_UID16=y
55CONFIG_SYSCTL_SYSCALL=y
56CONFIG_KALLSYMS=y
57CONFIG_KALLSYMS_ALL=y
58# CONFIG_KALLSYMS_EXTRA_PASS is not set
59CONFIG_HOTPLUG=y
60CONFIG_PRINTK=y
61CONFIG_BUG=y
62CONFIG_ELF_CORE=y
63CONFIG_BASE_FULL=y
64CONFIG_FUTEX=y
65CONFIG_ANON_INODES=y
66CONFIG_EPOLL=y
67CONFIG_SIGNALFD=y
68CONFIG_EVENTFD=y
69CONFIG_VM_EVENT_COUNTERS=y
70CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
71# CONFIG_NP2 is not set
72CONFIG_SLAB=y
73# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set
75CONFIG_RT_MUTEXES=y
76CONFIG_TINY_SHMEM=y
77CONFIG_BASE_SMALL=0
78
79#
80# Loadable module support
81#
82CONFIG_MODULES=y
83CONFIG_MODULE_UNLOAD=y
84# CONFIG_MODULE_FORCE_UNLOAD is not set
85# CONFIG_MODVERSIONS is not set
86# CONFIG_MODULE_SRCVERSION_ALL is not set
87CONFIG_KMOD=y
88
89#
90# Block layer
91#
92CONFIG_BLOCK=y
93# CONFIG_LBD is not set
94# CONFIG_BLK_DEV_IO_TRACE is not set
95# CONFIG_LSF is not set
96
97#
98# IO Schedulers
99#
100CONFIG_IOSCHED_NOOP=y
101CONFIG_IOSCHED_AS=y
102# CONFIG_IOSCHED_DEADLINE is not set
103CONFIG_IOSCHED_CFQ=y
104CONFIG_DEFAULT_AS=y
105# CONFIG_DEFAULT_DEADLINE is not set
106# CONFIG_DEFAULT_CFQ is not set
107# CONFIG_DEFAULT_NOOP is not set
108CONFIG_DEFAULT_IOSCHED="anticipatory"
109# CONFIG_PREEMPT_NONE is not set
110CONFIG_PREEMPT_VOLUNTARY=y
111# CONFIG_PREEMPT is not set
112
113#
114# Blackfin Processor Options
115#
116
117#
118# Processor and Board Settings
119#
120# CONFIG_BF522 is not set
121# CONFIG_BF525 is not set
122# CONFIG_BF527 is not set
123# CONFIG_BF531 is not set
124# CONFIG_BF532 is not set
125# CONFIG_BF533 is not set
126# CONFIG_BF534 is not set
127# CONFIG_BF536 is not set
128CONFIG_BF537=y
129# CONFIG_BF542 is not set
130# CONFIG_BF544 is not set
131# CONFIG_BF548 is not set
132# CONFIG_BF549 is not set
133# CONFIG_BF561 is not set
134# CONFIG_BF_REV_0_0 is not set
135# CONFIG_BF_REV_0_1 is not set
136CONFIG_BF_REV_0_2=y
137# CONFIG_BF_REV_0_3 is not set
138# CONFIG_BF_REV_0_4 is not set
139# CONFIG_BF_REV_0_5 is not set
140# CONFIG_BF_REV_ANY is not set
141# CONFIG_BF_REV_NONE is not set
142CONFIG_BF53x=y
143CONFIG_BFIN_SINGLE_CORE=y
144# CONFIG_BFIN527_EZKIT is not set
145# CONFIG_BFIN533_EZKIT is not set
146# CONFIG_BFIN533_STAMP is not set
147# CONFIG_BFIN537_STAMP is not set
148# CONFIG_CAMSIG_MINOTAUR is not set
149# CONFIG_BFIN533_BLUETECHNIX_CM is not set
150# CONFIG_BFIN537_BLUETECHNIX_CM is not set
151# CONFIG_BFIN548_EZKIT is not set
152# CONFIG_BFIN561_BLUETECHNIX_CM is not set
153# CONFIG_BFIN561_EZKIT is not set
154# CONFIG_BFIN561_TEPLA is not set
155# CONFIG_PNAV10 is not set
156# CONFIG_VISTASCAN is not set
157# CONFIG_BFIN533_SR3K is not set
158CONFIG_GENERIC_BOARD=y
159CONFIG_MEM_GENERIC_BOARD=y
160CONFIG_IRQ_PLL_WAKEUP=7
161CONFIG_IRQ_RTC=8
162CONFIG_IRQ_PPI=8
163CONFIG_IRQ_SPORT0_RX=9
164CONFIG_IRQ_SPORT0_TX=9
165CONFIG_IRQ_SPORT1_RX=9
166CONFIG_IRQ_SPORT1_TX=9
167CONFIG_IRQ_TWI=10
168CONFIG_IRQ_SPI=10
169CONFIG_IRQ_UART0_RX=10
170CONFIG_IRQ_UART0_TX=10
171CONFIG_IRQ_UART1_RX=10
172CONFIG_IRQ_UART1_TX=10
173CONFIG_IRQ_MAC_RX=11
174CONFIG_IRQ_MAC_TX=11
175CONFIG_IRQ_TMR0=12
176CONFIG_IRQ_TMR1=12
177CONFIG_IRQ_TMR2=12
178CONFIG_IRQ_TMR3=12
179CONFIG_IRQ_TMR4=12
180CONFIG_IRQ_TMR5=12
181CONFIG_IRQ_TMR6=12
182CONFIG_IRQ_TMR7=12
183CONFIG_IRQ_PORTG_INTB=12
184CONFIG_IRQ_MEM_DMA0=13
185CONFIG_IRQ_MEM_DMA1=13
186CONFIG_IRQ_WATCH=13
187
188#
189# BF537 Specific Configuration
190#
191
192#
193# Interrupt Priority Assignment
194#
195
196#
197# Priority
198#
199CONFIG_IRQ_DMA_ERROR=7
200CONFIG_IRQ_ERROR=7
201CONFIG_IRQ_CAN_RX=11
202CONFIG_IRQ_CAN_TX=11
203CONFIG_IRQ_PROG_INTA=12
204
205#
206# Board customizations
207#
208# CONFIG_CMDLINE_BOOL is not set
209
210#
211# Clock/PLL Setup
212#
213CONFIG_CLKIN_HZ=22118400
214# CONFIG_BFIN_KERNEL_CLOCK is not set
215CONFIG_MAX_VCO_HZ=600000000
216CONFIG_MIN_VCO_HZ=50000000
217CONFIG_MAX_SCLK_HZ=133000000
218CONFIG_MIN_SCLK_HZ=27000000
219
220#
221# Kernel Timer/Scheduler
222#
223# CONFIG_HZ_100 is not set
224CONFIG_HZ_250=y
225# CONFIG_HZ_300 is not set
226# CONFIG_HZ_1000 is not set
227CONFIG_HZ=250
228
229#
230# Memory Setup
231#
232CONFIG_MAX_MEM_SIZE=32
233CONFIG_MEM_ADD_WIDTH=9
234CONFIG_BOOT_LOAD=0x400000
235CONFIG_BFIN_SCRATCH_REG_RETN=y
236# CONFIG_BFIN_SCRATCH_REG_RETE is not set
237# CONFIG_BFIN_SCRATCH_REG_CYCLES is not set
238
239#
240# Blackfin Kernel Optimizations
241#
242
243#
244# Memory Optimizations
245#
246CONFIG_I_ENTRY_L1=y
247CONFIG_EXCPT_IRQ_SYSC_L1=y
248CONFIG_DO_IRQ_L1=y
249CONFIG_CORE_TIMER_IRQ_L1=y
250CONFIG_IDLE_L1=y
251CONFIG_SCHEDULE_L1=y
252CONFIG_ARITHMETIC_OPS_L1=y
253CONFIG_ACCESS_OK_L1=y
254CONFIG_MEMSET_L1=y
255CONFIG_MEMCPY_L1=y
256CONFIG_SYS_BFIN_SPINLOCK_L1=y
257# CONFIG_IP_CHECKSUM_L1 is not set
258CONFIG_CACHELINE_ALIGNED_L1=y
259# CONFIG_SYSCALL_TAB_L1 is not set
260# CONFIG_CPLB_SWITCH_TAB_L1 is not set
261CONFIG_RAMKERNEL=y
262# CONFIG_ROMKERNEL is not set
263CONFIG_SELECT_MEMORY_MODEL=y
264CONFIG_FLATMEM_MANUAL=y
265# CONFIG_DISCONTIGMEM_MANUAL is not set
266# CONFIG_SPARSEMEM_MANUAL is not set
267CONFIG_FLATMEM=y
268CONFIG_FLAT_NODE_MEM_MAP=y
269# CONFIG_SPARSEMEM_STATIC is not set
270CONFIG_SPLIT_PTLOCK_CPUS=4
271# CONFIG_RESOURCES_64BIT is not set
272CONFIG_ZONE_DMA_FLAG=1
273CONFIG_LARGE_ALLOCS=y
274CONFIG_BFIN_DMA_5XX=y
275CONFIG_DMA_UNCACHED_2M=y
276# CONFIG_DMA_UNCACHED_1M is not set
277# CONFIG_DMA_UNCACHED_NONE is not set
278
279#
280# Cache Support
281#
282CONFIG_BFIN_ICACHE=y
283CONFIG_BFIN_DCACHE=y
284# CONFIG_BFIN_DCACHE_BANKA is not set
285# CONFIG_BFIN_ICACHE_LOCK is not set
286# CONFIG_BFIN_WB is not set
287CONFIG_BFIN_WT=y
288CONFIG_L1_MAX_PIECE=16
289
290#
291# Asynchonous Memory Configuration
292#
293
294#
295# EBIU_AMGCTL Global Control
296#
297CONFIG_C_AMCKEN=y
298CONFIG_C_CDPRIO=y
299# CONFIG_C_AMBEN is not set
300# CONFIG_C_AMBEN_B0 is not set
301# CONFIG_C_AMBEN_B0_B1 is not set
302# CONFIG_C_AMBEN_B0_B1_B2 is not set
303CONFIG_C_AMBEN_ALL=y
304
305#
306# EBIU_AMBCTL Control
307#
308CONFIG_BANK_0=0x7BB0
309CONFIG_BANK_1=0x7BB0
310CONFIG_BANK_2=0x7BB0
311CONFIG_BANK_3=0x99B3
312
313#
314# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
315#
316# CONFIG_PCI is not set
317# CONFIG_ARCH_SUPPORTS_MSI is not set
318
319#
320# PCCARD (PCMCIA/CardBus) support
321#
322# CONFIG_PCCARD is not set
323
324#
325# Executable file formats
326#
327CONFIG_BINFMT_ELF_FDPIC=y
328CONFIG_BINFMT_FLAT=y
329CONFIG_BINFMT_ZFLAT=y
330# CONFIG_BINFMT_SHARED_FLAT is not set
331# CONFIG_BINFMT_MISC is not set
332
333#
334# Power management options
335#
336CONFIG_PM=y
337# CONFIG_PM_LEGACY is not set
338# CONFIG_PM_DEBUG is not set
339# CONFIG_PM_SYSFS_DEPRECATED is not set
340CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y
341# CONFIG_PM_WAKEUP_BY_GPIO is not set
342# CONFIG_PM_WAKEUP_GPIO_API is not set
343CONFIG_PM_WAKEUP_SIC_IWR=0x80000000
344
345#
346# CPU Frequency scaling
347#
348# CONFIG_CPU_FREQ is not set
349
350#
351# Networking
352#
353CONFIG_NET=y
354
355#
356# Networking options
357#
358CONFIG_PACKET=y
359# CONFIG_PACKET_MMAP is not set
360CONFIG_UNIX=y
361CONFIG_XFRM=y
362# CONFIG_XFRM_USER is not set
363# CONFIG_XFRM_SUB_POLICY is not set
364# CONFIG_XFRM_MIGRATE is not set
365# CONFIG_NET_KEY is not set
366CONFIG_INET=y
367# CONFIG_IP_MULTICAST is not set
368# CONFIG_IP_ADVANCED_ROUTER is not set
369CONFIG_IP_FIB_HASH=y
370CONFIG_IP_PNP=y
371# CONFIG_IP_PNP_DHCP is not set
372# CONFIG_IP_PNP_BOOTP is not set
373# CONFIG_IP_PNP_RARP is not set
374# CONFIG_NET_IPIP is not set
375# CONFIG_NET_IPGRE is not set
376# CONFIG_ARPD is not set
377CONFIG_SYN_COOKIES=y
378# CONFIG_INET_AH is not set
379# CONFIG_INET_ESP is not set
380# CONFIG_INET_IPCOMP is not set
381# CONFIG_INET_XFRM_TUNNEL is not set
382# CONFIG_INET_TUNNEL is not set
383CONFIG_INET_XFRM_MODE_TRANSPORT=y
384CONFIG_INET_XFRM_MODE_TUNNEL=y
385CONFIG_INET_XFRM_MODE_BEET=y
386CONFIG_INET_DIAG=y
387CONFIG_INET_TCP_DIAG=y
388# CONFIG_TCP_CONG_ADVANCED is not set
389CONFIG_TCP_CONG_CUBIC=y
390CONFIG_DEFAULT_TCP_CONG="cubic"
391# CONFIG_TCP_MD5SIG is not set
392# CONFIG_IPV6 is not set
393# CONFIG_INET6_XFRM_TUNNEL is not set
394# CONFIG_INET6_TUNNEL is not set
395# CONFIG_NETLABEL is not set
396# CONFIG_NETWORK_SECMARK is not set
397# CONFIG_NETFILTER is not set
398# CONFIG_IP_DCCP is not set
399# CONFIG_IP_SCTP is not set
400# CONFIG_TIPC is not set
401# CONFIG_ATM is not set
402# CONFIG_BRIDGE is not set
403# CONFIG_VLAN_8021Q is not set
404# CONFIG_DECNET is not set
405# CONFIG_LLC2 is not set
406# CONFIG_IPX is not set
407# CONFIG_ATALK is not set
408# CONFIG_X25 is not set
409# CONFIG_LAPB is not set
410# CONFIG_ECONET is not set
411# CONFIG_WAN_ROUTER is not set
412
413#
414# QoS and/or fair queueing
415#
416# CONFIG_NET_SCHED is not set
417
418#
419# Network testing
420#
421# CONFIG_NET_PKTGEN is not set
422# CONFIG_HAMRADIO is not set
423CONFIG_IRDA=m
424
425#
426# IrDA protocols
427#
428CONFIG_IRLAN=m
429CONFIG_IRCOMM=m
430# CONFIG_IRDA_ULTRA is not set
431
432#
433# IrDA options
434#
435CONFIG_IRDA_CACHE_LAST_LSAP=y
436# CONFIG_IRDA_FAST_RR is not set
437# CONFIG_IRDA_DEBUG is not set
438
439#
440# Infrared-port device drivers
441#
442
443#
444# SIR device drivers
445#
446CONFIG_IRTTY_SIR=m
447
448#
449# Dongle support
450#
451# CONFIG_DONGLE is not set
452
453#
454# Old SIR device drivers
455#
456# CONFIG_IRPORT_SIR is not set
457
458#
459# Old Serial dongle support
460#
461
462#
463# FIR device drivers
464#
465# CONFIG_BT is not set
466# CONFIG_AF_RXRPC is not set
467
468#
469# Wireless
470#
471# CONFIG_CFG80211 is not set
472# CONFIG_WIRELESS_EXT is not set
473# CONFIG_MAC80211 is not set
474# CONFIG_IEEE80211 is not set
475# CONFIG_RFKILL is not set
476
477#
478# Device Drivers
479#
480
481#
482# Generic Driver Options
483#
484CONFIG_STANDALONE=y
485CONFIG_PREVENT_FIRMWARE_BUILD=y
486# CONFIG_FW_LOADER is not set
487# CONFIG_DEBUG_DRIVER is not set
488# CONFIG_DEBUG_DEVRES is not set
489# CONFIG_SYS_HYPERVISOR is not set
490
491#
492# Connector - unified userspace <-> kernelspace linker
493#
494# CONFIG_CONNECTOR is not set
495CONFIG_MTD=y
496# CONFIG_MTD_DEBUG is not set
497# CONFIG_MTD_CONCAT is not set
498CONFIG_MTD_PARTITIONS=y
499# CONFIG_MTD_REDBOOT_PARTS is not set
500# CONFIG_MTD_CMDLINE_PARTS is not set
501
502#
503# User Modules And Translation Layers
504#
505CONFIG_MTD_CHAR=m
506CONFIG_MTD_BLKDEVS=y
507CONFIG_MTD_BLOCK=y
508# CONFIG_FTL is not set
509# CONFIG_NFTL is not set
510# CONFIG_INFTL is not set
511# CONFIG_RFD_FTL is not set
512# CONFIG_SSFDC is not set
513
514#
515# RAM/ROM/Flash chip drivers
516#
517# CONFIG_MTD_CFI is not set
518CONFIG_MTD_JEDECPROBE=m
519CONFIG_MTD_GEN_PROBE=m
520# CONFIG_MTD_CFI_ADV_OPTIONS is not set
521CONFIG_MTD_MAP_BANK_WIDTH_1=y
522CONFIG_MTD_MAP_BANK_WIDTH_2=y
523CONFIG_MTD_MAP_BANK_WIDTH_4=y
524# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
525# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
526# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
527CONFIG_MTD_CFI_I1=y
528CONFIG_MTD_CFI_I2=y
529# CONFIG_MTD_CFI_I4 is not set
530# CONFIG_MTD_CFI_I8 is not set
531# CONFIG_MTD_CFI_INTELEXT is not set
532# CONFIG_MTD_CFI_AMDSTD is not set
533# CONFIG_MTD_CFI_STAA is not set
534CONFIG_MTD_MW320D=m
535CONFIG_MTD_RAM=y
536CONFIG_MTD_ROM=m
537# CONFIG_MTD_ABSENT is not set
538
539#
540# Mapping drivers for chip access
541#
542CONFIG_MTD_COMPLEX_MAPPINGS=y
543# CONFIG_MTD_PHYSMAP is not set
544CONFIG_MTD_BF5xx=m
545CONFIG_BFIN_FLASH_SIZE=0x400000
546CONFIG_EBIU_FLASH_BASE=0x20000000
547CONFIG_MTD_UCLINUX=y
548# CONFIG_MTD_PLATRAM is not set
549
550#
551# Self-contained MTD device drivers
552#
553# CONFIG_MTD_DATAFLASH is not set
554# CONFIG_MTD_M25P80 is not set
555# CONFIG_MTD_SLRAM is not set
556# CONFIG_MTD_PHRAM is not set
557# CONFIG_MTD_MTDRAM is not set
558# CONFIG_MTD_BLOCK2MTD is not set
559
560#
561# Disk-On-Chip Device Drivers
562#
563# CONFIG_MTD_DOC2000 is not set
564# CONFIG_MTD_DOC2001 is not set
565# CONFIG_MTD_DOC2001PLUS is not set
566CONFIG_MTD_NAND=m
567# CONFIG_MTD_NAND_VERIFY_WRITE is not set
568# CONFIG_MTD_NAND_ECC_SMC is not set
569# CONFIG_MTD_NAND_MUSEUM_IDS is not set
570CONFIG_MTD_NAND_BFIN=m
571CONFIG_BFIN_NAND_BASE=0x20212000
572CONFIG_BFIN_NAND_CLE=2
573CONFIG_BFIN_NAND_ALE=1
574CONFIG_BFIN_NAND_READY=3
575CONFIG_MTD_NAND_IDS=m
576# CONFIG_MTD_NAND_DISKONCHIP is not set
577# CONFIG_MTD_NAND_NANDSIM is not set
578# CONFIG_MTD_NAND_PLATFORM is not set
579# CONFIG_MTD_ONENAND is not set
580
581#
582# UBI - Unsorted block images
583#
584# CONFIG_MTD_UBI is not set
585
586#
587# Parallel port support
588#
589# CONFIG_PARPORT is not set
590
591#
592# Plug and Play support
593#
594# CONFIG_PNPACPI is not set
595
596#
597# Block devices
598#
599# CONFIG_BLK_DEV_COW_COMMON is not set
600# CONFIG_BLK_DEV_LOOP is not set
601# CONFIG_BLK_DEV_NBD is not set
602CONFIG_BLK_DEV_RAM=y
603CONFIG_BLK_DEV_RAM_COUNT=16
604CONFIG_BLK_DEV_RAM_SIZE=4096
605CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
606# CONFIG_CDROM_PKTCDVD is not set
607# CONFIG_ATA_OVER_ETH is not set
608
609#
610# Misc devices
611#
612# CONFIG_IDE is not set
613
614#
615# SCSI device support
616#
617# CONFIG_RAID_ATTRS is not set
618# CONFIG_SCSI is not set
619# CONFIG_SCSI_NETLINK is not set
620# CONFIG_ATA is not set
621
622#
623# Multi-device support (RAID and LVM)
624#
625# CONFIG_MD is not set
626
627#
628# Network device support
629#
630CONFIG_NETDEVICES=y
631# CONFIG_DUMMY is not set
632# CONFIG_BONDING is not set
633# CONFIG_EQUALIZER is not set
634# CONFIG_TUN is not set
635
636#
637# Ethernet (10 or 100Mbit)
638#
639# CONFIG_NET_ETHERNET is not set
640# CONFIG_NETDEV_1000 is not set
641# CONFIG_NETDEV_10000 is not set
642
643#
644# Wireless LAN
645#
646# CONFIG_WLAN_PRE80211 is not set
647# CONFIG_WLAN_80211 is not set
648# CONFIG_WAN is not set
649# CONFIG_PPP is not set
650# CONFIG_SLIP is not set
651# CONFIG_SHAPER is not set
652# CONFIG_NETCONSOLE is not set
653# CONFIG_NETPOLL is not set
654# CONFIG_NET_POLL_CONTROLLER is not set
655
656#
657# ISDN subsystem
658#
659# CONFIG_ISDN is not set
660
661#
662# Telephony Support
663#
664# CONFIG_PHONE is not set
665
666#
667# Input device support
668#
669CONFIG_INPUT=y
670# CONFIG_INPUT_FF_MEMLESS is not set
671# CONFIG_INPUT_POLLDEV is not set
672
673#
674# Userland interfaces
675#
676# CONFIG_INPUT_MOUSEDEV is not set
677# CONFIG_INPUT_JOYDEV is not set
678# CONFIG_INPUT_TSDEV is not set
679CONFIG_INPUT_EVDEV=m
680# CONFIG_INPUT_EVBUG is not set
681
682#
683# Input Device Drivers
684#
685# CONFIG_INPUT_KEYBOARD is not set
686# CONFIG_INPUT_MOUSE is not set
687# CONFIG_INPUT_JOYSTICK is not set
688# CONFIG_INPUT_TABLET is not set
689# CONFIG_INPUT_TOUCHSCREEN is not set
690CONFIG_INPUT_MISC=y
691# CONFIG_INPUT_ATI_REMOTE is not set
692# CONFIG_INPUT_ATI_REMOTE2 is not set
693# CONFIG_INPUT_KEYSPAN_REMOTE is not set
694# CONFIG_INPUT_POWERMATE is not set
695# CONFIG_INPUT_YEALINK is not set
696CONFIG_INPUT_UINPUT=y
697# CONFIG_BF53X_PFBUTTONS is not set
698# CONFIG_TWI_KEYPAD is not set
699
700#
701# Hardware I/O ports
702#
703# CONFIG_SERIO is not set
704# CONFIG_GAMEPORT is not set
705
706#
707# Character devices
708#
709# CONFIG_AD9960 is not set
710# CONFIG_SPI_ADC_BF533 is not set
711CONFIG_BF5xx_PFLAGS=y
712# CONFIG_BF5xx_PFLAGS_PROC is not set
713# CONFIG_BF5xx_PPIFCD is not set
714# CONFIG_BF5xx_TIMERS is not set
715# CONFIG_BF5xx_PPI is not set
716# CONFIG_BFIN_SPORT is not set
717# CONFIG_BFIN_TIMER_LATENCY is not set
718# CONFIG_TWI_LCD is not set
719# CONFIG_AD5304 is not set
720# CONFIG_BF5xx_TEA5764 is not set
721# CONFIG_BF5xx_FBDMA is not set
722# CONFIG_VT is not set
723# CONFIG_SERIAL_NONSTANDARD is not set
724
725#
726# Serial drivers
727#
728# CONFIG_SERIAL_8250 is not set
729
730#
731# Non-8250 serial port support
732#
733CONFIG_SERIAL_BFIN=y
734CONFIG_SERIAL_BFIN_CONSOLE=y
735CONFIG_SERIAL_BFIN_DMA=y
736# CONFIG_SERIAL_BFIN_PIO is not set
737CONFIG_SERIAL_BFIN_UART0=y
738# CONFIG_BFIN_UART0_CTSRTS is not set
739# CONFIG_SERIAL_BFIN_UART1 is not set
740CONFIG_SERIAL_CORE=y
741CONFIG_SERIAL_CORE_CONSOLE=y
742# CONFIG_SERIAL_BFIN_SPORT is not set
743CONFIG_UNIX98_PTYS=y
744# CONFIG_LEGACY_PTYS is not set
745
746#
747# CAN, the car bus and industrial fieldbus
748#
749# CONFIG_CAN4LINUX is not set
750
751#
752# IPMI
753#
754# CONFIG_IPMI_HANDLER is not set
755CONFIG_WATCHDOG=y
756# CONFIG_WATCHDOG_NOWAYOUT is not set
757
758#
759# Watchdog Device Drivers
760#
761# CONFIG_SOFT_WATCHDOG is not set
762CONFIG_BFIN_WDT=y
763CONFIG_HW_RANDOM=m
764# CONFIG_GEN_RTC is not set
765CONFIG_BLACKFIN_DPMC=y
766# CONFIG_R3964 is not set
767# CONFIG_RAW_DRIVER is not set
768
769#
770# TPM devices
771#
772# CONFIG_TCG_TPM is not set
773CONFIG_I2C=y
774CONFIG_I2C_BOARDINFO=y
775CONFIG_I2C_CHARDEV=y
776
777#
778# I2C Algorithms
779#
780# CONFIG_I2C_ALGOBIT is not set
781# CONFIG_I2C_ALGOPCF is not set
782# CONFIG_I2C_ALGOPCA is not set
783
784#
785# I2C Hardware Bus support
786#
787# CONFIG_I2C_BLACKFIN_GPIO is not set
788CONFIG_I2C_BLACKFIN_TWI=y
789CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50
790# CONFIG_I2C_GPIO is not set
791# CONFIG_I2C_OCORES is not set
792# CONFIG_I2C_PARPORT_LIGHT is not set
793# CONFIG_I2C_SIMTEC is not set
794# CONFIG_I2C_STUB is not set
795
796#
797# Miscellaneous I2C Chip support
798#
799# CONFIG_SENSORS_DS1337 is not set
800# CONFIG_SENSORS_DS1374 is not set
801# CONFIG_SENSORS_AD5252 is not set
802# CONFIG_SENSORS_EEPROM is not set
803# CONFIG_SENSORS_PCF8574 is not set
804# CONFIG_SENSORS_PCF8575 is not set
805# CONFIG_SENSORS_PCA9543 is not set
806# CONFIG_SENSORS_PCA9539 is not set
807# CONFIG_SENSORS_PCF8591 is not set
808# CONFIG_SENSORS_MAX6875 is not set
809# CONFIG_I2C_DEBUG_CORE is not set
810# CONFIG_I2C_DEBUG_ALGO is not set
811# CONFIG_I2C_DEBUG_BUS is not set
812# CONFIG_I2C_DEBUG_CHIP is not set
813
814#
815# SPI support
816#
817CONFIG_SPI=y
818# CONFIG_SPI_DEBUG is not set
819CONFIG_SPI_MASTER=y
820
821#
822# SPI Master Controller Drivers
823#
824CONFIG_SPI_BFIN=y
825# CONFIG_SPI_BITBANG is not set
826
827#
828# SPI Protocol Masters
829#
830CONFIG_SPI_AT25=m
831# CONFIG_SPI_SPIDEV is not set
832
833#
834# Dallas's 1-wire bus
835#
836# CONFIG_W1 is not set
837CONFIG_HWMON=m
838# CONFIG_HWMON_VID is not set
839# CONFIG_SENSORS_ABITUGURU is not set
840# CONFIG_SENSORS_AD7418 is not set
841# CONFIG_SENSORS_ADM1021 is not set
842# CONFIG_SENSORS_ADM1025 is not set
843# CONFIG_SENSORS_ADM1026 is not set
844# CONFIG_SENSORS_ADM1029 is not set
845# CONFIG_SENSORS_ADM1031 is not set
846# CONFIG_SENSORS_ADM9240 is not set
847# CONFIG_SENSORS_ASB100 is not set
848# CONFIG_SENSORS_ATXP1 is not set
849# CONFIG_SENSORS_DS1621 is not set
850# CONFIG_SENSORS_F71805F is not set
851# CONFIG_SENSORS_FSCHER is not set
852# CONFIG_SENSORS_FSCPOS is not set
853# CONFIG_SENSORS_GL518SM is not set
854# CONFIG_SENSORS_GL520SM is not set
855# CONFIG_SENSORS_IT87 is not set
856# CONFIG_SENSORS_LM63 is not set
857# CONFIG_SENSORS_LM70 is not set
858# CONFIG_SENSORS_LM75 is not set
859# CONFIG_SENSORS_LM77 is not set
860# CONFIG_SENSORS_LM78 is not set
861# CONFIG_SENSORS_LM80 is not set
862# CONFIG_SENSORS_LM83 is not set
863# CONFIG_SENSORS_LM85 is not set
864# CONFIG_SENSORS_LM87 is not set
865# CONFIG_SENSORS_LM90 is not set
866# CONFIG_SENSORS_LM92 is not set
867# CONFIG_SENSORS_MAX1619 is not set
868# CONFIG_SENSORS_MAX6650 is not set
869# CONFIG_SENSORS_PC87360 is not set
870# CONFIG_SENSORS_PC87427 is not set
871# CONFIG_SENSORS_SMSC47M1 is not set
872# CONFIG_SENSORS_SMSC47M192 is not set
873# CONFIG_SENSORS_SMSC47B397 is not set
874# CONFIG_SENSORS_VT1211 is not set
875# CONFIG_SENSORS_W83781D is not set
876# CONFIG_SENSORS_W83791D is not set
877# CONFIG_SENSORS_W83792D is not set
878# CONFIG_SENSORS_W83793 is not set
879# CONFIG_SENSORS_W83L785TS is not set
880# CONFIG_SENSORS_W83627HF is not set
881# CONFIG_SENSORS_W83627EHF is not set
882# CONFIG_HWMON_DEBUG_CHIP is not set
883
884#
885# Multifunction device drivers
886#
887# CONFIG_MFD_SM501 is not set
888
889#
890# Multimedia devices
891#
892CONFIG_VIDEO_DEV=y
893# CONFIG_VIDEO_V4L1 is not set
894CONFIG_VIDEO_V4L1_COMPAT=y
895CONFIG_VIDEO_V4L2=y
896CONFIG_VIDEO_CAPTURE_DRIVERS=y
897# CONFIG_VIDEO_ADV_DEBUG is not set
898# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
899
900#
901# Encoders/decoders and other helper chips
902#
903
904#
905# Audio decoders
906#
907# CONFIG_VIDEO_TDA9840 is not set
908# CONFIG_VIDEO_TEA6415C is not set
909# CONFIG_VIDEO_TEA6420 is not set
910# CONFIG_VIDEO_MSP3400 is not set
911# CONFIG_VIDEO_CS53L32A is not set
912# CONFIG_VIDEO_TLV320AIC23B is not set
913# CONFIG_VIDEO_WM8775 is not set
914# CONFIG_VIDEO_WM8739 is not set
915
916#
917# Video decoders
918#
919# CONFIG_VIDEO_OV7670 is not set
920# CONFIG_VIDEO_SAA711X is not set
921# CONFIG_VIDEO_TVP5150 is not set
922
923#
924# Video and audio decoders
925#
926# CONFIG_VIDEO_CX25840 is not set
927
928#
929# MPEG video encoders
930#
931# CONFIG_VIDEO_CX2341X is not set
932
933#
934# Video encoders
935#
936# CONFIG_VIDEO_SAA7127 is not set
937
938#
939# Video improvement chips
940#
941# CONFIG_VIDEO_UPD64031A is not set
942# CONFIG_VIDEO_UPD64083 is not set
943# CONFIG_VIDEO_SAA5246A is not set
944# CONFIG_VIDEO_SAA5249 is not set
945# CONFIG_VIDEO_PPI_GENERIC is not set
946CONFIG_VIDEO_BLACKFIN_CAM=m
947# CONFIG_VIDEO_BLACKFIN_MT9M001 is not set
948
949#
950# CMOS Camera Sensor Selection
951#
952# CONFIG_MT9V022 is not set
953# CONFIG_MT9M001 is not set
954# CONFIG_VS6524 is not set
955# CONFIG_VS6624 is not set
956CONFIG_OV9655=y
957# CONFIG_RADIO_ADAPTERS is not set
958# CONFIG_DVB_CORE is not set
959# CONFIG_DAB is not set
960
961#
962# Graphics support
963#
964# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
965
966#
967# Display device support
968#
969# CONFIG_DISPLAY_SUPPORT is not set
970# CONFIG_VGASTATE is not set
971# CONFIG_FB is not set
972
973#
974# Sound
975#
976# CONFIG_SOUND is not set
977
978#
979# HID Devices
980#
981# CONFIG_HID is not set
982
983#
984# USB support
985#
986CONFIG_USB_ARCH_HAS_HCD=y
987# CONFIG_USB_ARCH_HAS_OHCI is not set
988# CONFIG_USB_ARCH_HAS_EHCI is not set
989# CONFIG_USB is not set
990
991#
992# Enable Host or Gadget support to see Inventra options
993#
994
995#
996# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
997#
998
999#
1000# USB Gadget Support
1001#
1002# CONFIG_USB_GADGET is not set
1003# CONFIG_MMC is not set
1004
1005#
1006# LED devices
1007#
1008# CONFIG_NEW_LEDS is not set
1009
1010#
1011# LED drivers
1012#
1013
1014#
1015# LED Triggers
1016#
1017
1018#
1019# InfiniBand support
1020#
1021
1022#
1023# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1024#
1025
1026#
1027# Real Time Clock
1028#
1029# CONFIG_RTC_CLASS is not set
1030
1031#
1032# DMA Engine support
1033#
1034# CONFIG_DMA_ENGINE is not set
1035
1036#
1037# DMA Clients
1038#
1039
1040#
1041# DMA Devices
1042#
1043
1044#
1045# PBX support
1046#
1047# CONFIG_PBX is not set
1048
1049#
1050# File systems
1051#
1052CONFIG_EXT2_FS=y
1053CONFIG_EXT2_FS_XATTR=y
1054# CONFIG_EXT2_FS_POSIX_ACL is not set
1055# CONFIG_EXT2_FS_SECURITY is not set
1056# CONFIG_EXT3_FS is not set
1057# CONFIG_EXT4DEV_FS is not set
1058CONFIG_FS_MBCACHE=y
1059# CONFIG_REISERFS_FS is not set
1060# CONFIG_JFS_FS is not set
1061# CONFIG_FS_POSIX_ACL is not set
1062# CONFIG_XFS_FS is not set
1063# CONFIG_GFS2_FS is not set
1064# CONFIG_OCFS2_FS is not set
1065# CONFIG_MINIX_FS is not set
1066# CONFIG_ROMFS_FS is not set
1067CONFIG_INOTIFY=y
1068CONFIG_INOTIFY_USER=y
1069# CONFIG_QUOTA is not set
1070CONFIG_DNOTIFY=y
1071# CONFIG_AUTOFS_FS is not set
1072# CONFIG_AUTOFS4_FS is not set
1073# CONFIG_FUSE_FS is not set
1074
1075#
1076# CD-ROM/DVD Filesystems
1077#
1078# CONFIG_ISO9660_FS is not set
1079# CONFIG_UDF_FS is not set
1080
1081#
1082# DOS/FAT/NT Filesystems
1083#
1084# CONFIG_MSDOS_FS is not set
1085# CONFIG_VFAT_FS is not set
1086# CONFIG_NTFS_FS is not set
1087
1088#
1089# Pseudo filesystems
1090#
1091CONFIG_PROC_FS=y
1092CONFIG_PROC_SYSCTL=y
1093CONFIG_SYSFS=y
1094# CONFIG_TMPFS is not set
1095# CONFIG_HUGETLB_PAGE is not set
1096CONFIG_RAMFS=y
1097# CONFIG_CONFIGFS_FS is not set
1098
1099#
1100# Miscellaneous filesystems
1101#
1102# CONFIG_ADFS_FS is not set
1103# CONFIG_AFFS_FS is not set
1104# CONFIG_HFS_FS is not set
1105# CONFIG_HFSPLUS_FS is not set
1106# CONFIG_BEFS_FS is not set
1107# CONFIG_BFS_FS is not set
1108# CONFIG_EFS_FS is not set
1109CONFIG_YAFFS_FS=m
1110CONFIG_YAFFS_YAFFS1=y
1111# CONFIG_YAFFS_DOES_ECC is not set
1112CONFIG_YAFFS_YAFFS2=y
1113CONFIG_YAFFS_AUTO_YAFFS2=y
1114# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
1115CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
1116# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
1117# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
1118CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
1119CONFIG_JFFS2_FS=m
1120CONFIG_JFFS2_FS_DEBUG=0
1121CONFIG_JFFS2_FS_WRITEBUFFER=y
1122# CONFIG_JFFS2_SUMMARY is not set
1123# CONFIG_JFFS2_FS_XATTR is not set
1124# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1125CONFIG_JFFS2_ZLIB=y
1126CONFIG_JFFS2_RTIME=y
1127# CONFIG_JFFS2_RUBIN is not set
1128# CONFIG_CRAMFS is not set
1129# CONFIG_VXFS_FS is not set
1130# CONFIG_HPFS_FS is not set
1131# CONFIG_QNX4FS_FS is not set
1132# CONFIG_SYSV_FS is not set
1133# CONFIG_UFS_FS is not set
1134
1135#
1136# Network File Systems
1137#
1138CONFIG_NFS_FS=m
1139CONFIG_NFS_V3=y
1140# CONFIG_NFS_V3_ACL is not set
1141# CONFIG_NFS_V4 is not set
1142# CONFIG_NFS_DIRECTIO is not set
1143# CONFIG_NFSD is not set
1144CONFIG_LOCKD=m
1145CONFIG_LOCKD_V4=y
1146CONFIG_NFS_COMMON=y
1147CONFIG_SUNRPC=m
1148# CONFIG_SUNRPC_BIND34 is not set
1149# CONFIG_RPCSEC_GSS_KRB5 is not set
1150# CONFIG_RPCSEC_GSS_SPKM3 is not set
1151CONFIG_SMB_FS=m
1152# CONFIG_SMB_NLS_DEFAULT is not set
1153# CONFIG_CIFS is not set
1154# CONFIG_NCP_FS is not set
1155# CONFIG_CODA_FS is not set
1156# CONFIG_AFS_FS is not set
1157# CONFIG_9P_FS is not set
1158
1159#
1160# Partition Types
1161#
1162# CONFIG_PARTITION_ADVANCED is not set
1163CONFIG_MSDOS_PARTITION=y
1164
1165#
1166# Native Language Support
1167#
1168CONFIG_NLS=m
1169CONFIG_NLS_DEFAULT="iso8859-1"
1170# CONFIG_NLS_CODEPAGE_437 is not set
1171# CONFIG_NLS_CODEPAGE_737 is not set
1172# CONFIG_NLS_CODEPAGE_775 is not set
1173# CONFIG_NLS_CODEPAGE_850 is not set
1174# CONFIG_NLS_CODEPAGE_852 is not set
1175# CONFIG_NLS_CODEPAGE_855 is not set
1176# CONFIG_NLS_CODEPAGE_857 is not set
1177# CONFIG_NLS_CODEPAGE_860 is not set
1178# CONFIG_NLS_CODEPAGE_861 is not set
1179# CONFIG_NLS_CODEPAGE_862 is not set
1180# CONFIG_NLS_CODEPAGE_863 is not set
1181# CONFIG_NLS_CODEPAGE_864 is not set
1182# CONFIG_NLS_CODEPAGE_865 is not set
1183# CONFIG_NLS_CODEPAGE_866 is not set
1184# CONFIG_NLS_CODEPAGE_869 is not set
1185# CONFIG_NLS_CODEPAGE_936 is not set
1186# CONFIG_NLS_CODEPAGE_950 is not set
1187# CONFIG_NLS_CODEPAGE_932 is not set
1188# CONFIG_NLS_CODEPAGE_949 is not set
1189# CONFIG_NLS_CODEPAGE_874 is not set
1190# CONFIG_NLS_ISO8859_8 is not set
1191# CONFIG_NLS_CODEPAGE_1250 is not set
1192# CONFIG_NLS_CODEPAGE_1251 is not set
1193# CONFIG_NLS_ASCII is not set
1194# CONFIG_NLS_ISO8859_1 is not set
1195# CONFIG_NLS_ISO8859_2 is not set
1196# CONFIG_NLS_ISO8859_3 is not set
1197# CONFIG_NLS_ISO8859_4 is not set
1198# CONFIG_NLS_ISO8859_5 is not set
1199# CONFIG_NLS_ISO8859_6 is not set
1200# CONFIG_NLS_ISO8859_7 is not set
1201# CONFIG_NLS_ISO8859_9 is not set
1202# CONFIG_NLS_ISO8859_13 is not set
1203# CONFIG_NLS_ISO8859_14 is not set
1204# CONFIG_NLS_ISO8859_15 is not set
1205# CONFIG_NLS_KOI8_R is not set
1206# CONFIG_NLS_KOI8_U is not set
1207# CONFIG_NLS_UTF8 is not set
1208
1209#
1210# Distributed Lock Manager
1211#
1212# CONFIG_DLM is not set
1213
1214#
1215# Profiling support
1216#
1217# CONFIG_PROFILING is not set
1218
1219#
1220# Kernel hacking
1221#
1222# CONFIG_PRINTK_TIME is not set
1223CONFIG_ENABLE_MUST_CHECK=y
1224# CONFIG_MAGIC_SYSRQ is not set
1225# CONFIG_UNUSED_SYMBOLS is not set
1226# CONFIG_DEBUG_FS is not set
1227# CONFIG_HEADERS_CHECK is not set
1228CONFIG_DEBUG_KERNEL=y
1229# CONFIG_DEBUG_SHIRQ is not set
1230CONFIG_DETECT_SOFTLOCKUP=y
1231# CONFIG_SCHEDSTATS is not set
1232# CONFIG_TIMER_STATS is not set
1233# CONFIG_DEBUG_SLAB is not set
1234# CONFIG_DEBUG_RT_MUTEXES is not set
1235# CONFIG_RT_MUTEX_TESTER is not set
1236# CONFIG_DEBUG_SPINLOCK is not set
1237# CONFIG_DEBUG_MUTEXES is not set
1238# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1239# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1240# CONFIG_DEBUG_KOBJECT is not set
1241# CONFIG_DEBUG_BUGVERBOSE is not set
1242CONFIG_DEBUG_INFO=y
1243# CONFIG_DEBUG_VM is not set
1244# CONFIG_DEBUG_LIST is not set
1245# CONFIG_FRAME_POINTER is not set
1246# CONFIG_FORCED_INLINING is not set
1247# CONFIG_RCU_TORTURE_TEST is not set
1248# CONFIG_FAULT_INJECTION is not set
1249# CONFIG_DEBUG_MMRS is not set
1250# CONFIG_DEBUG_HWERR is not set
1251CONFIG_DEBUG_HUNT_FOR_ZERO=y
1252CONFIG_DEBUG_BFIN_HWTRACE_ON=y
1253CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF=y
1254# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE is not set
1255# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_TWO is not set
1256CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0
1257# CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set
1258# CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE is not set
1259# CONFIG_EARLY_PRINTK is not set
1260CONFIG_CPLB_INFO=y
1261CONFIG_ACCESS_CHECK=y
1262
1263#
1264# Security options
1265#
1266# CONFIG_KEYS is not set
1267CONFIG_SECURITY=y
1268# CONFIG_SECURITY_NETWORK is not set
1269CONFIG_SECURITY_CAPABILITIES=y
1270
1271#
1272# Cryptographic options
1273#
1274# CONFIG_CRYPTO is not set
1275
1276#
1277# Library routines
1278#
1279CONFIG_BITREVERSE=y
1280CONFIG_CRC_CCITT=m
1281# CONFIG_CRC16 is not set
1282# CONFIG_CRC_ITU_T is not set
1283CONFIG_CRC32=y
1284# CONFIG_LIBCRC32C is not set
1285CONFIG_ZLIB_INFLATE=y
1286CONFIG_ZLIB_DEFLATE=m
1287CONFIG_PLIST=y
1288CONFIG_HAS_IOMEM=y
1289CONFIG_HAS_IOPORT=y
1290CONFIG_HAS_DMA=y
diff --git a/arch/blackfin/kernel/Makefile b/arch/blackfin/kernel/Makefile
index 318b9b692a48..6140cd69c782 100644
--- a/arch/blackfin/kernel/Makefile
+++ b/arch/blackfin/kernel/Makefile
@@ -6,9 +6,15 @@ extra-y := init_task.o vmlinux.lds
6 6
7obj-y := \ 7obj-y := \
8 entry.o process.o bfin_ksyms.o ptrace.o setup.o signal.o \ 8 entry.o process.o bfin_ksyms.o ptrace.o setup.o signal.o \
9 sys_bfin.o time.o traps.o irqchip.o dma-mapping.o flat.o \ 9 sys_bfin.o traps.o irqchip.o dma-mapping.o flat.o \
10 fixed_code.o reboot.o bfin_gpio.o 10 fixed_code.o reboot.o bfin_gpio.o
11 11
12ifeq ($(CONFIG_GENERIC_CLOCKEVENTS),y)
13 obj-y += time-ts.o
14else
15 obj-y += time.o
16endif
17
12obj-$(CONFIG_BFIN_GPTIMERS) += gptimers.o 18obj-$(CONFIG_BFIN_GPTIMERS) += gptimers.o
13obj-$(CONFIG_MODULES) += module.o 19obj-$(CONFIG_MODULES) += module.o
14obj-$(CONFIG_BFIN_DMA_5XX) += bfin_dma_5xx.o 20obj-$(CONFIG_BFIN_DMA_5XX) += bfin_dma_5xx.o
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c
index 8fd5d22cec34..fd5448d6107c 100644
--- a/arch/blackfin/kernel/bfin_dma_5xx.c
+++ b/arch/blackfin/kernel/bfin_dma_5xx.c
@@ -67,7 +67,7 @@ static int __init blackfin_dma_init(void)
67 67
68 for (i = 0; i < MAX_BLACKFIN_DMA_CHANNEL; i++) { 68 for (i = 0; i < MAX_BLACKFIN_DMA_CHANNEL; i++) {
69 dma_ch[i].chan_status = DMA_CHANNEL_FREE; 69 dma_ch[i].chan_status = DMA_CHANNEL_FREE;
70 dma_ch[i].regs = base_addr[i]; 70 dma_ch[i].regs = dma_io_base_addr[i];
71 mutex_init(&(dma_ch[i].dmalock)); 71 mutex_init(&(dma_ch[i].dmalock));
72 } 72 }
73 /* Mark MEMDMA Channel 0 as requested since we're using it internally */ 73 /* Mark MEMDMA Channel 0 as requested since we're using it internally */
@@ -106,12 +106,15 @@ int request_dma(unsigned int channel, char *device_id)
106 106
107#ifdef CONFIG_BF54x 107#ifdef CONFIG_BF54x
108 if (channel >= CH_UART2_RX && channel <= CH_UART3_TX) { 108 if (channel >= CH_UART2_RX && channel <= CH_UART3_TX) {
109 if (strncmp(device_id, "BFIN_UART", 9) == 0) 109 if (strncmp(device_id, "BFIN_UART", 9) == 0) {
110 dma_ch[channel].regs->peripheral_map &= 0x0FFF;
110 dma_ch[channel].regs->peripheral_map |= 111 dma_ch[channel].regs->peripheral_map |=
111 (channel - CH_UART2_RX + 0xC); 112 ((channel - CH_UART2_RX + 0xC)<<12);
112 else 113 } else {
114 dma_ch[channel].regs->peripheral_map &= 0x0FFF;
113 dma_ch[channel].regs->peripheral_map |= 115 dma_ch[channel].regs->peripheral_map |=
114 (channel - CH_UART2_RX + 0x6); 116 ((channel - CH_UART2_RX + 0x6)<<12);
117 }
115 } 118 }
116#endif 119#endif
117 120
diff --git a/arch/blackfin/kernel/bfin_gpio.c b/arch/blackfin/kernel/bfin_gpio.c
index 08788f7bbfba..7e8eaf4a31bb 100644
--- a/arch/blackfin/kernel/bfin_gpio.c
+++ b/arch/blackfin/kernel/bfin_gpio.c
@@ -95,14 +95,14 @@ enum {
95 AWA_data_clear = SYSCR, 95 AWA_data_clear = SYSCR,
96 AWA_data_set = SYSCR, 96 AWA_data_set = SYSCR,
97 AWA_toggle = SYSCR, 97 AWA_toggle = SYSCR,
98 AWA_maska = UART_SCR, 98 AWA_maska = BFIN_UART_SCR,
99 AWA_maska_clear = UART_SCR, 99 AWA_maska_clear = BFIN_UART_SCR,
100 AWA_maska_set = UART_SCR, 100 AWA_maska_set = BFIN_UART_SCR,
101 AWA_maska_toggle = UART_SCR, 101 AWA_maska_toggle = BFIN_UART_SCR,
102 AWA_maskb = UART_GCTL, 102 AWA_maskb = BFIN_UART_GCTL,
103 AWA_maskb_clear = UART_GCTL, 103 AWA_maskb_clear = BFIN_UART_GCTL,
104 AWA_maskb_set = UART_GCTL, 104 AWA_maskb_set = BFIN_UART_GCTL,
105 AWA_maskb_toggle = UART_GCTL, 105 AWA_maskb_toggle = BFIN_UART_GCTL,
106 AWA_dir = SPORT1_STAT, 106 AWA_dir = SPORT1_STAT,
107 AWA_polar = SPORT1_STAT, 107 AWA_polar = SPORT1_STAT,
108 AWA_edge = SPORT1_STAT, 108 AWA_edge = SPORT1_STAT,
@@ -348,11 +348,10 @@ static void portmux_setup(unsigned short per, unsigned short function)
348 offset = port_mux_lut[y].offset; 348 offset = port_mux_lut[y].offset;
349 muxreg = bfin_read_PORT_MUX(); 349 muxreg = bfin_read_PORT_MUX();
350 350
351 if (offset != 1) { 351 if (offset != 1)
352 muxreg &= ~(1 << offset); 352 muxreg &= ~(1 << offset);
353 } else { 353 else
354 muxreg &= ~(3 << 1); 354 muxreg &= ~(3 << 1);
355 }
356 355
357 muxreg |= (function << offset); 356 muxreg |= (function << offset);
358 bfin_write_PORT_MUX(muxreg); 357 bfin_write_PORT_MUX(muxreg);
@@ -396,39 +395,11 @@ inline void portmux_setup(unsigned short portno, unsigned short function)
396# define portmux_setup(...) do { } while (0) 395# define portmux_setup(...) do { } while (0)
397#endif 396#endif
398 397
399#ifndef BF548_FAMILY
400static void default_gpio(unsigned gpio)
401{
402 unsigned short bank, bitmask;
403 unsigned long flags;
404
405 bank = gpio_bank(gpio);
406 bitmask = gpio_bit(gpio);
407
408 local_irq_save(flags);
409
410 gpio_bankb[bank]->maska_clear = bitmask;
411 gpio_bankb[bank]->maskb_clear = bitmask;
412 SSYNC();
413 gpio_bankb[bank]->inen &= ~bitmask;
414 gpio_bankb[bank]->dir &= ~bitmask;
415 gpio_bankb[bank]->polar &= ~bitmask;
416 gpio_bankb[bank]->both &= ~bitmask;
417 gpio_bankb[bank]->edge &= ~bitmask;
418 AWA_DUMMY_READ(edge);
419 local_irq_restore(flags);
420}
421#else
422# define default_gpio(...) do { } while (0)
423#endif
424
425static int __init bfin_gpio_init(void) 398static int __init bfin_gpio_init(void)
426{ 399{
427
428 printk(KERN_INFO "Blackfin GPIO Controller\n"); 400 printk(KERN_INFO "Blackfin GPIO Controller\n");
429 401
430 return 0; 402 return 0;
431
432} 403}
433arch_initcall(bfin_gpio_init); 404arch_initcall(bfin_gpio_init);
434 405
@@ -821,10 +792,10 @@ int peripheral_request(unsigned short per, const char *label)
821 local_irq_save(flags); 792 local_irq_save(flags);
822 793
823 if (unlikely(reserved_gpio_map[gpio_bank(ident)] & gpio_bit(ident))) { 794 if (unlikely(reserved_gpio_map[gpio_bank(ident)] & gpio_bit(ident))) {
795 dump_stack();
824 printk(KERN_ERR 796 printk(KERN_ERR
825 "%s: Peripheral %d is already reserved as GPIO by %s !\n", 797 "%s: Peripheral %d is already reserved as GPIO by %s !\n",
826 __FUNCTION__, ident, get_label(ident)); 798 __func__, ident, get_label(ident));
827 dump_stack();
828 local_irq_restore(flags); 799 local_irq_restore(flags);
829 return -EBUSY; 800 return -EBUSY;
830 } 801 }
@@ -833,31 +804,31 @@ int peripheral_request(unsigned short per, const char *label)
833 804
834 u16 funct = get_portmux(ident); 805 u16 funct = get_portmux(ident);
835 806
836 /* 807 /*
837 * Pin functions like AMC address strobes my 808 * Pin functions like AMC address strobes my
838 * be requested and used by several drivers 809 * be requested and used by several drivers
839 */ 810 */
840 811
841 if (!((per & P_MAYSHARE) && (funct == P_FUNCT2MUX(per)))) { 812 if (!((per & P_MAYSHARE) && (funct == P_FUNCT2MUX(per)))) {
842 813
843 /* 814 /*
844 * Allow that the identical pin function can 815 * Allow that the identical pin function can
845 * be requested from the same driver twice 816 * be requested from the same driver twice
846 */ 817 */
847 818
848 if (cmp_label(ident, label) == 0) 819 if (cmp_label(ident, label) == 0)
849 goto anyway; 820 goto anyway;
850 821
822 dump_stack();
851 printk(KERN_ERR 823 printk(KERN_ERR
852 "%s: Peripheral %d function %d is already reserved by %s !\n", 824 "%s: Peripheral %d function %d is already reserved by %s !\n",
853 __FUNCTION__, ident, P_FUNCT2MUX(per), get_label(ident)); 825 __func__, ident, P_FUNCT2MUX(per), get_label(ident));
854 dump_stack();
855 local_irq_restore(flags); 826 local_irq_restore(flags);
856 return -EBUSY; 827 return -EBUSY;
857 } 828 }
858 } 829 }
859 830
860anyway: 831 anyway:
861 reserved_peri_map[gpio_bank(ident)] |= gpio_bit(ident); 832 reserved_peri_map[gpio_bank(ident)] |= gpio_bit(ident);
862 833
863 portmux_setup(ident, P_FUNCT2MUX(per)); 834 portmux_setup(ident, P_FUNCT2MUX(per));
@@ -890,47 +861,47 @@ int peripheral_request(unsigned short per, const char *label)
890 861
891 if (!check_gpio(ident)) { 862 if (!check_gpio(ident)) {
892 863
893 if (unlikely(reserved_gpio_map[gpio_bank(ident)] & gpio_bit(ident))) { 864 if (unlikely(reserved_gpio_map[gpio_bank(ident)] & gpio_bit(ident))) {
894 printk(KERN_ERR 865 dump_stack();
895 "%s: Peripheral %d is already reserved as GPIO by %s !\n", 866 printk(KERN_ERR
896 __FUNCTION__, ident, get_label(ident)); 867 "%s: Peripheral %d is already reserved as GPIO by %s !\n",
897 dump_stack(); 868 __func__, ident, get_label(ident));
898 local_irq_restore(flags); 869 local_irq_restore(flags);
899 return -EBUSY; 870 return -EBUSY;
900 } 871 }
901 872
902 } 873 }
903 874
904 if (unlikely(reserved_peri_map[gpio_bank(ident)] & gpio_bit(ident))) { 875 if (unlikely(reserved_peri_map[gpio_bank(ident)] & gpio_bit(ident))) {
905 876
906 /* 877 /*
907 * Pin functions like AMC address strobes my 878 * Pin functions like AMC address strobes my
908 * be requested and used by several drivers 879 * be requested and used by several drivers
909 */ 880 */
910 881
911 if (!(per & P_MAYSHARE)) { 882 if (!(per & P_MAYSHARE)) {
912 883
913 /* 884 /*
914 * Allow that the identical pin function can 885 * Allow that the identical pin function can
915 * be requested from the same driver twice 886 * be requested from the same driver twice
916 */ 887 */
917 888
918 if (cmp_label(ident, label) == 0) 889 if (cmp_label(ident, label) == 0)
919 goto anyway; 890 goto anyway;
920 891
892 dump_stack();
921 printk(KERN_ERR 893 printk(KERN_ERR
922 "%s: Peripheral %d function %d is already" 894 "%s: Peripheral %d function %d is already"
923 " reserved by %s !\n", 895 " reserved by %s !\n",
924 __FUNCTION__, ident, P_FUNCT2MUX(per), 896 __func__, ident, P_FUNCT2MUX(per),
925 get_label(ident)); 897 get_label(ident));
926 dump_stack();
927 local_irq_restore(flags); 898 local_irq_restore(flags);
928 return -EBUSY; 899 return -EBUSY;
929 } 900 }
930 901
931 } 902 }
932 903
933anyway: 904 anyway:
934 portmux_setup(per, P_FUNCT2MUX(per)); 905 portmux_setup(per, P_FUNCT2MUX(per));
935 906
936 port_setup(ident, PERIPHERAL_USAGE); 907 port_setup(ident, PERIPHERAL_USAGE);
@@ -944,7 +915,7 @@ anyway:
944EXPORT_SYMBOL(peripheral_request); 915EXPORT_SYMBOL(peripheral_request);
945#endif 916#endif
946 917
947int peripheral_request_list(unsigned short per[], const char *label) 918int peripheral_request_list(const unsigned short per[], const char *label)
948{ 919{
949 u16 cnt; 920 u16 cnt;
950 int ret; 921 int ret;
@@ -954,10 +925,10 @@ int peripheral_request_list(unsigned short per[], const char *label)
954 ret = peripheral_request(per[cnt], label); 925 ret = peripheral_request(per[cnt], label);
955 926
956 if (ret < 0) { 927 if (ret < 0) {
957 for ( ; cnt > 0; cnt--) { 928 for ( ; cnt > 0; cnt--)
958 peripheral_free(per[cnt - 1]); 929 peripheral_free(per[cnt - 1]);
959 } 930
960 return ret; 931 return ret;
961 } 932 }
962 } 933 }
963 934
@@ -981,15 +952,13 @@ void peripheral_free(unsigned short per)
981 952
982 local_irq_save(flags); 953 local_irq_save(flags);
983 954
984 if (unlikely(!(reserved_peri_map[gpio_bank(ident)] 955 if (unlikely(!(reserved_peri_map[gpio_bank(ident)] & gpio_bit(ident)))) {
985 & gpio_bit(ident)))) {
986 local_irq_restore(flags); 956 local_irq_restore(flags);
987 return; 957 return;
988 } 958 }
989 959
990 if (!(per & P_MAYSHARE)) { 960 if (!(per & P_MAYSHARE))
991 port_setup(ident, GPIO_USAGE); 961 port_setup(ident, GPIO_USAGE);
992 }
993 962
994 reserved_peri_map[gpio_bank(ident)] &= ~gpio_bit(ident); 963 reserved_peri_map[gpio_bank(ident)] &= ~gpio_bit(ident);
995 964
@@ -999,14 +968,11 @@ void peripheral_free(unsigned short per)
999} 968}
1000EXPORT_SYMBOL(peripheral_free); 969EXPORT_SYMBOL(peripheral_free);
1001 970
1002void peripheral_free_list(unsigned short per[]) 971void peripheral_free_list(const unsigned short per[])
1003{ 972{
1004 u16 cnt; 973 u16 cnt;
1005 974 for (cnt = 0; per[cnt] != 0; cnt++)
1006 for (cnt = 0; per[cnt] != 0; cnt++) {
1007 peripheral_free(per[cnt]); 975 peripheral_free(per[cnt]);
1008 }
1009
1010} 976}
1011EXPORT_SYMBOL(peripheral_free_list); 977EXPORT_SYMBOL(peripheral_free_list);
1012 978
@@ -1046,17 +1012,17 @@ int gpio_request(unsigned gpio, const char *label)
1046 } 1012 }
1047 1013
1048 if (unlikely(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) { 1014 if (unlikely(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
1015 dump_stack();
1049 printk(KERN_ERR "bfin-gpio: GPIO %d is already reserved by %s !\n", 1016 printk(KERN_ERR "bfin-gpio: GPIO %d is already reserved by %s !\n",
1050 gpio, get_label(gpio)); 1017 gpio, get_label(gpio));
1051 dump_stack();
1052 local_irq_restore(flags); 1018 local_irq_restore(flags);
1053 return -EBUSY; 1019 return -EBUSY;
1054 } 1020 }
1055 if (unlikely(reserved_peri_map[gpio_bank(gpio)] & gpio_bit(gpio))) { 1021 if (unlikely(reserved_peri_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
1022 dump_stack();
1056 printk(KERN_ERR 1023 printk(KERN_ERR
1057 "bfin-gpio: GPIO %d is already reserved as Peripheral by %s !\n", 1024 "bfin-gpio: GPIO %d is already reserved as Peripheral by %s !\n",
1058 gpio, get_label(gpio)); 1025 gpio, get_label(gpio));
1059 dump_stack();
1060 local_irq_restore(flags); 1026 local_irq_restore(flags);
1061 return -EBUSY; 1027 return -EBUSY;
1062 } 1028 }
@@ -1082,14 +1048,12 @@ void gpio_free(unsigned gpio)
1082 local_irq_save(flags); 1048 local_irq_save(flags);
1083 1049
1084 if (unlikely(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio)))) { 1050 if (unlikely(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio)))) {
1085 gpio_error(gpio);
1086 dump_stack(); 1051 dump_stack();
1052 gpio_error(gpio);
1087 local_irq_restore(flags); 1053 local_irq_restore(flags);
1088 return; 1054 return;
1089 } 1055 }
1090 1056
1091 default_gpio(gpio);
1092
1093 reserved_gpio_map[gpio_bank(gpio)] &= ~gpio_bit(gpio); 1057 reserved_gpio_map[gpio_bank(gpio)] &= ~gpio_bit(gpio);
1094 1058
1095 set_label(gpio, "free"); 1059 set_label(gpio, "free");
@@ -1152,6 +1116,18 @@ int gpio_get_value(unsigned gpio)
1152} 1116}
1153EXPORT_SYMBOL(gpio_get_value); 1117EXPORT_SYMBOL(gpio_get_value);
1154 1118
1119void bfin_gpio_irq_prepare(unsigned gpio)
1120{
1121 unsigned long flags;
1122
1123 port_setup(gpio, GPIO_USAGE);
1124
1125 local_irq_save(flags);
1126 gpio_array[gpio_bank(gpio)]->port_dir_clear = gpio_bit(gpio);
1127 gpio_array[gpio_bank(gpio)]->port_inen |= gpio_bit(gpio);
1128 local_irq_restore(flags);
1129}
1130
1155#else 1131#else
1156 1132
1157int gpio_direction_input(unsigned gpio) 1133int gpio_direction_input(unsigned gpio)
@@ -1218,6 +1194,11 @@ void bfin_gpio_reset_spi0_ssel1(void)
1218 udelay(1); 1194 udelay(1);
1219} 1195}
1220 1196
1197void bfin_gpio_irq_prepare(unsigned gpio)
1198{
1199 port_setup(gpio, GPIO_USAGE);
1200}
1201
1221#endif /*BF548_FAMILY */ 1202#endif /*BF548_FAMILY */
1222 1203
1223#if defined(CONFIG_PROC_FS) 1204#if defined(CONFIG_PROC_FS)
diff --git a/arch/blackfin/kernel/cplb-mpu/cplbinfo.c b/arch/blackfin/kernel/cplb-mpu/cplbinfo.c
index bd072299f7f2..822beefa3a4b 100644
--- a/arch/blackfin/kernel/cplb-mpu/cplbinfo.c
+++ b/arch/blackfin/kernel/cplb-mpu/cplbinfo.c
@@ -39,14 +39,6 @@
39#include <asm/cplbinit.h> 39#include <asm/cplbinit.h>
40#include <asm/blackfin.h> 40#include <asm/blackfin.h>
41 41
42#define CPLB_I 1
43#define CPLB_D 2
44
45#define SYNC_SYS SSYNC()
46#define SYNC_CORE CSYNC()
47
48#define CPLB_BIT_PAGESIZE 0x30000
49
50static char page_size_string_table[][4] = { "1K", "4K", "1M", "4M" }; 42static char page_size_string_table[][4] = { "1K", "4K", "1M", "4M" };
51 43
52static char *cplb_print_entry(char *buf, struct cplb_entry *tbl, int switched) 44static char *cplb_print_entry(char *buf, struct cplb_entry *tbl, int switched)
diff --git a/arch/blackfin/kernel/cplb-mpu/cplbinit.c b/arch/blackfin/kernel/cplb-mpu/cplbinit.c
index dc6e8a7a8bda..48060105346a 100644
--- a/arch/blackfin/kernel/cplb-mpu/cplbinit.c
+++ b/arch/blackfin/kernel/cplb-mpu/cplbinit.c
@@ -43,13 +43,15 @@ void __init generate_cpl_tables(void)
43 unsigned long d_data, i_data; 43 unsigned long d_data, i_data;
44 unsigned long d_cache = 0, i_cache = 0; 44 unsigned long d_cache = 0, i_cache = 0;
45 45
46 printk(KERN_INFO "MPU: setting up cplb tables with memory protection\n");
47
46#ifdef CONFIG_BFIN_ICACHE 48#ifdef CONFIG_BFIN_ICACHE
47 i_cache = CPLB_L1_CHBL | ANOMALY_05000158_WORKAROUND; 49 i_cache = CPLB_L1_CHBL | ANOMALY_05000158_WORKAROUND;
48#endif 50#endif
49 51
50#ifdef CONFIG_BFIN_DCACHE 52#ifdef CONFIG_BFIN_DCACHE
51 d_cache = CPLB_L1_CHBL; 53 d_cache = CPLB_L1_CHBL;
52#ifdef CONFIG_BLKFIN_WT 54#ifdef CONFIG_BFIN_WT
53 d_cache |= CPLB_L1_AOW | CPLB_WT; 55 d_cache |= CPLB_L1_AOW | CPLB_WT;
54#endif 56#endif
55#endif 57#endif
diff --git a/arch/blackfin/kernel/cplb-mpu/cplbmgr.c b/arch/blackfin/kernel/cplb-mpu/cplbmgr.c
index c426a22f9907..99f2831e2964 100644
--- a/arch/blackfin/kernel/cplb-mpu/cplbmgr.c
+++ b/arch/blackfin/kernel/cplb-mpu/cplbmgr.c
@@ -24,8 +24,6 @@
24#include <asm/cplbinit.h> 24#include <asm/cplbinit.h>
25#include <asm/mmu_context.h> 25#include <asm/mmu_context.h>
26 26
27#ifdef CONFIG_BFIN_ICACHE
28
29#define FAULT_RW (1 << 16) 27#define FAULT_RW (1 << 16)
30#define FAULT_USERSUPV (1 << 17) 28#define FAULT_USERSUPV (1 << 17)
31 29
@@ -143,30 +141,48 @@ static noinline int dcplb_miss(void)
143 unsigned long d_data; 141 unsigned long d_data;
144 142
145 nr_dcplb_miss++; 143 nr_dcplb_miss++;
146 if (addr >= _ramend)
147 return CPLB_PROT_VIOL;
148 144
149 d_data = CPLB_SUPV_WR | CPLB_VALID | CPLB_DIRTY | PAGE_SIZE_4KB; 145 d_data = CPLB_SUPV_WR | CPLB_VALID | CPLB_DIRTY | PAGE_SIZE_4KB;
150#ifdef CONFIG_BFIN_DCACHE 146#ifdef CONFIG_BFIN_DCACHE
151 d_data |= CPLB_L1_CHBL | ANOMALY_05000158_WORKAROUND; 147 if (addr < _ramend - DMA_UNCACHED_REGION ||
152#ifdef CONFIG_BLKFIN_WT 148 (reserved_mem_dcache_on && addr >= _ramend &&
153 d_data |= CPLB_L1_AOW | CPLB_WT; 149 addr < physical_mem_end)) {
154#endif 150 d_data |= CPLB_L1_CHBL | ANOMALY_05000158_WORKAROUND;
151#ifdef CONFIG_BFIN_WT
152 d_data |= CPLB_L1_AOW | CPLB_WT;
155#endif 153#endif
156 mask = current_rwx_mask;
157 if (mask) {
158 int page = addr >> PAGE_SHIFT;
159 int offs = page >> 5;
160 int bit = 1 << (page & 31);
161
162 if (mask[offs] & bit)
163 d_data |= CPLB_USER_RD;
164
165 mask += page_mask_nelts;
166 if (mask[offs] & bit)
167 d_data |= CPLB_USER_WR;
168 } 154 }
155#endif
156 if (addr >= physical_mem_end) {
157 if (addr >= ASYNC_BANK0_BASE && addr < ASYNC_BANK3_BASE + ASYNC_BANK3_SIZE
158 && (status & FAULT_USERSUPV)) {
159 addr &= ~0x3fffff;
160 d_data &= ~PAGE_SIZE_4KB;
161 d_data |= PAGE_SIZE_4MB;
162 } else if (addr >= BOOT_ROM_START && addr < BOOT_ROM_START + BOOT_ROM_LENGTH
163 && (status & (FAULT_RW | FAULT_USERSUPV)) == FAULT_USERSUPV) {
164 addr &= ~(1 * 1024 * 1024 - 1);
165 d_data &= ~PAGE_SIZE_4KB;
166 d_data |= PAGE_SIZE_1MB;
167 } else
168 return CPLB_PROT_VIOL;
169 } else if (addr >= _ramend) {
170 d_data |= CPLB_USER_RD | CPLB_USER_WR;
171 } else {
172 mask = current_rwx_mask;
173 if (mask) {
174 int page = addr >> PAGE_SHIFT;
175 int offs = page >> 5;
176 int bit = 1 << (page & 31);
177
178 if (mask[offs] & bit)
179 d_data |= CPLB_USER_RD;
169 180
181 mask += page_mask_nelts;
182 if (mask[offs] & bit)
183 d_data |= CPLB_USER_WR;
184 }
185 }
170 idx = evict_one_dcplb(); 186 idx = evict_one_dcplb();
171 187
172 addr &= PAGE_MASK; 188 addr &= PAGE_MASK;
@@ -189,12 +205,14 @@ static noinline int icplb_miss(void)
189 unsigned long i_data; 205 unsigned long i_data;
190 206
191 nr_icplb_miss++; 207 nr_icplb_miss++;
192 if (status & FAULT_USERSUPV)
193 nr_icplb_supv_miss++;
194 208
195 if (addr >= _ramend) 209 /* If inside the uncached DMA region, fault. */
210 if (addr >= _ramend - DMA_UNCACHED_REGION && addr < _ramend)
196 return CPLB_PROT_VIOL; 211 return CPLB_PROT_VIOL;
197 212
213 if (status & FAULT_USERSUPV)
214 nr_icplb_supv_miss++;
215
198 /* 216 /*
199 * First, try to find a CPLB that matches this address. If we 217 * First, try to find a CPLB that matches this address. If we
200 * find one, then the fact that we're in the miss handler means 218 * find one, then the fact that we're in the miss handler means
@@ -211,30 +229,48 @@ static noinline int icplb_miss(void)
211 } 229 }
212 230
213 i_data = CPLB_VALID | CPLB_PORTPRIO | PAGE_SIZE_4KB; 231 i_data = CPLB_VALID | CPLB_PORTPRIO | PAGE_SIZE_4KB;
214#ifdef CONFIG_BFIN_ICACHE
215 i_data |= CPLB_L1_CHBL | ANOMALY_05000158_WORKAROUND;
216#endif
217 232
233#ifdef CONFIG_BFIN_ICACHE
218 /* 234 /*
219 * Two cases to distinguish - a supervisor access must necessarily 235 * Normal RAM, and possibly the reserved memory area, are
220 * be for a module page; we grant it unconditionally (could do better 236 * cacheable.
221 * here in the future). Otherwise, check the x bitmap of the current
222 * process.
223 */ 237 */
224 if (!(status & FAULT_USERSUPV)) { 238 if (addr < _ramend ||
225 unsigned long *mask = current_rwx_mask; 239 (addr < physical_mem_end && reserved_mem_icache_on))
226 240 i_data |= CPLB_L1_CHBL | ANOMALY_05000158_WORKAROUND;
227 if (mask) { 241#endif
228 int page = addr >> PAGE_SHIFT;
229 int offs = page >> 5;
230 int bit = 1 << (page & 31);
231 242
232 mask += 2 * page_mask_nelts; 243 if (addr >= physical_mem_end) {
233 if (mask[offs] & bit) 244 if (addr >= BOOT_ROM_START && addr < BOOT_ROM_START + BOOT_ROM_LENGTH
234 i_data |= CPLB_USER_RD; 245 && (status & FAULT_USERSUPV)) {
246 addr &= ~(1 * 1024 * 1024 - 1);
247 i_data &= ~PAGE_SIZE_4KB;
248 i_data |= PAGE_SIZE_1MB;
249 } else
250 return CPLB_PROT_VIOL;
251 } else if (addr >= _ramend) {
252 i_data |= CPLB_USER_RD;
253 } else {
254 /*
255 * Two cases to distinguish - a supervisor access must
256 * necessarily be for a module page; we grant it
257 * unconditionally (could do better here in the future).
258 * Otherwise, check the x bitmap of the current process.
259 */
260 if (!(status & FAULT_USERSUPV)) {
261 unsigned long *mask = current_rwx_mask;
262
263 if (mask) {
264 int page = addr >> PAGE_SHIFT;
265 int offs = page >> 5;
266 int bit = 1 << (page & 31);
267
268 mask += 2 * page_mask_nelts;
269 if (mask[offs] & bit)
270 i_data |= CPLB_USER_RD;
271 }
235 } 272 }
236 } 273 }
237
238 idx = evict_one_icplb(); 274 idx = evict_one_icplb();
239 addr &= PAGE_MASK; 275 addr &= PAGE_MASK;
240 icplb_tbl[idx].addr = addr; 276 icplb_tbl[idx].addr = addr;
@@ -250,7 +286,6 @@ static noinline int icplb_miss(void)
250 286
251static noinline int dcplb_protection_fault(void) 287static noinline int dcplb_protection_fault(void)
252{ 288{
253 unsigned long addr = bfin_read_DCPLB_FAULT_ADDR();
254 int status = bfin_read_DCPLB_STATUS(); 289 int status = bfin_read_DCPLB_STATUS();
255 290
256 nr_dcplb_prot++; 291 nr_dcplb_prot++;
@@ -280,8 +315,7 @@ int cplb_hdr(int seqstat, struct pt_regs *regs)
280 case 0x26: 315 case 0x26:
281 return dcplb_miss(); 316 return dcplb_miss();
282 default: 317 default:
283 return 1; 318 return 1;
284 panic_cplb_error(seqstat, regs);
285 } 319 }
286} 320}
287 321
@@ -299,7 +333,7 @@ void flush_switched_cplbs(void)
299 enable_icplb(); 333 enable_icplb();
300 334
301 disable_dcplb(); 335 disable_dcplb();
302 for (i = first_mask_dcplb; i < MAX_CPLBS; i++) { 336 for (i = first_switched_dcplb; i < MAX_CPLBS; i++) {
303 dcplb_tbl[i].data = 0; 337 dcplb_tbl[i].data = 0;
304 bfin_write32(DCPLB_DATA0 + i * 4, 0); 338 bfin_write32(DCPLB_DATA0 + i * 4, 0);
305 } 339 }
@@ -319,7 +353,7 @@ void set_mask_dcplbs(unsigned long *masks)
319 d_data = CPLB_SUPV_WR | CPLB_VALID | CPLB_DIRTY | PAGE_SIZE_4KB; 353 d_data = CPLB_SUPV_WR | CPLB_VALID | CPLB_DIRTY | PAGE_SIZE_4KB;
320#ifdef CONFIG_BFIN_DCACHE 354#ifdef CONFIG_BFIN_DCACHE
321 d_data |= CPLB_L1_CHBL; 355 d_data |= CPLB_L1_CHBL;
322#ifdef CONFIG_BLKFIN_WT 356#ifdef CONFIG_BFIN_WT
323 d_data |= CPLB_L1_AOW | CPLB_WT; 357 d_data |= CPLB_L1_AOW | CPLB_WT;
324#endif 358#endif
325#endif 359#endif
@@ -334,5 +368,3 @@ void set_mask_dcplbs(unsigned long *masks)
334 } 368 }
335 enable_dcplb(); 369 enable_dcplb();
336} 370}
337
338#endif
diff --git a/arch/blackfin/kernel/cplb-nompu/cplbinfo.c b/arch/blackfin/kernel/cplb-nompu/cplbinfo.c
index a4f0b428a34d..1e74f0b97996 100644
--- a/arch/blackfin/kernel/cplb-nompu/cplbinfo.c
+++ b/arch/blackfin/kernel/cplb-nompu/cplbinfo.c
@@ -33,9 +33,7 @@
33#include <linux/proc_fs.h> 33#include <linux/proc_fs.h>
34#include <linux/uaccess.h> 34#include <linux/uaccess.h>
35 35
36#include <asm/current.h> 36#include <asm/cplbinit.h>
37#include <asm/system.h>
38#include <asm/cplb.h>
39#include <asm/blackfin.h> 37#include <asm/blackfin.h>
40 38
41#define CPLB_I 1 39#define CPLB_I 1
@@ -174,16 +172,6 @@ static int cplbinfo_read_proc(char *page, char **start, off_t off,
174 return len; 172 return len;
175} 173}
176 174
177static int cplbinfo_write_proc(struct file *file, const char __user *buffer,
178 unsigned long count, void *data)
179{
180 printk(KERN_INFO "Reset the CPLB swap in/out counts.\n");
181 memset(ipdt_swapcount_table, 0, MAX_SWITCH_I_CPLBS * sizeof(unsigned long));
182 memset(dpdt_swapcount_table, 0, MAX_SWITCH_D_CPLBS * sizeof(unsigned long));
183
184 return count;
185}
186
187static int __init cplbinfo_init(void) 175static int __init cplbinfo_init(void)
188{ 176{
189 struct proc_dir_entry *entry; 177 struct proc_dir_entry *entry;
@@ -193,7 +181,6 @@ static int __init cplbinfo_init(void)
193 return -ENOMEM; 181 return -ENOMEM;
194 182
195 entry->read_proc = cplbinfo_read_proc; 183 entry->read_proc = cplbinfo_read_proc;
196 entry->write_proc = cplbinfo_write_proc;
197 entry->data = NULL; 184 entry->data = NULL;
198 185
199 return 0; 186 return 0;
diff --git a/arch/blackfin/kernel/cplb-nompu/cplbinit.c b/arch/blackfin/kernel/cplb-nompu/cplbinit.c
index 6320bc45fbba..917325bfbd84 100644
--- a/arch/blackfin/kernel/cplb-nompu/cplbinit.c
+++ b/arch/blackfin/kernel/cplb-nompu/cplbinit.c
@@ -26,6 +26,35 @@
26#include <asm/cplb.h> 26#include <asm/cplb.h>
27#include <asm/cplbinit.h> 27#include <asm/cplbinit.h>
28 28
29#ifdef CONFIG_MAX_MEM_SIZE
30# define CPLB_MEM CONFIG_MAX_MEM_SIZE
31#else
32# define CPLB_MEM CONFIG_MEM_SIZE
33#endif
34
35/*
36* Number of required data CPLB switchtable entries
37* MEMSIZE / 4 (we mostly install 4M page size CPLBs
38* approx 16 for smaller 1MB page size CPLBs for allignment purposes
39* 1 for L1 Data Memory
40* possibly 1 for L2 Data Memory
41* 1 for CONFIG_DEBUG_HUNT_FOR_ZERO
42* 1 for ASYNC Memory
43*/
44#define MAX_SWITCH_D_CPLBS (((CPLB_MEM / 4) + 16 + 1 + 1 + 1 \
45 + ASYNC_MEMORY_CPLB_COVERAGE) * 2)
46
47/*
48* Number of required instruction CPLB switchtable entries
49* MEMSIZE / 4 (we mostly install 4M page size CPLBs
50* approx 12 for smaller 1MB page size CPLBs for allignment purposes
51* 1 for L1 Instruction Memory
52* possibly 1 for L2 Instruction Memory
53* 1 for CONFIG_DEBUG_HUNT_FOR_ZERO
54*/
55#define MAX_SWITCH_I_CPLBS (((CPLB_MEM / 4) + 12 + 1 + 1 + 1) * 2)
56
57
29u_long icplb_table[MAX_CPLBS + 1]; 58u_long icplb_table[MAX_CPLBS + 1];
30u_long dcplb_table[MAX_CPLBS + 1]; 59u_long dcplb_table[MAX_CPLBS + 1];
31 60
@@ -295,6 +324,8 @@ void __init generate_cpl_tables(void)
295 struct cplb_tab *t_d = NULL; 324 struct cplb_tab *t_d = NULL;
296 struct s_cplb cplb; 325 struct s_cplb cplb;
297 326
327 printk(KERN_INFO "NOMPU: setting up cplb tables for global access\n");
328
298 cplb.init_i.size = MAX_CPLBS; 329 cplb.init_i.size = MAX_CPLBS;
299 cplb.init_d.size = MAX_CPLBS; 330 cplb.init_d.size = MAX_CPLBS;
300 cplb.switch_i.size = MAX_SWITCH_I_CPLBS; 331 cplb.switch_i.size = MAX_SWITCH_I_CPLBS;
diff --git a/arch/blackfin/kernel/dma-mapping.c b/arch/blackfin/kernel/dma-mapping.c
index d6b61d56b656..2f62a9f4058a 100644
--- a/arch/blackfin/kernel/dma-mapping.c
+++ b/arch/blackfin/kernel/dma-mapping.c
@@ -59,7 +59,7 @@ void dma_alloc_init(unsigned long start, unsigned long end)
59 memset((void *)dma_base, 0, DMA_UNCACHED_REGION); 59 memset((void *)dma_base, 0, DMA_UNCACHED_REGION);
60 dma_initialized = 1; 60 dma_initialized = 1;
61 61
62 printk(KERN_INFO "%s: dma_page @ 0x%p - %d pages at 0x%08lx\n", __FUNCTION__, 62 printk(KERN_INFO "%s: dma_page @ 0x%p - %d pages at 0x%08lx\n", __func__,
63 dma_page, dma_pages, dma_base); 63 dma_page, dma_pages, dma_base);
64} 64}
65 65
@@ -100,7 +100,7 @@ static void __free_dma_pages(unsigned long addr, unsigned int pages)
100 int i; 100 int i;
101 101
102 if ((page + pages) > dma_pages) { 102 if ((page + pages) > dma_pages) {
103 printk(KERN_ERR "%s: freeing outside range.\n", __FUNCTION__); 103 printk(KERN_ERR "%s: freeing outside range.\n", __func__);
104 BUG(); 104 BUG();
105 } 105 }
106 106
diff --git a/arch/blackfin/kernel/gptimers.c b/arch/blackfin/kernel/gptimers.c
index 1904d8b53328..e698554895a7 100644
--- a/arch/blackfin/kernel/gptimers.c
+++ b/arch/blackfin/kernel/gptimers.c
@@ -52,12 +52,14 @@ static volatile GPTIMER_timer_regs *const timer_regs[MAX_BLACKFIN_GPTIMERS] =
52 (GPTIMER_timer_regs *)TIMER5_CONFIG, 52 (GPTIMER_timer_regs *)TIMER5_CONFIG,
53 (GPTIMER_timer_regs *)TIMER6_CONFIG, 53 (GPTIMER_timer_regs *)TIMER6_CONFIG,
54 (GPTIMER_timer_regs *)TIMER7_CONFIG, 54 (GPTIMER_timer_regs *)TIMER7_CONFIG,
55#endif 55# if (MAX_BLACKFIN_GPTIMERS > 8)
56#if (MAX_BLACKFIN_GPTIMERS > 8)
57 (GPTIMER_timer_regs *)TIMER8_CONFIG, 56 (GPTIMER_timer_regs *)TIMER8_CONFIG,
58 (GPTIMER_timer_regs *)TIMER9_CONFIG, 57 (GPTIMER_timer_regs *)TIMER9_CONFIG,
59 (GPTIMER_timer_regs *)TIMER10_CONFIG, 58 (GPTIMER_timer_regs *)TIMER10_CONFIG,
59# if (MAX_BLACKFIN_GPTIMERS > 11)
60 (GPTIMER_timer_regs *)TIMER11_CONFIG, 60 (GPTIMER_timer_regs *)TIMER11_CONFIG,
61# endif
62# endif
61#endif 63#endif
62}; 64};
63 65
@@ -80,12 +82,14 @@ static uint32_t const trun_mask[MAX_BLACKFIN_GPTIMERS] =
80 TIMER_STATUS_TRUN5, 82 TIMER_STATUS_TRUN5,
81 TIMER_STATUS_TRUN6, 83 TIMER_STATUS_TRUN6,
82 TIMER_STATUS_TRUN7, 84 TIMER_STATUS_TRUN7,
83#endif 85# if (MAX_BLACKFIN_GPTIMERS > 8)
84#if (MAX_BLACKFIN_GPTIMERS > 8)
85 TIMER_STATUS_TRUN8, 86 TIMER_STATUS_TRUN8,
86 TIMER_STATUS_TRUN9, 87 TIMER_STATUS_TRUN9,
87 TIMER_STATUS_TRUN10, 88 TIMER_STATUS_TRUN10,
89# if (MAX_BLACKFIN_GPTIMERS > 11)
88 TIMER_STATUS_TRUN11, 90 TIMER_STATUS_TRUN11,
91# endif
92# endif
89#endif 93#endif
90}; 94};
91 95
@@ -100,12 +104,14 @@ static uint32_t const tovf_mask[MAX_BLACKFIN_GPTIMERS] =
100 TIMER_STATUS_TOVF5, 104 TIMER_STATUS_TOVF5,
101 TIMER_STATUS_TOVF6, 105 TIMER_STATUS_TOVF6,
102 TIMER_STATUS_TOVF7, 106 TIMER_STATUS_TOVF7,
103#endif 107# if (MAX_BLACKFIN_GPTIMERS > 8)
104#if (MAX_BLACKFIN_GPTIMERS > 8)
105 TIMER_STATUS_TOVF8, 108 TIMER_STATUS_TOVF8,
106 TIMER_STATUS_TOVF9, 109 TIMER_STATUS_TOVF9,
107 TIMER_STATUS_TOVF10, 110 TIMER_STATUS_TOVF10,
111# if (MAX_BLACKFIN_GPTIMERS > 11)
108 TIMER_STATUS_TOVF11, 112 TIMER_STATUS_TOVF11,
113# endif
114# endif
109#endif 115#endif
110}; 116};
111 117
@@ -120,12 +126,14 @@ static uint32_t const timil_mask[MAX_BLACKFIN_GPTIMERS] =
120 TIMER_STATUS_TIMIL5, 126 TIMER_STATUS_TIMIL5,
121 TIMER_STATUS_TIMIL6, 127 TIMER_STATUS_TIMIL6,
122 TIMER_STATUS_TIMIL7, 128 TIMER_STATUS_TIMIL7,
123#endif 129# if (MAX_BLACKFIN_GPTIMERS > 8)
124#if (MAX_BLACKFIN_GPTIMERS > 8)
125 TIMER_STATUS_TIMIL8, 130 TIMER_STATUS_TIMIL8,
126 TIMER_STATUS_TIMIL9, 131 TIMER_STATUS_TIMIL9,
127 TIMER_STATUS_TIMIL10, 132 TIMER_STATUS_TIMIL10,
133# if (MAX_BLACKFIN_GPTIMERS > 11)
128 TIMER_STATUS_TIMIL11, 134 TIMER_STATUS_TIMIL11,
135# endif
136# endif
129#endif 137#endif
130}; 138};
131 139
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c
index 6b8459c66163..be9fdd00d7cb 100644
--- a/arch/blackfin/kernel/process.c
+++ b/arch/blackfin/kernel/process.c
@@ -32,6 +32,8 @@
32#include <linux/unistd.h> 32#include <linux/unistd.h>
33#include <linux/user.h> 33#include <linux/user.h>
34#include <linux/uaccess.h> 34#include <linux/uaccess.h>
35#include <linux/sched.h>
36#include <linux/tick.h>
35#include <linux/fs.h> 37#include <linux/fs.h>
36#include <linux/err.h> 38#include <linux/err.h>
37 39
@@ -69,33 +71,44 @@ EXPORT_SYMBOL(pm_power_off);
69 * The idle loop on BFIN 71 * The idle loop on BFIN
70 */ 72 */
71#ifdef CONFIG_IDLE_L1 73#ifdef CONFIG_IDLE_L1
72void default_idle(void)__attribute__((l1_text)); 74static void default_idle(void)__attribute__((l1_text));
73void cpu_idle(void)__attribute__((l1_text)); 75void cpu_idle(void)__attribute__((l1_text));
74#endif 76#endif
75 77
76void default_idle(void) 78/*
79 * This is our default idle handler. We need to disable
80 * interrupts here to ensure we don't miss a wakeup call.
81 */
82static void default_idle(void)
77{ 83{
78 while (!need_resched()) { 84 local_irq_disable();
79 local_irq_disable(); 85 if (!need_resched())
80 if (likely(!need_resched())) 86 idle_with_irq_disabled();
81 idle_with_irq_disabled();
82 local_irq_enable();
83 }
84}
85 87
86void (*idle)(void) = default_idle; 88 local_irq_enable();
89}
87 90
88/* 91/*
89 * The idle thread. There's no useful work to be 92 * The idle thread. We try to conserve power, while trying to keep
90 * done, so just try to conserve power and have a 93 * overall latency low. The architecture specific idle is passed
91 * low exit latency (ie sit in a loop waiting for 94 * a value to indicate the level of "idleness" of the system.
92 * somebody to say that they'd like to reschedule)
93 */ 95 */
94void cpu_idle(void) 96void cpu_idle(void)
95{ 97{
96 /* endless idle loop with no priority at all */ 98 /* endless idle loop with no priority at all */
97 while (1) { 99 while (1) {
98 idle(); 100 void (*idle)(void) = pm_idle;
101
102#ifdef CONFIG_HOTPLUG_CPU
103 if (cpu_is_offline(smp_processor_id()))
104 cpu_die();
105#endif
106 if (!idle)
107 idle = default_idle;
108 tick_nohz_stop_sched_tick();
109 while (!need_resched())
110 idle();
111 tick_nohz_restart_sched_tick();
99 preempt_enable_no_resched(); 112 preempt_enable_no_resched();
100 schedule(); 113 schedule();
101 preempt_disable(); 114 preempt_disable();
@@ -189,7 +202,7 @@ copy_thread(int nr, unsigned long clone_flags,
189 * sys_execve() executes a new program. 202 * sys_execve() executes a new program.
190 */ 203 */
191 204
192asmlinkage int sys_execve(char *name, char **argv, char **envp) 205asmlinkage int sys_execve(char __user *name, char __user * __user *argv, char __user * __user *envp)
193{ 206{
194 int error; 207 int error;
195 char *filename; 208 char *filename;
@@ -232,23 +245,25 @@ unsigned long get_wchan(struct task_struct *p)
232 245
233void finish_atomic_sections (struct pt_regs *regs) 246void finish_atomic_sections (struct pt_regs *regs)
234{ 247{
248 int __user *up0 = (int __user *)&regs->p0;
249
235 if (regs->pc < ATOMIC_SEQS_START || regs->pc >= ATOMIC_SEQS_END) 250 if (regs->pc < ATOMIC_SEQS_START || regs->pc >= ATOMIC_SEQS_END)
236 return; 251 return;
237 252
238 switch (regs->pc) { 253 switch (regs->pc) {
239 case ATOMIC_XCHG32 + 2: 254 case ATOMIC_XCHG32 + 2:
240 put_user(regs->r1, (int *)regs->p0); 255 put_user(regs->r1, up0);
241 regs->pc += 2; 256 regs->pc += 2;
242 break; 257 break;
243 258
244 case ATOMIC_CAS32 + 2: 259 case ATOMIC_CAS32 + 2:
245 case ATOMIC_CAS32 + 4: 260 case ATOMIC_CAS32 + 4:
246 if (regs->r0 == regs->r1) 261 if (regs->r0 == regs->r1)
247 put_user(regs->r2, (int *)regs->p0); 262 put_user(regs->r2, up0);
248 regs->pc = ATOMIC_CAS32 + 8; 263 regs->pc = ATOMIC_CAS32 + 8;
249 break; 264 break;
250 case ATOMIC_CAS32 + 6: 265 case ATOMIC_CAS32 + 6:
251 put_user(regs->r2, (int *)regs->p0); 266 put_user(regs->r2, up0);
252 regs->pc += 2; 267 regs->pc += 2;
253 break; 268 break;
254 269
@@ -256,7 +271,7 @@ void finish_atomic_sections (struct pt_regs *regs)
256 regs->r0 = regs->r1 + regs->r0; 271 regs->r0 = regs->r1 + regs->r0;
257 /* fall through */ 272 /* fall through */
258 case ATOMIC_ADD32 + 4: 273 case ATOMIC_ADD32 + 4:
259 put_user(regs->r0, (int *)regs->p0); 274 put_user(regs->r0, up0);
260 regs->pc = ATOMIC_ADD32 + 6; 275 regs->pc = ATOMIC_ADD32 + 6;
261 break; 276 break;
262 277
@@ -264,7 +279,7 @@ void finish_atomic_sections (struct pt_regs *regs)
264 regs->r0 = regs->r1 - regs->r0; 279 regs->r0 = regs->r1 - regs->r0;
265 /* fall through */ 280 /* fall through */
266 case ATOMIC_SUB32 + 4: 281 case ATOMIC_SUB32 + 4:
267 put_user(regs->r0, (int *)regs->p0); 282 put_user(regs->r0, up0);
268 regs->pc = ATOMIC_SUB32 + 6; 283 regs->pc = ATOMIC_SUB32 + 6;
269 break; 284 break;
270 285
@@ -272,7 +287,7 @@ void finish_atomic_sections (struct pt_regs *regs)
272 regs->r0 = regs->r1 | regs->r0; 287 regs->r0 = regs->r1 | regs->r0;
273 /* fall through */ 288 /* fall through */
274 case ATOMIC_IOR32 + 4: 289 case ATOMIC_IOR32 + 4:
275 put_user(regs->r0, (int *)regs->p0); 290 put_user(regs->r0, up0);
276 regs->pc = ATOMIC_IOR32 + 6; 291 regs->pc = ATOMIC_IOR32 + 6;
277 break; 292 break;
278 293
@@ -280,7 +295,7 @@ void finish_atomic_sections (struct pt_regs *regs)
280 regs->r0 = regs->r1 & regs->r0; 295 regs->r0 = regs->r1 & regs->r0;
281 /* fall through */ 296 /* fall through */
282 case ATOMIC_AND32 + 4: 297 case ATOMIC_AND32 + 4:
283 put_user(regs->r0, (int *)regs->p0); 298 put_user(regs->r0, up0);
284 regs->pc = ATOMIC_AND32 + 6; 299 regs->pc = ATOMIC_AND32 + 6;
285 break; 300 break;
286 301
@@ -288,7 +303,7 @@ void finish_atomic_sections (struct pt_regs *regs)
288 regs->r0 = regs->r1 ^ regs->r0; 303 regs->r0 = regs->r1 ^ regs->r0;
289 /* fall through */ 304 /* fall through */
290 case ATOMIC_XOR32 + 4: 305 case ATOMIC_XOR32 + 4:
291 put_user(regs->r0, (int *)regs->p0); 306 put_user(regs->r0, up0);
292 regs->pc = ATOMIC_XOR32 + 6; 307 regs->pc = ATOMIC_XOR32 + 6;
293 break; 308 break;
294 } 309 }
@@ -309,6 +324,12 @@ int _access_ok(unsigned long addr, unsigned long size)
309 return 1; 324 return 1;
310 if (addr >= memory_mtd_end && (addr + size) <= physical_mem_end) 325 if (addr >= memory_mtd_end && (addr + size) <= physical_mem_end)
311 return 1; 326 return 1;
327
328#ifdef CONFIG_ROMFS_MTD_FS
329 /* For XIP, allow user space to use pointers within the ROMFS. */
330 if (addr >= memory_mtd_start && (addr + size) <= memory_mtd_end)
331 return 1;
332#endif
312#else 333#else
313 if (addr >= memory_start && (addr + size) <= physical_mem_end) 334 if (addr >= memory_start && (addr + size) <= physical_mem_end)
314 return 1; 335 return 1;
diff --git a/arch/blackfin/kernel/ptrace.c b/arch/blackfin/kernel/ptrace.c
index 85caf9b711a1..b4f062c172c6 100644
--- a/arch/blackfin/kernel/ptrace.c
+++ b/arch/blackfin/kernel/ptrace.c
@@ -193,6 +193,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
193{ 193{
194 int ret; 194 int ret;
195 int add = 0; 195 int add = 0;
196 unsigned long __user *datap = (unsigned long __user *)data;
196 197
197 switch (request) { 198 switch (request) {
198 /* when I and D space are separate, these will need to be fixed. */ 199 /* when I and D space are separate, these will need to be fixed. */
@@ -229,7 +230,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
229 pr_debug("ptrace: copied size %d [0x%08lx]\n", copied, tmp); 230 pr_debug("ptrace: copied size %d [0x%08lx]\n", copied, tmp);
230 if (copied != sizeof(tmp)) 231 if (copied != sizeof(tmp))
231 break; 232 break;
232 ret = put_user(tmp, (unsigned long *)data); 233 ret = put_user(tmp, datap);
233 break; 234 break;
234 } 235 }
235 236
@@ -263,7 +264,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
263 } else { 264 } else {
264 tmp = get_reg(child, addr); 265 tmp = get_reg(child, addr);
265 } 266 }
266 ret = put_user(tmp, (unsigned long *)data); 267 ret = put_user(tmp, datap);
267 break; 268 break;
268 } 269 }
269 270
@@ -389,7 +390,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
389 { 390 {
390 391
391 /* Get all gp regs from the child. */ 392 /* Get all gp regs from the child. */
392 ret = ptrace_getregs(child, (void __user *)data); 393 ret = ptrace_getregs(child, datap);
393 break; 394 break;
394 } 395 }
395 396
diff --git a/arch/blackfin/kernel/reboot.c b/arch/blackfin/kernel/reboot.c
index 483f93dfc1b5..367e2dc09881 100644
--- a/arch/blackfin/kernel/reboot.c
+++ b/arch/blackfin/kernel/reboot.c
@@ -11,45 +11,56 @@
11#include <asm/reboot.h> 11#include <asm/reboot.h>
12#include <asm/system.h> 12#include <asm/system.h>
13 13
14#if defined(BF537_FAMILY) || defined(BF533_FAMILY) || defined(BF527_FAMILY) 14/* A system soft reset makes external memory unusable so force
15#define SYSCR_VAL 0x0 15 * this function into L1. We use the compiler ssync here rather
16#elif defined(BF561_FAMILY) 16 * than SSYNC() because it's safe (no interrupts and such) and
17#define SYSCR_VAL 0x20 17 * we save some L1. We do not need to force sanity in the SYSCR
18#elif defined(BF548_FAMILY) 18 * register as the BMODE selection bit is cleared by the soft
19#define SYSCR_VAL 0x10 19 * reset while the Core B bit (on dual core parts) is cleared by
20#endif 20 * the core reset.
21
22/*
23 * Delay min 5 SCLK cycles using worst case CCLK/SCLK ratio (15)
24 */
25#define SWRST_DELAY (5 * 15)
26
27/* A system soft reset makes external memory unusable
28 * so force this function into L1.
29 */ 21 */
30__attribute__((l1_text)) 22__attribute__((l1_text))
31void bfin_reset(void) 23void bfin_reset(void)
32{ 24{
33 /* force BMODE and disable Core B (as needed) */ 25 /* Wait for completion of "system" events such as cache line
34 bfin_write_SYSCR(SYSCR_VAL); 26 * line fills so that we avoid infinite stalls later on as
35 27 * much as possible. This code is in L1, so it won't trigger
36 /* we use asm ssync here because it's save and we save some L1 */ 28 * any such event after this point in time.
37 asm("ssync;"); 29 */
30 __builtin_bfin_ssync();
38 31
39 while (1) { 32 while (1) {
40 /* initiate system soft reset with magic 0x7 */ 33 /* Initiate System software reset. */
41 bfin_write_SWRST(0x7); 34 bfin_write_SWRST(0x7);
42 35
43 /* Wait for System reset to actually reset, needs to be 5 SCLKs, */ 36 /* Due to the way reset is handled in the hardware, we need
44 /* Assume CCLK / SCLK ratio is worst case (15), and use 5*15 */ 37 * to delay for 7 SCLKS. The only reliable way to do this is
45 38 * to calculate the CCLK/SCLK ratio and multiply 7. For now,
46 asm("LSETUP(.Lfoo,.Lfoo) LC0 = %0\n .Lfoo: NOP;\n" 39 * we'll assume worse case which is a 1:15 ratio.
47 : : "a" (SWRST_DELAY) : "LC0", "LT0", "LB0"); 40 */
41 asm(
42 "LSETUP (1f, 1f) LC0 = %0\n"
43 "1: nop;"
44 :
45 : "a" (15 * 7)
46 : "LC0", "LB0", "LT0"
47 );
48 48
49 /* clear system soft reset */ 49 /* Clear System software reset */
50 bfin_write_SWRST(0); 50 bfin_write_SWRST(0);
51 asm("ssync;"); 51
52 /* issue core reset */ 52 /* Wait for the SWRST write to complete. Cannot rely on SSYNC
53 * though as the System state is all reset now.
54 */
55 asm(
56 "LSETUP (1f, 1f) LC1 = %0\n"
57 "1: nop;"
58 :
59 : "a" (15 * 1)
60 : "LC1", "LB1", "LT1"
61 );
62
63 /* Issue core reset */
53 asm("raise 1"); 64 asm("raise 1");
54 } 65 }
55} 66}
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c
index 2255c289a714..8efea004aecb 100644
--- a/arch/blackfin/kernel/setup.c
+++ b/arch/blackfin/kernel/setup.c
@@ -35,6 +35,7 @@ u16 _bfin_swrst;
35EXPORT_SYMBOL(_bfin_swrst); 35EXPORT_SYMBOL(_bfin_swrst);
36 36
37unsigned long memory_start, memory_end, physical_mem_end; 37unsigned long memory_start, memory_end, physical_mem_end;
38unsigned long _rambase, _ramstart, _ramend;
38unsigned long reserved_mem_dcache_on; 39unsigned long reserved_mem_dcache_on;
39unsigned long reserved_mem_icache_on; 40unsigned long reserved_mem_icache_on;
40EXPORT_SYMBOL(memory_start); 41EXPORT_SYMBOL(memory_start);
@@ -106,7 +107,7 @@ void __init bf53x_relocate_l1_mem(void)
106 107
107 l1_code_length = _etext_l1 - _stext_l1; 108 l1_code_length = _etext_l1 - _stext_l1;
108 if (l1_code_length > L1_CODE_LENGTH) 109 if (l1_code_length > L1_CODE_LENGTH)
109 l1_code_length = L1_CODE_LENGTH; 110 panic("L1 Instruction SRAM Overflow\n");
110 /* cannot complain as printk is not available as yet. 111 /* cannot complain as printk is not available as yet.
111 * But we can continue booting and complain later! 112 * But we can continue booting and complain later!
112 */ 113 */
@@ -116,19 +117,18 @@ void __init bf53x_relocate_l1_mem(void)
116 117
117 l1_data_a_length = _ebss_l1 - _sdata_l1; 118 l1_data_a_length = _ebss_l1 - _sdata_l1;
118 if (l1_data_a_length > L1_DATA_A_LENGTH) 119 if (l1_data_a_length > L1_DATA_A_LENGTH)
119 l1_data_a_length = L1_DATA_A_LENGTH; 120 panic("L1 Data SRAM Bank A Overflow\n");
120 121
121 /* Copy _sdata_l1 to _ebss_l1 to L1 data bank A SRAM */ 122 /* Copy _sdata_l1 to _ebss_l1 to L1 data bank A SRAM */
122 dma_memcpy(_sdata_l1, _l1_lma_start + l1_code_length, l1_data_a_length); 123 dma_memcpy(_sdata_l1, _l1_lma_start + l1_code_length, l1_data_a_length);
123 124
124 l1_data_b_length = _ebss_b_l1 - _sdata_b_l1; 125 l1_data_b_length = _ebss_b_l1 - _sdata_b_l1;
125 if (l1_data_b_length > L1_DATA_B_LENGTH) 126 if (l1_data_b_length > L1_DATA_B_LENGTH)
126 l1_data_b_length = L1_DATA_B_LENGTH; 127 panic("L1 Data SRAM Bank B Overflow\n");
127 128
128 /* Copy _sdata_b_l1 to _ebss_b_l1 to L1 data bank B SRAM */ 129 /* Copy _sdata_b_l1 to _ebss_b_l1 to L1 data bank B SRAM */
129 dma_memcpy(_sdata_b_l1, _l1_lma_start + l1_code_length + 130 dma_memcpy(_sdata_b_l1, _l1_lma_start + l1_code_length +
130 l1_data_a_length, l1_data_b_length); 131 l1_data_a_length, l1_data_b_length);
131
132} 132}
133 133
134/* add_memory_region to memmap */ 134/* add_memory_region to memmap */
@@ -547,11 +547,38 @@ static __init void memory_setup(void)
547 ); 547 );
548} 548}
549 549
550/*
551 * Find the lowest, highest page frame number we have available
552 */
553void __init find_min_max_pfn(void)
554{
555 int i;
556
557 max_pfn = 0;
558 min_low_pfn = memory_end;
559
560 for (i = 0; i < bfin_memmap.nr_map; i++) {
561 unsigned long start, end;
562 /* RAM? */
563 if (bfin_memmap.map[i].type != BFIN_MEMMAP_RAM)
564 continue;
565 start = PFN_UP(bfin_memmap.map[i].addr);
566 end = PFN_DOWN(bfin_memmap.map[i].addr +
567 bfin_memmap.map[i].size);
568 if (start >= end)
569 continue;
570 if (end > max_pfn)
571 max_pfn = end;
572 if (start < min_low_pfn)
573 min_low_pfn = start;
574 }
575}
576
550static __init void setup_bootmem_allocator(void) 577static __init void setup_bootmem_allocator(void)
551{ 578{
552 int bootmap_size; 579 int bootmap_size;
553 int i; 580 int i;
554 unsigned long min_pfn, max_pfn; 581 unsigned long start_pfn, end_pfn;
555 unsigned long curr_pfn, last_pfn, size; 582 unsigned long curr_pfn, last_pfn, size;
556 583
557 /* mark memory between memory_start and memory_end usable */ 584 /* mark memory between memory_start and memory_end usable */
@@ -561,8 +588,19 @@ static __init void setup_bootmem_allocator(void)
561 sanitize_memmap(bfin_memmap.map, &bfin_memmap.nr_map); 588 sanitize_memmap(bfin_memmap.map, &bfin_memmap.nr_map);
562 print_memory_map("boot memmap"); 589 print_memory_map("boot memmap");
563 590
564 min_pfn = PAGE_OFFSET >> PAGE_SHIFT; 591 /* intialize globals in linux/bootmem.h */
565 max_pfn = memory_end >> PAGE_SHIFT; 592 find_min_max_pfn();
593 /* pfn of the last usable page frame */
594 if (max_pfn > memory_end >> PAGE_SHIFT)
595 max_pfn = memory_end >> PAGE_SHIFT;
596 /* pfn of last page frame directly mapped by kernel */
597 max_low_pfn = max_pfn;
598 /* pfn of the first usable page frame after kernel image*/
599 if (min_low_pfn < memory_start >> PAGE_SHIFT)
600 min_low_pfn = memory_start >> PAGE_SHIFT;
601
602 start_pfn = PAGE_OFFSET >> PAGE_SHIFT;
603 end_pfn = memory_end >> PAGE_SHIFT;
566 604
567 /* 605 /*
568 * give all the memory to the bootmap allocator, tell it to put the 606 * give all the memory to the bootmap allocator, tell it to put the
@@ -570,7 +608,7 @@ static __init void setup_bootmem_allocator(void)
570 */ 608 */
571 bootmap_size = init_bootmem_node(NODE_DATA(0), 609 bootmap_size = init_bootmem_node(NODE_DATA(0),
572 memory_start >> PAGE_SHIFT, /* map goes here */ 610 memory_start >> PAGE_SHIFT, /* map goes here */
573 min_pfn, max_pfn); 611 start_pfn, end_pfn);
574 612
575 /* register the memmap regions with the bootmem allocator */ 613 /* register the memmap regions with the bootmem allocator */
576 for (i = 0; i < bfin_memmap.nr_map; i++) { 614 for (i = 0; i < bfin_memmap.nr_map; i++) {
@@ -583,7 +621,7 @@ static __init void setup_bootmem_allocator(void)
583 * We are rounding up the start address of usable memory: 621 * We are rounding up the start address of usable memory:
584 */ 622 */
585 curr_pfn = PFN_UP(bfin_memmap.map[i].addr); 623 curr_pfn = PFN_UP(bfin_memmap.map[i].addr);
586 if (curr_pfn >= max_pfn) 624 if (curr_pfn >= end_pfn)
587 continue; 625 continue;
588 /* 626 /*
589 * ... and at the end of the usable range downwards: 627 * ... and at the end of the usable range downwards:
@@ -591,8 +629,8 @@ static __init void setup_bootmem_allocator(void)
591 last_pfn = PFN_DOWN(bfin_memmap.map[i].addr + 629 last_pfn = PFN_DOWN(bfin_memmap.map[i].addr +
592 bfin_memmap.map[i].size); 630 bfin_memmap.map[i].size);
593 631
594 if (last_pfn > max_pfn) 632 if (last_pfn > end_pfn)
595 last_pfn = max_pfn; 633 last_pfn = end_pfn;
596 634
597 /* 635 /*
598 * .. finally, did all the rounding and playing 636 * .. finally, did all the rounding and playing
@@ -611,9 +649,59 @@ static __init void setup_bootmem_allocator(void)
611 BOOTMEM_DEFAULT); 649 BOOTMEM_DEFAULT);
612} 650}
613 651
652#define EBSZ_TO_MEG(ebsz) \
653({ \
654 int meg = 0; \
655 switch (ebsz & 0xf) { \
656 case 0x1: meg = 16; break; \
657 case 0x3: meg = 32; break; \
658 case 0x5: meg = 64; break; \
659 case 0x7: meg = 128; break; \
660 case 0x9: meg = 256; break; \
661 case 0xb: meg = 512; break; \
662 } \
663 meg; \
664})
665static inline int __init get_mem_size(void)
666{
667#ifdef CONFIG_MEM_SIZE
668 return CONFIG_MEM_SIZE;
669#else
670# if defined(EBIU_SDBCTL)
671# if defined(BF561_FAMILY)
672 int ret = 0;
673 u32 sdbctl = bfin_read_EBIU_SDBCTL();
674 ret += EBSZ_TO_MEG(sdbctl >> 0);
675 ret += EBSZ_TO_MEG(sdbctl >> 8);
676 ret += EBSZ_TO_MEG(sdbctl >> 16);
677 ret += EBSZ_TO_MEG(sdbctl >> 24);
678 return ret;
679# else
680 return EBSZ_TO_MEG(bfin_read_EBIU_SDBCTL());
681# endif
682# elif defined(EBIU_DDRCTL1)
683 u32 ddrctl = bfin_read_EBIU_DDRCTL1();
684 int ret = 0;
685 switch (ddrctl & 0xc0000) {
686 case DEVSZ_64: ret = 64 / 8;
687 case DEVSZ_128: ret = 128 / 8;
688 case DEVSZ_256: ret = 256 / 8;
689 case DEVSZ_512: ret = 512 / 8;
690 }
691 switch (ddrctl & 0x30000) {
692 case DEVWD_4: ret *= 2;
693 case DEVWD_8: ret *= 2;
694 case DEVWD_16: break;
695 }
696 return ret;
697# endif
698#endif
699 BUG();
700}
701
614void __init setup_arch(char **cmdline_p) 702void __init setup_arch(char **cmdline_p)
615{ 703{
616 unsigned long l1_length, sclk, cclk; 704 unsigned long sclk, cclk;
617 705
618#ifdef CONFIG_DUMMY_CONSOLE 706#ifdef CONFIG_DUMMY_CONSOLE
619 conswitchp = &dummy_con; 707 conswitchp = &dummy_con;
@@ -631,7 +719,7 @@ void __init setup_arch(char **cmdline_p)
631 719
632 /* setup memory defaults from the user config */ 720 /* setup memory defaults from the user config */
633 physical_mem_end = 0; 721 physical_mem_end = 0;
634 _ramend = CONFIG_MEM_SIZE * 1024 * 1024; 722 _ramend = get_mem_size() * 1024 * 1024;
635 723
636 memset(&bfin_memmap, 0, sizeof(bfin_memmap)); 724 memset(&bfin_memmap, 0, sizeof(bfin_memmap));
637 725
@@ -712,15 +800,6 @@ void __init setup_arch(char **cmdline_p)
712 800
713 paging_init(); 801 paging_init();
714 802
715 /* check the size of the l1 area */
716 l1_length = _etext_l1 - _stext_l1;
717 if (l1_length > L1_CODE_LENGTH)
718 panic("L1 code memory overflow\n");
719
720 l1_length = _ebss_l1 - _sdata_l1;
721 if (l1_length > L1_DATA_A_LENGTH)
722 panic("L1 data memory overflow\n");
723
724 /* Copy atomic sequences to their fixed location, and sanity check that 803 /* Copy atomic sequences to their fixed location, and sanity check that
725 these locations are the ones that we advertise to userspace. */ 804 these locations are the ones that we advertise to userspace. */
726 memcpy((void *)FIXED_CODE_START, &fixed_code_start, 805 memcpy((void *)FIXED_CODE_START, &fixed_code_start,
@@ -859,12 +938,17 @@ static int show_cpuinfo(struct seq_file *m, void *v)
859 seq_printf(m, "processor\t: %d\n" 938 seq_printf(m, "processor\t: %d\n"
860 "vendor_id\t: %s\n" 939 "vendor_id\t: %s\n"
861 "cpu family\t: 0x%x\n" 940 "cpu family\t: 0x%x\n"
862 "model name\t: ADSP-%s %lu(MHz CCLK) %lu(MHz SCLK)\n" 941 "model name\t: ADSP-%s %lu(MHz CCLK) %lu(MHz SCLK) (%s)\n"
863 "stepping\t: %d\n", 942 "stepping\t: %d\n",
864 0, 943 0,
865 vendor, 944 vendor,
866 (bfin_read_CHIPID() & CHIPID_FAMILY), 945 (bfin_read_CHIPID() & CHIPID_FAMILY),
867 cpu, cclk/1000000, sclk/1000000, 946 cpu, cclk/1000000, sclk/1000000,
947#ifdef CONFIG_MPU
948 "mpu on",
949#else
950 "mpu off",
951#endif
868 revid); 952 revid);
869 953
870 seq_printf(m, "cpu MHz\t\t: %lu.%03lu/%lu.%03lu\n", 954 seq_printf(m, "cpu MHz\t\t: %lu.%03lu/%lu.%03lu\n",
@@ -973,7 +1057,6 @@ static int show_cpuinfo(struct seq_file *m, void *v)
973 seq_printf(m, "No Ways are locked\n"); 1057 seq_printf(m, "No Ways are locked\n");
974 } 1058 }
975#endif 1059#endif
976
977 seq_printf(m, "board name\t: %s\n", bfin_board_name); 1060 seq_printf(m, "board name\t: %s\n", bfin_board_name);
978 seq_printf(m, "board memory\t: %ld kB (0x%p -> 0x%p)\n", 1061 seq_printf(m, "board memory\t: %ld kB (0x%p -> 0x%p)\n",
979 physical_mem_end >> 10, (void *)0, (void *)physical_mem_end); 1062 physical_mem_end >> 10, (void *)0, (void *)physical_mem_end);
diff --git a/arch/blackfin/kernel/signal.c b/arch/blackfin/kernel/signal.c
index 5564c9588aa8..d1fa24401dc6 100644
--- a/arch/blackfin/kernel/signal.c
+++ b/arch/blackfin/kernel/signal.c
@@ -38,6 +38,7 @@
38 38
39#include <asm/cacheflush.h> 39#include <asm/cacheflush.h>
40#include <asm/ucontext.h> 40#include <asm/ucontext.h>
41#include <asm/fixed_code.h>
41 42
42#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 43#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
43 44
@@ -50,18 +51,20 @@ struct rt_sigframe {
50 int sig; 51 int sig;
51 struct siginfo *pinfo; 52 struct siginfo *pinfo;
52 void *puc; 53 void *puc;
54 /* This is no longer needed by the kernel, but unfortunately userspace
55 * code expects it to be there. */
53 char retcode[8]; 56 char retcode[8];
54 struct siginfo info; 57 struct siginfo info;
55 struct ucontext uc; 58 struct ucontext uc;
56}; 59};
57 60
58asmlinkage int sys_sigaltstack(const stack_t * uss, stack_t * uoss) 61asmlinkage int sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss)
59{ 62{
60 return do_sigaltstack(uss, uoss, rdusp()); 63 return do_sigaltstack(uss, uoss, rdusp());
61} 64}
62 65
63static inline int 66static inline int
64rt_restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc, int *pr0) 67rt_restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *pr0)
65{ 68{
66 unsigned long usp = 0; 69 unsigned long usp = 0;
67 int err = 0; 70 int err = 0;
@@ -159,11 +162,6 @@ static inline int rt_setup_sigcontext(struct sigcontext *sc, struct pt_regs *reg
159 return err; 162 return err;
160} 163}
161 164
162static inline void push_cache(unsigned long vaddr, unsigned int len)
163{
164 flush_icache_range(vaddr, vaddr + len);
165}
166
167static inline void *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, 165static inline void *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
168 size_t frame_size) 166 size_t frame_size)
169{ 167{
@@ -209,19 +207,9 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t * info,
209 err |= rt_setup_sigcontext(&frame->uc.uc_mcontext, regs); 207 err |= rt_setup_sigcontext(&frame->uc.uc_mcontext, regs);
210 err |= copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); 208 err |= copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
211 209
212 /* Set up to return from userspace. */
213 err |= __put_user(0x28, &(frame->retcode[0]));
214 err |= __put_user(0xe1, &(frame->retcode[1]));
215 err |= __put_user(0xad, &(frame->retcode[2]));
216 err |= __put_user(0x00, &(frame->retcode[3]));
217 err |= __put_user(0xa0, &(frame->retcode[4]));
218 err |= __put_user(0x00, &(frame->retcode[5]));
219
220 if (err) 210 if (err)
221 goto give_sigsegv; 211 goto give_sigsegv;
222 212
223 push_cache((unsigned long)&frame->retcode, sizeof(frame->retcode));
224
225 /* Set up registers for signal handler */ 213 /* Set up registers for signal handler */
226 wrusp((unsigned long)frame); 214 wrusp((unsigned long)frame);
227 if (get_personality & FDPIC_FUNCPTRS) { 215 if (get_personality & FDPIC_FUNCPTRS) {
@@ -231,7 +219,7 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t * info,
231 __get_user(regs->p3, &funcptr->GOT); 219 __get_user(regs->p3, &funcptr->GOT);
232 } else 220 } else
233 regs->pc = (unsigned long)ka->sa.sa_handler; 221 regs->pc = (unsigned long)ka->sa.sa_handler;
234 regs->rets = (unsigned long)(frame->retcode); 222 regs->rets = SIGRETURN_STUB;
235 223
236 regs->r0 = frame->sig; 224 regs->r0 = frame->sig;
237 regs->r1 = (unsigned long)(&frame->info); 225 regs->r1 = (unsigned long)(&frame->info);
diff --git a/arch/blackfin/kernel/sys_bfin.c b/arch/blackfin/kernel/sys_bfin.c
index abcd14817d0e..efb7b25a2633 100644
--- a/arch/blackfin/kernel/sys_bfin.c
+++ b/arch/blackfin/kernel/sys_bfin.c
@@ -49,7 +49,7 @@
49 * sys_pipe() is the normal C calling standard for creating 49 * sys_pipe() is the normal C calling standard for creating
50 * a pipe. It's not the way unix traditionally does this, though. 50 * a pipe. It's not the way unix traditionally does this, though.
51 */ 51 */
52asmlinkage int sys_pipe(unsigned long *fildes) 52asmlinkage int sys_pipe(unsigned long __user *fildes)
53{ 53{
54 int fd[2]; 54 int fd[2];
55 int error; 55 int error;
diff --git a/arch/blackfin/kernel/time-ts.c b/arch/blackfin/kernel/time-ts.c
new file mode 100644
index 000000000000..4482c47c09e5
--- /dev/null
+++ b/arch/blackfin/kernel/time-ts.c
@@ -0,0 +1,219 @@
1/*
2 * linux/arch/kernel/time-ts.c
3 *
4 * Based on arm clockevents implementation and old bfin time tick.
5 *
6 * Copyright(C) 2008, GeoTechnologies, Vitja Makarov
7 *
8 * This code is licenced under the GPL version 2. For details see
9 * kernel-base/COPYING.
10 */
11#include <linux/module.h>
12#include <linux/profile.h>
13#include <linux/interrupt.h>
14#include <linux/time.h>
15#include <linux/timex.h>
16#include <linux/irq.h>
17#include <linux/clocksource.h>
18#include <linux/clockchips.h>
19#include <linux/cpufreq.h>
20
21#include <asm/blackfin.h>
22#include <asm/time.h>
23
24#ifdef CONFIG_CYCLES_CLOCKSOURCE
25
26/* Accelerators for sched_clock()
27 * convert from cycles(64bits) => nanoseconds (64bits)
28 * basic equation:
29 * ns = cycles / (freq / ns_per_sec)
30 * ns = cycles * (ns_per_sec / freq)
31 * ns = cycles * (10^9 / (cpu_khz * 10^3))
32 * ns = cycles * (10^6 / cpu_khz)
33 *
34 * Then we use scaling math (suggested by george@mvista.com) to get:
35 * ns = cycles * (10^6 * SC / cpu_khz) / SC
36 * ns = cycles * cyc2ns_scale / SC
37 *
38 * And since SC is a constant power of two, we can convert the div
39 * into a shift.
40 *
41 * We can use khz divisor instead of mhz to keep a better precision, since
42 * cyc2ns_scale is limited to 10^6 * 2^10, which fits in 32 bits.
43 * (mathieu.desnoyers@polymtl.ca)
44 *
45 * -johnstul@us.ibm.com "math is hard, lets go shopping!"
46 */
47
48static unsigned long cyc2ns_scale;
49#define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */
50
51static inline void set_cyc2ns_scale(unsigned long cpu_khz)
52{
53 cyc2ns_scale = (1000000 << CYC2NS_SCALE_FACTOR) / cpu_khz;
54}
55
56static inline unsigned long long cycles_2_ns(cycle_t cyc)
57{
58 return (cyc * cyc2ns_scale) >> CYC2NS_SCALE_FACTOR;
59}
60
61static cycle_t read_cycles(void)
62{
63 return get_cycles();
64}
65
66unsigned long long sched_clock(void)
67{
68 return cycles_2_ns(read_cycles());
69}
70
71static struct clocksource clocksource_bfin = {
72 .name = "bfin_cycles",
73 .rating = 350,
74 .read = read_cycles,
75 .mask = CLOCKSOURCE_MASK(64),
76 .shift = 22,
77 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
78};
79
80static int __init bfin_clocksource_init(void)
81{
82 set_cyc2ns_scale(get_cclk() / 1000);
83
84 clocksource_bfin.mult = clocksource_hz2mult(get_cclk(), clocksource_bfin.shift);
85
86 if (clocksource_register(&clocksource_bfin))
87 panic("failed to register clocksource");
88
89 return 0;
90}
91
92#else
93# define bfin_clocksource_init()
94#endif
95
96static int bfin_timer_set_next_event(unsigned long cycles,
97 struct clock_event_device *evt)
98{
99 bfin_write_TCOUNT(cycles);
100 CSYNC();
101 return 0;
102}
103
104static void bfin_timer_set_mode(enum clock_event_mode mode,
105 struct clock_event_device *evt)
106{
107 switch (mode) {
108 case CLOCK_EVT_MODE_PERIODIC: {
109 unsigned long tcount = ((get_cclk() / (HZ * TIME_SCALE)) - 1);
110 bfin_write_TCNTL(TMPWR);
111 bfin_write_TSCALE(TIME_SCALE - 1);
112 CSYNC();
113 bfin_write_TPERIOD(tcount);
114 bfin_write_TCOUNT(tcount);
115 bfin_write_TCNTL(TMPWR | TMREN | TAUTORLD);
116 CSYNC();
117 break;
118 }
119 case CLOCK_EVT_MODE_ONESHOT:
120 bfin_write_TSCALE(0);
121 bfin_write_TCOUNT(0);
122 bfin_write_TCNTL(TMPWR | TMREN);
123 CSYNC();
124 break;
125 case CLOCK_EVT_MODE_UNUSED:
126 case CLOCK_EVT_MODE_SHUTDOWN:
127 bfin_write_TCNTL(0);
128 CSYNC();
129 break;
130 case CLOCK_EVT_MODE_RESUME:
131 break;
132 }
133}
134
135static void __init bfin_timer_init(void)
136{
137 /* power up the timer, but don't enable it just yet */
138 bfin_write_TCNTL(TMPWR);
139 CSYNC();
140
141 /*
142 * the TSCALE prescaler counter.
143 */
144 bfin_write_TSCALE(TIME_SCALE - 1);
145 bfin_write_TPERIOD(0);
146 bfin_write_TCOUNT(0);
147
148 /* now enable the timer */
149 CSYNC();
150}
151
152/*
153 * timer_interrupt() needs to keep up the real-time clock,
154 * as well as call the "do_timer()" routine every clocktick
155 */
156#ifdef CONFIG_CORE_TIMER_IRQ_L1
157__attribute__((l1_text))
158#endif
159irqreturn_t timer_interrupt(int irq, void *dev_id);
160
161static struct clock_event_device clockevent_bfin = {
162 .name = "bfin_core_timer",
163 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
164 .shift = 32,
165 .cpumask = CPU_MASK_CPU0,
166 .set_next_event = bfin_timer_set_next_event,
167 .set_mode = bfin_timer_set_mode,
168};
169
170static struct irqaction bfin_timer_irq = {
171 .name = "Blackfin Core Timer",
172 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
173 .handler = timer_interrupt,
174 .dev_id = &clockevent_bfin,
175};
176
177irqreturn_t timer_interrupt(int irq, void *dev_id)
178{
179 struct clock_event_device *evt = dev_id;
180 evt->event_handler(evt);
181 return IRQ_HANDLED;
182}
183
184static int __init bfin_clockevent_init(void)
185{
186 setup_irq(IRQ_CORETMR, &bfin_timer_irq);
187 bfin_timer_init();
188
189 clockevent_bfin.mult = div_sc(get_cclk(), NSEC_PER_SEC, clockevent_bfin.shift);
190 clockevent_bfin.max_delta_ns = clockevent_delta2ns(-1, &clockevent_bfin);
191 clockevent_bfin.min_delta_ns = clockevent_delta2ns(100, &clockevent_bfin);
192 clockevents_register_device(&clockevent_bfin);
193
194 return 0;
195}
196
197void __init time_init(void)
198{
199 time_t secs_since_1970 = (365 * 37 + 9) * 24 * 60 * 60; /* 1 Jan 2007 */
200
201#ifdef CONFIG_RTC_DRV_BFIN
202 /* [#2663] hack to filter junk RTC values that would cause
203 * userspace to have to deal with time values greater than
204 * 2^31 seconds (which uClibc cannot cope with yet)
205 */
206 if ((bfin_read_RTC_STAT() & 0xC0000000) == 0xC0000000) {
207 printk(KERN_NOTICE "bfin-rtc: invalid date; resetting\n");
208 bfin_write_RTC_STAT(0);
209 }
210#endif
211
212 /* Initialize xtime. From now on, xtime is updated with timer interrupts */
213 xtime.tv_sec = secs_since_1970;
214 xtime.tv_nsec = 0;
215 set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec);
216
217 bfin_clocksource_init();
218 bfin_clockevent_init();
219}
diff --git a/arch/blackfin/kernel/time.c b/arch/blackfin/kernel/time.c
index 715b3945e4c7..eb2352320454 100644
--- a/arch/blackfin/kernel/time.c
+++ b/arch/blackfin/kernel/time.c
@@ -6,9 +6,10 @@
6 * Created: 6 * Created:
7 * Description: This file contains the bfin-specific time handling details. 7 * Description: This file contains the bfin-specific time handling details.
8 * Most of the stuff is located in the machine specific files. 8 * Most of the stuff is located in the machine specific files.
9 * FIXME: (This file is subject for removal)
9 * 10 *
10 * Modified: 11 * Modified:
11 * Copyright 2004-2006 Analog Devices Inc. 12 * Copyright 2004-2008 Analog Devices Inc.
12 * 13 *
13 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 14 * Bugs: Enter bugs at http://blackfin.uclinux.org/
14 * 15 *
@@ -35,6 +36,7 @@
35#include <linux/irq.h> 36#include <linux/irq.h>
36 37
37#include <asm/blackfin.h> 38#include <asm/blackfin.h>
39#include <asm/time.h>
38 40
39/* This is an NTP setting */ 41/* This is an NTP setting */
40#define TICK_SIZE (tick_nsec / 1000) 42#define TICK_SIZE (tick_nsec / 1000)
@@ -47,21 +49,6 @@ static struct irqaction bfin_timer_irq = {
47 .flags = IRQF_DISABLED 49 .flags = IRQF_DISABLED
48}; 50};
49 51
50/*
51 * The way that the Blackfin core timer works is:
52 * - CCLK is divided by a programmable 8-bit pre-scaler (TSCALE)
53 * - Every time TSCALE ticks, a 32bit is counted down (TCOUNT)
54 *
55 * If you take the fastest clock (1ns, or 1GHz to make the math work easier)
56 * 10ms is 10,000,000 clock ticks, which fits easy into a 32-bit counter
57 * (32 bit counter is 4,294,967,296ns or 4.2 seconds) so, we don't need
58 * to use TSCALE, and program it to zero (which is pass CCLK through).
59 * If you feel like using it, try to keep HZ * TIMESCALE to some
60 * value that divides easy (like power of 2).
61 */
62
63#define TIME_SCALE 1
64
65static void 52static void
66time_sched_init(irq_handler_t timer_routine) 53time_sched_init(irq_handler_t timer_routine)
67{ 54{
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c
index 56a67ab698c7..5b847070dae5 100644
--- a/arch/blackfin/kernel/traps.c
+++ b/arch/blackfin/kernel/traps.c
@@ -67,6 +67,8 @@ void __init trap_init(void)
67 CSYNC(); 67 CSYNC();
68} 68}
69 69
70void *saved_icplb_fault_addr, *saved_dcplb_fault_addr;
71
70int kstack_depth_to_print = 48; 72int kstack_depth_to_print = 48;
71 73
72static void decode_address(char *buf, unsigned long address) 74static void decode_address(char *buf, unsigned long address)
@@ -75,7 +77,7 @@ static void decode_address(char *buf, unsigned long address)
75 struct task_struct *p; 77 struct task_struct *p;
76 struct mm_struct *mm; 78 struct mm_struct *mm;
77 unsigned long flags, offset; 79 unsigned long flags, offset;
78 unsigned int in_exception = bfin_read_IPEND() & 0x10; 80 unsigned char in_atomic = (bfin_read_IPEND() & 0x10) || in_atomic();
79 81
80#ifdef CONFIG_KALLSYMS 82#ifdef CONFIG_KALLSYMS
81 unsigned long symsize; 83 unsigned long symsize;
@@ -117,7 +119,7 @@ static void decode_address(char *buf, unsigned long address)
117 */ 119 */
118 write_lock_irqsave(&tasklist_lock, flags); 120 write_lock_irqsave(&tasklist_lock, flags);
119 for_each_process(p) { 121 for_each_process(p) {
120 mm = (in_exception ? p->mm : get_task_mm(p)); 122 mm = (in_atomic ? p->mm : get_task_mm(p));
121 if (!mm) 123 if (!mm)
122 continue; 124 continue;
123 125
@@ -137,23 +139,36 @@ static void decode_address(char *buf, unsigned long address)
137 /* FLAT does not have its text aligned to the start of 139 /* FLAT does not have its text aligned to the start of
138 * the map while FDPIC ELF does ... 140 * the map while FDPIC ELF does ...
139 */ 141 */
140 if (current->mm && 142
141 (address > current->mm->start_code) && 143 /* before we can check flat/fdpic, we need to
142 (address < current->mm->end_code)) 144 * make sure current is valid
143 offset = address - current->mm->start_code; 145 */
144 else 146 if ((unsigned long)current >= FIXED_CODE_START &&
145 offset = (address - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT); 147 !((unsigned long)current & 0x3)) {
146 148 if (current->mm &&
147 sprintf(buf, "<0x%p> [ %s + 0x%lx ]", 149 (address > current->mm->start_code) &&
148 (void *)address, name, offset); 150 (address < current->mm->end_code))
149 if (!in_exception) 151 offset = address - current->mm->start_code;
152 else
153 offset = (address - vma->vm_start) +
154 (vma->vm_pgoff << PAGE_SHIFT);
155
156 sprintf(buf, "<0x%p> [ %s + 0x%lx ]",
157 (void *)address, name, offset);
158 } else
159 sprintf(buf, "<0x%p> [ %s vma:0x%lx-0x%lx]",
160 (void *)address, name,
161 vma->vm_start, vma->vm_end);
162
163 if (!in_atomic)
150 mmput(mm); 164 mmput(mm);
165
151 goto done; 166 goto done;
152 } 167 }
153 168
154 vml = vml->next; 169 vml = vml->next;
155 } 170 }
156 if (!in_exception) 171 if (!in_atomic)
157 mmput(mm); 172 mmput(mm);
158 } 173 }
159 174
@@ -506,7 +521,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
506 521
507 info.si_signo = sig; 522 info.si_signo = sig;
508 info.si_errno = 0; 523 info.si_errno = 0;
509 info.si_addr = (void *)fp->pc; 524 info.si_addr = (void __user *)fp->pc;
510 force_sig_info(sig, &info, current); 525 force_sig_info(sig, &info, current);
511 526
512 trace_buffer_restore(j); 527 trace_buffer_restore(j);
@@ -655,21 +670,31 @@ void dump_bfin_process(struct pt_regs *fp)
655 else if (context & 0x8000) 670 else if (context & 0x8000)
656 printk(KERN_NOTICE "Kernel process context\n"); 671 printk(KERN_NOTICE "Kernel process context\n");
657 672
658 if (current->pid && current->mm) { 673 /* Because we are crashing, and pointers could be bad, we check things
674 * pretty closely before we use them
675 */
676 if ((unsigned long)current >= FIXED_CODE_START &&
677 !((unsigned long)current & 0x3) && current->pid) {
659 printk(KERN_NOTICE "CURRENT PROCESS:\n"); 678 printk(KERN_NOTICE "CURRENT PROCESS:\n");
660 printk(KERN_NOTICE "COMM=%s PID=%d\n", 679 if (current->comm >= (char *)FIXED_CODE_START)
661 current->comm, current->pid); 680 printk(KERN_NOTICE "COMM=%s PID=%d\n",
662 681 current->comm, current->pid);
663 printk(KERN_NOTICE "TEXT = 0x%p-0x%p DATA = 0x%p-0x%p\n" 682 else
664 KERN_NOTICE "BSS = 0x%p-0x%p USER-STACK = 0x%p\n" 683 printk(KERN_NOTICE "COMM= invalid\n");
665 KERN_NOTICE "\n", 684
666 (void *)current->mm->start_code, 685 if (!((unsigned long)current->mm & 0x3) && (unsigned long)current->mm >= FIXED_CODE_START)
667 (void *)current->mm->end_code, 686 printk(KERN_NOTICE "TEXT = 0x%p-0x%p DATA = 0x%p-0x%p\n"
668 (void *)current->mm->start_data, 687 KERN_NOTICE " BSS = 0x%p-0x%p USER-STACK = 0x%p\n"
669 (void *)current->mm->end_data, 688 KERN_NOTICE "\n",
670 (void *)current->mm->end_data, 689 (void *)current->mm->start_code,
671 (void *)current->mm->brk, 690 (void *)current->mm->end_code,
672 (void *)current->mm->start_stack); 691 (void *)current->mm->start_data,
692 (void *)current->mm->end_data,
693 (void *)current->mm->end_data,
694 (void *)current->mm->brk,
695 (void *)current->mm->start_stack);
696 else
697 printk(KERN_NOTICE "invalid mm\n");
673 } else 698 } else
674 printk(KERN_NOTICE "\n" KERN_NOTICE 699 printk(KERN_NOTICE "\n" KERN_NOTICE
675 "No Valid process in current context\n"); 700 "No Valid process in current context\n");
@@ -680,10 +705,7 @@ void dump_bfin_mem(struct pt_regs *fp)
680 unsigned short *addr, *erraddr, val = 0, err = 0; 705 unsigned short *addr, *erraddr, val = 0, err = 0;
681 char sti = 0, buf[6]; 706 char sti = 0, buf[6];
682 707
683 if (unlikely((fp->seqstat & SEQSTAT_EXCAUSE) == VEC_HWERR)) 708 erraddr = (void *)fp->pc;
684 erraddr = (void *)fp->pc;
685 else
686 erraddr = (void *)fp->retx;
687 709
688 printk(KERN_NOTICE "return address: [0x%p]; contents of:", erraddr); 710 printk(KERN_NOTICE "return address: [0x%p]; contents of:", erraddr);
689 711
@@ -807,9 +829,9 @@ unlock:
807 829
808 if (((long)fp->seqstat & SEQSTAT_EXCAUSE) && 830 if (((long)fp->seqstat & SEQSTAT_EXCAUSE) &&
809 (((long)fp->seqstat & SEQSTAT_EXCAUSE) != VEC_HWERR)) { 831 (((long)fp->seqstat & SEQSTAT_EXCAUSE) != VEC_HWERR)) {
810 decode_address(buf, bfin_read_DCPLB_FAULT_ADDR()); 832 decode_address(buf, saved_dcplb_fault_addr);
811 printk(KERN_NOTICE "DCPLB_FAULT_ADDR: %s\n", buf); 833 printk(KERN_NOTICE "DCPLB_FAULT_ADDR: %s\n", buf);
812 decode_address(buf, bfin_read_ICPLB_FAULT_ADDR()); 834 decode_address(buf, saved_icplb_fault_addr);
813 printk(KERN_NOTICE "ICPLB_FAULT_ADDR: %s\n", buf); 835 printk(KERN_NOTICE "ICPLB_FAULT_ADDR: %s\n", buf);
814 } 836 }
815 837
@@ -917,8 +939,8 @@ void panic_cplb_error(int cplb_panic, struct pt_regs *fp)
917 939
918 oops_in_progress = 1; 940 oops_in_progress = 1;
919 941
920 printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", (void *)bfin_read_DCPLB_FAULT_ADDR()); 942 printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", saved_dcplb_fault_addr);
921 printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", (void *)bfin_read_ICPLB_FAULT_ADDR()); 943 printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", saved_icplb_fault_addr);
922 dump_bfin_process(fp); 944 dump_bfin_process(fp);
923 dump_bfin_mem(fp); 945 dump_bfin_mem(fp);
924 show_regs(fp); 946 show_regs(fp);
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S
index cb01a9de2680..3ecc64cab3be 100644
--- a/arch/blackfin/kernel/vmlinux.lds.S
+++ b/arch/blackfin/kernel/vmlinux.lds.S
@@ -56,6 +56,10 @@ SECTIONS
56 *(.text.*) 56 *(.text.*)
57 *(.fixup) 57 *(.fixup)
58 58
59#if !L1_CODE_LENGTH
60 *(.l1.text)
61#endif
62
59 . = ALIGN(16); 63 . = ALIGN(16);
60 ___start___ex_table = .; 64 ___start___ex_table = .;
61 *(__ex_table) 65 *(__ex_table)
@@ -73,6 +77,12 @@ SECTIONS
73 ___bss_start = .; 77 ___bss_start = .;
74 *(.bss .bss.*) 78 *(.bss .bss.*)
75 *(COMMON) 79 *(COMMON)
80#if !L1_DATA_A_LENGTH
81 *(.l1.bss)
82#endif
83#if !L1_DATA_B_LENGTH
84 *(.l1.bss.B)
85#endif
76 ___bss_stop = .; 86 ___bss_stop = .;
77 } 87 }
78 88
@@ -83,6 +93,15 @@ SECTIONS
83 . = ALIGN(32); 93 . = ALIGN(32);
84 *(.data.cacheline_aligned) 94 *(.data.cacheline_aligned)
85 95
96#if !L1_DATA_A_LENGTH
97 . = ALIGN(32);
98 *(.data_l1.cacheline_aligned)
99 *(.l1.data)
100#endif
101#if !L1_DATA_B_LENGTH
102 *(.l1.data.B)
103#endif
104
86 DATA_DATA 105 DATA_DATA
87 *(.data.*) 106 *(.data.*)
88 CONSTRUCTORS 107 CONSTRUCTORS
@@ -147,64 +166,43 @@ SECTIONS
147 166
148 __l1_lma_start = .; 167 __l1_lma_start = .;
149 168
150#if L1_CODE_LENGTH
151# define LDS_L1_CODE *(.l1.text)
152#else
153# define LDS_L1_CODE
154#endif
155 .text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs)) 169 .text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs))
156 { 170 {
157 . = ALIGN(4); 171 . = ALIGN(4);
158 __stext_l1 = .; 172 __stext_l1 = .;
159 LDS_L1_CODE 173 *(.l1.text)
160 . = ALIGN(4); 174 . = ALIGN(4);
161 __etext_l1 = .; 175 __etext_l1 = .;
162 } 176 }
163 177
164#if L1_DATA_A_LENGTH
165# define LDS_L1_A_DATA *(.l1.data)
166# define LDS_L1_A_BSS *(.l1.bss)
167# define LDS_L1_A_CACHE *(.data_l1.cacheline_aligned)
168#else
169# define LDS_L1_A_DATA
170# define LDS_L1_A_BSS
171# define LDS_L1_A_CACHE
172#endif
173 .data_l1 L1_DATA_A_START : AT(LOADADDR(.text_l1) + SIZEOF(.text_l1)) 178 .data_l1 L1_DATA_A_START : AT(LOADADDR(.text_l1) + SIZEOF(.text_l1))
174 { 179 {
175 . = ALIGN(4); 180 . = ALIGN(4);
176 __sdata_l1 = .; 181 __sdata_l1 = .;
177 LDS_L1_A_DATA 182 *(.l1.data)
178 __edata_l1 = .; 183 __edata_l1 = .;
179 184
180 . = ALIGN(4); 185 . = ALIGN(4);
181 __sbss_l1 = .; 186 __sbss_l1 = .;
182 LDS_L1_A_BSS 187 *(.l1.bss)
183 188
184 . = ALIGN(32); 189 . = ALIGN(32);
185 LDS_L1_A_CACHE 190 *(.data_l1.cacheline_aligned)
186 191
187 . = ALIGN(4); 192 . = ALIGN(4);
188 __ebss_l1 = .; 193 __ebss_l1 = .;
189 } 194 }
190 195
191#if L1_DATA_B_LENGTH
192# define LDS_L1_B_DATA *(.l1.data.B)
193# define LDS_L1_B_BSS *(.l1.bss.B)
194#else
195# define LDS_L1_B_DATA
196# define LDS_L1_B_BSS
197#endif
198 .data_b_l1 L1_DATA_B_START : AT(LOADADDR(.data_l1) + SIZEOF(.data_l1)) 196 .data_b_l1 L1_DATA_B_START : AT(LOADADDR(.data_l1) + SIZEOF(.data_l1))
199 { 197 {
200 . = ALIGN(4); 198 . = ALIGN(4);
201 __sdata_b_l1 = .; 199 __sdata_b_l1 = .;
202 LDS_L1_B_DATA 200 *(.l1.data.B)
203 __edata_b_l1 = .; 201 __edata_b_l1 = .;
204 202
205 . = ALIGN(4); 203 . = ALIGN(4);
206 __sbss_b_l1 = .; 204 __sbss_b_l1 = .;
207 LDS_L1_B_BSS 205 *(.l1.bss.B)
208 206
209 . = ALIGN(4); 207 . = ALIGN(4);
210 __ebss_b_l1 = .; 208 __ebss_b_l1 = .;
@@ -223,8 +221,6 @@ SECTIONS
223 221
224 DWARF_DEBUG 222 DWARF_DEBUG
225 223
226 NOTES
227
228 /DISCARD/ : 224 /DISCARD/ :
229 { 225 {
230 EXIT_TEXT 226 EXIT_TEXT
diff --git a/arch/blackfin/mach-bf527/Makefile b/arch/blackfin/mach-bf527/Makefile
index 9f99f5d0bcd1..4eddb580319c 100644
--- a/arch/blackfin/mach-bf527/Makefile
+++ b/arch/blackfin/mach-bf527/Makefile
@@ -5,5 +5,3 @@
5extra-y := head.o 5extra-y := head.o
6 6
7obj-y := ints-priority.o dma.o 7obj-y := ints-priority.o dma.o
8
9obj-$(CONFIG_CPU_FREQ) += cpu.o
diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c
index cf4bc0d83355..583d53811f03 100644
--- a/arch/blackfin/mach-bf527/boards/ezkit.c
+++ b/arch/blackfin/mach-bf527/boards/ezkit.c
@@ -94,7 +94,7 @@ int __init bfin_isp1761_init(void)
94{ 94{
95 unsigned int num_devices = ARRAY_SIZE(bfin_isp1761_devices); 95 unsigned int num_devices = ARRAY_SIZE(bfin_isp1761_devices);
96 96
97 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 97 printk(KERN_INFO "%s(): registering device resources\n", __func__);
98 set_irq_type(ISP1761_IRQ, IRQF_TRIGGER_FALLING); 98 set_irq_type(ISP1761_IRQ, IRQF_TRIGGER_FALLING);
99 99
100 return platform_add_devices(bfin_isp1761_devices, num_devices); 100 return platform_add_devices(bfin_isp1761_devices, num_devices);
@@ -416,7 +416,7 @@ static struct platform_device net2272_bfin_device = {
416static struct mtd_partition bfin_spi_flash_partitions[] = { 416static struct mtd_partition bfin_spi_flash_partitions[] = {
417 { 417 {
418 .name = "bootloader", 418 .name = "bootloader",
419 .size = 0x00020000, 419 .size = 0x00040000,
420 .offset = 0, 420 .offset = 0,
421 .mask_flags = MTD_CAP_ROM 421 .mask_flags = MTD_CAP_ROM
422 }, { 422 }, {
@@ -707,6 +707,32 @@ static struct platform_device bfin_uart_device = {
707}; 707};
708#endif 708#endif
709 709
710#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
711static struct resource bfin_sir_resources[] = {
712#ifdef CONFIG_BFIN_SIR0
713 {
714 .start = 0xFFC00400,
715 .end = 0xFFC004FF,
716 .flags = IORESOURCE_MEM,
717 },
718#endif
719#ifdef CONFIG_BFIN_SIR1
720 {
721 .start = 0xFFC02000,
722 .end = 0xFFC020FF,
723 .flags = IORESOURCE_MEM,
724 },
725#endif
726};
727
728static struct platform_device bfin_sir_device = {
729 .name = "bfin_sir",
730 .id = 0,
731 .num_resources = ARRAY_SIZE(bfin_sir_resources),
732 .resource = bfin_sir_resources,
733};
734#endif
735
710#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) 736#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
711static struct resource bfin_twi0_resource[] = { 737static struct resource bfin_twi0_resource[] = {
712 [0] = { 738 [0] = {
@@ -874,6 +900,10 @@ static struct platform_device *stamp_devices[] __initdata = {
874 &bfin_uart_device, 900 &bfin_uart_device,
875#endif 901#endif
876 902
903#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
904 &bfin_sir_device,
905#endif
906
877#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) 907#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
878 &i2c_bfin_twi_device, 908 &i2c_bfin_twi_device,
879#endif 909#endif
@@ -896,7 +926,7 @@ static struct platform_device *stamp_devices[] __initdata = {
896 926
897static int __init stamp_init(void) 927static int __init stamp_init(void)
898{ 928{
899 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 929 printk(KERN_INFO "%s(): registering device resources\n", __func__);
900 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); 930 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
901#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 931#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
902 spi_register_board_info(bfin_spi_board_info, 932 spi_register_board_info(bfin_spi_board_info,
diff --git a/arch/blackfin/mach-bf527/cpu.c b/arch/blackfin/mach-bf527/cpu.c
deleted file mode 100644
index 1975402b1dbc..000000000000
--- a/arch/blackfin/mach-bf527/cpu.c
+++ /dev/null
@@ -1,161 +0,0 @@
1/*
2 * File: arch/blackfin/mach-bf527/cpu.c
3 * Based on: arch/blackfin/mach-bf537/cpu.c
4 * Author: michael.kang@analog.com
5 *
6 * Created:
7 * Description: clock scaling for the bf527
8 *
9 * Modified:
10 * Copyright 2004-2007 Analog Devices Inc.
11 *
12 * Bugs: Enter bugs at http://blackfin.uclinux.org/
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or
17 * (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, see the file COPYING, or write
26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */
29
30#include <linux/kernel.h>
31#include <linux/types.h>
32#include <linux/init.h>
33#include <linux/cpufreq.h>
34#include <asm/dpmc.h>
35#include <linux/fs.h>
36#include <asm/bfin-global.h>
37
38/* CONFIG_CLKIN_HZ=11059200 */
39#define VCO5 (CONFIG_CLKIN_HZ*45) /*497664000 */
40#define VCO4 (CONFIG_CLKIN_HZ*36) /*398131200 */
41#define VCO3 (CONFIG_CLKIN_HZ*27) /*298598400 */
42#define VCO2 (CONFIG_CLKIN_HZ*18) /*199065600 */
43#define VCO1 (CONFIG_CLKIN_HZ*9) /*99532800 */
44#define VCO(x) VCO##x
45
46#define MFREQ(x) {VCO(x), VCO(x)/4}, {VCO(x), VCO(x)/2}, {VCO(x), VCO(x)}
47/* frequency */
48static struct cpufreq_frequency_table bf527_freq_table[] = {
49 MFREQ(1),
50 MFREQ(3),
51 {VCO4, VCO4 / 2}, {VCO4, VCO4},
52 MFREQ(5),
53 {0, CPUFREQ_TABLE_END},
54};
55
56/*
57 * dpmc_fops->ioctl()
58 * static int dpmc_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
59 */
60static int bf527_getfreq(unsigned int cpu)
61{
62 unsigned long cclk_mhz;
63
64 /* The driver only support single cpu */
65 if (cpu == 0)
66 dpmc_fops.ioctl(NULL, NULL, IOCTL_GET_CORECLOCK, &cclk_mhz);
67 else
68 cclk_mhz = -1;
69
70 return cclk_mhz;
71}
72
73static int bf527_target(struct cpufreq_policy *policy,
74 unsigned int target_freq, unsigned int relation)
75{
76 unsigned long cclk_mhz;
77 unsigned long vco_mhz;
78 unsigned long flags;
79 unsigned int index;
80 struct cpufreq_freqs freqs;
81
82 if (cpufreq_frequency_table_target
83 (policy, bf527_freq_table, target_freq, relation, &index))
84 return -EINVAL;
85
86 cclk_mhz = bf527_freq_table[index].frequency;
87 vco_mhz = bf527_freq_table[index].index;
88
89 dpmc_fops.ioctl(NULL, NULL, IOCTL_CHANGE_FREQUENCY, &vco_mhz);
90 freqs.old = bf527_getfreq(0);
91 freqs.new = cclk_mhz;
92 freqs.cpu = 0;
93
94 pr_debug
95 ("cclk begin change to cclk %d,vco=%d,index=%d,target=%d,oldfreq=%d\n",
96 cclk_mhz, vco_mhz, index, target_freq, freqs.old);
97
98 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
99 local_irq_save(flags);
100 dpmc_fops.ioctl(NULL, NULL, IOCTL_SET_CCLK, &cclk_mhz);
101 local_irq_restore(flags);
102 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
103
104 vco_mhz = get_vco();
105 cclk_mhz = get_cclk();
106 return 0;
107}
108
109/* make sure that only the "userspace" governor is run -- anything else wouldn't make sense on
110 * this platform, anyway.
111 */
112static int bf527_verify_speed(struct cpufreq_policy *policy)
113{
114 return cpufreq_frequency_table_verify(policy, &bf527_freq_table);
115}
116
117static int __init __bf527_cpu_init(struct cpufreq_policy *policy)
118{
119 if (policy->cpu != 0)
120 return -EINVAL;
121
122 policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
123
124 policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
125 /*Now ,only support one cpu */
126 policy->cur = bf527_getfreq(0);
127 cpufreq_frequency_table_get_attr(bf527_freq_table, policy->cpu);
128 return cpufreq_frequency_table_cpuinfo(policy, bf527_freq_table);
129}
130
131static struct freq_attr *bf527_freq_attr[] = {
132 &cpufreq_freq_attr_scaling_available_freqs,
133 NULL,
134};
135
136static struct cpufreq_driver bf527_driver = {
137 .verify = bf527_verify_speed,
138 .target = bf527_target,
139 .get = bf527_getfreq,
140 .init = __bf527_cpu_init,
141 .name = "bf527",
142 .owner = THIS_MODULE,
143 .attr = bf527_freq_attr,
144};
145
146static int __init bf527_cpu_init(void)
147{
148 return cpufreq_register_driver(&bf527_driver);
149}
150
151static void __exit bf527_cpu_exit(void)
152{
153 cpufreq_unregister_driver(&bf527_driver);
154}
155
156MODULE_AUTHOR("Mickael Kang");
157MODULE_DESCRIPTION("cpufreq driver for bf527 CPU");
158MODULE_LICENSE("GPL");
159
160module_init(bf527_cpu_init);
161module_exit(bf527_cpu_exit);
diff --git a/arch/blackfin/mach-bf527/dma.c b/arch/blackfin/mach-bf527/dma.c
index 522de24cc394..dfd080cda787 100644
--- a/arch/blackfin/mach-bf527/dma.c
+++ b/arch/blackfin/mach-bf527/dma.c
@@ -26,10 +26,12 @@
26 * to the Free Software Foundation, Inc., 26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */ 28 */
29#include <linux/module.h>
30
29#include <asm/blackfin.h> 31#include <asm/blackfin.h>
30#include <asm/dma.h> 32#include <asm/dma.h>
31 33
32struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = { 34struct dma_register *dma_io_base_addr[MAX_BLACKFIN_DMA_CHANNEL] = {
33 (struct dma_register *) DMA0_NEXT_DESC_PTR, 35 (struct dma_register *) DMA0_NEXT_DESC_PTR,
34 (struct dma_register *) DMA1_NEXT_DESC_PTR, 36 (struct dma_register *) DMA1_NEXT_DESC_PTR,
35 (struct dma_register *) DMA2_NEXT_DESC_PTR, 37 (struct dma_register *) DMA2_NEXT_DESC_PTR,
@@ -47,6 +49,7 @@ struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = {
47 (struct dma_register *) MDMA_D1_NEXT_DESC_PTR, 49 (struct dma_register *) MDMA_D1_NEXT_DESC_PTR,
48 (struct dma_register *) MDMA_S1_NEXT_DESC_PTR, 50 (struct dma_register *) MDMA_S1_NEXT_DESC_PTR,
49}; 51};
52EXPORT_SYMBOL(dma_io_base_addr);
50 53
51int channel2irq(unsigned int channel) 54int channel2irq(unsigned int channel)
52{ 55{
diff --git a/arch/blackfin/mach-bf527/head.S b/arch/blackfin/mach-bf527/head.S
index cdb00a084965..57bdb3ba2fed 100644
--- a/arch/blackfin/mach-bf527/head.S
+++ b/arch/blackfin/mach-bf527/head.S
@@ -37,9 +37,6 @@
37#include <asm/mach/mem_init.h> 37#include <asm/mach/mem_init.h>
38#endif 38#endif
39 39
40.global __rambase
41.global __ramstart
42.global __ramend
43.extern ___bss_stop 40.extern ___bss_stop
44.extern ___bss_start 41.extern ___bss_start
45.extern _bf53x_relocate_l1_mem 42.extern _bf53x_relocate_l1_mem
@@ -439,18 +436,3 @@ ENTRY(_start_dma_code)
439 RTS; 436 RTS;
440ENDPROC(_start_dma_code) 437ENDPROC(_start_dma_code)
441#endif /* CONFIG_BFIN_KERNEL_CLOCK */ 438#endif /* CONFIG_BFIN_KERNEL_CLOCK */
442
443.data
444
445/*
446 * Set up the usable of RAM stuff. Size of RAM is determined then
447 * an initial stack set up at the end.
448 */
449
450.align 4
451__rambase:
452.long 0
453__ramstart:
454.long 0
455__ramend:
456.long 0
diff --git a/arch/blackfin/mach-bf533/Makefile b/arch/blackfin/mach-bf533/Makefile
index 8cce1736360d..aa9f2647ee0c 100644
--- a/arch/blackfin/mach-bf533/Makefile
+++ b/arch/blackfin/mach-bf533/Makefile
@@ -5,5 +5,3 @@
5extra-y := head.o 5extra-y := head.o
6 6
7obj-y := ints-priority.o dma.o 7obj-y := ints-priority.o dma.o
8
9obj-$(CONFIG_CPU_FREQ) += cpu.o
diff --git a/arch/blackfin/mach-bf533/boards/H8606.c b/arch/blackfin/mach-bf533/boards/H8606.c
index 97378b0a9753..7cc4864f6aaf 100644
--- a/arch/blackfin/mach-bf533/boards/H8606.c
+++ b/arch/blackfin/mach-bf533/boards/H8606.c
@@ -304,6 +304,25 @@ static struct platform_device bfin_uart_device = {
304}; 304};
305#endif 305#endif
306 306
307#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
308static struct resource bfin_sir_resources[] = {
309#ifdef CONFIG_BFIN_SIR0
310 {
311 .start = 0xFFC00400,
312 .end = 0xFFC004FF,
313 .flags = IORESOURCE_MEM,
314 },
315#endif
316};
317
318static struct platform_device bfin_sir_device = {
319 .name = "bfin_sir",
320 .id = 0,
321 .num_resources = ARRAY_SIZE(bfin_sir_resources),
322 .resource = bfin_sir_resources,
323};
324#endif
325
307#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE) 326#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE)
308 327
309#include <linux/serial_8250.h> 328#include <linux/serial_8250.h>
@@ -403,6 +422,10 @@ static struct platform_device *h8606_devices[] __initdata = {
403 &serial8250_device, 422 &serial8250_device,
404#endif 423#endif
405 424
425#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
426 &bfin_sir_device,
427#endif
428
406#if defined(CONFIG_KEYBOARD_OPENCORES) || defined(CONFIG_KEYBOARD_OPENCORES_MODULE) 429#if defined(CONFIG_KEYBOARD_OPENCORES) || defined(CONFIG_KEYBOARD_OPENCORES_MODULE)
407 &opencores_kbd_device, 430 &opencores_kbd_device,
408#endif 431#endif
@@ -411,7 +434,7 @@ static struct platform_device *h8606_devices[] __initdata = {
411static int __init H8606_init(void) 434static int __init H8606_init(void)
412{ 435{
413 printk(KERN_INFO "HV Sistemas H8606 board support by http://www.hvsistemas.com\n"); 436 printk(KERN_INFO "HV Sistemas H8606 board support by http://www.hvsistemas.com\n");
414 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 437 printk(KERN_INFO "%s(): registering device resources\n", __func__);
415 platform_add_devices(h8606_devices, ARRAY_SIZE(h8606_devices)); 438 platform_add_devices(h8606_devices, ARRAY_SIZE(h8606_devices));
416#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 439#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
417 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); 440 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
diff --git a/arch/blackfin/mach-bf533/boards/Kconfig b/arch/blackfin/mach-bf533/boards/Kconfig
index 751de5110afc..840059241fbe 100644
--- a/arch/blackfin/mach-bf533/boards/Kconfig
+++ b/arch/blackfin/mach-bf533/boards/Kconfig
@@ -26,6 +26,12 @@ config H8606_HVSISTEMAS
26 help 26 help
27 HV Sistemas H8606 board support. 27 HV Sistemas H8606 board support.
28 28
29config BFIN532_IP0X
30 bool "IP04/IP08 IP-PBX"
31 depends on (BF532)
32 help
33 Core support for IP04/IP04 open hardware IP-PBX.
34
29config GENERIC_BF533_BOARD 35config GENERIC_BF533_BOARD
30 bool "Generic" 36 bool "Generic"
31 help 37 help
diff --git a/arch/blackfin/mach-bf533/boards/Makefile b/arch/blackfin/mach-bf533/boards/Makefile
index 54f57fb9791e..b7a1a1d79bda 100644
--- a/arch/blackfin/mach-bf533/boards/Makefile
+++ b/arch/blackfin/mach-bf533/boards/Makefile
@@ -4,6 +4,7 @@
4 4
5obj-$(CONFIG_GENERIC_BF533_BOARD) += generic_board.o 5obj-$(CONFIG_GENERIC_BF533_BOARD) += generic_board.o
6obj-$(CONFIG_BFIN533_STAMP) += stamp.o 6obj-$(CONFIG_BFIN533_STAMP) += stamp.o
7obj-$(CONFIG_BFIN532_IP0X) += ip0x.o
7obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o 8obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o
8obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o 9obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o
9obj-$(CONFIG_H8606_HVSISTEMAS) += H8606.o 10obj-$(CONFIG_H8606_HVSISTEMAS) += H8606.o
diff --git a/arch/blackfin/mach-bf533/boards/cm_bf533.c b/arch/blackfin/mach-bf533/boards/cm_bf533.c
index 886f260d9359..a03149c72681 100644
--- a/arch/blackfin/mach-bf533/boards/cm_bf533.c
+++ b/arch/blackfin/mach-bf533/boards/cm_bf533.c
@@ -234,6 +234,25 @@ static struct platform_device bfin_uart_device = {
234}; 234};
235#endif 235#endif
236 236
237#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
238static struct resource bfin_sir_resources[] = {
239#ifdef CONFIG_BFIN_SIR0
240 {
241 .start = 0xFFC00400,
242 .end = 0xFFC004FF,
243 .flags = IORESOURCE_MEM,
244 },
245#endif
246};
247
248static struct platform_device bfin_sir_device = {
249 .name = "bfin_sir",
250 .id = 0,
251 .num_resources = ARRAY_SIZE(bfin_sir_resources),
252 .resource = bfin_sir_resources,
253};
254#endif
255
237#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 256#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
238static struct platform_device bfin_sport0_uart_device = { 257static struct platform_device bfin_sport0_uart_device = {
239 .name = "bfin-sport-uart", 258 .name = "bfin-sport-uart",
@@ -327,6 +346,10 @@ static struct platform_device *cm_bf533_devices[] __initdata = {
327 &bfin_uart_device, 346 &bfin_uart_device,
328#endif 347#endif
329 348
349#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
350 &bfin_sir_device,
351#endif
352
330#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 353#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
331 &bfin_sport0_uart_device, 354 &bfin_sport0_uart_device,
332 &bfin_sport1_uart_device, 355 &bfin_sport1_uart_device,
@@ -355,7 +378,7 @@ static struct platform_device *cm_bf533_devices[] __initdata = {
355 378
356static int __init cm_bf533_init(void) 379static int __init cm_bf533_init(void)
357{ 380{
358 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 381 printk(KERN_INFO "%s(): registering device resources\n", __func__);
359 platform_add_devices(cm_bf533_devices, ARRAY_SIZE(cm_bf533_devices)); 382 platform_add_devices(cm_bf533_devices, ARRAY_SIZE(cm_bf533_devices));
360#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 383#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
361 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); 384 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
diff --git a/arch/blackfin/mach-bf533/boards/ezkit.c b/arch/blackfin/mach-bf533/boards/ezkit.c
index 241b5a20a36a..08a7943949ae 100644
--- a/arch/blackfin/mach-bf533/boards/ezkit.c
+++ b/arch/blackfin/mach-bf533/boards/ezkit.c
@@ -237,6 +237,25 @@ static struct platform_device bfin_uart_device = {
237}; 237};
238#endif 238#endif
239 239
240#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
241static struct resource bfin_sir_resources[] = {
242#ifdef CONFIG_BFIN_SIR0
243 {
244 .start = 0xFFC00400,
245 .end = 0xFFC004FF,
246 .flags = IORESOURCE_MEM,
247 },
248#endif
249};
250
251static struct platform_device bfin_sir_device = {
252 .name = "bfin_sir",
253 .id = 0,
254 .num_resources = ARRAY_SIZE(bfin_sir_resources),
255 .resource = bfin_sir_resources,
256};
257#endif
258
240#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) 259#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
241#define PATA_INT 55 260#define PATA_INT 55
242 261
@@ -352,6 +371,10 @@ static struct platform_device *ezkit_devices[] __initdata = {
352 &bfin_uart_device, 371 &bfin_uart_device,
353#endif 372#endif
354 373
374#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
375 &bfin_sir_device,
376#endif
377
355#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) 378#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
356 &bfin_pata_device, 379 &bfin_pata_device,
357#endif 380#endif
@@ -369,7 +392,7 @@ static struct platform_device *ezkit_devices[] __initdata = {
369 392
370static int __init ezkit_init(void) 393static int __init ezkit_init(void)
371{ 394{
372 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 395 printk(KERN_INFO "%s(): registering device resources\n", __func__);
373 platform_add_devices(ezkit_devices, ARRAY_SIZE(ezkit_devices)); 396 platform_add_devices(ezkit_devices, ARRAY_SIZE(ezkit_devices));
374#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 397#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
375 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); 398 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
diff --git a/arch/blackfin/mach-bf533/boards/generic_board.c b/arch/blackfin/mach-bf533/boards/generic_board.c
index e359a0d6467f..82b1f6a60e3f 100644
--- a/arch/blackfin/mach-bf533/boards/generic_board.c
+++ b/arch/blackfin/mach-bf533/boards/generic_board.c
@@ -84,7 +84,7 @@ static struct platform_device *generic_board_devices[] __initdata = {
84 84
85static int __init generic_board_init(void) 85static int __init generic_board_init(void)
86{ 86{
87 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 87 printk(KERN_INFO "%s(): registering device resources\n", __func__);
88 return platform_add_devices(generic_board_devices, ARRAY_SIZE(generic_board_devices)); 88 return platform_add_devices(generic_board_devices, ARRAY_SIZE(generic_board_devices));
89} 89}
90 90
diff --git a/arch/blackfin/mach-bf533/boards/ip0x.c b/arch/blackfin/mach-bf533/boards/ip0x.c
new file mode 100644
index 000000000000..5864892de314
--- /dev/null
+++ b/arch/blackfin/mach-bf533/boards/ip0x.c
@@ -0,0 +1,303 @@
1/*
2 * File: arch/blackfin/mach-bf533/ip0x.c
3 * Based on: arch/blackfin/mach-bf533/bf1.c
4 * Based on: arch/blackfin/mach-bf533/stamp.c
5 * Author: Ivan Danov <idanov@gmail.com>
6 * Modified for IP0X David Rowe
7 *
8 * Created: 2007
9 * Description: Board info file for the IP04/IP08 boards, which
10 * are derived from the BlackfinOne V2.0 boards.
11 *
12 * Modified:
13 * COpyright 2007 David Rowe
14 * Copyright 2006 Intratrade Ltd.
15 * Copyright 2005 National ICT Australia (NICTA)
16 * Copyright 2004-2006 Analog Devices Inc.
17 *
18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License as published by
20 * the Free Software Foundation; either version 2 of the License, or
21 * (at your option) any later version.
22 *
23 * This program is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 * GNU General Public License for more details.
27 *
28 * You should have received a copy of the GNU General Public License
29 * along with this program; if not, see the file COPYING, or write
30 * to the Free Software Foundation, Inc.,
31 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
32 */
33
34#include <linux/device.h>
35#include <linux/platform_device.h>
36#include <linux/mtd/mtd.h>
37#include <linux/mtd/partitions.h>
38#include <linux/spi/spi.h>
39#include <linux/spi/flash.h>
40#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
41#include <linux/usb/isp1362.h>
42#endif
43#include <asm/irq.h>
44#include <asm/bfin5xx_spi.h>
45
46/*
47 * Name the Board for the /proc/cpuinfo
48 */
49const char bfin_board_name[] = "IP04/IP08";
50
51/*
52 * Driver needs to know address, irq and flag pin.
53 */
54#if defined(CONFIG_BFIN532_IP0X)
55#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
56
57#include <linux/dm9000.h>
58
59static struct resource dm9000_resource1[] = {
60 {
61 .start = 0x20100000,
62 .end = 0x20100000 + 1,
63 .flags = IORESOURCE_MEM
64 },{
65 .start = 0x20100000 + 2,
66 .end = 0x20100000 + 3,
67 .flags = IORESOURCE_MEM
68 },{
69 .start = IRQ_PF15,
70 .end = IRQ_PF15,
71 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE
72 }
73};
74
75static struct resource dm9000_resource2[] = {
76 {
77 .start = 0x20200000,
78 .end = 0x20200000 + 1,
79 .flags = IORESOURCE_MEM
80 },{
81 .start = 0x20200000 + 2,
82 .end = 0x20200000 + 3,
83 .flags = IORESOURCE_MEM
84 },{
85 .start = IRQ_PF14,
86 .end = IRQ_PF14,
87 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE
88 }
89};
90
91/*
92* for the moment we limit ourselves to 16bit IO until some
93* better IO routines can be written and tested
94*/
95static struct dm9000_plat_data dm9000_platdata1 = {
96 .flags = DM9000_PLATF_16BITONLY,
97};
98
99static struct platform_device dm9000_device1 = {
100 .name = "dm9000",
101 .id = 0,
102 .num_resources = ARRAY_SIZE(dm9000_resource1),
103 .resource = dm9000_resource1,
104 .dev = {
105 .platform_data = &dm9000_platdata1,
106 }
107};
108
109static struct dm9000_plat_data dm9000_platdata2 = {
110 .flags = DM9000_PLATF_16BITONLY,
111};
112
113static struct platform_device dm9000_device2 = {
114 .name = "dm9000",
115 .id = 1,
116 .num_resources = ARRAY_SIZE(dm9000_resource2),
117 .resource = dm9000_resource2,
118 .dev = {
119 .platform_data = &dm9000_platdata2,
120 }
121};
122
123#endif
124#endif
125
126
127#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
128/* all SPI peripherals info goes here */
129
130#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
131static struct bfin5xx_spi_chip spi_mmc_chip_info = {
132/*
133 * CPOL (Clock Polarity)
134 * 0 - Active high SCK
135 * 1 - Active low SCK
136 * CPHA (Clock Phase) Selects transfer format and operation mode
137 * 0 - SCLK toggles from middle of the first data bit, slave select
138 * pins controlled by hardware.
139 * 1 - SCLK toggles from beginning of first data bit, slave select
140 * pins controller by user software.
141 * .ctl_reg = 0x1c00, * CPOL=1,CPHA=1,Sandisk 1G work
142 * NO NO .ctl_reg = 0x1800, * CPOL=1,CPHA=0
143 * NO NO .ctl_reg = 0x1400, * CPOL=0,CPHA=1
144 */
145 .ctl_reg = 0x1000, /* CPOL=0,CPHA=0,Sandisk 1G work */
146 .enable_dma = 0, /* if 1 - block!!! */
147 .bits_per_word = 8,
148 .cs_change_per_word = 0,
149};
150#endif
151
152/* Notice: for blackfin, the speed_hz is the value of register
153 * SPI_BAUD, not the real baudrate */
154static struct spi_board_info bfin_spi_board_info[] __initdata = {
155#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
156 {
157 .modalias = "spi_mmc",
158 .max_speed_hz = 2,
159 .bus_num = 1,
160 .chip_select = CONFIG_SPI_MMC_CS_CHAN,
161 .platform_data = NULL,
162 .controller_data = &spi_mmc_chip_info,
163 },
164#endif
165};
166
167/* SPI controller data */
168static struct bfin5xx_spi_master spi_bfin_master_info = {
169 .num_chipselect = 8,
170 .enable_dma = 1, /* master has the ability to do dma transfer */
171};
172
173static struct platform_device spi_bfin_master_device = {
174 .name = "bfin-spi-master",
175 .id = 1, /* Bus number */
176 .dev = {
177 .platform_data = &spi_bfin_master_info, /* Passed to driver */
178 },
179};
180#endif /* spi master and devices */
181
182#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
183static struct resource bfin_uart_resources[] = {
184 {
185 .start = 0xFFC00400,
186 .end = 0xFFC004FF,
187 .flags = IORESOURCE_MEM,
188 },
189};
190
191static struct platform_device bfin_uart_device = {
192 .name = "bfin-uart",
193 .id = 1,
194 .num_resources = ARRAY_SIZE(bfin_uart_resources),
195 .resource = bfin_uart_resources,
196};
197#endif
198
199#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
200static struct resource bfin_sir_resources[] = {
201#ifdef CONFIG_BFIN_SIR0
202 {
203 .start = 0xFFC00400,
204 .end = 0xFFC004FF,
205 .flags = IORESOURCE_MEM,
206 },
207#endif
208};
209
210static struct platform_device bfin_sir_device = {
211 .name = "bfin_sir",
212 .id = 0,
213 .num_resources = ARRAY_SIZE(bfin_sir_resources),
214 .resource = bfin_sir_resources,
215};
216#endif
217
218#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
219static struct resource isp1362_hcd_resources[] = {
220 {
221 .start = 0x20300000,
222 .end = 0x20300000 + 1,
223 .flags = IORESOURCE_MEM,
224 },{
225 .start = 0x20300000 + 2,
226 .end = 0x20300000 + 3,
227 .flags = IORESOURCE_MEM,
228 },{
229 .start = IRQ_PF11,
230 .end = IRQ_PF11,
231 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
232 },
233};
234
235static struct isp1362_platform_data isp1362_priv = {
236 .sel15Kres = 1,
237 .clknotstop = 0,
238 .oc_enable = 0, /* external OC */
239 .int_act_high = 0,
240 .int_edge_triggered = 0,
241 .remote_wakeup_connected = 0,
242 .no_power_switching = 1,
243 .power_switching_mode = 0,
244};
245
246static struct platform_device isp1362_hcd_device = {
247 .name = "isp1362-hcd",
248 .id = 0,
249 .dev = {
250 .platform_data = &isp1362_priv,
251 },
252 .num_resources = ARRAY_SIZE(isp1362_hcd_resources),
253 .resource = isp1362_hcd_resources,
254};
255#endif
256
257
258static struct platform_device *ip0x_devices[] __initdata = {
259#if defined(CONFIG_BFIN532_IP0X)
260#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
261 &dm9000_device1,
262 &dm9000_device2,
263#endif
264#endif
265
266#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
267 &spi_bfin_master_device,
268#endif
269
270#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
271 &bfin_uart_device,
272#endif
273
274#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
275 &bfin_sir_device,
276#endif
277
278#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
279 &isp1362_hcd_device,
280#endif
281};
282
283static int __init ip0x_init(void)
284{
285 int i;
286
287 printk(KERN_INFO "%s(): registering device resources\n", __func__);
288 platform_add_devices(ip0x_devices, ARRAY_SIZE(ip0x_devices));
289
290#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
291 for (i = 0; i < ARRAY_SIZE(bfin_spi_board_info); ++i) {
292 int j = 1 << bfin_spi_board_info[i].chip_select;
293 /* set spi cs to 1 */
294 bfin_write_FIO_DIR(bfin_read_FIO_DIR() | j);
295 bfin_write_FIO_FLAG_S(j);
296 }
297 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
298#endif
299
300 return 0;
301}
302
303arch_initcall(ip0x_init);
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c
index b2ac4816ae62..fddce32901a2 100644
--- a/arch/blackfin/mach-bf533/boards/stamp.c
+++ b/arch/blackfin/mach-bf533/boards/stamp.c
@@ -40,6 +40,7 @@
40#endif 40#endif
41#include <linux/ata_platform.h> 41#include <linux/ata_platform.h>
42#include <linux/irq.h> 42#include <linux/irq.h>
43#include <linux/i2c.h>
43#include <asm/dma.h> 44#include <asm/dma.h>
44#include <asm/bfin5xx_spi.h> 45#include <asm/bfin5xx_spi.h>
45#include <asm/reboot.h> 46#include <asm/reboot.h>
@@ -109,6 +110,7 @@ static struct platform_device net2272_bfin_device = {
109}; 110};
110#endif 111#endif
111 112
113#if defined(CONFIG_MTD_BF5xx) || defined(CONFIG_MTD_BF5xx_MODULE)
112static struct mtd_partition stamp_partitions[] = { 114static struct mtd_partition stamp_partitions[] = {
113 { 115 {
114 .name = "Bootloader", 116 .name = "Bootloader",
@@ -152,6 +154,7 @@ static struct platform_device stamp_flash_device = {
152 .num_resources = ARRAY_SIZE(stamp_flash_resource), 154 .num_resources = ARRAY_SIZE(stamp_flash_resource),
153 .resource = stamp_flash_resource, 155 .resource = stamp_flash_resource,
154}; 156};
157#endif
155 158
156#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 159#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
157/* all SPI peripherals info goes here */ 160/* all SPI peripherals info goes here */
@@ -367,6 +370,25 @@ static struct platform_device bfin_uart_device = {
367}; 370};
368#endif 371#endif
369 372
373#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
374static struct resource bfin_sir_resources[] = {
375#ifdef CONFIG_BFIN_SIR0
376 {
377 .start = 0xFFC00400,
378 .end = 0xFFC004FF,
379 .flags = IORESOURCE_MEM,
380 },
381#endif
382};
383
384static struct platform_device bfin_sir_device = {
385 .name = "bfin_sir",
386 .id = 0,
387 .num_resources = ARRAY_SIZE(bfin_sir_resources),
388 .resource = bfin_sir_resources,
389};
390#endif
391
370#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 392#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
371static struct platform_device bfin_sport0_uart_device = { 393static struct platform_device bfin_sport0_uart_device = {
372 .name = "bfin-sport-uart", 394 .name = "bfin-sport-uart",
@@ -472,6 +494,31 @@ static struct platform_device i2c_gpio_device = {
472}; 494};
473#endif 495#endif
474 496
497#ifdef CONFIG_I2C_BOARDINFO
498static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
499#if defined(CONFIG_JOYSTICK_AD7142) || defined(CONFIG_JOYSTICK_AD7142_MODULE)
500 {
501 I2C_BOARD_INFO("ad7142_joystick", 0x2C),
502 .type = "ad7142_joystick",
503 .irq = 39,
504 },
505#endif
506#if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
507 {
508 I2C_BOARD_INFO("pcf8574_lcd", 0x22),
509 .type = "pcf8574_lcd",
510 },
511#endif
512#if defined(CONFIG_TWI_KEYPAD) || defined(CONFIG_TWI_KEYPAD_MODULE)
513 {
514 I2C_BOARD_INFO("pcf8574_keypad", 0x27),
515 .type = "pcf8574_keypad",
516 .irq = 39,
517 },
518#endif
519};
520#endif
521
475static struct platform_device *stamp_devices[] __initdata = { 522static struct platform_device *stamp_devices[] __initdata = {
476#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) 523#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
477 &rtc_device, 524 &rtc_device,
@@ -497,6 +544,10 @@ static struct platform_device *stamp_devices[] __initdata = {
497 &bfin_uart_device, 544 &bfin_uart_device,
498#endif 545#endif
499 546
547#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
548 &bfin_sir_device,
549#endif
550
500#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 551#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
501 &bfin_sport0_uart_device, 552 &bfin_sport0_uart_device,
502 &bfin_sport1_uart_device, 553 &bfin_sport1_uart_device,
@@ -515,14 +566,23 @@ static struct platform_device *stamp_devices[] __initdata = {
515#endif 566#endif
516 567
517 &bfin_gpios_device, 568 &bfin_gpios_device,
569
570#if defined(CONFIG_MTD_BF5xx) || defined(CONFIG_MTD_BF5xx_MODULE)
518 &stamp_flash_device, 571 &stamp_flash_device,
572#endif
519}; 573};
520 574
521static int __init stamp_init(void) 575static int __init stamp_init(void)
522{ 576{
523 int ret; 577 int ret;
524 578
525 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 579 printk(KERN_INFO "%s(): registering device resources\n", __func__);
580
581#ifdef CONFIG_I2C_BOARDINFO
582 i2c_register_board_info(0, bfin_i2c_board_info,
583 ARRAY_SIZE(bfin_i2c_board_info));
584#endif
585
526 ret = platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); 586 ret = platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
527 if (ret < 0) 587 if (ret < 0)
528 return ret; 588 return ret;
diff --git a/arch/blackfin/mach-bf533/cpu.c b/arch/blackfin/mach-bf533/cpu.c
deleted file mode 100644
index b7a0e0fbd9af..000000000000
--- a/arch/blackfin/mach-bf533/cpu.c
+++ /dev/null
@@ -1,158 +0,0 @@
1/*
2 * File: arch/blackfin/mach-bf533/cpu.c
3 * Based on:
4 * Author: michael.kang@analog.com
5 *
6 * Created:
7 * Description: clock scaling for the bf533
8 *
9 * Modified:
10 * Copyright 2004-2006 Analog Devices Inc.
11 *
12 * Bugs: Enter bugs at http://blackfin.uclinux.org/
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or
17 * (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, see the file COPYING, or write
26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */
29
30#include <linux/kernel.h>
31#include <linux/types.h>
32#include <linux/init.h>
33#include <linux/cpufreq.h>
34#include <asm/dpmc.h>
35#include <linux/fs.h>
36#include <asm/bfin-global.h>
37
38/* CONFIG_CLKIN_HZ=11059200 */
39#define VCO5 (CONFIG_CLKIN_HZ*45) /*497664000 */
40#define VCO4 (CONFIG_CLKIN_HZ*36) /*398131200 */
41#define VCO3 (CONFIG_CLKIN_HZ*27) /*298598400 */
42#define VCO2 (CONFIG_CLKIN_HZ*18) /*199065600 */
43#define VCO1 (CONFIG_CLKIN_HZ*9) /*99532800 */
44#define VCO(x) VCO##x
45
46#define FREQ(x) {VCO(x),VCO(x)/4},{VCO(x),VCO(x)/2},{VCO(x),VCO(x)}
47/* frequency */
48static struct cpufreq_frequency_table bf533_freq_table[] = {
49 FREQ(1),
50 FREQ(3),
51 {VCO4, VCO4 / 2}, {VCO4, VCO4},
52 FREQ(5),
53 {0, CPUFREQ_TABLE_END},
54};
55
56/*
57 * dpmc_fops->ioctl()
58 * static int dpmc_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
59 */
60static int bf533_getfreq(unsigned int cpu)
61{
62 unsigned long cclk_mhz, vco_mhz;
63
64 /* The driver only support single cpu */
65 if (cpu == 0)
66 dpmc_fops.ioctl(NULL, NULL, IOCTL_GET_CORECLOCK, &cclk_mhz);
67 else
68 cclk_mhz = -1;
69 return cclk_mhz;
70}
71
72static int bf533_target(struct cpufreq_policy *policy,
73 unsigned int target_freq, unsigned int relation)
74{
75 unsigned long cclk_mhz;
76 unsigned long vco_mhz;
77 unsigned long flags;
78 unsigned int index, vco_index;
79 int i;
80
81 struct cpufreq_freqs freqs;
82 if (cpufreq_frequency_table_target(policy, bf533_freq_table, target_freq, relation, &index))
83 return -EINVAL;
84 cclk_mhz = bf533_freq_table[index].frequency;
85 vco_mhz = bf533_freq_table[index].index;
86
87 dpmc_fops.ioctl(NULL, NULL, IOCTL_CHANGE_FREQUENCY, &vco_mhz);
88 freqs.old = bf533_getfreq(0);
89 freqs.new = cclk_mhz;
90 freqs.cpu = 0;
91
92 pr_debug("cclk begin change to cclk %d,vco=%d,index=%d,target=%d,oldfreq=%d\n",
93 cclk_mhz, vco_mhz, index, target_freq, freqs.old);
94
95 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
96 local_irq_save(flags);
97 dpmc_fops.ioctl(NULL, NULL, IOCTL_SET_CCLK, &cclk_mhz);
98 local_irq_restore(flags);
99 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
100
101 vco_mhz = get_vco();
102 cclk_mhz = get_cclk();
103 return 0;
104}
105
106/* make sure that only the "userspace" governor is run -- anything else wouldn't make sense on
107 * this platform, anyway.
108 */
109static int bf533_verify_speed(struct cpufreq_policy *policy)
110{
111 return cpufreq_frequency_table_verify(policy, &bf533_freq_table);
112}
113
114static int __init __bf533_cpu_init(struct cpufreq_policy *policy)
115{
116 int result;
117
118 if (policy->cpu != 0)
119 return -EINVAL;
120
121 policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
122 /*Now ,only support one cpu */
123 policy->cur = bf533_getfreq(0);
124 cpufreq_frequency_table_get_attr(bf533_freq_table, policy->cpu);
125 return cpufreq_frequency_table_cpuinfo(policy, bf533_freq_table);
126}
127
128static struct freq_attr *bf533_freq_attr[] = {
129 &cpufreq_freq_attr_scaling_available_freqs,
130 NULL,
131};
132
133static struct cpufreq_driver bf533_driver = {
134 .verify = bf533_verify_speed,
135 .target = bf533_target,
136 .get = bf533_getfreq,
137 .init = __bf533_cpu_init,
138 .name = "bf533",
139 .owner = THIS_MODULE,
140 .attr = bf533_freq_attr,
141};
142
143static int __init bf533_cpu_init(void)
144{
145 return cpufreq_register_driver(&bf533_driver);
146}
147
148static void __exit bf533_cpu_exit(void)
149{
150 cpufreq_unregister_driver(&bf533_driver);
151}
152
153MODULE_AUTHOR("Mickael Kang");
154MODULE_DESCRIPTION("cpufreq driver for BF533 CPU");
155MODULE_LICENSE("GPL");
156
157module_init(bf533_cpu_init);
158module_exit(bf533_cpu_exit);
diff --git a/arch/blackfin/mach-bf533/dma.c b/arch/blackfin/mach-bf533/dma.c
index 6c909cf4f7bf..28655c1cb7dc 100644
--- a/arch/blackfin/mach-bf533/dma.c
+++ b/arch/blackfin/mach-bf533/dma.c
@@ -26,10 +26,12 @@
26 * to the Free Software Foundation, Inc., 26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */ 28 */
29#include <linux/module.h>
30
29#include <asm/blackfin.h> 31#include <asm/blackfin.h>
30#include <asm/dma.h> 32#include <asm/dma.h>
31 33
32struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = { 34struct dma_register *dma_io_base_addr[MAX_BLACKFIN_DMA_CHANNEL] = {
33 (struct dma_register *) DMA0_NEXT_DESC_PTR, 35 (struct dma_register *) DMA0_NEXT_DESC_PTR,
34 (struct dma_register *) DMA1_NEXT_DESC_PTR, 36 (struct dma_register *) DMA1_NEXT_DESC_PTR,
35 (struct dma_register *) DMA2_NEXT_DESC_PTR, 37 (struct dma_register *) DMA2_NEXT_DESC_PTR,
@@ -43,6 +45,7 @@ struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = {
43 (struct dma_register *) MDMA_D1_NEXT_DESC_PTR, 45 (struct dma_register *) MDMA_D1_NEXT_DESC_PTR,
44 (struct dma_register *) MDMA_S1_NEXT_DESC_PTR, 46 (struct dma_register *) MDMA_S1_NEXT_DESC_PTR,
45}; 47};
48EXPORT_SYMBOL(dma_io_base_addr);
46 49
47int channel2irq(unsigned int channel) 50int channel2irq(unsigned int channel)
48{ 51{
diff --git a/arch/blackfin/mach-bf533/head.S b/arch/blackfin/mach-bf533/head.S
index 1ded945a6fa0..1295deac00a4 100644
--- a/arch/blackfin/mach-bf533/head.S
+++ b/arch/blackfin/mach-bf533/head.S
@@ -36,9 +36,6 @@
36#include <asm/mach/mem_init.h> 36#include <asm/mach/mem_init.h>
37#endif 37#endif
38 38
39.global __rambase
40.global __ramstart
41.global __ramend
42.extern ___bss_stop 39.extern ___bss_stop
43.extern ___bss_start 40.extern ___bss_start
44.extern _bf53x_relocate_l1_mem 41.extern _bf53x_relocate_l1_mem
@@ -151,26 +148,26 @@ ENTRY(__start)
151 148
152 /* Initialise UART - when booting from u-boot, the UART is not disabled 149 /* Initialise UART - when booting from u-boot, the UART is not disabled
153 * so if we dont initalize here, our serial console gets hosed */ 150 * so if we dont initalize here, our serial console gets hosed */
154 p0.h = hi(UART_LCR); 151 p0.h = hi(BFIN_UART_LCR);
155 p0.l = lo(UART_LCR); 152 p0.l = lo(BFIN_UART_LCR);
156 r0 = 0x0(Z); 153 r0 = 0x0(Z);
157 w[p0] = r0.L; /* To enable DLL writes */ 154 w[p0] = r0.L; /* To enable DLL writes */
158 ssync; 155 ssync;
159 156
160 p0.h = hi(UART_DLL); 157 p0.h = hi(BFIN_UART_DLL);
161 p0.l = lo(UART_DLL); 158 p0.l = lo(BFIN_UART_DLL);
162 r0 = 0x0(Z); 159 r0 = 0x0(Z);
163 w[p0] = r0.L; 160 w[p0] = r0.L;
164 ssync; 161 ssync;
165 162
166 p0.h = hi(UART_DLH); 163 p0.h = hi(BFIN_UART_DLH);
167 p0.l = lo(UART_DLH); 164 p0.l = lo(BFIN_UART_DLH);
168 r0 = 0x00(Z); 165 r0 = 0x00(Z);
169 w[p0] = r0.L; 166 w[p0] = r0.L;
170 ssync; 167 ssync;
171 168
172 p0.h = hi(UART_GCTL); 169 p0.h = hi(BFIN_UART_GCTL);
173 p0.l = lo(UART_GCTL); 170 p0.l = lo(BFIN_UART_GCTL);
174 r0 = 0x0(Z); 171 r0 = 0x0(Z);
175 w[p0] = r0.L; /* To enable UART clock */ 172 w[p0] = r0.L; /* To enable UART clock */
176 ssync; 173 ssync;
@@ -431,18 +428,3 @@ ENTRY(_start_dma_code)
431 RTS; 428 RTS;
432ENDPROC(_start_dma_code) 429ENDPROC(_start_dma_code)
433#endif /* CONFIG_BFIN_KERNEL_CLOCK */ 430#endif /* CONFIG_BFIN_KERNEL_CLOCK */
434
435.data
436
437/*
438 * Set up the usable of RAM stuff. Size of RAM is determined then
439 * an initial stack set up at the end.
440 */
441
442.align 4
443__rambase:
444.long 0
445__ramstart:
446.long 0
447__ramend:
448.long 0
diff --git a/arch/blackfin/mach-bf537/Makefile b/arch/blackfin/mach-bf537/Makefile
index 7e7c9c8ac5b2..68e5478e95a9 100644
--- a/arch/blackfin/mach-bf537/Makefile
+++ b/arch/blackfin/mach-bf537/Makefile
@@ -5,5 +5,3 @@
5extra-y := head.o 5extra-y := head.o
6 6
7obj-y := ints-priority.o dma.o 7obj-y := ints-priority.o dma.o
8
9obj-$(CONFIG_CPU_FREQ) += cpu.o
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537.c b/arch/blackfin/mach-bf537/boards/cm_bf537.c
index f7c1f964f13b..d8a23cd9b9ed 100644
--- a/arch/blackfin/mach-bf537/boards/cm_bf537.c
+++ b/arch/blackfin/mach-bf537/boards/cm_bf537.c
@@ -325,6 +325,54 @@ static struct platform_device bfin_uart_device = {
325}; 325};
326#endif 326#endif
327 327
328#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
329static struct resource bfin_sir_resources[] = {
330#ifdef CONFIG_BFIN_SIR0
331 {
332 .start = 0xFFC00400,
333 .end = 0xFFC004FF,
334 .flags = IORESOURCE_MEM,
335 },
336#endif
337#ifdef CONFIG_BFIN_SIR1
338 {
339 .start = 0xFFC02000,
340 .end = 0xFFC020FF,
341 .flags = IORESOURCE_MEM,
342 },
343#endif
344};
345
346static struct platform_device bfin_sir_device = {
347 .name = "bfin_sir",
348 .id = 0,
349 .num_resources = ARRAY_SIZE(bfin_sir_resources),
350 .resource = bfin_sir_resources,
351};
352#endif
353
354#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
355static struct resource bfin_twi0_resource[] = {
356 [0] = {
357 .start = TWI0_REGBASE,
358 .end = TWI0_REGBASE,
359 .flags = IORESOURCE_MEM,
360 },
361 [1] = {
362 .start = IRQ_TWI,
363 .end = IRQ_TWI,
364 .flags = IORESOURCE_IRQ,
365 },
366};
367
368static struct platform_device i2c_bfin_twi_device = {
369 .name = "i2c-bfin-twi",
370 .id = 0,
371 .num_resources = ARRAY_SIZE(bfin_twi0_resource),
372 .resource = bfin_twi0_resource,
373};
374#endif
375
328#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 376#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
329static struct platform_device bfin_sport0_uart_device = { 377static struct platform_device bfin_sport0_uart_device = {
330 .name = "bfin-sport-uart", 378 .name = "bfin-sport-uart",
@@ -393,6 +441,14 @@ static struct platform_device *cm_bf537_devices[] __initdata = {
393 &bfin_uart_device, 441 &bfin_uart_device,
394#endif 442#endif
395 443
444#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
445 &bfin_sir_device,
446#endif
447
448#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
449 &i2c_bfin_twi_device,
450#endif
451
396#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 452#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
397 &bfin_sport0_uart_device, 453 &bfin_sport0_uart_device,
398 &bfin_sport1_uart_device, 454 &bfin_sport1_uart_device,
@@ -425,7 +481,7 @@ static struct platform_device *cm_bf537_devices[] __initdata = {
425 481
426static int __init cm_bf537_init(void) 482static int __init cm_bf537_init(void)
427{ 483{
428 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 484 printk(KERN_INFO "%s(): registering device resources\n", __func__);
429 platform_add_devices(cm_bf537_devices, ARRAY_SIZE(cm_bf537_devices)); 485 platform_add_devices(cm_bf537_devices, ARRAY_SIZE(cm_bf537_devices));
430#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 486#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
431 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); 487 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
diff --git a/arch/blackfin/mach-bf537/boards/generic_board.c b/arch/blackfin/mach-bf537/boards/generic_board.c
index c95395ba7bfa..7d250828dad8 100644
--- a/arch/blackfin/mach-bf537/boards/generic_board.c
+++ b/arch/blackfin/mach-bf537/boards/generic_board.c
@@ -90,7 +90,7 @@ int __init bfin_isp1761_init(void)
90{ 90{
91 unsigned int num_devices = ARRAY_SIZE(bfin_isp1761_devices); 91 unsigned int num_devices = ARRAY_SIZE(bfin_isp1761_devices);
92 92
93 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 93 printk(KERN_INFO "%s(): registering device resources\n", __func__);
94 set_irq_type(ISP1761_IRQ, IRQF_TRIGGER_FALLING); 94 set_irq_type(ISP1761_IRQ, IRQF_TRIGGER_FALLING);
95 95
96 return platform_add_devices(bfin_isp1761_devices, num_devices); 96 return platform_add_devices(bfin_isp1761_devices, num_devices);
@@ -554,6 +554,32 @@ static struct platform_device bfin_uart_device = {
554}; 554};
555#endif 555#endif
556 556
557#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
558static struct resource bfin_sir_resources[] = {
559#ifdef CONFIG_BFIN_SIR0
560 {
561 .start = 0xFFC00400,
562 .end = 0xFFC004FF,
563 .flags = IORESOURCE_MEM,
564 },
565#endif
566#ifdef CONFIG_BFIN_SIR1
567 {
568 .start = 0xFFC02000,
569 .end = 0xFFC020FF,
570 .flags = IORESOURCE_MEM,
571 },
572#endif
573};
574
575static struct platform_device bfin_sir_device = {
576 .name = "bfin_sir",
577 .id = 0,
578 .num_resources = ARRAY_SIZE(bfin_sir_resources),
579 .resource = bfin_sir_resources,
580};
581#endif
582
557#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) 583#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
558static struct resource bfin_twi0_resource[] = { 584static struct resource bfin_twi0_resource[] = {
559 [0] = { 585 [0] = {
@@ -674,6 +700,10 @@ static struct platform_device *stamp_devices[] __initdata = {
674 &bfin_uart_device, 700 &bfin_uart_device,
675#endif 701#endif
676 702
703#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
704 &bfin_sir_device,
705#endif
706
677#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) 707#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
678 &i2c_bfin_twi_device, 708 &i2c_bfin_twi_device,
679#endif 709#endif
@@ -690,7 +720,7 @@ static struct platform_device *stamp_devices[] __initdata = {
690 720
691static int __init stamp_init(void) 721static int __init stamp_init(void)
692{ 722{
693 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 723 printk(KERN_INFO "%s(): registering device resources\n", __func__);
694 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); 724 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
695#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 725#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
696 spi_register_board_info(bfin_spi_board_info, 726 spi_register_board_info(bfin_spi_board_info,
diff --git a/arch/blackfin/mach-bf537/boards/minotaur.c b/arch/blackfin/mach-bf537/boards/minotaur.c
index d71e0be33921..18ddf7a52005 100644
--- a/arch/blackfin/mach-bf537/boards/minotaur.c
+++ b/arch/blackfin/mach-bf537/boards/minotaur.c
@@ -8,12 +8,12 @@
8#include <linux/spi/spi.h> 8#include <linux/spi/spi.h>
9#include <linux/spi/flash.h> 9#include <linux/spi/flash.h>
10#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) 10#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
11#include <linux/usb_isp1362.h> 11#include <linux/usb/isp1362.h>
12#endif 12#endif
13#include <linux/ata_platform.h> 13#include <linux/ata_platform.h>
14#include <linux/irq.h> 14#include <linux/irq.h>
15#include <linux/interrupt.h> 15#include <linux/interrupt.h>
16#include <linux/usb_sl811.h> 16#include <linux/usb/sl811.h>
17#include <asm/dma.h> 17#include <asm/dma.h>
18#include <asm/bfin5xx_spi.h> 18#include <asm/bfin5xx_spi.h>
19#include <asm/reboot.h> 19#include <asm/reboot.h>
@@ -225,6 +225,32 @@ static struct platform_device bfin_uart_device = {
225}; 225};
226#endif 226#endif
227 227
228#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
229static struct resource bfin_sir_resources[] = {
230#ifdef CONFIG_BFIN_SIR0
231 {
232 .start = 0xFFC00400,
233 .end = 0xFFC004FF,
234 .flags = IORESOURCE_MEM,
235 },
236#endif
237#ifdef CONFIG_BFIN_SIR1
238 {
239 .start = 0xFFC02000,
240 .end = 0xFFC020FF,
241 .flags = IORESOURCE_MEM,
242 },
243#endif
244};
245
246static struct platform_device bfin_sir_device = {
247 .name = "bfin_sir",
248 .id = 0,
249 .num_resources = ARRAY_SIZE(bfin_sir_resources),
250 .resource = bfin_sir_resources,
251};
252#endif
253
228#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) 254#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
229static struct resource bfin_twi0_resource[] = { 255static struct resource bfin_twi0_resource[] = {
230 [0] = { 256 [0] = {
@@ -284,6 +310,10 @@ static struct platform_device *minotaur_devices[] __initdata = {
284 &bfin_uart_device, 310 &bfin_uart_device,
285#endif 311#endif
286 312
313#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
314 &bfin_sir_device,
315#endif
316
287#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) 317#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
288 &i2c_bfin_twi_device, 318 &i2c_bfin_twi_device,
289#endif 319#endif
@@ -297,7 +327,7 @@ static struct platform_device *minotaur_devices[] __initdata = {
297 327
298static int __init minotaur_init(void) 328static int __init minotaur_init(void)
299{ 329{
300 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 330 printk(KERN_INFO "%s(): registering device resources\n", __func__);
301 platform_add_devices(minotaur_devices, ARRAY_SIZE(minotaur_devices)); 331 platform_add_devices(minotaur_devices, ARRAY_SIZE(minotaur_devices));
302#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 332#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
303 spi_register_board_info(bfin_spi_board_info, 333 spi_register_board_info(bfin_spi_board_info,
diff --git a/arch/blackfin/mach-bf537/boards/pnav10.c b/arch/blackfin/mach-bf537/boards/pnav10.c
index 509a8a236fd0..51c3bab14a69 100644
--- a/arch/blackfin/mach-bf537/boards/pnav10.c
+++ b/arch/blackfin/mach-bf537/boards/pnav10.c
@@ -452,6 +452,31 @@ static struct platform_device bfin_uart_device = {
452}; 452};
453#endif 453#endif
454 454
455#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
456static struct resource bfin_sir_resources[] = {
457#ifdef CONFIG_BFIN_SIR0
458 {
459 .start = 0xFFC00400,
460 .end = 0xFFC004FF,
461 .flags = IORESOURCE_MEM,
462 },
463#endif
464#ifdef CONFIG_BFIN_SIR1
465 {
466 .start = 0xFFC02000,
467 .end = 0xFFC020FF,
468 .flags = IORESOURCE_MEM,
469 },
470#endif
471};
472
473static struct platform_device bfin_sir_device = {
474 .name = "bfin_sir",
475 .id = 0,
476 .num_resources = ARRAY_SIZE(bfin_sir_resources),
477 .resource = bfin_sir_resources,
478};
479#endif
455 480
456static struct platform_device *stamp_devices[] __initdata = { 481static struct platform_device *stamp_devices[] __initdata = {
457#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) 482#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
@@ -493,11 +518,15 @@ static struct platform_device *stamp_devices[] __initdata = {
493#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 518#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
494 &bfin_uart_device, 519 &bfin_uart_device,
495#endif 520#endif
521
522#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
523 &bfin_sir_device,
524#endif
496}; 525};
497 526
498static int __init stamp_init(void) 527static int __init stamp_init(void)
499{ 528{
500 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 529 printk(KERN_INFO "%s(): registering device resources\n", __func__);
501 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); 530 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
502#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 531#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
503 spi_register_board_info(bfin_spi_board_info, 532 spi_register_board_info(bfin_spi_board_info,
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c
index ea83148993da..0cec14b1ef5c 100644
--- a/arch/blackfin/mach-bf537/boards/stamp.c
+++ b/arch/blackfin/mach-bf537/boards/stamp.c
@@ -41,6 +41,7 @@
41#include <linux/ata_platform.h> 41#include <linux/ata_platform.h>
42#include <linux/irq.h> 42#include <linux/irq.h>
43#include <linux/interrupt.h> 43#include <linux/interrupt.h>
44#include <linux/i2c.h>
44#include <linux/usb/sl811.h> 45#include <linux/usb/sl811.h>
45#include <asm/dma.h> 46#include <asm/dma.h>
46#include <asm/bfin5xx_spi.h> 47#include <asm/bfin5xx_spi.h>
@@ -90,7 +91,7 @@ int __init bfin_isp1761_init(void)
90{ 91{
91 unsigned int num_devices = ARRAY_SIZE(bfin_isp1761_devices); 92 unsigned int num_devices = ARRAY_SIZE(bfin_isp1761_devices);
92 93
93 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 94 printk(KERN_INFO "%s(): registering device resources\n", __func__);
94 set_irq_type(ISP1761_IRQ, IRQF_TRIGGER_FALLING); 95 set_irq_type(ISP1761_IRQ, IRQF_TRIGGER_FALLING);
95 96
96 return platform_add_devices(bfin_isp1761_devices, num_devices); 97 return platform_add_devices(bfin_isp1761_devices, num_devices);
@@ -353,6 +354,7 @@ static struct platform_device net2272_bfin_device = {
353}; 354};
354#endif 355#endif
355 356
357#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
356static struct mtd_partition stamp_partitions[] = { 358static struct mtd_partition stamp_partitions[] = {
357 { 359 {
358 .name = "Bootloader", 360 .name = "Bootloader",
@@ -395,6 +397,7 @@ static struct platform_device stamp_flash_device = {
395 .num_resources = 1, 397 .num_resources = 1,
396 .resource = &stamp_flash_resource, 398 .resource = &stamp_flash_resource,
397}; 399};
400#endif
398 401
399#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 402#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
400/* all SPI peripherals info goes here */ 403/* all SPI peripherals info goes here */
@@ -500,6 +503,15 @@ static struct bfin5xx_spi_chip spidev_chip_info = {
500}; 503};
501#endif 504#endif
502 505
506#if defined(CONFIG_MTD_DATAFLASH) \
507 || defined(CONFIG_MTD_DATAFLASH_MODULE)
508/* DataFlash chip */
509static struct bfin5xx_spi_chip data_flash_chip_info = {
510 .enable_dma = 0, /* use dma transfer with this chip*/
511 .bits_per_word = 8,
512};
513#endif
514
503static struct spi_board_info bfin_spi_board_info[] __initdata = { 515static struct spi_board_info bfin_spi_board_info[] __initdata = {
504#if defined(CONFIG_MTD_M25P80) \ 516#if defined(CONFIG_MTD_M25P80) \
505 || defined(CONFIG_MTD_M25P80_MODULE) 517 || defined(CONFIG_MTD_M25P80_MODULE)
@@ -514,7 +526,17 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
514 .mode = SPI_MODE_3, 526 .mode = SPI_MODE_3,
515 }, 527 },
516#endif 528#endif
517 529#if defined(CONFIG_MTD_DATAFLASH) \
530 || defined(CONFIG_MTD_DATAFLASH_MODULE)
531 { /* DataFlash chip */
532 .modalias = "mtd_dataflash",
533 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
534 .bus_num = 0, /* Framework bus number */
535 .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
536 .controller_data = &data_flash_chip_info,
537 .mode = SPI_MODE_3,
538 },
539#endif
518#if defined(CONFIG_SPI_ADC_BF533) \ 540#if defined(CONFIG_SPI_ADC_BF533) \
519 || defined(CONFIG_SPI_ADC_BF533_MODULE) 541 || defined(CONFIG_SPI_ADC_BF533_MODULE)
520 { 542 {
@@ -676,6 +698,32 @@ static struct platform_device bfin_uart_device = {
676}; 698};
677#endif 699#endif
678 700
701#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
702static struct resource bfin_sir_resources[] = {
703#ifdef CONFIG_BFIN_SIR0
704 {
705 .start = 0xFFC00400,
706 .end = 0xFFC004FF,
707 .flags = IORESOURCE_MEM,
708 },
709#endif
710#ifdef CONFIG_BFIN_SIR1
711 {
712 .start = 0xFFC02000,
713 .end = 0xFFC020FF,
714 .flags = IORESOURCE_MEM,
715 },
716#endif
717};
718
719static struct platform_device bfin_sir_device = {
720 .name = "bfin_sir",
721 .id = 0,
722 .num_resources = ARRAY_SIZE(bfin_sir_resources),
723 .resource = bfin_sir_resources,
724};
725#endif
726
679#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) 727#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
680static struct resource bfin_twi0_resource[] = { 728static struct resource bfin_twi0_resource[] = {
681 [0] = { 729 [0] = {
@@ -698,6 +746,31 @@ static struct platform_device i2c_bfin_twi_device = {
698}; 746};
699#endif 747#endif
700 748
749#ifdef CONFIG_I2C_BOARDINFO
750static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
751#if defined(CONFIG_JOYSTICK_AD7142) || defined(CONFIG_JOYSTICK_AD7142_MODULE)
752 {
753 I2C_BOARD_INFO("ad7142_joystick", 0x2C),
754 .type = "ad7142_joystick",
755 .irq = 55,
756 },
757#endif
758#if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
759 {
760 I2C_BOARD_INFO("pcf8574_lcd", 0x22),
761 .type = "pcf8574_lcd",
762 },
763#endif
764#if defined(CONFIG_TWI_KEYPAD) || defined(CONFIG_TWI_KEYPAD_MODULE)
765 {
766 I2C_BOARD_INFO("pcf8574_keypad", 0x27),
767 .type = "pcf8574_keypad",
768 .irq = 72,
769 },
770#endif
771};
772#endif
773
701#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 774#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
702static struct platform_device bfin_sport0_uart_device = { 775static struct platform_device bfin_sport0_uart_device = {
703 .name = "bfin-sport-uart", 776 .name = "bfin-sport-uart",
@@ -800,6 +873,10 @@ static struct platform_device *stamp_devices[] __initdata = {
800 &bfin_uart_device, 873 &bfin_uart_device,
801#endif 874#endif
802 875
876#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
877 &bfin_sir_device,
878#endif
879
803#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) 880#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
804 &i2c_bfin_twi_device, 881 &i2c_bfin_twi_device,
805#endif 882#endif
@@ -818,12 +895,21 @@ static struct platform_device *stamp_devices[] __initdata = {
818#endif 895#endif
819 896
820 &bfin_gpios_device, 897 &bfin_gpios_device,
898
899#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
821 &stamp_flash_device, 900 &stamp_flash_device,
901#endif
822}; 902};
823 903
824static int __init stamp_init(void) 904static int __init stamp_init(void)
825{ 905{
826 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 906 printk(KERN_INFO "%s(): registering device resources\n", __func__);
907
908#ifdef CONFIG_I2C_BOARDINFO
909 i2c_register_board_info(0, bfin_i2c_board_info,
910 ARRAY_SIZE(bfin_i2c_board_info));
911#endif
912
827 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); 913 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
828#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 914#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
829 spi_register_board_info(bfin_spi_board_info, 915 spi_register_board_info(bfin_spi_board_info,
@@ -833,6 +919,7 @@ static int __init stamp_init(void)
833#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) 919#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
834 irq_desc[PATA_INT].status |= IRQ_NOAUTOEN; 920 irq_desc[PATA_INT].status |= IRQ_NOAUTOEN;
835#endif 921#endif
922
836 return 0; 923 return 0;
837} 924}
838 925
diff --git a/arch/blackfin/mach-bf537/cpu.c b/arch/blackfin/mach-bf537/cpu.c
deleted file mode 100644
index 0442c4c7f723..000000000000
--- a/arch/blackfin/mach-bf537/cpu.c
+++ /dev/null
@@ -1,159 +0,0 @@
1/*
2 * File: arch/blackfin/mach-bf537/cpu.c
3 * Based on:
4 * Author: michael.kang@analog.com
5 *
6 * Created:
7 * Description: clock scaling for the bf537
8 *
9 * Modified:
10 * Copyright 2004-2006 Analog Devices Inc.
11 *
12 * Bugs: Enter bugs at http://blackfin.uclinux.org/
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or
17 * (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, see the file COPYING, or write
26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */
29
30#include <linux/kernel.h>
31#include <linux/types.h>
32#include <linux/init.h>
33#include <linux/cpufreq.h>
34#include <asm/dpmc.h>
35#include <linux/fs.h>
36#include <asm/bfin-global.h>
37
38/* CONFIG_CLKIN_HZ=11059200 */
39#define VCO5 (CONFIG_CLKIN_HZ*45) /*497664000 */
40#define VCO4 (CONFIG_CLKIN_HZ*36) /*398131200 */
41#define VCO3 (CONFIG_CLKIN_HZ*27) /*298598400 */
42#define VCO2 (CONFIG_CLKIN_HZ*18) /*199065600 */
43#define VCO1 (CONFIG_CLKIN_HZ*9) /*99532800 */
44#define VCO(x) VCO##x
45
46#define MFREQ(x) {VCO(x),VCO(x)/4},{VCO(x),VCO(x)/2},{VCO(x),VCO(x)}
47/* frequency */
48static struct cpufreq_frequency_table bf537_freq_table[] = {
49 MFREQ(1),
50 MFREQ(3),
51 {VCO4, VCO4 / 2}, {VCO4, VCO4},
52 MFREQ(5),
53 {0, CPUFREQ_TABLE_END},
54};
55
56/*
57 * dpmc_fops->ioctl()
58 * static int dpmc_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
59 */
60static int bf537_getfreq(unsigned int cpu)
61{
62 unsigned long cclk_mhz;
63
64 /* The driver only support single cpu */
65 if (cpu == 0)
66 dpmc_fops.ioctl(NULL, NULL, IOCTL_GET_CORECLOCK, &cclk_mhz);
67 else
68 cclk_mhz = -1;
69
70 return cclk_mhz;
71}
72
73static int bf537_target(struct cpufreq_policy *policy,
74 unsigned int target_freq, unsigned int relation)
75{
76 unsigned long cclk_mhz;
77 unsigned long vco_mhz;
78 unsigned long flags;
79 unsigned int index;
80 struct cpufreq_freqs freqs;
81
82 if (cpufreq_frequency_table_target(policy, bf537_freq_table, target_freq, relation, &index))
83 return -EINVAL;
84
85 cclk_mhz = bf537_freq_table[index].frequency;
86 vco_mhz = bf537_freq_table[index].index;
87
88 dpmc_fops.ioctl(NULL, NULL, IOCTL_CHANGE_FREQUENCY, &vco_mhz);
89 freqs.old = bf537_getfreq(0);
90 freqs.new = cclk_mhz;
91 freqs.cpu = 0;
92
93 pr_debug("cclk begin change to cclk %d,vco=%d,index=%d,target=%d,oldfreq=%d\n",
94 cclk_mhz, vco_mhz, index, target_freq, freqs.old);
95
96 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
97 local_irq_save(flags);
98 dpmc_fops.ioctl(NULL, NULL, IOCTL_SET_CCLK, &cclk_mhz);
99 local_irq_restore(flags);
100 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
101
102 vco_mhz = get_vco();
103 cclk_mhz = get_cclk();
104 return 0;
105}
106
107/* make sure that only the "userspace" governor is run -- anything else wouldn't make sense on
108 * this platform, anyway.
109 */
110static int bf537_verify_speed(struct cpufreq_policy *policy)
111{
112 return cpufreq_frequency_table_verify(policy, &bf537_freq_table);
113}
114
115static int __init __bf537_cpu_init(struct cpufreq_policy *policy)
116{
117 if (policy->cpu != 0)
118 return -EINVAL;
119
120 policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
121
122 policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
123 /*Now ,only support one cpu */
124 policy->cur = bf537_getfreq(0);
125 cpufreq_frequency_table_get_attr(bf537_freq_table, policy->cpu);
126 return cpufreq_frequency_table_cpuinfo(policy, bf537_freq_table);
127}
128
129static struct freq_attr *bf537_freq_attr[] = {
130 &cpufreq_freq_attr_scaling_available_freqs,
131 NULL,
132};
133
134static struct cpufreq_driver bf537_driver = {
135 .verify = bf537_verify_speed,
136 .target = bf537_target,
137 .get = bf537_getfreq,
138 .init = __bf537_cpu_init,
139 .name = "bf537",
140 .owner = THIS_MODULE,
141 .attr = bf537_freq_attr,
142};
143
144static int __init bf537_cpu_init(void)
145{
146 return cpufreq_register_driver(&bf537_driver);
147}
148
149static void __exit bf537_cpu_exit(void)
150{
151 cpufreq_unregister_driver(&bf537_driver);
152}
153
154MODULE_AUTHOR("Mickael Kang");
155MODULE_DESCRIPTION("cpufreq driver for BF537 CPU");
156MODULE_LICENSE("GPL");
157
158module_init(bf537_cpu_init);
159module_exit(bf537_cpu_exit);
diff --git a/arch/blackfin/mach-bf537/dma.c b/arch/blackfin/mach-bf537/dma.c
index 706cb97b0265..4edb363ff99c 100644
--- a/arch/blackfin/mach-bf537/dma.c
+++ b/arch/blackfin/mach-bf537/dma.c
@@ -26,10 +26,12 @@
26 * to the Free Software Foundation, Inc., 26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */ 28 */
29#include <linux/module.h>
30
29#include <asm/blackfin.h> 31#include <asm/blackfin.h>
30#include <asm/dma.h> 32#include <asm/dma.h>
31 33
32struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = { 34struct dma_register *dma_io_base_addr[MAX_BLACKFIN_DMA_CHANNEL] = {
33 (struct dma_register *) DMA0_NEXT_DESC_PTR, 35 (struct dma_register *) DMA0_NEXT_DESC_PTR,
34 (struct dma_register *) DMA1_NEXT_DESC_PTR, 36 (struct dma_register *) DMA1_NEXT_DESC_PTR,
35 (struct dma_register *) DMA2_NEXT_DESC_PTR, 37 (struct dma_register *) DMA2_NEXT_DESC_PTR,
@@ -47,6 +49,7 @@ struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = {
47 (struct dma_register *) MDMA_D1_NEXT_DESC_PTR, 49 (struct dma_register *) MDMA_D1_NEXT_DESC_PTR,
48 (struct dma_register *) MDMA_S1_NEXT_DESC_PTR, 50 (struct dma_register *) MDMA_S1_NEXT_DESC_PTR,
49}; 51};
52EXPORT_SYMBOL(dma_io_base_addr);
50 53
51int channel2irq(unsigned int channel) 54int channel2irq(unsigned int channel)
52{ 55{
diff --git a/arch/blackfin/mach-bf537/head.S b/arch/blackfin/mach-bf537/head.S
index 3014fe8dd155..48cd58a410a0 100644
--- a/arch/blackfin/mach-bf537/head.S
+++ b/arch/blackfin/mach-bf537/head.S
@@ -37,9 +37,6 @@
37#include <asm/mach/mem_init.h> 37#include <asm/mach/mem_init.h>
38#endif 38#endif
39 39
40.global __rambase
41.global __ramstart
42.global __ramend
43.extern ___bss_stop 40.extern ___bss_stop
44.extern ___bss_start 41.extern ___bss_start
45.extern _bf53x_relocate_l1_mem 42.extern _bf53x_relocate_l1_mem
@@ -180,40 +177,28 @@ ENTRY(__start)
180 SSYNC; 177 SSYNC;
181#endif 178#endif
182 179
183#ifdef CONFIG_BF537_PORT_H
184 p0.h = hi(PORTH_FER);
185 p0.l = lo(PORTH_FER);
186 R0.L = W[P0]; /* Read */
187 SSYNC;
188 R0 = 0x0000;
189 W[P0] = R0.L; /* Write */
190 SSYNC;
191 W[P0] = R0.L; /* Disable peripheral function of PORTH */
192 SSYNC;
193#endif
194
195 /* Initialise UART - when booting from u-boot, the UART is not disabled 180 /* Initialise UART - when booting from u-boot, the UART is not disabled
196 * so if we dont initalize here, our serial console gets hosed */ 181 * so if we dont initalize here, our serial console gets hosed */
197 p0.h = hi(UART_LCR); 182 p0.h = hi(BFIN_UART_LCR);
198 p0.l = lo(UART_LCR); 183 p0.l = lo(BFIN_UART_LCR);
199 r0 = 0x0(Z); 184 r0 = 0x0(Z);
200 w[p0] = r0.L; /* To enable DLL writes */ 185 w[p0] = r0.L; /* To enable DLL writes */
201 ssync; 186 ssync;
202 187
203 p0.h = hi(UART_DLL); 188 p0.h = hi(BFIN_UART_DLL);
204 p0.l = lo(UART_DLL); 189 p0.l = lo(BFIN_UART_DLL);
205 r0 = 0x0(Z); 190 r0 = 0x0(Z);
206 w[p0] = r0.L; 191 w[p0] = r0.L;
207 ssync; 192 ssync;
208 193
209 p0.h = hi(UART_DLH); 194 p0.h = hi(BFIN_UART_DLH);
210 p0.l = lo(UART_DLH); 195 p0.l = lo(BFIN_UART_DLH);
211 r0 = 0x00(Z); 196 r0 = 0x00(Z);
212 w[p0] = r0.L; 197 w[p0] = r0.L;
213 ssync; 198 ssync;
214 199
215 p0.h = hi(UART_GCTL); 200 p0.h = hi(BFIN_UART_GCTL);
216 p0.l = lo(UART_GCTL); 201 p0.l = lo(BFIN_UART_GCTL);
217 r0 = 0x0(Z); 202 r0 = 0x0(Z);
218 w[p0] = r0.L; /* To enable UART clock */ 203 w[p0] = r0.L; /* To enable UART clock */
219 ssync; 204 ssync;
@@ -483,18 +468,3 @@ ENTRY(_start_dma_code)
483 RTS; 468 RTS;
484ENDPROC(_start_dma_code) 469ENDPROC(_start_dma_code)
485#endif /* CONFIG_BFIN_KERNEL_CLOCK */ 470#endif /* CONFIG_BFIN_KERNEL_CLOCK */
486
487.data
488
489/*
490 * Set up the usable of RAM stuff. Size of RAM is determined then
491 * an initial stack set up at the end.
492 */
493
494.align 4
495__rambase:
496.long 0
497__ramstart:
498.long 0
499__ramend:
500.long 0
diff --git a/arch/blackfin/mach-bf548/Makefile b/arch/blackfin/mach-bf548/Makefile
index 7e7c9c8ac5b2..68e5478e95a9 100644
--- a/arch/blackfin/mach-bf548/Makefile
+++ b/arch/blackfin/mach-bf548/Makefile
@@ -5,5 +5,3 @@
5extra-y := head.o 5extra-y := head.o
6 6
7obj-y := ints-priority.o dma.o 7obj-y := ints-priority.o dma.o
8
9obj-$(CONFIG_CPU_FREQ) += cpu.o
diff --git a/arch/blackfin/mach-bf548/boards/Kconfig b/arch/blackfin/mach-bf548/boards/Kconfig
index 057129064037..d38e52671853 100644
--- a/arch/blackfin/mach-bf548/boards/Kconfig
+++ b/arch/blackfin/mach-bf548/boards/Kconfig
@@ -8,5 +8,11 @@ config BFIN548_EZKIT
8 bool "BF548-EZKIT" 8 bool "BF548-EZKIT"
9 help 9 help
10 BFIN548-EZKIT board support. 10 BFIN548-EZKIT board support.
11
12config BFIN548_BLUETECHNIX_CM
13 bool "Bluetechnix CM-BF548"
14 depends on (BF548)
15 help
16 CM-BF548 support for DEV-Board.
11 17
12endchoice 18endchoice
diff --git a/arch/blackfin/mach-bf548/boards/Makefile b/arch/blackfin/mach-bf548/boards/Makefile
index a444cc739578..eed161dd7845 100644
--- a/arch/blackfin/mach-bf548/boards/Makefile
+++ b/arch/blackfin/mach-bf548/boards/Makefile
@@ -3,3 +3,4 @@
3# 3#
4 4
5obj-$(CONFIG_BFIN548_EZKIT) += ezkit.o led.o 5obj-$(CONFIG_BFIN548_EZKIT) += ezkit.o led.o
6obj-$(CONFIG_BFIN548_BLUETECHNIX_CM) += cm_bf548.o
diff --git a/arch/blackfin/mach-bf548/boards/cm_bf548.c b/arch/blackfin/mach-bf548/boards/cm_bf548.c
new file mode 100644
index 000000000000..e3e8479fffb5
--- /dev/null
+++ b/arch/blackfin/mach-bf548/boards/cm_bf548.c
@@ -0,0 +1,664 @@
1/*
2 * File: arch/blackfin/mach-bf548/boards/cm_bf548.c
3 * Based on: arch/blackfin/mach-bf537/boards/ezkit.c
4 * Author: Aidan Williams <aidan@nicta.com.au>
5 *
6 * Created:
7 * Description:
8 *
9 * Modified:
10 * Copyright 2005 National ICT Australia (NICTA)
11 * Copyright 2004-2008 Analog Devices Inc.
12 *
13 * Bugs: Enter bugs at http://blackfin.uclinux.org/
14 *
15 * This program is free software; you can redistribute it and/or modify
16 * it under the terms of the GNU General Public License as published by
17 * the Free Software Foundation; either version 2 of the License, or
18 * (at your option) any later version.
19 *
20 * This program is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
24 *
25 * You should have received a copy of the GNU General Public License
26 * along with this program; if not, see the file COPYING, or write
27 * to the Free Software Foundation, Inc.,
28 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
29 */
30
31#include <linux/device.h>
32#include <linux/platform_device.h>
33#include <linux/mtd/mtd.h>
34#include <linux/mtd/partitions.h>
35#include <linux/spi/spi.h>
36#include <linux/spi/flash.h>
37#include <linux/irq.h>
38#include <linux/interrupt.h>
39#include <linux/usb/musb.h>
40#include <asm/bfin5xx_spi.h>
41#include <asm/cplb.h>
42#include <asm/dma.h>
43#include <asm/gpio.h>
44#include <asm/nand.h>
45#include <asm/portmux.h>
46#include <asm/mach/bf54x_keys.h>
47#include <linux/input.h>
48#include <linux/spi/ad7877.h>
49
50/*
51 * Name the Board for the /proc/cpuinfo
52 */
53const char bfin_board_name[] = "Bluetechnix CM-BF548";
54
55/*
56 * Driver needs to know address, irq and flag pin.
57 */
58
59#if defined(CONFIG_FB_BF54X_LQ043) || defined(CONFIG_FB_BF54X_LQ043_MODULE)
60
61#include <asm/mach/bf54x-lq043.h>
62
63static struct bfin_bf54xfb_mach_info bf54x_lq043_data = {
64 .width = 480,
65 .height = 272,
66 .xres = {480, 480, 480},
67 .yres = {272, 272, 272},
68 .bpp = {24, 24, 24},
69 .disp = GPIO_PE3,
70};
71
72static struct resource bf54x_lq043_resources[] = {
73 {
74 .start = IRQ_EPPI0_ERR,
75 .end = IRQ_EPPI0_ERR,
76 .flags = IORESOURCE_IRQ,
77 },
78};
79
80static struct platform_device bf54x_lq043_device = {
81 .name = "bf54x-lq043",
82 .id = -1,
83 .num_resources = ARRAY_SIZE(bf54x_lq043_resources),
84 .resource = bf54x_lq043_resources,
85 .dev = {
86 .platform_data = &bf54x_lq043_data,
87 },
88};
89#endif
90
91#if defined(CONFIG_KEYBOARD_BFIN) || defined(CONFIG_KEYBOARD_BFIN_MODULE)
92static unsigned int bf548_keymap[] = {
93 KEYVAL(0, 0, KEY_ENTER),
94 KEYVAL(0, 1, KEY_HELP),
95 KEYVAL(0, 2, KEY_0),
96 KEYVAL(0, 3, KEY_BACKSPACE),
97 KEYVAL(1, 0, KEY_TAB),
98 KEYVAL(1, 1, KEY_9),
99 KEYVAL(1, 2, KEY_8),
100 KEYVAL(1, 3, KEY_7),
101 KEYVAL(2, 0, KEY_DOWN),
102 KEYVAL(2, 1, KEY_6),
103 KEYVAL(2, 2, KEY_5),
104 KEYVAL(2, 3, KEY_4),
105 KEYVAL(3, 0, KEY_UP),
106 KEYVAL(3, 1, KEY_3),
107 KEYVAL(3, 2, KEY_2),
108 KEYVAL(3, 3, KEY_1),
109};
110
111static struct bfin_kpad_platform_data bf54x_kpad_data = {
112 .rows = 4,
113 .cols = 4,
114 .keymap = bf548_keymap,
115 .keymapsize = ARRAY_SIZE(bf548_keymap),
116 .repeat = 0,
117 .debounce_time = 5000, /* ns (5ms) */
118 .coldrive_time = 1000, /* ns (1ms) */
119 .keyup_test_interval = 50, /* ms (50ms) */
120};
121
122static struct resource bf54x_kpad_resources[] = {
123 {
124 .start = IRQ_KEY,
125 .end = IRQ_KEY,
126 .flags = IORESOURCE_IRQ,
127 },
128};
129
130static struct platform_device bf54x_kpad_device = {
131 .name = "bf54x-keys",
132 .id = -1,
133 .num_resources = ARRAY_SIZE(bf54x_kpad_resources),
134 .resource = bf54x_kpad_resources,
135 .dev = {
136 .platform_data = &bf54x_kpad_data,
137 },
138};
139#endif
140
141#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
142static struct platform_device rtc_device = {
143 .name = "rtc-bfin",
144 .id = -1,
145};
146#endif
147
148#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
149static struct resource bfin_uart_resources[] = {
150#ifdef CONFIG_SERIAL_BFIN_UART0
151 {
152 .start = 0xFFC00400,
153 .end = 0xFFC004FF,
154 .flags = IORESOURCE_MEM,
155 },
156#endif
157#ifdef CONFIG_SERIAL_BFIN_UART1
158 {
159 .start = 0xFFC02000,
160 .end = 0xFFC020FF,
161 .flags = IORESOURCE_MEM,
162 },
163#endif
164#ifdef CONFIG_SERIAL_BFIN_UART2
165 {
166 .start = 0xFFC02100,
167 .end = 0xFFC021FF,
168 .flags = IORESOURCE_MEM,
169 },
170#endif
171#ifdef CONFIG_SERIAL_BFIN_UART3
172 {
173 .start = 0xFFC03100,
174 .end = 0xFFC031FF,
175 },
176#endif
177};
178
179static struct platform_device bfin_uart_device = {
180 .name = "bfin-uart",
181 .id = 1,
182 .num_resources = ARRAY_SIZE(bfin_uart_resources),
183 .resource = bfin_uart_resources,
184};
185#endif
186
187#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
188static struct resource bfin_sir_resources[] = {
189#ifdef CONFIG_BFIN_SIR0
190 {
191 .start = 0xFFC00400,
192 .end = 0xFFC004FF,
193 .flags = IORESOURCE_MEM,
194 },
195#endif
196#ifdef CONFIG_BFIN_SIR1
197 {
198 .start = 0xFFC02000,
199 .end = 0xFFC020FF,
200 .flags = IORESOURCE_MEM,
201 },
202#endif
203#ifdef CONFIG_BFIN_SIR2
204 {
205 .start = 0xFFC02100,
206 .end = 0xFFC021FF,
207 .flags = IORESOURCE_MEM,
208 },
209#endif
210#ifdef CONFIG_BFIN_SIR3
211 {
212 .start = 0xFFC03100,
213 .end = 0xFFC031FF,
214 .flags = IORESOURCE_MEM,
215 },
216#endif
217};
218
219static struct platform_device bfin_sir_device = {
220 .name = "bfin_sir",
221 .id = 0,
222 .num_resources = ARRAY_SIZE(bfin_sir_resources),
223 .resource = bfin_sir_resources,
224};
225#endif
226
227#if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
228static struct resource smsc911x_resources[] = {
229 {
230 .name = "smsc911x-memory",
231 .start = 0x24000000,
232 .end = 0x24000000 + 0xFF,
233 .flags = IORESOURCE_MEM,
234 },
235 {
236 .start = IRQ_PE6,
237 .end = IRQ_PE6,
238 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
239 },
240};
241static struct platform_device smsc911x_device = {
242 .name = "smsc911x",
243 .id = 0,
244 .num_resources = ARRAY_SIZE(smsc911x_resources),
245 .resource = smsc911x_resources,
246};
247#endif
248
249#if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE)
250static struct resource musb_resources[] = {
251 [0] = {
252 .start = 0xFFC03C00,
253 .end = 0xFFC040FF,
254 .flags = IORESOURCE_MEM,
255 },
256 [1] = { /* general IRQ */
257 .start = IRQ_USB_INT0,
258 .end = IRQ_USB_INT0,
259 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
260 },
261 [2] = { /* DMA IRQ */
262 .start = IRQ_USB_DMA,
263 .end = IRQ_USB_DMA,
264 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
265 },
266};
267
268static struct musb_hdrc_platform_data musb_plat = {
269#if defined(CONFIG_USB_MUSB_OTG)
270 .mode = MUSB_OTG,
271#elif defined(CONFIG_USB_MUSB_HDRC_HCD)
272 .mode = MUSB_HOST,
273#elif defined(CONFIG_USB_GADGET_MUSB_HDRC)
274 .mode = MUSB_PERIPHERAL,
275#endif
276 .multipoint = 0,
277};
278
279static u64 musb_dmamask = ~(u32)0;
280
281static struct platform_device musb_device = {
282 .name = "musb_hdrc",
283 .id = 0,
284 .dev = {
285 .dma_mask = &musb_dmamask,
286 .coherent_dma_mask = 0xffffffff,
287 .platform_data = &musb_plat,
288 },
289 .num_resources = ARRAY_SIZE(musb_resources),
290 .resource = musb_resources,
291};
292#endif
293
294#if defined(CONFIG_PATA_BF54X) || defined(CONFIG_PATA_BF54X_MODULE)
295static struct resource bfin_atapi_resources[] = {
296 {
297 .start = 0xFFC03800,
298 .end = 0xFFC0386F,
299 .flags = IORESOURCE_MEM,
300 },
301 {
302 .start = IRQ_ATAPI_ERR,
303 .end = IRQ_ATAPI_ERR,
304 .flags = IORESOURCE_IRQ,
305 },
306};
307
308static struct platform_device bfin_atapi_device = {
309 .name = "pata-bf54x",
310 .id = -1,
311 .num_resources = ARRAY_SIZE(bfin_atapi_resources),
312 .resource = bfin_atapi_resources,
313};
314#endif
315
316#if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE)
317static struct mtd_partition partition_info[] = {
318 {
319 .name = "Linux Kernel",
320 .offset = 0,
321 .size = 4 * SIZE_1M,
322 },
323 {
324 .name = "File System",
325 .offset = 4 * SIZE_1M,
326 .size = (256 - 4) * SIZE_1M,
327 },
328};
329
330static struct bf5xx_nand_platform bf5xx_nand_platform = {
331 .page_size = NFC_PG_SIZE_256,
332 .data_width = NFC_NWIDTH_8,
333 .partitions = partition_info,
334 .nr_partitions = ARRAY_SIZE(partition_info),
335 .rd_dly = 3,
336 .wr_dly = 3,
337};
338
339static struct resource bf5xx_nand_resources[] = {
340 {
341 .start = 0xFFC03B00,
342 .end = 0xFFC03B4F,
343 .flags = IORESOURCE_MEM,
344 },
345 {
346 .start = CH_NFC,
347 .end = CH_NFC,
348 .flags = IORESOURCE_IRQ,
349 },
350};
351
352static struct platform_device bf5xx_nand_device = {
353 .name = "bf5xx-nand",
354 .id = 0,
355 .num_resources = ARRAY_SIZE(bf5xx_nand_resources),
356 .resource = bf5xx_nand_resources,
357 .dev = {
358 .platform_data = &bf5xx_nand_platform,
359 },
360};
361#endif
362
363#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN_MODULE)
364static struct platform_device bf54x_sdh_device = {
365 .name = "bfin-sdh",
366 .id = 0,
367};
368#endif
369
370#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
371/* all SPI peripherals info goes here */
372#if defined(CONFIG_MTD_M25P80) \
373 || defined(CONFIG_MTD_M25P80_MODULE)
374/* SPI flash chip (m25p16) */
375static struct mtd_partition bfin_spi_flash_partitions[] = {
376 {
377 .name = "bootloader",
378 .size = 0x00040000,
379 .offset = 0,
380 .mask_flags = MTD_CAP_ROM
381 }, {
382 .name = "linux kernel",
383 .size = 0x1c0000,
384 .offset = 0x40000
385 }
386};
387
388static struct flash_platform_data bfin_spi_flash_data = {
389 .name = "m25p80",
390 .parts = bfin_spi_flash_partitions,
391 .nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
392 .type = "m25p16",
393};
394
395static struct bfin5xx_spi_chip spi_flash_chip_info = {
396 .enable_dma = 0, /* use dma transfer with this chip*/
397 .bits_per_word = 8,
398 .cs_change_per_word = 0,
399};
400#endif
401
402#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
403static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
404 .cs_change_per_word = 0,
405 .enable_dma = 0,
406 .bits_per_word = 16,
407};
408
409static const struct ad7877_platform_data bfin_ad7877_ts_info = {
410 .model = 7877,
411 .vref_delay_usecs = 50, /* internal, no capacitor */
412 .x_plate_ohms = 419,
413 .y_plate_ohms = 486,
414 .pressure_max = 1000,
415 .pressure_min = 0,
416 .stopacq_polarity = 1,
417 .first_conversion_delay = 3,
418 .acquisition_time = 1,
419 .averaging = 1,
420 .pen_down_acc_interval = 1,
421};
422#endif
423
424#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
425static struct bfin5xx_spi_chip spidev_chip_info = {
426 .enable_dma = 0,
427 .bits_per_word = 8,
428};
429#endif
430
431static struct spi_board_info bf54x_spi_board_info[] __initdata = {
432#if defined(CONFIG_MTD_M25P80) \
433 || defined(CONFIG_MTD_M25P80_MODULE)
434 {
435 /* the modalias must be the same as spi device driver name */
436 .modalias = "m25p80", /* Name of spi_driver for this device */
437 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
438 .bus_num = 0, /* Framework bus number */
439 .chip_select = 1, /* SPI_SSEL1*/
440 .platform_data = &bfin_spi_flash_data,
441 .controller_data = &spi_flash_chip_info,
442 .mode = SPI_MODE_3,
443 },
444#endif
445#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
446{
447 .modalias = "ad7877",
448 .platform_data = &bfin_ad7877_ts_info,
449 .irq = IRQ_PJ11,
450 .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
451 .bus_num = 0,
452 .chip_select = 2,
453 .controller_data = &spi_ad7877_chip_info,
454},
455#endif
456#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
457 {
458 .modalias = "spidev",
459 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
460 .bus_num = 0,
461 .chip_select = 1,
462 .controller_data = &spidev_chip_info,
463 },
464#endif
465};
466
467/* SPI (0) */
468static struct resource bfin_spi0_resource[] = {
469 [0] = {
470 .start = SPI0_REGBASE,
471 .end = SPI0_REGBASE + 0xFF,
472 .flags = IORESOURCE_MEM,
473 },
474 [1] = {
475 .start = CH_SPI0,
476 .end = CH_SPI0,
477 .flags = IORESOURCE_IRQ,
478 }
479};
480
481/* SPI (1) */
482static struct resource bfin_spi1_resource[] = {
483 [0] = {
484 .start = SPI1_REGBASE,
485 .end = SPI1_REGBASE + 0xFF,
486 .flags = IORESOURCE_MEM,
487 },
488 [1] = {
489 .start = CH_SPI1,
490 .end = CH_SPI1,
491 .flags = IORESOURCE_IRQ,
492 }
493};
494
495/* SPI controller data */
496static struct bfin5xx_spi_master bf54x_spi_master_info0 = {
497 .num_chipselect = 8,
498 .enable_dma = 1, /* master has the ability to do dma transfer */
499 .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
500};
501
502static struct platform_device bf54x_spi_master0 = {
503 .name = "bfin-spi",
504 .id = 0, /* Bus number */
505 .num_resources = ARRAY_SIZE(bfin_spi0_resource),
506 .resource = bfin_spi0_resource,
507 .dev = {
508 .platform_data = &bf54x_spi_master_info0, /* Passed to driver */
509 },
510};
511
512static struct bfin5xx_spi_master bf54x_spi_master_info1 = {
513 .num_chipselect = 8,
514 .enable_dma = 1, /* master has the ability to do dma transfer */
515 .pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0},
516};
517
518static struct platform_device bf54x_spi_master1 = {
519 .name = "bfin-spi",
520 .id = 1, /* Bus number */
521 .num_resources = ARRAY_SIZE(bfin_spi1_resource),
522 .resource = bfin_spi1_resource,
523 .dev = {
524 .platform_data = &bf54x_spi_master_info1, /* Passed to driver */
525 },
526};
527#endif /* spi master and devices */
528
529#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
530static struct resource bfin_twi0_resource[] = {
531 [0] = {
532 .start = TWI0_REGBASE,
533 .end = TWI0_REGBASE + 0xFF,
534 .flags = IORESOURCE_MEM,
535 },
536 [1] = {
537 .start = IRQ_TWI0,
538 .end = IRQ_TWI0,
539 .flags = IORESOURCE_IRQ,
540 },
541};
542
543static struct platform_device i2c_bfin_twi0_device = {
544 .name = "i2c-bfin-twi",
545 .id = 0,
546 .num_resources = ARRAY_SIZE(bfin_twi0_resource),
547 .resource = bfin_twi0_resource,
548};
549
550#if !defined(CONFIG_BF542) /* The BF542 only has 1 TWI */
551static struct resource bfin_twi1_resource[] = {
552 [0] = {
553 .start = TWI1_REGBASE,
554 .end = TWI1_REGBASE + 0xFF,
555 .flags = IORESOURCE_MEM,
556 },
557 [1] = {
558 .start = IRQ_TWI1,
559 .end = IRQ_TWI1,
560 .flags = IORESOURCE_IRQ,
561 },
562};
563
564static struct platform_device i2c_bfin_twi1_device = {
565 .name = "i2c-bfin-twi",
566 .id = 1,
567 .num_resources = ARRAY_SIZE(bfin_twi1_resource),
568 .resource = bfin_twi1_resource,
569};
570#endif
571#endif
572
573#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
574#include <linux/gpio_keys.h>
575
576static struct gpio_keys_button bfin_gpio_keys_table[] = {
577 {BTN_0, GPIO_PH7, 1, "gpio-keys: BTN0"},
578};
579
580static struct gpio_keys_platform_data bfin_gpio_keys_data = {
581 .buttons = bfin_gpio_keys_table,
582 .nbuttons = ARRAY_SIZE(bfin_gpio_keys_table),
583};
584
585static struct platform_device bfin_device_gpiokeys = {
586 .name = "gpio-keys",
587 .dev = {
588 .platform_data = &bfin_gpio_keys_data,
589 },
590};
591#endif
592
593static struct platform_device *cm_bf548_devices[] __initdata = {
594#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
595 &rtc_device,
596#endif
597
598#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
599 &bfin_uart_device,
600#endif
601
602#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
603 &bfin_sir_device,
604#endif
605
606#if defined(CONFIG_FB_BF54X_LQ043) || defined(CONFIG_FB_BF54X_LQ043_MODULE)
607 &bf54x_lq043_device,
608#endif
609
610#if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
611 &smsc911x_device,
612#endif
613
614#if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE)
615 &musb_device,
616#endif
617
618#if defined(CONFIG_PATA_BF54X) || defined(CONFIG_PATA_BF54X_MODULE)
619 &bfin_atapi_device,
620#endif
621
622#if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE)
623 &bf5xx_nand_device,
624#endif
625
626#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN_MODULE)
627 &bf54x_sdh_device,
628#endif
629
630#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
631 &bf54x_spi_master0,
632 &bf54x_spi_master1,
633#endif
634
635#if defined(CONFIG_KEYBOARD_BFIN) || defined(CONFIG_KEYBOARD_BFIN_MODULE)
636 &bf54x_kpad_device,
637#endif
638
639#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
640/* &i2c_bfin_twi0_device, */
641#if !defined(CONFIG_BF542)
642 &i2c_bfin_twi1_device,
643#endif
644#endif
645
646#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
647 &bfin_device_gpiokeys,
648#endif
649};
650
651static int __init cm_bf548_init(void)
652{
653 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__);
654 platform_add_devices(cm_bf548_devices, ARRAY_SIZE(cm_bf548_devices));
655
656#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
657 spi_register_board_info(bf54x_spi_board_info,
658 ARRAY_SIZE(bf54x_spi_board_info));
659#endif
660
661 return 0;
662}
663
664arch_initcall(cm_bf548_init);
diff --git a/arch/blackfin/mach-bf548/boards/ezkit.c b/arch/blackfin/mach-bf548/boards/ezkit.c
index 40846aa034c4..231dfbd3bc1f 100644
--- a/arch/blackfin/mach-bf548/boards/ezkit.c
+++ b/arch/blackfin/mach-bf548/boards/ezkit.c
@@ -36,6 +36,7 @@
36#include <linux/spi/spi.h> 36#include <linux/spi/spi.h>
37#include <linux/spi/flash.h> 37#include <linux/spi/flash.h>
38#include <linux/irq.h> 38#include <linux/irq.h>
39#include <linux/i2c.h>
39#include <linux/interrupt.h> 40#include <linux/interrupt.h>
40#if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) 41#if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE)
41#include <linux/usb/musb.h> 42#include <linux/usb/musb.h>
@@ -187,6 +188,46 @@ static struct platform_device bfin_uart_device = {
187}; 188};
188#endif 189#endif
189 190
191#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
192static struct resource bfin_sir_resources[] = {
193#ifdef CONFIG_BFIN_SIR0
194 {
195 .start = 0xFFC00400,
196 .end = 0xFFC004FF,
197 .flags = IORESOURCE_MEM,
198 },
199#endif
200#ifdef CONFIG_BFIN_SIR1
201 {
202 .start = 0xFFC02000,
203 .end = 0xFFC020FF,
204 .flags = IORESOURCE_MEM,
205 },
206#endif
207#ifdef CONFIG_BFIN_SIR2
208 {
209 .start = 0xFFC02100,
210 .end = 0xFFC021FF,
211 .flags = IORESOURCE_MEM,
212 },
213#endif
214#ifdef CONFIG_BFIN_SIR3
215 {
216 .start = 0xFFC03100,
217 .end = 0xFFC031FF,
218 .flags = IORESOURCE_MEM,
219 },
220#endif
221};
222
223static struct platform_device bfin_sir_device = {
224 .name = "bfin_sir",
225 .id = 0,
226 .num_resources = ARRAY_SIZE(bfin_sir_resources),
227 .resource = bfin_sir_resources,
228};
229#endif
230
190#if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE) 231#if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
191static struct resource smsc911x_resources[] = { 232static struct resource smsc911x_resources[] = {
192 { 233 {
@@ -330,6 +371,7 @@ static struct platform_device bf54x_sdh_device = {
330}; 371};
331#endif 372#endif
332 373
374#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
333static struct mtd_partition ezkit_partitions[] = { 375static struct mtd_partition ezkit_partitions[] = {
334 { 376 {
335 .name = "Bootloader", 377 .name = "Bootloader",
@@ -337,7 +379,7 @@ static struct mtd_partition ezkit_partitions[] = {
337 .offset = 0, 379 .offset = 0,
338 }, { 380 }, {
339 .name = "Kernel", 381 .name = "Kernel",
340 .size = 0xE0000, 382 .size = 0x1C0000,
341 .offset = MTDPART_OFS_APPEND, 383 .offset = MTDPART_OFS_APPEND,
342 }, { 384 }, {
343 .name = "RootFS", 385 .name = "RootFS",
@@ -367,6 +409,7 @@ static struct platform_device ezkit_flash_device = {
367 .num_resources = 1, 409 .num_resources = 1,
368 .resource = &ezkit_flash_resource, 410 .resource = &ezkit_flash_resource,
369}; 411};
412#endif
370 413
371#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 414#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
372/* all SPI peripherals info goes here */ 415/* all SPI peripherals info goes here */
@@ -400,6 +443,14 @@ static struct bfin5xx_spi_chip spi_flash_chip_info = {
400}; 443};
401#endif 444#endif
402 445
446#if defined(CONFIG_SND_BLACKFIN_AD1836) \
447 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
448static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
449 .enable_dma = 0,
450 .bits_per_word = 16,
451};
452#endif
453
403#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) 454#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
404static struct bfin5xx_spi_chip spi_ad7877_chip_info = { 455static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
405 .cs_change_per_word = 0, 456 .cs_change_per_word = 0,
@@ -443,6 +494,16 @@ static struct spi_board_info bf54x_spi_board_info[] __initdata = {
443 .mode = SPI_MODE_3, 494 .mode = SPI_MODE_3,
444 }, 495 },
445#endif 496#endif
497#if defined(CONFIG_SND_BLACKFIN_AD1836) \
498 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
499 {
500 .modalias = "ad1836-spi",
501 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
502 .bus_num = 1,
503 .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
504 .controller_data = &ad1836_spi_chip_info,
505 },
506#endif
446#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) 507#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
447{ 508{
448 .modalias = "ad7877", 509 .modalias = "ad7877",
@@ -571,6 +632,29 @@ static struct platform_device i2c_bfin_twi1_device = {
571#endif 632#endif
572#endif 633#endif
573 634
635#ifdef CONFIG_I2C_BOARDINFO
636static struct i2c_board_info __initdata bfin_i2c_board_info0[] = {
637};
638
639#if !defined(CONFIG_BF542) /* The BF542 only has 1 TWI */
640static struct i2c_board_info __initdata bfin_i2c_board_info1[] = {
641#if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
642 {
643 I2C_BOARD_INFO("pcf8574_lcd", 0x22),
644 .type = "pcf8574_lcd",
645 },
646#endif
647#if defined(CONFIG_TWI_KEYPAD) || defined(CONFIG_TWI_KEYPAD_MODULE)
648 {
649 I2C_BOARD_INFO("pcf8574_keypad", 0x27),
650 .type = "pcf8574_keypad",
651 .irq = 212,
652 },
653#endif
654};
655#endif
656#endif
657
574#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 658#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
575#include <linux/gpio_keys.h> 659#include <linux/gpio_keys.h>
576 660
@@ -616,6 +700,10 @@ static struct platform_device *ezkit_devices[] __initdata = {
616 &bfin_uart_device, 700 &bfin_uart_device,
617#endif 701#endif
618 702
703#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
704 &bfin_sir_device,
705#endif
706
619#if defined(CONFIG_FB_BF54X_LQ043) || defined(CONFIG_FB_BF54X_LQ043_MODULE) 707#if defined(CONFIG_FB_BF54X_LQ043) || defined(CONFIG_FB_BF54X_LQ043_MODULE)
620 &bf54x_lq043_device, 708 &bf54x_lq043_device,
621#endif 709#endif
@@ -661,12 +749,25 @@ static struct platform_device *ezkit_devices[] __initdata = {
661#endif 749#endif
662 750
663 &bfin_gpios_device, 751 &bfin_gpios_device,
752
753#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
664 &ezkit_flash_device, 754 &ezkit_flash_device,
755#endif
665}; 756};
666 757
667static int __init ezkit_init(void) 758static int __init ezkit_init(void)
668{ 759{
669 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 760 printk(KERN_INFO "%s(): registering device resources\n", __func__);
761
762#ifdef CONFIG_I2C_BOARDINFO
763 i2c_register_board_info(0, bfin_i2c_board_info0,
764 ARRAY_SIZE(bfin_i2c_board_info0));
765#if !defined(CONFIG_BF542) /* The BF542 only has 1 TWI */
766 i2c_register_board_info(1, bfin_i2c_board_info1,
767 ARRAY_SIZE(bfin_i2c_board_info1));
768#endif
769#endif
770
670 platform_add_devices(ezkit_devices, ARRAY_SIZE(ezkit_devices)); 771 platform_add_devices(ezkit_devices, ARRAY_SIZE(ezkit_devices));
671 772
672#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 773#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
diff --git a/arch/blackfin/mach-bf548/cpu.c b/arch/blackfin/mach-bf548/cpu.c
deleted file mode 100644
index 4298a3ccfbfc..000000000000
--- a/arch/blackfin/mach-bf548/cpu.c
+++ /dev/null
@@ -1,159 +0,0 @@
1/*
2 * File: arch/blackfin/mach-bf548/cpu.c
3 * Based on:
4 * Author:
5 *
6 * Created:
7 * Description: clock scaling for the bf54x
8 *
9 * Modified:
10 * Copyright 2004-2007 Analog Devices Inc.
11 *
12 * Bugs: Enter bugs at http://blackfin.uclinux.org/
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or
17 * (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, see the file COPYING, or write
26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */
29
30#include <linux/kernel.h>
31#include <linux/types.h>
32#include <linux/init.h>
33#include <linux/cpufreq.h>
34#include <asm/dpmc.h>
35#include <linux/fs.h>
36#include <asm/bfin-global.h>
37
38/* CONFIG_CLKIN_HZ=25000000 */
39#define VCO5 (CONFIG_CLKIN_HZ*45)
40#define VCO4 (CONFIG_CLKIN_HZ*36)
41#define VCO3 (CONFIG_CLKIN_HZ*27)
42#define VCO2 (CONFIG_CLKIN_HZ*18)
43#define VCO1 (CONFIG_CLKIN_HZ*9)
44#define VCO(x) VCO##x
45
46#define MFREQ(x) {VCO(x),VCO(x)/4},{VCO(x),VCO(x)/2},{VCO(x),VCO(x)}
47/* frequency */
48static struct cpufreq_frequency_table bf548_freq_table[] = {
49 MFREQ(1),
50 MFREQ(3),
51 {VCO4, VCO4 / 2}, {VCO4, VCO4},
52 MFREQ(5),
53 {0, CPUFREQ_TABLE_END},
54};
55
56/*
57 * dpmc_fops->ioctl()
58 * static int dpmc_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
59 */
60static int bf548_getfreq(unsigned int cpu)
61{
62 unsigned long cclk_mhz;
63
64 /* The driver only support single cpu */
65 if (cpu == 0)
66 dpmc_fops.ioctl(NULL, NULL, IOCTL_GET_CORECLOCK, &cclk_mhz);
67 else
68 cclk_mhz = -1;
69
70 return cclk_mhz;
71}
72
73static int bf548_target(struct cpufreq_policy *policy,
74 unsigned int target_freq, unsigned int relation)
75{
76 unsigned long cclk_mhz;
77 unsigned long vco_mhz;
78 unsigned long flags;
79 unsigned int index;
80 struct cpufreq_freqs freqs;
81
82 if (cpufreq_frequency_table_target(policy, bf548_freq_table, target_freq, relation, &index))
83 return -EINVAL;
84
85 cclk_mhz = bf548_freq_table[index].frequency;
86 vco_mhz = bf548_freq_table[index].index;
87
88 dpmc_fops.ioctl(NULL, NULL, IOCTL_CHANGE_FREQUENCY, &vco_mhz);
89 freqs.old = bf548_getfreq(0);
90 freqs.new = cclk_mhz;
91 freqs.cpu = 0;
92
93 pr_debug("cclk begin change to cclk %d,vco=%d,index=%d,target=%d,oldfreq=%d\n",
94 cclk_mhz, vco_mhz, index, target_freq, freqs.old);
95
96 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
97 local_irq_save(flags);
98 dpmc_fops.ioctl(NULL, NULL, IOCTL_SET_CCLK, &cclk_mhz);
99 local_irq_restore(flags);
100 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
101
102 vco_mhz = get_vco();
103 cclk_mhz = get_cclk();
104 return 0;
105}
106
107/* make sure that only the "userspace" governor is run -- anything else wouldn't make sense on
108 * this platform, anyway.
109 */
110static int bf548_verify_speed(struct cpufreq_policy *policy)
111{
112 return cpufreq_frequency_table_verify(policy, &bf548_freq_table);
113}
114
115static int __init __bf548_cpu_init(struct cpufreq_policy *policy)
116{
117 if (policy->cpu != 0)
118 return -EINVAL;
119
120 policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
121
122 policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
123 /*Now ,only support one cpu */
124 policy->cur = bf548_getfreq(0);
125 cpufreq_frequency_table_get_attr(bf548_freq_table, policy->cpu);
126 return cpufreq_frequency_table_cpuinfo(policy, bf548_freq_table);
127}
128
129static struct freq_attr *bf548_freq_attr[] = {
130 &cpufreq_freq_attr_scaling_available_freqs,
131 NULL,
132};
133
134static struct cpufreq_driver bf548_driver = {
135 .verify = bf548_verify_speed,
136 .target = bf548_target,
137 .get = bf548_getfreq,
138 .init = __bf548_cpu_init,
139 .name = "bf548",
140 .owner = THIS_MODULE,
141 .attr = bf548_freq_attr,
142};
143
144static int __init bf548_cpu_init(void)
145{
146 return cpufreq_register_driver(&bf548_driver);
147}
148
149static void __exit bf548_cpu_exit(void)
150{
151 cpufreq_unregister_driver(&bf548_driver);
152}
153
154MODULE_AUTHOR("Mickael Kang");
155MODULE_DESCRIPTION("cpufreq driver for BF548 CPU");
156MODULE_LICENSE("GPL");
157
158module_init(bf548_cpu_init);
159module_exit(bf548_cpu_exit);
diff --git a/arch/blackfin/mach-bf548/dma.c b/arch/blackfin/mach-bf548/dma.c
index f5479298bb79..74730eb8ae1b 100644
--- a/arch/blackfin/mach-bf548/dma.c
+++ b/arch/blackfin/mach-bf548/dma.c
@@ -32,7 +32,7 @@
32#include <asm/blackfin.h> 32#include <asm/blackfin.h>
33#include <asm/dma.h> 33#include <asm/dma.h>
34 34
35 struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = { 35struct dma_register *dma_io_base_addr[MAX_BLACKFIN_DMA_CHANNEL] = {
36 (struct dma_register *) DMA0_NEXT_DESC_PTR, 36 (struct dma_register *) DMA0_NEXT_DESC_PTR,
37 (struct dma_register *) DMA1_NEXT_DESC_PTR, 37 (struct dma_register *) DMA1_NEXT_DESC_PTR,
38 (struct dma_register *) DMA2_NEXT_DESC_PTR, 38 (struct dma_register *) DMA2_NEXT_DESC_PTR,
@@ -66,7 +66,7 @@
66 (struct dma_register *) MDMA_D3_NEXT_DESC_PTR, 66 (struct dma_register *) MDMA_D3_NEXT_DESC_PTR,
67 (struct dma_register *) MDMA_S3_NEXT_DESC_PTR, 67 (struct dma_register *) MDMA_S3_NEXT_DESC_PTR,
68}; 68};
69EXPORT_SYMBOL(base_addr); 69EXPORT_SYMBOL(dma_io_base_addr);
70 70
71int channel2irq(unsigned int channel) 71int channel2irq(unsigned int channel)
72{ 72{
diff --git a/arch/blackfin/mach-bf548/head.S b/arch/blackfin/mach-bf548/head.S
index 46222a75321a..f7191141a3ce 100644
--- a/arch/blackfin/mach-bf548/head.S
+++ b/arch/blackfin/mach-bf548/head.S
@@ -36,9 +36,6 @@
36#include <asm/mach/mem_init.h> 36#include <asm/mach/mem_init.h>
37#endif 37#endif
38 38
39.global __rambase
40.global __ramstart
41.global __ramend
42.extern ___bss_stop 39.extern ___bss_stop
43.extern ___bss_start 40.extern ___bss_start
44.extern _bf53x_relocate_l1_mem 41.extern _bf53x_relocate_l1_mem
@@ -456,18 +453,3 @@ ENTRY(_start_dma_code)
456 RTS; 453 RTS;
457ENDPROC(_start_dma_code) 454ENDPROC(_start_dma_code)
458#endif /* CONFIG_BFIN_KERNEL_CLOCK */ 455#endif /* CONFIG_BFIN_KERNEL_CLOCK */
459
460.data
461
462/*
463 * Set up the usable of RAM stuff. Size of RAM is determined then
464 * an initial stack set up at the end.
465 */
466
467.align 4
468__rambase:
469.long 0
470__ramstart:
471.long 0
472__ramend:
473.long 0
diff --git a/arch/blackfin/mach-bf561/boards/cm_bf561.c b/arch/blackfin/mach-bf561/boards/cm_bf561.c
index bf9e738a7c64..9fd580952fd8 100644
--- a/arch/blackfin/mach-bf561/boards/cm_bf561.c
+++ b/arch/blackfin/mach-bf561/boards/cm_bf561.c
@@ -283,6 +283,25 @@ static struct platform_device bfin_uart_device = {
283}; 283};
284#endif 284#endif
285 285
286#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
287static struct resource bfin_sir_resources[] = {
288#ifdef CONFIG_BFIN_SIR0
289 {
290 .start = 0xFFC00400,
291 .end = 0xFFC004FF,
292 .flags = IORESOURCE_MEM,
293 },
294#endif
295};
296
297static struct platform_device bfin_sir_device = {
298 .name = "bfin_sir",
299 .id = 0,
300 .num_resources = ARRAY_SIZE(bfin_sir_resources),
301 .resource = bfin_sir_resources,
302};
303#endif
304
286#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) 305#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
287#define PATA_INT 119 306#define PATA_INT 119
288 307
@@ -330,6 +349,10 @@ static struct platform_device *cm_bf561_devices[] __initdata = {
330 &bfin_uart_device, 349 &bfin_uart_device,
331#endif 350#endif
332 351
352#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
353 &bfin_sir_device,
354#endif
355
333#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) 356#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
334 &isp1362_hcd_device, 357 &isp1362_hcd_device,
335#endif 358#endif
@@ -349,7 +372,7 @@ static struct platform_device *cm_bf561_devices[] __initdata = {
349 372
350static int __init cm_bf561_init(void) 373static int __init cm_bf561_init(void)
351{ 374{
352 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 375 printk(KERN_INFO "%s(): registering device resources\n", __func__);
353 platform_add_devices(cm_bf561_devices, ARRAY_SIZE(cm_bf561_devices)); 376 platform_add_devices(cm_bf561_devices, ARRAY_SIZE(cm_bf561_devices));
354#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 377#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
355 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); 378 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
diff --git a/arch/blackfin/mach-bf561/boards/ezkit.c b/arch/blackfin/mach-bf561/boards/ezkit.c
index d357f648d963..0d74b7d99209 100644
--- a/arch/blackfin/mach-bf561/boards/ezkit.c
+++ b/arch/blackfin/mach-bf561/boards/ezkit.c
@@ -78,7 +78,7 @@ int __init bfin_isp1761_init(void)
78{ 78{
79 unsigned int num_devices = ARRAY_SIZE(bfin_isp1761_devices); 79 unsigned int num_devices = ARRAY_SIZE(bfin_isp1761_devices);
80 80
81 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 81 printk(KERN_INFO "%s(): registering device resources\n", __func__);
82 set_irq_type(ISP1761_IRQ, IRQF_TRIGGER_FALLING); 82 set_irq_type(ISP1761_IRQ, IRQF_TRIGGER_FALLING);
83 83
84 return platform_add_devices(bfin_isp1761_devices, num_devices); 84 return platform_add_devices(bfin_isp1761_devices, num_devices);
@@ -220,6 +220,26 @@ static struct platform_device bfin_uart_device = {
220}; 220};
221#endif 221#endif
222 222
223#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
224static struct resource bfin_sir_resources[] = {
225#ifdef CONFIG_BFIN_SIR0
226 {
227 .start = 0xFFC00400,
228 .end = 0xFFC004FF,
229 .flags = IORESOURCE_MEM,
230 },
231#endif
232};
233
234static struct platform_device bfin_sir_device = {
235 .name = "bfin_sir",
236 .id = 0,
237 .num_resources = ARRAY_SIZE(bfin_sir_resources),
238 .resource = bfin_sir_resources,
239};
240#endif
241
242#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
223static struct mtd_partition ezkit_partitions[] = { 243static struct mtd_partition ezkit_partitions[] = {
224 { 244 {
225 .name = "Bootloader", 245 .name = "Bootloader",
@@ -227,7 +247,7 @@ static struct mtd_partition ezkit_partitions[] = {
227 .offset = 0, 247 .offset = 0,
228 }, { 248 }, {
229 .name = "Kernel", 249 .name = "Kernel",
230 .size = 0xE0000, 250 .size = 0x1C0000,
231 .offset = MTDPART_OFS_APPEND, 251 .offset = MTDPART_OFS_APPEND,
232 }, { 252 }, {
233 .name = "RootFS", 253 .name = "RootFS",
@@ -257,6 +277,7 @@ static struct platform_device ezkit_flash_device = {
257 .num_resources = 1, 277 .num_resources = 1,
258 .resource = &ezkit_flash_resource, 278 .resource = &ezkit_flash_resource,
259}; 279};
280#endif
260 281
261#ifdef CONFIG_SPI_BFIN 282#ifdef CONFIG_SPI_BFIN
262#if defined(CONFIG_SND_BLACKFIN_AD1836) \ 283#if defined(CONFIG_SND_BLACKFIN_AD1836) \
@@ -443,6 +464,10 @@ static struct platform_device *ezkit_devices[] __initdata = {
443 &bfin_uart_device, 464 &bfin_uart_device,
444#endif 465#endif
445 466
467#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
468 &bfin_sir_device,
469#endif
470
446#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) 471#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
447 &bfin_pata_device, 472 &bfin_pata_device,
448#endif 473#endif
@@ -460,7 +485,10 @@ static struct platform_device *ezkit_devices[] __initdata = {
460#endif 485#endif
461 486
462 &bfin_gpios_device, 487 &bfin_gpios_device,
488
489#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
463 &ezkit_flash_device, 490 &ezkit_flash_device,
491#endif
464}; 492};
465 493
466static int __init ezkit_init(void) 494static int __init ezkit_init(void)
diff --git a/arch/blackfin/mach-bf561/boards/generic_board.c b/arch/blackfin/mach-bf561/boards/generic_board.c
index fc80c5d059f8..2faa0072d614 100644
--- a/arch/blackfin/mach-bf561/boards/generic_board.c
+++ b/arch/blackfin/mach-bf561/boards/generic_board.c
@@ -70,7 +70,7 @@ static struct platform_device *generic_board_devices[] __initdata = {
70 70
71static int __init generic_board_init(void) 71static int __init generic_board_init(void)
72{ 72{
73 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 73 printk(KERN_INFO "%s(): registering device resources\n", __func__);
74 return platform_add_devices(generic_board_devices, 74 return platform_add_devices(generic_board_devices,
75 ARRAY_SIZE(generic_board_devices)); 75 ARRAY_SIZE(generic_board_devices));
76} 76}
diff --git a/arch/blackfin/mach-bf561/boards/tepla.c b/arch/blackfin/mach-bf561/boards/tepla.c
index ec6a2207c202..c9174b39f98d 100644
--- a/arch/blackfin/mach-bf561/boards/tepla.c
+++ b/arch/blackfin/mach-bf561/boards/tepla.c
@@ -50,7 +50,7 @@ static struct platform_device *tepla_devices[] __initdata = {
50 50
51static int __init tepla_init(void) 51static int __init tepla_init(void)
52{ 52{
53 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 53 printk(KERN_INFO "%s(): registering device resources\n", __func__);
54 return platform_add_devices(tepla_devices, ARRAY_SIZE(tepla_devices)); 54 return platform_add_devices(tepla_devices, ARRAY_SIZE(tepla_devices));
55} 55}
56 56
diff --git a/arch/blackfin/mach-bf561/dma.c b/arch/blackfin/mach-bf561/dma.c
index 89c65bb0bed3..24415eb82698 100644
--- a/arch/blackfin/mach-bf561/dma.c
+++ b/arch/blackfin/mach-bf561/dma.c
@@ -26,10 +26,12 @@
26 * to the Free Software Foundation, Inc., 26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */ 28 */
29#include <linux/module.h>
30
29#include <asm/blackfin.h> 31#include <asm/blackfin.h>
30#include <asm/dma.h> 32#include <asm/dma.h>
31 33
32struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = { 34struct dma_register *dma_io_base_addr[MAX_BLACKFIN_DMA_CHANNEL] = {
33 (struct dma_register *) DMA1_0_NEXT_DESC_PTR, 35 (struct dma_register *) DMA1_0_NEXT_DESC_PTR,
34 (struct dma_register *) DMA1_1_NEXT_DESC_PTR, 36 (struct dma_register *) DMA1_1_NEXT_DESC_PTR,
35 (struct dma_register *) DMA1_2_NEXT_DESC_PTR, 37 (struct dma_register *) DMA1_2_NEXT_DESC_PTR,
@@ -67,6 +69,7 @@ struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = {
67 (struct dma_register *) IMDMA_D1_NEXT_DESC_PTR, 69 (struct dma_register *) IMDMA_D1_NEXT_DESC_PTR,
68 (struct dma_register *) IMDMA_S1_NEXT_DESC_PTR, 70 (struct dma_register *) IMDMA_S1_NEXT_DESC_PTR,
69}; 71};
72EXPORT_SYMBOL(dma_io_base_addr);
70 73
71int channel2irq(unsigned int channel) 74int channel2irq(unsigned int channel)
72{ 75{
diff --git a/arch/blackfin/mach-bf561/head.S b/arch/blackfin/mach-bf561/head.S
index 96a3d456fb6d..5b8bd40851dd 100644
--- a/arch/blackfin/mach-bf561/head.S
+++ b/arch/blackfin/mach-bf561/head.S
@@ -37,9 +37,6 @@
37#include <asm/mach/mem_init.h> 37#include <asm/mach/mem_init.h>
38#endif 38#endif
39 39
40.global __rambase
41.global __ramstart
42.global __ramend
43.extern ___bss_stop 40.extern ___bss_stop
44.extern ___bss_start 41.extern ___bss_start
45.extern _bf53x_relocate_l1_mem 42.extern _bf53x_relocate_l1_mem
@@ -139,26 +136,26 @@ ENTRY(__start)
139 136
140 /* Initialise UART - when booting from u-boot, the UART is not disabled 137 /* Initialise UART - when booting from u-boot, the UART is not disabled
141 * so if we dont initalize here, our serial console gets hosed */ 138 * so if we dont initalize here, our serial console gets hosed */
142 p0.h = hi(UART_LCR); 139 p0.h = hi(BFIN_UART_LCR);
143 p0.l = lo(UART_LCR); 140 p0.l = lo(BFIN_UART_LCR);
144 r0 = 0x0(Z); 141 r0 = 0x0(Z);
145 w[p0] = r0.L; /* To enable DLL writes */ 142 w[p0] = r0.L; /* To enable DLL writes */
146 ssync; 143 ssync;
147 144
148 p0.h = hi(UART_DLL); 145 p0.h = hi(BFIN_UART_DLL);
149 p0.l = lo(UART_DLL); 146 p0.l = lo(BFIN_UART_DLL);
150 r0 = 0x0(Z); 147 r0 = 0x0(Z);
151 w[p0] = r0.L; 148 w[p0] = r0.L;
152 ssync; 149 ssync;
153 150
154 p0.h = hi(UART_DLH); 151 p0.h = hi(BFIN_UART_DLH);
155 p0.l = lo(UART_DLH); 152 p0.l = lo(BFIN_UART_DLH);
156 r0 = 0x00(Z); 153 r0 = 0x00(Z);
157 w[p0] = r0.L; 154 w[p0] = r0.L;
158 ssync; 155 ssync;
159 156
160 p0.h = hi(UART_GCTL); 157 p0.h = hi(BFIN_UART_GCTL);
161 p0.l = lo(UART_GCTL); 158 p0.l = lo(BFIN_UART_GCTL);
162 r0 = 0x0(Z); 159 r0 = 0x0(Z);
163 w[p0] = r0.L; /* To enable UART clock */ 160 w[p0] = r0.L; /* To enable UART clock */
164 ssync; 161 ssync;
@@ -411,18 +408,3 @@ ENTRY(_start_dma_code)
411 RTS; 408 RTS;
412ENDPROC(_start_dma_code) 409ENDPROC(_start_dma_code)
413#endif /* CONFIG_BFIN_KERNEL_CLOCK */ 410#endif /* CONFIG_BFIN_KERNEL_CLOCK */
414
415.data
416
417/*
418 * Set up the usable of RAM stuff. Size of RAM is determined then
419 * an initial stack set up at the end.
420 */
421
422.align 4
423__rambase:
424.long 0
425__ramstart:
426.long 0
427__ramend:
428.long 0
diff --git a/arch/blackfin/mach-common/Makefile b/arch/blackfin/mach-common/Makefile
index 15e33ca1ce80..393081e9b680 100644
--- a/arch/blackfin/mach-common/Makefile
+++ b/arch/blackfin/mach-common/Makefile
@@ -6,4 +6,5 @@ obj-y := \
6 cache.o cacheinit.o entry.o \ 6 cache.o cacheinit.o entry.o \
7 interrupt.o lock.o irqpanic.o arch_checks.o ints-priority.o 7 interrupt.o lock.o irqpanic.o arch_checks.o ints-priority.o
8 8
9obj-$(CONFIG_PM) += pm.o dpmc.o 9obj-$(CONFIG_PM) += pm.o dpmc.o
10obj-$(CONFIG_CPU_FREQ) += cpufreq.o
diff --git a/arch/blackfin/mach-common/arch_checks.c b/arch/blackfin/mach-common/arch_checks.c
index 2f6ce397780f..caaab49e9cfa 100644
--- a/arch/blackfin/mach-common/arch_checks.c
+++ b/arch/blackfin/mach-common/arch_checks.c
@@ -54,7 +54,8 @@
54 54
55#endif /* CONFIG_BFIN_KERNEL_CLOCK */ 55#endif /* CONFIG_BFIN_KERNEL_CLOCK */
56 56
57#ifdef CONFIG_MEM_SIZE
57#if (CONFIG_MEM_SIZE % 4) 58#if (CONFIG_MEM_SIZE % 4)
58#error "SDRAM mem size must be multible of 4MB" 59#error "SDRAM mem size must be multible of 4MB"
59#endif 60#endif
60 61#endif
diff --git a/arch/blackfin/mach-common/cpufreq.c b/arch/blackfin/mach-common/cpufreq.c
new file mode 100644
index 000000000000..ed81e00d20e1
--- /dev/null
+++ b/arch/blackfin/mach-common/cpufreq.c
@@ -0,0 +1,194 @@
1/*
2 * File: arch/blackfin/mach-common/cpufreq.c
3 * Based on:
4 * Author:
5 *
6 * Created:
7 * Description: Blackfin core clock scaling
8 *
9 * Modified:
10 * Copyright 2004-2008 Analog Devices Inc.
11 *
12 * Bugs: Enter bugs at http://blackfin.uclinux.org/
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or
17 * (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, see the file COPYING, or write
26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */
29
30#include <linux/kernel.h>
31#include <linux/types.h>
32#include <linux/init.h>
33#include <linux/cpufreq.h>
34#include <linux/fs.h>
35#include <asm/blackfin.h>
36#include <asm/time.h>
37
38
39/* this is the table of CCLK frequencies, in Hz */
40/* .index is the entry in the auxillary dpm_state_table[] */
41static struct cpufreq_frequency_table bfin_freq_table[] = {
42 {
43 .frequency = CPUFREQ_TABLE_END,
44 .index = 0,
45 },
46 {
47 .frequency = CPUFREQ_TABLE_END,
48 .index = 1,
49 },
50 {
51 .frequency = CPUFREQ_TABLE_END,
52 .index = 2,
53 },
54 {
55 .frequency = CPUFREQ_TABLE_END,
56 .index = 0,
57 },
58};
59
60static struct bfin_dpm_state {
61 unsigned int csel; /* system clock divider */
62 unsigned int tscale; /* change the divider on the core timer interrupt */
63} dpm_state_table[3];
64
65/**************************************************************************/
66
67static unsigned int bfin_getfreq(unsigned int cpu)
68{
69 /* The driver only support single cpu */
70 if (cpu != 0)
71 return -1;
72
73 return get_cclk();
74}
75
76
77static int bfin_target(struct cpufreq_policy *policy,
78 unsigned int target_freq, unsigned int relation)
79{
80 unsigned int index, plldiv, tscale;
81 unsigned long flags, cclk_hz;
82 struct cpufreq_freqs freqs;
83
84 if (cpufreq_frequency_table_target(policy, bfin_freq_table,
85 target_freq, relation, &index))
86 return -EINVAL;
87
88 cclk_hz = bfin_freq_table[index].frequency;
89
90 freqs.old = bfin_getfreq(0);
91 freqs.new = cclk_hz;
92 freqs.cpu = 0;
93
94 pr_debug("cpufreq: changing cclk to %lu; target = %u, oldfreq = %u\n",
95 cclk_hz, target_freq, freqs.old);
96
97 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
98 local_irq_save(flags);
99 plldiv = (bfin_read_PLL_DIV() & SSEL) | dpm_state_table[index].csel;
100 tscale = dpm_state_table[index].tscale;
101 bfin_write_PLL_DIV(plldiv);
102 /* we have to adjust the core timer, because it is using cclk */
103 bfin_write_TSCALE(tscale);
104 SSYNC();
105 local_irq_restore(flags);
106 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
107
108 return 0;
109}
110
111static int bfin_verify_speed(struct cpufreq_policy *policy)
112{
113 return cpufreq_frequency_table_verify(policy, bfin_freq_table);
114}
115
116static int __init __bfin_cpu_init(struct cpufreq_policy *policy)
117{
118
119 unsigned long cclk, sclk, csel, min_cclk;
120 int index;
121
122#ifdef CONFIG_CYCLES_CLOCKSOURCE
123/*
124 * Clocksource CYCLES is still CONTINUOUS but not longer MONOTONIC in case we enable
125 * CPU frequency scaling, since CYCLES runs off Core Clock.
126 */
127 printk(KERN_WARNING "CPU frequency scaling not supported: Clocksource not suitable\n"
128 return -ENODEV;
129#endif
130
131 if (policy->cpu != 0)
132 return -EINVAL;
133
134 cclk = get_cclk();
135 sclk = get_sclk();
136
137#if ANOMALY_05000273
138 min_cclk = sclk * 2;
139#else
140 min_cclk = sclk;
141#endif
142 csel = ((bfin_read_PLL_DIV() & CSEL) >> 4);
143
144 for (index = 0; (cclk >> index) >= min_cclk && csel <= 3; index++, csel++) {
145 bfin_freq_table[index].frequency = cclk >> index;
146 dpm_state_table[index].csel = csel << 4; /* Shift now into PLL_DIV bitpos */
147 dpm_state_table[index].tscale = (TIME_SCALE / (1 << csel)) - 1;
148
149 pr_debug("cpufreq: freq:%d csel:%d tscale:%d\n",
150 bfin_freq_table[index].frequency,
151 dpm_state_table[index].csel,
152 dpm_state_table[index].tscale);
153 }
154
155 policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
156
157 policy->cpuinfo.transition_latency = (bfin_read_PLL_LOCKCNT() / (sclk / 1000000)) * 1000;
158 /*Now ,only support one cpu */
159 policy->cur = cclk;
160 cpufreq_frequency_table_get_attr(bfin_freq_table, policy->cpu);
161 return cpufreq_frequency_table_cpuinfo(policy, bfin_freq_table);
162}
163
164static struct freq_attr *bfin_freq_attr[] = {
165 &cpufreq_freq_attr_scaling_available_freqs,
166 NULL,
167};
168
169static struct cpufreq_driver bfin_driver = {
170 .verify = bfin_verify_speed,
171 .target = bfin_target,
172 .get = bfin_getfreq,
173 .init = __bfin_cpu_init,
174 .name = "bfin cpufreq",
175 .owner = THIS_MODULE,
176 .attr = bfin_freq_attr,
177};
178
179static int __init bfin_cpu_init(void)
180{
181 return cpufreq_register_driver(&bfin_driver);
182}
183
184static void __exit bfin_cpu_exit(void)
185{
186 cpufreq_unregister_driver(&bfin_driver);
187}
188
189MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>");
190MODULE_DESCRIPTION("cpufreq driver for Blackfin");
191MODULE_LICENSE("GPL");
192
193module_init(bfin_cpu_init);
194module_exit(bfin_cpu_exit);
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S
index cee54cebbc65..f2fb87e9a46e 100644
--- a/arch/blackfin/mach-common/entry.S
+++ b/arch/blackfin/mach-common/entry.S
@@ -38,6 +38,7 @@
38#include <linux/unistd.h> 38#include <linux/unistd.h>
39#include <asm/blackfin.h> 39#include <asm/blackfin.h>
40#include <asm/errno.h> 40#include <asm/errno.h>
41#include <asm/fixed_code.h>
41#include <asm/thread_info.h> /* TIF_NEED_RESCHED */ 42#include <asm/thread_info.h> /* TIF_NEED_RESCHED */
42#include <asm/asm-offsets.h> 43#include <asm/asm-offsets.h>
43#include <asm/trace.h> 44#include <asm/trace.h>
@@ -52,15 +53,6 @@
52# define EX_SCRATCH_REG CYCLES 53# define EX_SCRATCH_REG CYCLES
53#endif 54#endif
54 55
55#if ANOMALY_05000281
56ENTRY(_safe_speculative_execution)
57 NOP;
58 NOP;
59 NOP;
60 jump _safe_speculative_execution;
61ENDPROC(_safe_speculative_execution)
62#endif
63
64#ifdef CONFIG_EXCPT_IRQ_SYSC_L1 56#ifdef CONFIG_EXCPT_IRQ_SYSC_L1
65.section .l1.text 57.section .l1.text
66#else 58#else
@@ -121,10 +113,14 @@ ENTRY(_ex_icplb_miss)
121 (R7:6,P5:4) = [sp++]; 113 (R7:6,P5:4) = [sp++];
122 ASTAT = [sp++]; 114 ASTAT = [sp++];
123 SAVE_ALL_SYS 115 SAVE_ALL_SYS
124 DEBUG_HWTRACE_SAVE(p5, r7)
125#ifdef CONFIG_MPU 116#ifdef CONFIG_MPU
117 /* We must load R1 here, _before_ DEBUG_HWTRACE_SAVE, since that
118 * will change the stack pointer. */
126 R0 = SEQSTAT; 119 R0 = SEQSTAT;
127 R1 = SP; 120 R1 = SP;
121#endif
122 DEBUG_HWTRACE_SAVE(p5, r7)
123#ifdef CONFIG_MPU
128 sp += -12; 124 sp += -12;
129 call _cplb_hdr; 125 call _cplb_hdr;
130 sp += 12; 126 sp += 12;
@@ -191,6 +187,7 @@ ENTRY(_bfin_return_from_exception)
191ENDPROC(_bfin_return_from_exception) 187ENDPROC(_bfin_return_from_exception)
192 188
193ENTRY(_handle_bad_cplb) 189ENTRY(_handle_bad_cplb)
190 DEBUG_HWTRACE_RESTORE(p5, r7)
194 /* To get here, we just tried and failed to change a CPLB 191 /* To get here, we just tried and failed to change a CPLB
195 * so, handle things in trap_c (C code), by lowering to 192 * so, handle things in trap_c (C code), by lowering to
196 * IRQ5, just like we normally do. Since this is not a 193 * IRQ5, just like we normally do. Since this is not a
@@ -225,6 +222,26 @@ ENTRY(_ex_trap_c)
225 [p4] = p5; 222 [p4] = p5;
226 csync; 223 csync;
227 224
225 p4.l = lo(DCPLB_FAULT_ADDR);
226 p4.h = hi(DCPLB_FAULT_ADDR);
227 r7 = [p4];
228 p5.h = _saved_dcplb_fault_addr;
229 p5.l = _saved_dcplb_fault_addr;
230 [p5] = r7;
231
232 r7 = [p4 + (ICPLB_FAULT_ADDR - DCPLB_FAULT_ADDR)];
233 p5.h = _saved_icplb_fault_addr;
234 p5.l = _saved_icplb_fault_addr;
235 [p5] = r7;
236
237 p4.l = __retx;
238 p4.h = __retx;
239 r6 = retx;
240 [p4] = r6;
241 p4.l = lo(SAFE_USER_INSTRUCTION);
242 p4.h = hi(SAFE_USER_INSTRUCTION);
243 retx = p4;
244
228 /* Disable all interrupts, but make sure level 5 is enabled so 245 /* Disable all interrupts, but make sure level 5 is enabled so
229 * we can switch to that level. Save the old mask. */ 246 * we can switch to that level. Save the old mask. */
230 cli r6; 247 cli r6;
@@ -234,23 +251,6 @@ ENTRY(_ex_trap_c)
234 r6 = 0x3f; 251 r6 = 0x3f;
235 sti r6; 252 sti r6;
236 253
237 /* Save the excause into a circular buffer, in case the instruction
238 * which caused this excecptions causes others.
239 */
240 P5.l = _in_ptr_excause;
241 P5.h = _in_ptr_excause;
242 R7 = [P5];
243 R7 += 4;
244 R6 = 0xF;
245 R7 = R7 & R6;
246 [P5] = R7;
247 R6.l = _excause_circ_buf;
248 R6.h = _excause_circ_buf;
249 R7 = R7 + R6;
250 p5 = R7;
251 R6 = SEQSTAT;
252 [P5] = R6;
253
254 (R7:6,P5:4) = [sp++]; 254 (R7:6,P5:4) = [sp++];
255 ASTAT = [sp++]; 255 ASTAT = [sp++];
256 SP = EX_SCRATCH_REG; 256 SP = EX_SCRATCH_REG;
@@ -307,6 +307,11 @@ ENDPROC(_double_fault)
307ENTRY(_exception_to_level5) 307ENTRY(_exception_to_level5)
308 SAVE_ALL_SYS 308 SAVE_ALL_SYS
309 309
310 p4.l = __retx;
311 p4.h = __retx;
312 r6 = [p4];
313 [sp + PT_PC] = r6;
314
310 /* Restore interrupt mask. We haven't pushed RETI, so this 315 /* Restore interrupt mask. We haven't pushed RETI, so this
311 * doesn't enable interrupts until we return from this handler. */ 316 * doesn't enable interrupts until we return from this handler. */
312 p4.l = _excpt_saved_imask; 317 p4.l = _excpt_saved_imask;
@@ -328,42 +333,11 @@ ENTRY(_exception_to_level5)
328 r0 = [p2]; /* Read current IPEND */ 333 r0 = [p2]; /* Read current IPEND */
329 [sp + PT_IPEND] = r0; /* Store IPEND */ 334 [sp + PT_IPEND] = r0; /* Store IPEND */
330 335
331 /* Pop the excause from the circular buffer and push it on the stack
332 * (in the right place - if you change the location of SEQSTAT, you
333 * must change this offset.
334 */
335.L_excep_to_5_again:
336 P5.l = _out_ptr_excause;
337 P5.h = _out_ptr_excause;
338 R7 = [P5];
339 R7 += 4;
340 R6 = 0xF;
341 R7 = R7 & R6;
342 [P5] = R7;
343 R6.l = _excause_circ_buf;
344 R6.h = _excause_circ_buf;
345 R7 = R7 + R6;
346 P5 = R7;
347 R1 = [P5];
348 [SP + PT_SEQSTAT] = r1;
349
350 r0 = sp; /* stack frame pt_regs pointer argument ==> r0 */ 336 r0 = sp; /* stack frame pt_regs pointer argument ==> r0 */
351 SP += -12; 337 SP += -12;
352 call _trap_c; 338 call _trap_c;
353 SP += 12; 339 SP += 12;
354 340
355 /* See if anything else is in the exception buffer
356 * if there is, process it
357 */
358 P5.l = _out_ptr_excause;
359 P5.h = _out_ptr_excause;
360 P4.l = _in_ptr_excause;
361 P4.h = _in_ptr_excause;
362 R6 = [P5];
363 R7 = [P4];
364 CC = R6 == R7;
365 if ! CC JUMP .L_excep_to_5_again
366
367 call _ret_from_exception; 341 call _ret_from_exception;
368 RESTORE_ALL_SYS 342 RESTORE_ALL_SYS
369 rti; 343 rti;
@@ -727,8 +701,8 @@ ENTRY(_return_from_int)
727 [p0] = p1; 701 [p0] = p1;
728 csync; 702 csync;
729#if ANOMALY_05000281 703#if ANOMALY_05000281
730 r0.l = _safe_speculative_execution; 704 r0.l = lo(SAFE_USER_INSTRUCTION);
731 r0.h = _safe_speculative_execution; 705 r0.h = hi(SAFE_USER_INSTRUCTION);
732 reti = r0; 706 reti = r0;
733#endif 707#endif
734 r0 = 0x801f (z); 708 r0 = 0x801f (z);
@@ -741,8 +715,8 @@ ENDPROC(_return_from_int)
741 715
742ENTRY(_lower_to_irq14) 716ENTRY(_lower_to_irq14)
743#if ANOMALY_05000281 717#if ANOMALY_05000281
744 r0.l = _safe_speculative_execution; 718 r0.l = lo(SAFE_USER_INSTRUCTION);
745 r0.h = _safe_speculative_execution; 719 r0.h = hi(SAFE_USER_INSTRUCTION);
746 reti = r0; 720 reti = r0;
747#endif 721#endif
748 r0 = 0x401f; 722 r0 = 0x401f;
@@ -809,20 +783,6 @@ _schedule_and_signal:
809 rti; 783 rti;
810ENDPROC(_lower_to_irq14) 784ENDPROC(_lower_to_irq14)
811 785
812/* Make sure when we start, that the circular buffer is initialized properly
813 * R0 and P0 are call clobbered, so we can use them here.
814 */
815ENTRY(_init_exception_buff)
816 r0 = 0;
817 p0.h = _in_ptr_excause;
818 p0.l = _in_ptr_excause;
819 [p0] = r0;
820 p0.h = _out_ptr_excause;
821 p0.l = _out_ptr_excause;
822 [p0] = r0;
823 rts;
824ENDPROC(_init_exception_buff)
825
826/* We handle this 100% in exception space - to reduce overhead 786/* We handle this 100% in exception space - to reduce overhead
827 * Only potiential problem is if the software buffer gets swapped out of the 787 * Only potiential problem is if the software buffer gets swapped out of the
828 * CPLB table - then double fault. - so we don't let this happen in other places 788 * CPLB table - then double fault. - so we don't let this happen in other places
@@ -1398,17 +1358,7 @@ _exception_stack_top:
1398_last_cplb_fault_retx: 1358_last_cplb_fault_retx:
1399 .long 0; 1359 .long 0;
1400#endif 1360#endif
1401/* 1361 /* Used to save the real RETX when temporarily storing a safe
1402 * Single instructions can have multiple faults, which need to be 1362 * return address. */
1403 * handled by traps.c, in irq5. We store the exception cause to ensure 1363__retx:
1404 * we don't miss a double fault condition
1405 */
1406ENTRY(_in_ptr_excause)
1407 .long 0; 1364 .long 0;
1408ENTRY(_out_ptr_excause)
1409 .long 0;
1410ALIGN
1411ENTRY(_excause_circ_buf)
1412 .rept 4
1413 .long 0
1414 .endr
diff --git a/arch/blackfin/mach-common/ints-priority.c b/arch/blackfin/mach-common/ints-priority.c
index 225ef14af75e..f5fd768022ea 100644
--- a/arch/blackfin/mach-common/ints-priority.c
+++ b/arch/blackfin/mach-common/ints-priority.c
@@ -316,7 +316,7 @@ static void bfin_demux_error_irq(unsigned int int_err_irq,
316 printk(KERN_ERR 316 printk(KERN_ERR
317 "%s : %s : LINE %d :\nIRQ ?: PERIPHERAL ERROR" 317 "%s : %s : LINE %d :\nIRQ ?: PERIPHERAL ERROR"
318 " INTERRUPT ASSERTED BUT NO SOURCE FOUND\n", 318 " INTERRUPT ASSERTED BUT NO SOURCE FOUND\n",
319 __FUNCTION__, __FILE__, __LINE__); 319 __func__, __FILE__, __LINE__);
320 320
321} 321}
322#endif /* BF537_GENERIC_ERROR_INT_DEMUX */ 322#endif /* BF537_GENERIC_ERROR_INT_DEMUX */
@@ -326,6 +326,7 @@ static void bfin_demux_error_irq(unsigned int int_err_irq,
326static unsigned short gpio_enabled[gpio_bank(MAX_BLACKFIN_GPIOS)]; 326static unsigned short gpio_enabled[gpio_bank(MAX_BLACKFIN_GPIOS)];
327static unsigned short gpio_edge_triggered[gpio_bank(MAX_BLACKFIN_GPIOS)]; 327static unsigned short gpio_edge_triggered[gpio_bank(MAX_BLACKFIN_GPIOS)];
328 328
329extern void bfin_gpio_irq_prepare(unsigned gpio);
329 330
330static void bfin_gpio_ack_irq(unsigned int irq) 331static void bfin_gpio_ack_irq(unsigned int irq)
331{ 332{
@@ -364,35 +365,25 @@ static void bfin_gpio_unmask_irq(unsigned int irq)
364 365
365static unsigned int bfin_gpio_irq_startup(unsigned int irq) 366static unsigned int bfin_gpio_irq_startup(unsigned int irq)
366{ 367{
367 unsigned int ret;
368 u16 gpionr = irq - IRQ_PF0; 368 u16 gpionr = irq - IRQ_PF0;
369 char buf[8];
370 369
371 if (!(gpio_enabled[gpio_bank(gpionr)] & gpio_bit(gpionr))) { 370 if (!(gpio_enabled[gpio_bank(gpionr)] & gpio_bit(gpionr)))
372 snprintf(buf, sizeof buf, "IRQ %d", irq); 371 bfin_gpio_irq_prepare(gpionr);
373 ret = gpio_request(gpionr, buf);
374 if (ret)
375 return ret;
376 }
377 372
378 gpio_enabled[gpio_bank(gpionr)] |= gpio_bit(gpionr); 373 gpio_enabled[gpio_bank(gpionr)] |= gpio_bit(gpionr);
379 bfin_gpio_unmask_irq(irq); 374 bfin_gpio_unmask_irq(irq);
380 375
381 return ret; 376 return 0;
382} 377}
383 378
384static void bfin_gpio_irq_shutdown(unsigned int irq) 379static void bfin_gpio_irq_shutdown(unsigned int irq)
385{ 380{
386 bfin_gpio_mask_irq(irq); 381 bfin_gpio_mask_irq(irq);
387 gpio_free(irq - IRQ_PF0);
388 gpio_enabled[gpio_bank(irq - IRQ_PF0)] &= ~gpio_bit(irq - IRQ_PF0); 382 gpio_enabled[gpio_bank(irq - IRQ_PF0)] &= ~gpio_bit(irq - IRQ_PF0);
389} 383}
390 384
391static int bfin_gpio_irq_type(unsigned int irq, unsigned int type) 385static int bfin_gpio_irq_type(unsigned int irq, unsigned int type)
392{ 386{
393
394 unsigned int ret;
395 char buf[8];
396 u16 gpionr = irq - IRQ_PF0; 387 u16 gpionr = irq - IRQ_PF0;
397 388
398 if (type == IRQ_TYPE_PROBE) { 389 if (type == IRQ_TYPE_PROBE) {
@@ -404,12 +395,8 @@ static int bfin_gpio_irq_type(unsigned int irq, unsigned int type)
404 395
405 if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING | 396 if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING |
406 IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) { 397 IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) {
407 if (!(gpio_enabled[gpio_bank(gpionr)] & gpio_bit(gpionr))) { 398 if (!(gpio_enabled[gpio_bank(gpionr)] & gpio_bit(gpionr)))
408 snprintf(buf, sizeof buf, "IRQ %d", irq); 399 bfin_gpio_irq_prepare(gpionr);
409 ret = gpio_request(gpionr, buf);
410 if (ret)
411 return ret;
412 }
413 400
414 gpio_enabled[gpio_bank(gpionr)] |= gpio_bit(gpionr); 401 gpio_enabled[gpio_bank(gpionr)] |= gpio_bit(gpionr);
415 } else { 402 } else {
@@ -595,6 +582,8 @@ static struct pin_int_t *pint[NR_PINT_SYS_IRQS] = {
595 (struct pin_int_t *)PINT3_MASK_SET, 582 (struct pin_int_t *)PINT3_MASK_SET,
596}; 583};
597 584
585extern void bfin_gpio_irq_prepare(unsigned gpio);
586
598inline unsigned short get_irq_base(u8 bank, u8 bmap) 587inline unsigned short get_irq_base(u8 bank, u8 bmap)
599{ 588{
600 589
@@ -697,8 +686,6 @@ static void bfin_gpio_unmask_irq(unsigned int irq)
697 686
698static unsigned int bfin_gpio_irq_startup(unsigned int irq) 687static unsigned int bfin_gpio_irq_startup(unsigned int irq)
699{ 688{
700 unsigned int ret;
701 char buf[8];
702 u16 gpionr = irq_to_gpio(irq); 689 u16 gpionr = irq_to_gpio(irq);
703 u8 pint_val = irq2pint_lut[irq - SYS_IRQS]; 690 u8 pint_val = irq2pint_lut[irq - SYS_IRQS];
704 691
@@ -709,17 +696,13 @@ static unsigned int bfin_gpio_irq_startup(unsigned int irq)
709 return -ENODEV; 696 return -ENODEV;
710 } 697 }
711 698
712 if (!(gpio_enabled[gpio_bank(gpionr)] & gpio_bit(gpionr))) { 699 if (!(gpio_enabled[gpio_bank(gpionr)] & gpio_bit(gpionr)))
713 snprintf(buf, sizeof buf, "IRQ %d", irq); 700 bfin_gpio_irq_prepare(gpionr);
714 ret = gpio_request(gpionr, buf);
715 if (ret)
716 return ret;
717 }
718 701
719 gpio_enabled[gpio_bank(gpionr)] |= gpio_bit(gpionr); 702 gpio_enabled[gpio_bank(gpionr)] |= gpio_bit(gpionr);
720 bfin_gpio_unmask_irq(irq); 703 bfin_gpio_unmask_irq(irq);
721 704
722 return ret; 705 return 0;
723} 706}
724 707
725static void bfin_gpio_irq_shutdown(unsigned int irq) 708static void bfin_gpio_irq_shutdown(unsigned int irq)
@@ -727,15 +710,12 @@ static void bfin_gpio_irq_shutdown(unsigned int irq)
727 u16 gpionr = irq_to_gpio(irq); 710 u16 gpionr = irq_to_gpio(irq);
728 711
729 bfin_gpio_mask_irq(irq); 712 bfin_gpio_mask_irq(irq);
730 gpio_free(gpionr);
731 gpio_enabled[gpio_bank(gpionr)] &= ~gpio_bit(gpionr); 713 gpio_enabled[gpio_bank(gpionr)] &= ~gpio_bit(gpionr);
732} 714}
733 715
734static int bfin_gpio_irq_type(unsigned int irq, unsigned int type) 716static int bfin_gpio_irq_type(unsigned int irq, unsigned int type)
735{ 717{
736 718
737 unsigned int ret;
738 char buf[8];
739 u16 gpionr = irq_to_gpio(irq); 719 u16 gpionr = irq_to_gpio(irq);
740 u8 pint_val = irq2pint_lut[irq - SYS_IRQS]; 720 u8 pint_val = irq2pint_lut[irq - SYS_IRQS];
741 u32 pintbit = PINT_BIT(pint_val); 721 u32 pintbit = PINT_BIT(pint_val);
@@ -753,12 +733,8 @@ static int bfin_gpio_irq_type(unsigned int irq, unsigned int type)
753 733
754 if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING | 734 if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING |
755 IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) { 735 IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) {
756 if (!(gpio_enabled[gpio_bank(gpionr)] & gpio_bit(gpionr))) { 736 if (!(gpio_enabled[gpio_bank(gpionr)] & gpio_bit(gpionr)))
757 snprintf(buf, sizeof buf, "IRQ %d", irq); 737 bfin_gpio_irq_prepare(gpionr);
758 ret = gpio_request(gpionr, buf);
759 if (ret)
760 return ret;
761 }
762 738
763 gpio_enabled[gpio_bank(gpionr)] |= gpio_bit(gpionr); 739 gpio_enabled[gpio_bank(gpionr)] |= gpio_bit(gpionr);
764 } else { 740 } else {
@@ -766,8 +742,6 @@ static int bfin_gpio_irq_type(unsigned int irq, unsigned int type)
766 return 0; 742 return 0;
767 } 743 }
768 744
769 gpio_direction_input(gpionr);
770
771 if ((type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_LEVEL_LOW))) 745 if ((type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_LEVEL_LOW)))
772 pint[bank]->invert_set = pintbit; /* low or falling edge denoted by one */ 746 pint[bank]->invert_set = pintbit; /* low or falling edge denoted by one */
773 else 747 else
@@ -965,8 +939,6 @@ int __init init_arch_irq(void)
965 939
966 local_irq_disable(); 940 local_irq_disable();
967 941
968 init_exception_buff();
969
970#ifdef CONFIG_BF54x 942#ifdef CONFIG_BF54x
971# ifdef CONFIG_PINTx_REASSIGN 943# ifdef CONFIG_PINTx_REASSIGN
972 pint[0]->assign = CONFIG_PINT0_ASSIGN; 944 pint[0]->assign = CONFIG_PINT0_ASSIGN;
diff --git a/arch/blackfin/mach-common/lock.S b/arch/blackfin/mach-common/lock.S
index 28b87fe9ce3c..30b887e67dd6 100644
--- a/arch/blackfin/mach-common/lock.S
+++ b/arch/blackfin/mach-common/lock.S
@@ -174,7 +174,7 @@ ENTRY(_cache_lock)
174 CLI R3; 174 CLI R3;
175 175
176 R7 = [P1]; 176 R7 = [P1];
177 R2 = 0xFFFFFF87 (X); 177 R2 = ~(0x78) (X); /* mask out ILOC */
178 R7 = R7 & R2; 178 R7 = R7 & R2;
179 R0 = R0 << 3; 179 R0 = R0 << 3;
180 R7 = R0 | R7; 180 R7 = R0 | R7;
diff --git a/arch/blackfin/mm/blackfin_sram.c b/arch/blackfin/mm/blackfin_sram.c
index e41f0e8ecacb..3246f91c7baa 100644
--- a/arch/blackfin/mm/blackfin_sram.c
+++ b/arch/blackfin/mm/blackfin_sram.c
@@ -401,7 +401,7 @@ EXPORT_SYMBOL(l1_data_sram_free);
401 401
402void *l1_inst_sram_alloc(size_t size) 402void *l1_inst_sram_alloc(size_t size)
403{ 403{
404#if L1_DATA_A_LENGTH != 0 404#if L1_CODE_LENGTH != 0
405 unsigned flags; 405 unsigned flags;
406 void *addr; 406 void *addr;
407 407
diff --git a/arch/blackfin/oprofile/common.c b/arch/blackfin/oprofile/common.c
index cb8b8d5af34f..0f6d303a8891 100644
--- a/arch/blackfin/oprofile/common.c
+++ b/arch/blackfin/oprofile/common.c
@@ -75,7 +75,7 @@ static int op_bfin_start(void)
75{ 75{
76 int ret = -EBUSY; 76 int ret = -EBUSY;
77 77
78 printk(KERN_INFO "KSDBG:in %s\n", __FUNCTION__); 78 printk(KERN_INFO "KSDBG:in %s\n", __func__);
79 mutex_lock(&pfmon_lock); 79 mutex_lock(&pfmon_lock);
80 if (!pfmon_enabled) { 80 if (!pfmon_enabled) {
81 ret = model->start(ctr); 81 ret = model->start(ctr);
diff --git a/arch/blackfin/oprofile/op_model_bf533.c b/arch/blackfin/oprofile/op_model_bf533.c
index 872dffe33623..d1c698bb9ee5 100644
--- a/arch/blackfin/oprofile/op_model_bf533.c
+++ b/arch/blackfin/oprofile/op_model_bf533.c
@@ -125,7 +125,7 @@ int pm_overflow_handler(int irq, struct pt_regs *regs)
125 unsigned int pc, pfctl; 125 unsigned int pc, pfctl;
126 unsigned int count[2]; 126 unsigned int count[2];
127 127
128 pr_debug("get interrupt in %s\n", __FUNCTION__); 128 pr_debug("get interrupt in %s\n", __func__);
129 if (oprofile_running == 0) { 129 if (oprofile_running == 0) {
130 pr_debug("error: entering interrupt when oprofile is stopped.\n\r"); 130 pr_debug("error: entering interrupt when oprofile is stopped.\n\r");
131 return -1; 131 return -1;
diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S
index 135644f8add7..484c83d23eef 100644
--- a/arch/sparc/kernel/entry.S
+++ b/arch/sparc/kernel/entry.S
@@ -1409,7 +1409,6 @@ syscall_is_too_hard:
1409 1409
1410 st %o0, [%sp + STACKFRAME_SZ + PT_I0] 1410 st %o0, [%sp + STACKFRAME_SZ + PT_I0]
1411 1411
1412 .globl ret_sys_call
1413ret_sys_call: 1412ret_sys_call:
1414 ld [%curptr + TI_FLAGS], %l6 1413 ld [%curptr + TI_FLAGS], %l6
1415 cmp %o0, -ERESTART_RESTARTBLOCK 1414 cmp %o0, -ERESTART_RESTARTBLOCK
diff --git a/arch/sparc/kernel/signal.c b/arch/sparc/kernel/signal.c
index 1f730619a24a..3e849e8e3480 100644
--- a/arch/sparc/kernel/signal.c
+++ b/arch/sparc/kernel/signal.c
@@ -105,11 +105,6 @@ static int _sigpause_common(old_sigset_t set)
105 return -ERESTARTNOHAND; 105 return -ERESTARTNOHAND;
106} 106}
107 107
108asmlinkage int sys_sigpause(unsigned int set)
109{
110 return _sigpause_common(set);
111}
112
113asmlinkage int sys_sigsuspend(old_sigset_t set) 108asmlinkage int sys_sigsuspend(old_sigset_t set)
114{ 109{
115 return _sigpause_common(set); 110 return _sigpause_common(set);
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
index df3eacb5ca15..8acc5cc38621 100644
--- a/arch/sparc64/Kconfig
+++ b/arch/sparc64/Kconfig
@@ -250,6 +250,26 @@ endchoice
250 250
251endmenu 251endmenu
252 252
253config NUMA
254 bool "NUMA support"
255
256config NODES_SHIFT
257 int
258 default "4"
259 depends on NEED_MULTIPLE_NODES
260
261# Some NUMA nodes have memory ranges that span
262# other nodes. Even though a pfn is valid and
263# between a node's start and end pfns, it may not
264# reside on that node. See memmap_init_zone()
265# for details.
266config NODES_SPAN_OTHER_NODES
267 def_bool y
268 depends on NEED_MULTIPLE_NODES
269
270config ARCH_POPULATES_NODE_MAP
271 def_bool y
272
253config ARCH_SELECT_MEMORY_MODEL 273config ARCH_SELECT_MEMORY_MODEL
254 def_bool y 274 def_bool y
255 275
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig
index e1835868ad36..92f79680f70d 100644
--- a/arch/sparc64/defconfig
+++ b/arch/sparc64/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25 3# Linux kernel version: 2.6.25-numa
4# Sun Apr 20 01:33:21 2008 4# Wed Apr 23 04:49:08 2008
5# 5#
6CONFIG_SPARC=y 6CONFIG_SPARC=y
7CONFIG_SPARC64=y 7CONFIG_SPARC64=y
@@ -152,6 +152,8 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
152CONFIG_HUGETLB_PAGE_SIZE_4MB=y 152CONFIG_HUGETLB_PAGE_SIZE_4MB=y
153# CONFIG_HUGETLB_PAGE_SIZE_512K is not set 153# CONFIG_HUGETLB_PAGE_SIZE_512K is not set
154# CONFIG_HUGETLB_PAGE_SIZE_64K is not set 154# CONFIG_HUGETLB_PAGE_SIZE_64K is not set
155# CONFIG_NUMA is not set
156CONFIG_ARCH_POPULATES_NODE_MAP=y
155CONFIG_ARCH_SELECT_MEMORY_MODEL=y 157CONFIG_ARCH_SELECT_MEMORY_MODEL=y
156CONFIG_ARCH_SPARSEMEM_ENABLE=y 158CONFIG_ARCH_SPARSEMEM_ENABLE=y
157CONFIG_ARCH_SPARSEMEM_DEFAULT=y 159CONFIG_ARCH_SPARSEMEM_DEFAULT=y
@@ -787,7 +789,6 @@ CONFIG_I2C_ALGOBIT=y
787# CONFIG_SENSORS_PCF8574 is not set 789# CONFIG_SENSORS_PCF8574 is not set
788# CONFIG_PCF8575 is not set 790# CONFIG_PCF8575 is not set
789# CONFIG_SENSORS_PCF8591 is not set 791# CONFIG_SENSORS_PCF8591 is not set
790# CONFIG_TPS65010 is not set
791# CONFIG_SENSORS_MAX6875 is not set 792# CONFIG_SENSORS_MAX6875 is not set
792# CONFIG_SENSORS_TSL2550 is not set 793# CONFIG_SENSORS_TSL2550 is not set
793# CONFIG_I2C_DEBUG_CORE is not set 794# CONFIG_I2C_DEBUG_CORE is not set
@@ -869,6 +870,7 @@ CONFIG_SSB_POSSIBLE=y
869# Multifunction device drivers 870# Multifunction device drivers
870# 871#
871# CONFIG_MFD_SM501 is not set 872# CONFIG_MFD_SM501 is not set
873# CONFIG_HTC_PASIC3 is not set
872 874
873# 875#
874# Multimedia devices 876# Multimedia devices
@@ -1219,10 +1221,6 @@ CONFIG_USB_STORAGE=m
1219# CONFIG_NEW_LEDS is not set 1221# CONFIG_NEW_LEDS is not set
1220# CONFIG_INFINIBAND is not set 1222# CONFIG_INFINIBAND is not set
1221# CONFIG_RTC_CLASS is not set 1223# CONFIG_RTC_CLASS is not set
1222
1223#
1224# Userspace I/O
1225#
1226# CONFIG_UIO is not set 1224# CONFIG_UIO is not set
1227 1225
1228# 1226#
@@ -1399,6 +1397,7 @@ CONFIG_SCHEDSTATS=y
1399CONFIG_DEBUG_BUGVERBOSE=y 1397CONFIG_DEBUG_BUGVERBOSE=y
1400# CONFIG_DEBUG_INFO is not set 1398# CONFIG_DEBUG_INFO is not set
1401# CONFIG_DEBUG_VM is not set 1399# CONFIG_DEBUG_VM is not set
1400# CONFIG_DEBUG_WRITECOUNT is not set
1402# CONFIG_DEBUG_LIST is not set 1401# CONFIG_DEBUG_LIST is not set
1403# CONFIG_DEBUG_SG is not set 1402# CONFIG_DEBUG_SG is not set
1404# CONFIG_BOOT_PRINTK_DELAY is not set 1403# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1425,53 +1424,82 @@ CONFIG_ASYNC_CORE=m
1425CONFIG_ASYNC_MEMCPY=m 1424CONFIG_ASYNC_MEMCPY=m
1426CONFIG_ASYNC_XOR=m 1425CONFIG_ASYNC_XOR=m
1427CONFIG_CRYPTO=y 1426CONFIG_CRYPTO=y
1427
1428#
1429# Crypto core or helper
1430#
1428CONFIG_CRYPTO_ALGAPI=y 1431CONFIG_CRYPTO_ALGAPI=y
1429CONFIG_CRYPTO_AEAD=y 1432CONFIG_CRYPTO_AEAD=y
1430CONFIG_CRYPTO_BLKCIPHER=y 1433CONFIG_CRYPTO_BLKCIPHER=y
1431# CONFIG_CRYPTO_SEQIV is not set
1432CONFIG_CRYPTO_HASH=y 1434CONFIG_CRYPTO_HASH=y
1433CONFIG_CRYPTO_MANAGER=y 1435CONFIG_CRYPTO_MANAGER=y
1436CONFIG_CRYPTO_GF128MUL=m
1437CONFIG_CRYPTO_NULL=m
1438# CONFIG_CRYPTO_CRYPTD is not set
1439CONFIG_CRYPTO_AUTHENC=y
1440CONFIG_CRYPTO_TEST=m
1441
1442#
1443# Authenticated Encryption with Associated Data
1444#
1445# CONFIG_CRYPTO_CCM is not set
1446# CONFIG_CRYPTO_GCM is not set
1447# CONFIG_CRYPTO_SEQIV is not set
1448
1449#
1450# Block modes
1451#
1452CONFIG_CRYPTO_CBC=y
1453# CONFIG_CRYPTO_CTR is not set
1454# CONFIG_CRYPTO_CTS is not set
1455CONFIG_CRYPTO_ECB=m
1456CONFIG_CRYPTO_LRW=m
1457CONFIG_CRYPTO_PCBC=m
1458CONFIG_CRYPTO_XTS=m
1459
1460#
1461# Hash modes
1462#
1434CONFIG_CRYPTO_HMAC=y 1463CONFIG_CRYPTO_HMAC=y
1435CONFIG_CRYPTO_XCBC=y 1464CONFIG_CRYPTO_XCBC=y
1436CONFIG_CRYPTO_NULL=m 1465
1466#
1467# Digest
1468#
1469CONFIG_CRYPTO_CRC32C=m
1437CONFIG_CRYPTO_MD4=y 1470CONFIG_CRYPTO_MD4=y
1438CONFIG_CRYPTO_MD5=y 1471CONFIG_CRYPTO_MD5=y
1472CONFIG_CRYPTO_MICHAEL_MIC=m
1439CONFIG_CRYPTO_SHA1=y 1473CONFIG_CRYPTO_SHA1=y
1440CONFIG_CRYPTO_SHA256=m 1474CONFIG_CRYPTO_SHA256=m
1441CONFIG_CRYPTO_SHA512=m 1475CONFIG_CRYPTO_SHA512=m
1442CONFIG_CRYPTO_WP512=m
1443CONFIG_CRYPTO_TGR192=m 1476CONFIG_CRYPTO_TGR192=m
1444CONFIG_CRYPTO_GF128MUL=m 1477CONFIG_CRYPTO_WP512=m
1445CONFIG_CRYPTO_ECB=m 1478
1446CONFIG_CRYPTO_CBC=y 1479#
1447CONFIG_CRYPTO_PCBC=m 1480# Ciphers
1448CONFIG_CRYPTO_LRW=m 1481#
1449CONFIG_CRYPTO_XTS=m
1450# CONFIG_CRYPTO_CTR is not set
1451# CONFIG_CRYPTO_GCM is not set
1452# CONFIG_CRYPTO_CCM is not set
1453# CONFIG_CRYPTO_CRYPTD is not set
1454CONFIG_CRYPTO_DES=y
1455CONFIG_CRYPTO_FCRYPT=m
1456CONFIG_CRYPTO_BLOWFISH=m
1457CONFIG_CRYPTO_TWOFISH=m
1458CONFIG_CRYPTO_TWOFISH_COMMON=m
1459CONFIG_CRYPTO_SERPENT=m
1460CONFIG_CRYPTO_AES=m 1482CONFIG_CRYPTO_AES=m
1483CONFIG_CRYPTO_ANUBIS=m
1484CONFIG_CRYPTO_ARC4=m
1485CONFIG_CRYPTO_BLOWFISH=m
1486CONFIG_CRYPTO_CAMELLIA=m
1461CONFIG_CRYPTO_CAST5=m 1487CONFIG_CRYPTO_CAST5=m
1462CONFIG_CRYPTO_CAST6=m 1488CONFIG_CRYPTO_CAST6=m
1463CONFIG_CRYPTO_TEA=m 1489CONFIG_CRYPTO_DES=y
1464CONFIG_CRYPTO_ARC4=m 1490CONFIG_CRYPTO_FCRYPT=m
1465CONFIG_CRYPTO_KHAZAD=m 1491CONFIG_CRYPTO_KHAZAD=m
1466CONFIG_CRYPTO_ANUBIS=m
1467CONFIG_CRYPTO_SEED=m
1468# CONFIG_CRYPTO_SALSA20 is not set 1492# CONFIG_CRYPTO_SALSA20 is not set
1493CONFIG_CRYPTO_SEED=m
1494CONFIG_CRYPTO_SERPENT=m
1495CONFIG_CRYPTO_TEA=m
1496CONFIG_CRYPTO_TWOFISH=m
1497CONFIG_CRYPTO_TWOFISH_COMMON=m
1498
1499#
1500# Compression
1501#
1469CONFIG_CRYPTO_DEFLATE=y 1502CONFIG_CRYPTO_DEFLATE=y
1470CONFIG_CRYPTO_MICHAEL_MIC=m
1471CONFIG_CRYPTO_CRC32C=m
1472CONFIG_CRYPTO_CAMELLIA=m
1473CONFIG_CRYPTO_TEST=m
1474CONFIG_CRYPTO_AUTHENC=y
1475# CONFIG_CRYPTO_LZO is not set 1503# CONFIG_CRYPTO_LZO is not set
1476CONFIG_CRYPTO_HW=y 1504CONFIG_CRYPTO_HW=y
1477# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1505# CONFIG_CRYPTO_DEV_HIFN_795X is not set
@@ -1492,3 +1520,4 @@ CONFIG_PLIST=y
1492CONFIG_HAS_IOMEM=y 1520CONFIG_HAS_IOMEM=y
1493CONFIG_HAS_IOPORT=y 1521CONFIG_HAS_IOPORT=y
1494CONFIG_HAS_DMA=y 1522CONFIG_HAS_DMA=y
1523CONFIG_HAVE_LMB=y
diff --git a/arch/sparc64/kernel/ebus.c b/arch/sparc64/kernel/ebus.c
index 04ab81cb4f48..bc2632274840 100644
--- a/arch/sparc64/kernel/ebus.c
+++ b/arch/sparc64/kernel/ebus.c
@@ -396,6 +396,7 @@ static void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_de
396 sd->op = &dev->ofdev; 396 sd->op = &dev->ofdev;
397 sd->iommu = dev->bus->ofdev.dev.parent->archdata.iommu; 397 sd->iommu = dev->bus->ofdev.dev.parent->archdata.iommu;
398 sd->stc = dev->bus->ofdev.dev.parent->archdata.stc; 398 sd->stc = dev->bus->ofdev.dev.parent->archdata.stc;
399 sd->numa_node = dev->bus->ofdev.dev.parent->archdata.numa_node;
399 400
400 dev->ofdev.node = dp; 401 dev->ofdev.node = dp;
401 dev->ofdev.dev.parent = &dev->bus->ofdev.dev; 402 dev->ofdev.dev.parent = &dev->bus->ofdev.dev;
diff --git a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S
index fb43c76bdc26..fd06e937ae1e 100644
--- a/arch/sparc64/kernel/entry.S
+++ b/arch/sparc64/kernel/entry.S
@@ -47,7 +47,7 @@ do_fpdis:
47 ba,pt %xcc, etrap 47 ba,pt %xcc, etrap
48109: or %g7, %lo(109b), %g7 48109: or %g7, %lo(109b), %g7
49 add %g0, %g0, %g0 49 add %g0, %g0, %g0
50 ba,a,pt %xcc, rtrap_clr_l6 50 ba,a,pt %xcc, rtrap
51 51
521: TRAP_LOAD_THREAD_REG(%g6, %g1) 521: TRAP_LOAD_THREAD_REG(%g6, %g1)
53 ldub [%g6 + TI_FPSAVED], %g5 53 ldub [%g6 + TI_FPSAVED], %g5
@@ -226,7 +226,7 @@ fp_other_bounce:
226 call do_fpother 226 call do_fpother
227 add %sp, PTREGS_OFF, %o0 227 add %sp, PTREGS_OFF, %o0
228 ba,pt %xcc, rtrap 228 ba,pt %xcc, rtrap
229 clr %l6 229 nop
230 230
231 .globl do_fpother_check_fitos 231 .globl do_fpother_check_fitos
232 .align 32 232 .align 32
@@ -489,7 +489,7 @@ utrap_trap: /* %g3=handler,%g4=level */
489 call bad_trap 489 call bad_trap
490 add %sp, PTREGS_OFF, %o0 490 add %sp, PTREGS_OFF, %o0
491 ba,pt %xcc, rtrap 491 ba,pt %xcc, rtrap
492 clr %l6 492 nop
493 493
494invoke_utrap: 494invoke_utrap:
495 sllx %g3, 3, %g3 495 sllx %g3, 3, %g3
@@ -607,7 +607,7 @@ __spitfire_cee_trap_continue:
607 call spitfire_access_error 607 call spitfire_access_error
608 add %sp, PTREGS_OFF, %o0 608 add %sp, PTREGS_OFF, %o0
609 ba,pt %xcc, rtrap 609 ba,pt %xcc, rtrap
610 clr %l6 610 nop
611 611
612 /* This is the trap handler entry point for ECC correctable 612 /* This is the trap handler entry point for ECC correctable
613 * errors. They are corrected, but we listen for the trap 613 * errors. They are corrected, but we listen for the trap
@@ -686,7 +686,7 @@ __spitfire_data_access_exception_tl1:
686 call spitfire_data_access_exception_tl1 686 call spitfire_data_access_exception_tl1
687 add %sp, PTREGS_OFF, %o0 687 add %sp, PTREGS_OFF, %o0
688 ba,pt %xcc, rtrap 688 ba,pt %xcc, rtrap
689 clr %l6 689 nop
690 690
691__spitfire_data_access_exception: 691__spitfire_data_access_exception:
692 rdpr %pstate, %g4 692 rdpr %pstate, %g4
@@ -705,7 +705,7 @@ __spitfire_data_access_exception:
705 call spitfire_data_access_exception 705 call spitfire_data_access_exception
706 add %sp, PTREGS_OFF, %o0 706 add %sp, PTREGS_OFF, %o0
707 ba,pt %xcc, rtrap 707 ba,pt %xcc, rtrap
708 clr %l6 708 nop
709 709
710 .globl __spitfire_insn_access_exception 710 .globl __spitfire_insn_access_exception
711 .globl __spitfire_insn_access_exception_tl1 711 .globl __spitfire_insn_access_exception_tl1
@@ -725,7 +725,7 @@ __spitfire_insn_access_exception_tl1:
725 call spitfire_insn_access_exception_tl1 725 call spitfire_insn_access_exception_tl1
726 add %sp, PTREGS_OFF, %o0 726 add %sp, PTREGS_OFF, %o0
727 ba,pt %xcc, rtrap 727 ba,pt %xcc, rtrap
728 clr %l6 728 nop
729 729
730__spitfire_insn_access_exception: 730__spitfire_insn_access_exception:
731 rdpr %pstate, %g4 731 rdpr %pstate, %g4
@@ -743,7 +743,7 @@ __spitfire_insn_access_exception:
743 call spitfire_insn_access_exception 743 call spitfire_insn_access_exception
744 add %sp, PTREGS_OFF, %o0 744 add %sp, PTREGS_OFF, %o0
745 ba,pt %xcc, rtrap 745 ba,pt %xcc, rtrap
746 clr %l6 746 nop
747 747
748 /* These get patched into the trap table at boot time 748 /* These get patched into the trap table at boot time
749 * once we know we have a cheetah processor. 749 * once we know we have a cheetah processor.
@@ -937,7 +937,7 @@ do_dcpe_tl1_fatal:
937 call cheetah_plus_parity_error 937 call cheetah_plus_parity_error
938 add %sp, PTREGS_OFF, %o1 938 add %sp, PTREGS_OFF, %o1
939 ba,pt %xcc, rtrap 939 ba,pt %xcc, rtrap
940 clr %l6 940 nop
941 941
942do_icpe_tl1: 942do_icpe_tl1:
943 rdpr %tl, %g1 ! Save original trap level 943 rdpr %tl, %g1 ! Save original trap level
@@ -979,7 +979,7 @@ do_icpe_tl1_fatal:
979 call cheetah_plus_parity_error 979 call cheetah_plus_parity_error
980 add %sp, PTREGS_OFF, %o1 980 add %sp, PTREGS_OFF, %o1
981 ba,pt %xcc, rtrap 981 ba,pt %xcc, rtrap
982 clr %l6 982 nop
983 983
984dcpe_icpe_tl1_common: 984dcpe_icpe_tl1_common:
985 /* Flush D-cache, re-enable D/I caches in DCU and finally 985 /* Flush D-cache, re-enable D/I caches in DCU and finally
@@ -1281,7 +1281,7 @@ __do_privact:
1281 call do_privact 1281 call do_privact
1282 add %sp, PTREGS_OFF, %o0 1282 add %sp, PTREGS_OFF, %o0
1283 ba,pt %xcc, rtrap 1283 ba,pt %xcc, rtrap
1284 clr %l6 1284 nop
1285 1285
1286 .globl do_mna 1286 .globl do_mna
1287do_mna: 1287do_mna:
@@ -1308,7 +1308,7 @@ do_mna:
1308 call mem_address_unaligned 1308 call mem_address_unaligned
1309 add %sp, PTREGS_OFF, %o0 1309 add %sp, PTREGS_OFF, %o0
1310 ba,pt %xcc, rtrap 1310 ba,pt %xcc, rtrap
1311 clr %l6 1311 nop
1312 1312
1313 .globl do_lddfmna 1313 .globl do_lddfmna
1314do_lddfmna: 1314do_lddfmna:
@@ -1326,7 +1326,7 @@ do_lddfmna:
1326 call handle_lddfmna 1326 call handle_lddfmna
1327 add %sp, PTREGS_OFF, %o0 1327 add %sp, PTREGS_OFF, %o0
1328 ba,pt %xcc, rtrap 1328 ba,pt %xcc, rtrap
1329 clr %l6 1329 nop
1330 1330
1331 .globl do_stdfmna 1331 .globl do_stdfmna
1332do_stdfmna: 1332do_stdfmna:
@@ -1344,7 +1344,7 @@ do_stdfmna:
1344 call handle_stdfmna 1344 call handle_stdfmna
1345 add %sp, PTREGS_OFF, %o0 1345 add %sp, PTREGS_OFF, %o0
1346 ba,pt %xcc, rtrap 1346 ba,pt %xcc, rtrap
1347 clr %l6 1347 nop
1348 1348
1349 .globl breakpoint_trap 1349 .globl breakpoint_trap
1350breakpoint_trap: 1350breakpoint_trap:
@@ -1424,13 +1424,13 @@ sys32_rt_sigreturn:
14241: ldx [%curptr + TI_FLAGS], %l5 14241: ldx [%curptr + TI_FLAGS], %l5
1425 andcc %l5, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT), %g0 1425 andcc %l5, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT), %g0
1426 be,pt %icc, rtrap 1426 be,pt %icc, rtrap
1427 clr %l6 1427 nop
1428 add %sp, PTREGS_OFF, %o0 1428 add %sp, PTREGS_OFF, %o0
1429 call syscall_trace 1429 call syscall_trace
1430 mov 1, %o1 1430 mov 1, %o1
1431 1431
1432 ba,pt %xcc, rtrap 1432 ba,pt %xcc, rtrap
1433 clr %l6 1433 nop
1434 1434
1435 /* This is how fork() was meant to be done, 8 instruction entry. 1435 /* This is how fork() was meant to be done, 8 instruction entry.
1436 * 1436 *
@@ -1559,7 +1559,7 @@ linux_sparc_syscall32:
1559 1559
1560 /* Linux native system calls enter here... */ 1560 /* Linux native system calls enter here... */
1561 .align 32 1561 .align 32
1562 .globl linux_sparc_syscall, ret_sys_call 1562 .globl linux_sparc_syscall
1563linux_sparc_syscall: 1563linux_sparc_syscall:
1564 /* Direct access to user regs, much faster. */ 1564 /* Direct access to user regs, much faster. */
1565 cmp %g1, NR_SYSCALLS ! IEU1 Group 1565 cmp %g1, NR_SYSCALLS ! IEU1 Group
@@ -1605,7 +1605,7 @@ ret_sys_call:
1605 bne,pn %icc, linux_syscall_trace2 1605 bne,pn %icc, linux_syscall_trace2
1606 add %l1, 0x4, %l2 ! npc = npc+4 1606 add %l1, 0x4, %l2 ! npc = npc+4
1607 stx %l1, [%sp + PTREGS_OFF + PT_V9_TPC] 1607 stx %l1, [%sp + PTREGS_OFF + PT_V9_TPC]
1608 ba,pt %xcc, rtrap_clr_l6 1608 ba,pt %xcc, rtrap
1609 stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC] 1609 stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC]
1610 1610
16111: 16111:
@@ -1616,7 +1616,6 @@ ret_sys_call:
1616 sub %g0, %o0, %o0 1616 sub %g0, %o0, %o0
1617 or %g3, %g2, %g3 1617 or %g3, %g2, %g3
1618 stx %o0, [%sp + PTREGS_OFF + PT_V9_I0] 1618 stx %o0, [%sp + PTREGS_OFF + PT_V9_I0]
1619 mov 1, %l6
1620 stx %g3, [%sp + PTREGS_OFF + PT_V9_TSTATE] 1619 stx %g3, [%sp + PTREGS_OFF + PT_V9_TSTATE]
1621 bne,pn %icc, linux_syscall_trace2 1620 bne,pn %icc, linux_syscall_trace2
1622 add %l1, 0x4, %l2 ! npc = npc+4 1621 add %l1, 0x4, %l2 ! npc = npc+4
diff --git a/arch/sparc64/kernel/entry.h b/arch/sparc64/kernel/entry.h
index 4a91e9c6d31b..32fbab620852 100644
--- a/arch/sparc64/kernel/entry.h
+++ b/arch/sparc64/kernel/entry.h
@@ -20,7 +20,6 @@ extern void timer_interrupt(int irq, struct pt_regs *regs);
20 20
21extern void do_notify_resume(struct pt_regs *regs, 21extern void do_notify_resume(struct pt_regs *regs,
22 unsigned long orig_i0, 22 unsigned long orig_i0,
23 int restart_syscall,
24 unsigned long thread_info_flags); 23 unsigned long thread_info_flags);
25 24
26extern asmlinkage void syscall_trace(struct pt_regs *regs, 25extern asmlinkage void syscall_trace(struct pt_regs *regs,
diff --git a/arch/sparc64/kernel/etrap.S b/arch/sparc64/kernel/etrap.S
index 4b2bf9eb447a..b49d3b60bc0c 100644
--- a/arch/sparc64/kernel/etrap.S
+++ b/arch/sparc64/kernel/etrap.S
@@ -53,7 +53,11 @@ etrap_irq:
53 stx %g3, [%g2 + STACKFRAME_SZ + PT_V9_TPC] 53 stx %g3, [%g2 + STACKFRAME_SZ + PT_V9_TPC]
54 rd %y, %g3 54 rd %y, %g3
55 stx %g1, [%g2 + STACKFRAME_SZ + PT_V9_TNPC] 55 stx %g1, [%g2 + STACKFRAME_SZ + PT_V9_TNPC]
56 rdpr %tt, %g1
56 st %g3, [%g2 + STACKFRAME_SZ + PT_V9_Y] 57 st %g3, [%g2 + STACKFRAME_SZ + PT_V9_Y]
58 sethi %hi(PT_REGS_MAGIC), %g3
59 or %g3, %g1, %g1
60 st %g1, [%g2 + STACKFRAME_SZ + PT_V9_MAGIC]
57 61
58 rdpr %cansave, %g1 62 rdpr %cansave, %g1
59 brnz,pt %g1, etrap_save 63 brnz,pt %g1, etrap_save
diff --git a/arch/sparc64/kernel/iommu.c b/arch/sparc64/kernel/iommu.c
index 756fa24eeefa..2a37a6ca2a16 100644
--- a/arch/sparc64/kernel/iommu.c
+++ b/arch/sparc64/kernel/iommu.c
@@ -173,9 +173,11 @@ void iommu_range_free(struct iommu *iommu, dma_addr_t dma_addr, unsigned long np
173} 173}
174 174
175int iommu_table_init(struct iommu *iommu, int tsbsize, 175int iommu_table_init(struct iommu *iommu, int tsbsize,
176 u32 dma_offset, u32 dma_addr_mask) 176 u32 dma_offset, u32 dma_addr_mask,
177 int numa_node)
177{ 178{
178 unsigned long i, tsbbase, order, sz, num_tsb_entries; 179 unsigned long i, order, sz, num_tsb_entries;
180 struct page *page;
179 181
180 num_tsb_entries = tsbsize / sizeof(iopte_t); 182 num_tsb_entries = tsbsize / sizeof(iopte_t);
181 183
@@ -188,11 +190,12 @@ int iommu_table_init(struct iommu *iommu, int tsbsize,
188 /* Allocate and initialize the free area map. */ 190 /* Allocate and initialize the free area map. */
189 sz = num_tsb_entries / 8; 191 sz = num_tsb_entries / 8;
190 sz = (sz + 7UL) & ~7UL; 192 sz = (sz + 7UL) & ~7UL;
191 iommu->arena.map = kzalloc(sz, GFP_KERNEL); 193 iommu->arena.map = kmalloc_node(sz, GFP_KERNEL, numa_node);
192 if (!iommu->arena.map) { 194 if (!iommu->arena.map) {
193 printk(KERN_ERR "IOMMU: Error, kmalloc(arena.map) failed.\n"); 195 printk(KERN_ERR "IOMMU: Error, kmalloc(arena.map) failed.\n");
194 return -ENOMEM; 196 return -ENOMEM;
195 } 197 }
198 memset(iommu->arena.map, 0, sz);
196 iommu->arena.limit = num_tsb_entries; 199 iommu->arena.limit = num_tsb_entries;
197 200
198 if (tlb_type != hypervisor) 201 if (tlb_type != hypervisor)
@@ -201,21 +204,23 @@ int iommu_table_init(struct iommu *iommu, int tsbsize,
201 /* Allocate and initialize the dummy page which we 204 /* Allocate and initialize the dummy page which we
202 * set inactive IO PTEs to point to. 205 * set inactive IO PTEs to point to.
203 */ 206 */
204 iommu->dummy_page = get_zeroed_page(GFP_KERNEL); 207 page = alloc_pages_node(numa_node, GFP_KERNEL, 0);
205 if (!iommu->dummy_page) { 208 if (!page) {
206 printk(KERN_ERR "IOMMU: Error, gfp(dummy_page) failed.\n"); 209 printk(KERN_ERR "IOMMU: Error, gfp(dummy_page) failed.\n");
207 goto out_free_map; 210 goto out_free_map;
208 } 211 }
212 iommu->dummy_page = (unsigned long) page_address(page);
213 memset((void *)iommu->dummy_page, 0, PAGE_SIZE);
209 iommu->dummy_page_pa = (unsigned long) __pa(iommu->dummy_page); 214 iommu->dummy_page_pa = (unsigned long) __pa(iommu->dummy_page);
210 215
211 /* Now allocate and setup the IOMMU page table itself. */ 216 /* Now allocate and setup the IOMMU page table itself. */
212 order = get_order(tsbsize); 217 order = get_order(tsbsize);
213 tsbbase = __get_free_pages(GFP_KERNEL, order); 218 page = alloc_pages_node(numa_node, GFP_KERNEL, order);
214 if (!tsbbase) { 219 if (!page) {
215 printk(KERN_ERR "IOMMU: Error, gfp(tsb) failed.\n"); 220 printk(KERN_ERR "IOMMU: Error, gfp(tsb) failed.\n");
216 goto out_free_dummy_page; 221 goto out_free_dummy_page;
217 } 222 }
218 iommu->page_table = (iopte_t *)tsbbase; 223 iommu->page_table = (iopte_t *)page_address(page);
219 224
220 for (i = 0; i < num_tsb_entries; i++) 225 for (i = 0; i < num_tsb_entries; i++)
221 iopte_make_dummy(iommu, &iommu->page_table[i]); 226 iopte_make_dummy(iommu, &iommu->page_table[i]);
@@ -276,20 +281,24 @@ static inline void iommu_free_ctx(struct iommu *iommu, int ctx)
276static void *dma_4u_alloc_coherent(struct device *dev, size_t size, 281static void *dma_4u_alloc_coherent(struct device *dev, size_t size,
277 dma_addr_t *dma_addrp, gfp_t gfp) 282 dma_addr_t *dma_addrp, gfp_t gfp)
278{ 283{
284 unsigned long flags, order, first_page;
279 struct iommu *iommu; 285 struct iommu *iommu;
286 struct page *page;
287 int npages, nid;
280 iopte_t *iopte; 288 iopte_t *iopte;
281 unsigned long flags, order, first_page;
282 void *ret; 289 void *ret;
283 int npages;
284 290
285 size = IO_PAGE_ALIGN(size); 291 size = IO_PAGE_ALIGN(size);
286 order = get_order(size); 292 order = get_order(size);
287 if (order >= 10) 293 if (order >= 10)
288 return NULL; 294 return NULL;
289 295
290 first_page = __get_free_pages(gfp, order); 296 nid = dev->archdata.numa_node;
291 if (first_page == 0UL) 297 page = alloc_pages_node(nid, gfp, order);
298 if (unlikely(!page))
292 return NULL; 299 return NULL;
300
301 first_page = (unsigned long) page_address(page);
293 memset((char *)first_page, 0, PAGE_SIZE << order); 302 memset((char *)first_page, 0, PAGE_SIZE << order);
294 303
295 iommu = dev->archdata.iommu; 304 iommu = dev->archdata.iommu;
diff --git a/arch/sparc64/kernel/isa.c b/arch/sparc64/kernel/isa.c
index b5f7b354084f..a2af5ed784c9 100644
--- a/arch/sparc64/kernel/isa.c
+++ b/arch/sparc64/kernel/isa.c
@@ -92,6 +92,7 @@ static void __init isa_fill_devices(struct sparc_isa_bridge *isa_br)
92 sd->op = &isa_dev->ofdev; 92 sd->op = &isa_dev->ofdev;
93 sd->iommu = isa_br->ofdev.dev.parent->archdata.iommu; 93 sd->iommu = isa_br->ofdev.dev.parent->archdata.iommu;
94 sd->stc = isa_br->ofdev.dev.parent->archdata.stc; 94 sd->stc = isa_br->ofdev.dev.parent->archdata.stc;
95 sd->numa_node = isa_br->ofdev.dev.parent->archdata.numa_node;
95 96
96 isa_dev->ofdev.node = dp; 97 isa_dev->ofdev.node = dp;
97 isa_dev->ofdev.dev.parent = &isa_br->ofdev.dev; 98 isa_dev->ofdev.dev.parent = &isa_br->ofdev.dev;
diff --git a/arch/sparc64/kernel/mdesc.c b/arch/sparc64/kernel/mdesc.c
index 910083589569..dde52bcf5c64 100644
--- a/arch/sparc64/kernel/mdesc.c
+++ b/arch/sparc64/kernel/mdesc.c
@@ -1,10 +1,10 @@
1/* mdesc.c: Sun4V machine description handling. 1/* mdesc.c: Sun4V machine description handling.
2 * 2 *
3 * Copyright (C) 2007 David S. Miller <davem@davemloft.net> 3 * Copyright (C) 2007, 2008 David S. Miller <davem@davemloft.net>
4 */ 4 */
5#include <linux/kernel.h> 5#include <linux/kernel.h>
6#include <linux/types.h> 6#include <linux/types.h>
7#include <linux/bootmem.h> 7#include <linux/lmb.h>
8#include <linux/log2.h> 8#include <linux/log2.h>
9#include <linux/list.h> 9#include <linux/list.h>
10#include <linux/slab.h> 10#include <linux/slab.h>
@@ -84,24 +84,28 @@ static void mdesc_handle_init(struct mdesc_handle *hp,
84 hp->handle_size = handle_size; 84 hp->handle_size = handle_size;
85} 85}
86 86
87static struct mdesc_handle * __init mdesc_bootmem_alloc(unsigned int mdesc_size) 87static struct mdesc_handle * __init mdesc_lmb_alloc(unsigned int mdesc_size)
88{ 88{
89 struct mdesc_handle *hp;
90 unsigned int handle_size, alloc_size; 89 unsigned int handle_size, alloc_size;
90 struct mdesc_handle *hp;
91 unsigned long paddr;
91 92
92 handle_size = (sizeof(struct mdesc_handle) - 93 handle_size = (sizeof(struct mdesc_handle) -
93 sizeof(struct mdesc_hdr) + 94 sizeof(struct mdesc_hdr) +
94 mdesc_size); 95 mdesc_size);
95 alloc_size = PAGE_ALIGN(handle_size); 96 alloc_size = PAGE_ALIGN(handle_size);
96 97
97 hp = __alloc_bootmem(alloc_size, PAGE_SIZE, 0UL); 98 paddr = lmb_alloc(alloc_size, PAGE_SIZE);
98 if (hp)
99 mdesc_handle_init(hp, handle_size, hp);
100 99
100 hp = NULL;
101 if (paddr) {
102 hp = __va(paddr);
103 mdesc_handle_init(hp, handle_size, hp);
104 }
101 return hp; 105 return hp;
102} 106}
103 107
104static void mdesc_bootmem_free(struct mdesc_handle *hp) 108static void mdesc_lmb_free(struct mdesc_handle *hp)
105{ 109{
106 unsigned int alloc_size, handle_size = hp->handle_size; 110 unsigned int alloc_size, handle_size = hp->handle_size;
107 unsigned long start, end; 111 unsigned long start, end;
@@ -124,9 +128,9 @@ static void mdesc_bootmem_free(struct mdesc_handle *hp)
124 } 128 }
125} 129}
126 130
127static struct mdesc_mem_ops bootmem_mdesc_ops = { 131static struct mdesc_mem_ops lmb_mdesc_ops = {
128 .alloc = mdesc_bootmem_alloc, 132 .alloc = mdesc_lmb_alloc,
129 .free = mdesc_bootmem_free, 133 .free = mdesc_lmb_free,
130}; 134};
131 135
132static struct mdesc_handle *mdesc_kmalloc(unsigned int mdesc_size) 136static struct mdesc_handle *mdesc_kmalloc(unsigned int mdesc_size)
@@ -888,7 +892,7 @@ void __init sun4v_mdesc_init(void)
888 892
889 printk("MDESC: Size is %lu bytes.\n", len); 893 printk("MDESC: Size is %lu bytes.\n", len);
890 894
891 hp = mdesc_alloc(len, &bootmem_mdesc_ops); 895 hp = mdesc_alloc(len, &lmb_mdesc_ops);
892 if (hp == NULL) { 896 if (hp == NULL) {
893 prom_printf("MDESC: alloc of %lu bytes failed.\n", len); 897 prom_printf("MDESC: alloc of %lu bytes failed.\n", len);
894 prom_halt(); 898 prom_halt();
diff --git a/arch/sparc64/kernel/of_device.c b/arch/sparc64/kernel/of_device.c
index 0fd9db95b896..9e58e8cba1c3 100644
--- a/arch/sparc64/kernel/of_device.c
+++ b/arch/sparc64/kernel/of_device.c
@@ -6,6 +6,7 @@
6#include <linux/mod_devicetable.h> 6#include <linux/mod_devicetable.h>
7#include <linux/slab.h> 7#include <linux/slab.h>
8#include <linux/errno.h> 8#include <linux/errno.h>
9#include <linux/irq.h>
9#include <linux/of_device.h> 10#include <linux/of_device.h>
10#include <linux/of_platform.h> 11#include <linux/of_platform.h>
11 12
@@ -660,6 +661,7 @@ static unsigned int __init build_one_device_irq(struct of_device *op,
660 struct device_node *dp = op->node; 661 struct device_node *dp = op->node;
661 struct device_node *pp, *ip; 662 struct device_node *pp, *ip;
662 unsigned int orig_irq = irq; 663 unsigned int orig_irq = irq;
664 int nid;
663 665
664 if (irq == 0xffffffff) 666 if (irq == 0xffffffff)
665 return irq; 667 return irq;
@@ -672,7 +674,7 @@ static unsigned int __init build_one_device_irq(struct of_device *op,
672 printk("%s: direct translate %x --> %x\n", 674 printk("%s: direct translate %x --> %x\n",
673 dp->full_name, orig_irq, irq); 675 dp->full_name, orig_irq, irq);
674 676
675 return irq; 677 goto out;
676 } 678 }
677 679
678 /* Something more complicated. Walk up to the root, applying 680 /* Something more complicated. Walk up to the root, applying
@@ -744,6 +746,14 @@ static unsigned int __init build_one_device_irq(struct of_device *op,
744 printk("%s: Apply IRQ trans [%s] %x --> %x\n", 746 printk("%s: Apply IRQ trans [%s] %x --> %x\n",
745 op->node->full_name, ip->full_name, orig_irq, irq); 747 op->node->full_name, ip->full_name, orig_irq, irq);
746 748
749out:
750 nid = of_node_to_nid(dp);
751 if (nid != -1) {
752 cpumask_t numa_mask = node_to_cpumask(nid);
753
754 irq_set_affinity(irq, numa_mask);
755 }
756
747 return irq; 757 return irq;
748} 758}
749 759
diff --git a/arch/sparc64/kernel/pci.c b/arch/sparc64/kernel/pci.c
index 545356b00e2e..49f912766519 100644
--- a/arch/sparc64/kernel/pci.c
+++ b/arch/sparc64/kernel/pci.c
@@ -369,10 +369,12 @@ struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
369 sd->host_controller = pbm; 369 sd->host_controller = pbm;
370 sd->prom_node = node; 370 sd->prom_node = node;
371 sd->op = of_find_device_by_node(node); 371 sd->op = of_find_device_by_node(node);
372 sd->numa_node = pbm->numa_node;
372 373
373 sd = &sd->op->dev.archdata; 374 sd = &sd->op->dev.archdata;
374 sd->iommu = pbm->iommu; 375 sd->iommu = pbm->iommu;
375 sd->stc = &pbm->stc; 376 sd->stc = &pbm->stc;
377 sd->numa_node = pbm->numa_node;
376 378
377 type = of_get_property(node, "device_type", NULL); 379 type = of_get_property(node, "device_type", NULL);
378 if (type == NULL) 380 if (type == NULL)
@@ -1159,6 +1161,16 @@ int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
1159 return 0; 1161 return 0;
1160} 1162}
1161 1163
1164#ifdef CONFIG_NUMA
1165int pcibus_to_node(struct pci_bus *pbus)
1166{
1167 struct pci_pbm_info *pbm = pbus->sysdata;
1168
1169 return pbm->numa_node;
1170}
1171EXPORT_SYMBOL(pcibus_to_node);
1172#endif
1173
1162/* Return the domain nuber for this pci bus */ 1174/* Return the domain nuber for this pci bus */
1163 1175
1164int pci_domain_nr(struct pci_bus *pbus) 1176int pci_domain_nr(struct pci_bus *pbus)
diff --git a/arch/sparc64/kernel/pci_fire.c b/arch/sparc64/kernel/pci_fire.c
index 7571ed563147..d23bb6f53cda 100644
--- a/arch/sparc64/kernel/pci_fire.c
+++ b/arch/sparc64/kernel/pci_fire.c
@@ -71,7 +71,8 @@ static int pci_fire_pbm_iommu_init(struct pci_pbm_info *pbm)
71 */ 71 */
72 fire_write(iommu->iommu_flushinv, ~(u64)0); 72 fire_write(iommu->iommu_flushinv, ~(u64)0);
73 73
74 err = iommu_table_init(iommu, tsbsize * 8 * 1024, vdma[0], dma_mask); 74 err = iommu_table_init(iommu, tsbsize * 8 * 1024, vdma[0], dma_mask,
75 pbm->numa_node);
75 if (err) 76 if (err)
76 return err; 77 return err;
77 78
@@ -449,6 +450,8 @@ static int __init pci_fire_pbm_init(struct pci_controller_info *p,
449 pbm->next = pci_pbm_root; 450 pbm->next = pci_pbm_root;
450 pci_pbm_root = pbm; 451 pci_pbm_root = pbm;
451 452
453 pbm->numa_node = -1;
454
452 pbm->scan_bus = pci_fire_scan_bus; 455 pbm->scan_bus = pci_fire_scan_bus;
453 pbm->pci_ops = &sun4u_pci_ops; 456 pbm->pci_ops = &sun4u_pci_ops;
454 pbm->config_space_reg_bits = 12; 457 pbm->config_space_reg_bits = 12;
diff --git a/arch/sparc64/kernel/pci_impl.h b/arch/sparc64/kernel/pci_impl.h
index 4a50da13ce48..218bac4ff79b 100644
--- a/arch/sparc64/kernel/pci_impl.h
+++ b/arch/sparc64/kernel/pci_impl.h
@@ -148,6 +148,8 @@ struct pci_pbm_info {
148 struct pci_bus *pci_bus; 148 struct pci_bus *pci_bus;
149 void (*scan_bus)(struct pci_pbm_info *); 149 void (*scan_bus)(struct pci_pbm_info *);
150 struct pci_ops *pci_ops; 150 struct pci_ops *pci_ops;
151
152 int numa_node;
151}; 153};
152 154
153struct pci_controller_info { 155struct pci_controller_info {
@@ -161,8 +163,6 @@ extern struct pci_pbm_info *pci_pbm_root;
161extern int pci_num_pbms; 163extern int pci_num_pbms;
162 164
163/* PCI bus scanning and fixup support. */ 165/* PCI bus scanning and fixup support. */
164extern void pci_iommu_table_init(struct iommu *iommu, int tsbsize,
165 u32 dma_offset, u32 dma_addr_mask);
166extern void pci_get_pbm_props(struct pci_pbm_info *pbm); 166extern void pci_get_pbm_props(struct pci_pbm_info *pbm);
167extern struct pci_bus *pci_scan_one_pbm(struct pci_pbm_info *pbm); 167extern struct pci_bus *pci_scan_one_pbm(struct pci_pbm_info *pbm);
168extern void pci_determine_mem_io_space(struct pci_pbm_info *pbm); 168extern void pci_determine_mem_io_space(struct pci_pbm_info *pbm);
diff --git a/arch/sparc64/kernel/pci_msi.c b/arch/sparc64/kernel/pci_msi.c
index d6d64b44af63..db5e8fd8f674 100644
--- a/arch/sparc64/kernel/pci_msi.c
+++ b/arch/sparc64/kernel/pci_msi.c
@@ -279,11 +279,17 @@ static int bringup_one_msi_queue(struct pci_pbm_info *pbm,
279 unsigned long devino) 279 unsigned long devino)
280{ 280{
281 int irq = ops->msiq_build_irq(pbm, msiqid, devino); 281 int irq = ops->msiq_build_irq(pbm, msiqid, devino);
282 int err; 282 int err, nid;
283 283
284 if (irq < 0) 284 if (irq < 0)
285 return irq; 285 return irq;
286 286
287 nid = pbm->numa_node;
288 if (nid != -1) {
289 cpumask_t numa_mask = node_to_cpumask(nid);
290
291 irq_set_affinity(irq, numa_mask);
292 }
287 err = request_irq(irq, sparc64_msiq_interrupt, 0, 293 err = request_irq(irq, sparc64_msiq_interrupt, 0,
288 "MSIQ", 294 "MSIQ",
289 &pbm->msiq_irq_cookies[msiqid - pbm->msiq_first]); 295 &pbm->msiq_irq_cookies[msiqid - pbm->msiq_first]);
diff --git a/arch/sparc64/kernel/pci_psycho.c b/arch/sparc64/kernel/pci_psycho.c
index 0bad96e5d184..994dbe0603da 100644
--- a/arch/sparc64/kernel/pci_psycho.c
+++ b/arch/sparc64/kernel/pci_psycho.c
@@ -848,7 +848,8 @@ static int psycho_iommu_init(struct pci_pbm_info *pbm)
848 /* Leave diag mode enabled for full-flushing done 848 /* Leave diag mode enabled for full-flushing done
849 * in pci_iommu.c 849 * in pci_iommu.c
850 */ 850 */
851 err = iommu_table_init(iommu, IO_TSB_SIZE, 0xc0000000, 0xffffffff); 851 err = iommu_table_init(iommu, IO_TSB_SIZE, 0xc0000000, 0xffffffff,
852 pbm->numa_node);
852 if (err) 853 if (err)
853 return err; 854 return err;
854 855
@@ -979,6 +980,8 @@ static void __init psycho_pbm_init(struct pci_controller_info *p,
979 pbm->next = pci_pbm_root; 980 pbm->next = pci_pbm_root;
980 pci_pbm_root = pbm; 981 pci_pbm_root = pbm;
981 982
983 pbm->numa_node = -1;
984
982 pbm->scan_bus = psycho_scan_bus; 985 pbm->scan_bus = psycho_scan_bus;
983 pbm->pci_ops = &sun4u_pci_ops; 986 pbm->pci_ops = &sun4u_pci_ops;
984 pbm->config_space_reg_bits = 8; 987 pbm->config_space_reg_bits = 8;
diff --git a/arch/sparc64/kernel/pci_sabre.c b/arch/sparc64/kernel/pci_sabre.c
index 1c5f5fa2339f..4c34195baf37 100644
--- a/arch/sparc64/kernel/pci_sabre.c
+++ b/arch/sparc64/kernel/pci_sabre.c
@@ -704,7 +704,7 @@ static int sabre_iommu_init(struct pci_pbm_info *pbm,
704 * in pci_iommu.c 704 * in pci_iommu.c
705 */ 705 */
706 err = iommu_table_init(iommu, tsbsize * 1024 * 8, 706 err = iommu_table_init(iommu, tsbsize * 1024 * 8,
707 dvma_offset, dma_mask); 707 dvma_offset, dma_mask, pbm->numa_node);
708 if (err) 708 if (err)
709 return err; 709 return err;
710 710
@@ -737,6 +737,8 @@ static void __init sabre_pbm_init(struct pci_controller_info *p,
737 pbm->name = dp->full_name; 737 pbm->name = dp->full_name;
738 printk("%s: SABRE PCI Bus Module\n", pbm->name); 738 printk("%s: SABRE PCI Bus Module\n", pbm->name);
739 739
740 pbm->numa_node = -1;
741
740 pbm->scan_bus = sabre_scan_bus; 742 pbm->scan_bus = sabre_scan_bus;
741 pbm->pci_ops = &sun4u_pci_ops; 743 pbm->pci_ops = &sun4u_pci_ops;
742 pbm->config_space_reg_bits = 8; 744 pbm->config_space_reg_bits = 8;
diff --git a/arch/sparc64/kernel/pci_schizo.c b/arch/sparc64/kernel/pci_schizo.c
index e30609362322..615edd9c8e2a 100644
--- a/arch/sparc64/kernel/pci_schizo.c
+++ b/arch/sparc64/kernel/pci_schizo.c
@@ -1220,7 +1220,8 @@ static int schizo_pbm_iommu_init(struct pci_pbm_info *pbm)
1220 /* Leave diag mode enabled for full-flushing done 1220 /* Leave diag mode enabled for full-flushing done
1221 * in pci_iommu.c 1221 * in pci_iommu.c
1222 */ 1222 */
1223 err = iommu_table_init(iommu, tsbsize * 8 * 1024, vdma[0], dma_mask); 1223 err = iommu_table_init(iommu, tsbsize * 8 * 1024, vdma[0], dma_mask,
1224 pbm->numa_node);
1224 if (err) 1225 if (err)
1225 return err; 1226 return err;
1226 1227
@@ -1379,6 +1380,8 @@ static int __init schizo_pbm_init(struct pci_controller_info *p,
1379 pbm->next = pci_pbm_root; 1380 pbm->next = pci_pbm_root;
1380 pci_pbm_root = pbm; 1381 pci_pbm_root = pbm;
1381 1382
1383 pbm->numa_node = -1;
1384
1382 pbm->scan_bus = schizo_scan_bus; 1385 pbm->scan_bus = schizo_scan_bus;
1383 pbm->pci_ops = &sun4u_pci_ops; 1386 pbm->pci_ops = &sun4u_pci_ops;
1384 pbm->config_space_reg_bits = 8; 1387 pbm->config_space_reg_bits = 8;
diff --git a/arch/sparc64/kernel/pci_sun4v.c b/arch/sparc64/kernel/pci_sun4v.c
index 01839706bd52..e2bb9790039c 100644
--- a/arch/sparc64/kernel/pci_sun4v.c
+++ b/arch/sparc64/kernel/pci_sun4v.c
@@ -127,10 +127,12 @@ static inline long iommu_batch_end(void)
127static void *dma_4v_alloc_coherent(struct device *dev, size_t size, 127static void *dma_4v_alloc_coherent(struct device *dev, size_t size,
128 dma_addr_t *dma_addrp, gfp_t gfp) 128 dma_addr_t *dma_addrp, gfp_t gfp)
129{ 129{
130 struct iommu *iommu;
131 unsigned long flags, order, first_page, npages, n; 130 unsigned long flags, order, first_page, npages, n;
131 struct iommu *iommu;
132 struct page *page;
132 void *ret; 133 void *ret;
133 long entry; 134 long entry;
135 int nid;
134 136
135 size = IO_PAGE_ALIGN(size); 137 size = IO_PAGE_ALIGN(size);
136 order = get_order(size); 138 order = get_order(size);
@@ -139,10 +141,12 @@ static void *dma_4v_alloc_coherent(struct device *dev, size_t size,
139 141
140 npages = size >> IO_PAGE_SHIFT; 142 npages = size >> IO_PAGE_SHIFT;
141 143
142 first_page = __get_free_pages(gfp, order); 144 nid = dev->archdata.numa_node;
143 if (unlikely(first_page == 0UL)) 145 page = alloc_pages_node(nid, gfp, order);
146 if (unlikely(!page))
144 return NULL; 147 return NULL;
145 148
149 first_page = (unsigned long) page_address(page);
146 memset((char *)first_page, 0, PAGE_SIZE << order); 150 memset((char *)first_page, 0, PAGE_SIZE << order);
147 151
148 iommu = dev->archdata.iommu; 152 iommu = dev->archdata.iommu;
@@ -899,6 +903,8 @@ static void __init pci_sun4v_pbm_init(struct pci_controller_info *p,
899 pbm->next = pci_pbm_root; 903 pbm->next = pci_pbm_root;
900 pci_pbm_root = pbm; 904 pci_pbm_root = pbm;
901 905
906 pbm->numa_node = of_node_to_nid(dp);
907
902 pbm->scan_bus = pci_sun4v_scan_bus; 908 pbm->scan_bus = pci_sun4v_scan_bus;
903 pbm->pci_ops = &sun4v_pci_ops; 909 pbm->pci_ops = &sun4v_pci_ops;
904 pbm->config_space_reg_bits = 12; 910 pbm->config_space_reg_bits = 12;
@@ -913,6 +919,7 @@ static void __init pci_sun4v_pbm_init(struct pci_controller_info *p,
913 pbm->name = dp->full_name; 919 pbm->name = dp->full_name;
914 920
915 printk("%s: SUN4V PCI Bus Module\n", pbm->name); 921 printk("%s: SUN4V PCI Bus Module\n", pbm->name);
922 printk("%s: On NUMA node %d\n", pbm->name, pbm->numa_node);
916 923
917 pci_determine_mem_io_space(pbm); 924 pci_determine_mem_io_space(pbm);
918 925
diff --git a/arch/sparc64/kernel/prom.c b/arch/sparc64/kernel/prom.c
index 68964ddcde1e..ed03a18d3b36 100644
--- a/arch/sparc64/kernel/prom.c
+++ b/arch/sparc64/kernel/prom.c
@@ -19,8 +19,8 @@
19#include <linux/types.h> 19#include <linux/types.h>
20#include <linux/string.h> 20#include <linux/string.h>
21#include <linux/mm.h> 21#include <linux/mm.h>
22#include <linux/bootmem.h>
23#include <linux/module.h> 22#include <linux/module.h>
23#include <linux/lmb.h>
24 24
25#include <asm/prom.h> 25#include <asm/prom.h>
26#include <asm/of_device.h> 26#include <asm/of_device.h>
@@ -122,16 +122,20 @@ int of_find_in_proplist(const char *list, const char *match, int len)
122} 122}
123EXPORT_SYMBOL(of_find_in_proplist); 123EXPORT_SYMBOL(of_find_in_proplist);
124 124
125static unsigned int prom_early_allocated; 125static unsigned int prom_early_allocated __initdata;
126 126
127static void * __init prom_early_alloc(unsigned long size) 127static void * __init prom_early_alloc(unsigned long size)
128{ 128{
129 unsigned long paddr = lmb_alloc(size, SMP_CACHE_BYTES);
129 void *ret; 130 void *ret;
130 131
131 ret = __alloc_bootmem(size, SMP_CACHE_BYTES, 0UL); 132 if (!paddr) {
132 if (ret != NULL) 133 prom_printf("prom_early_alloc(%lu) failed\n");
133 memset(ret, 0, size); 134 prom_halt();
135 }
134 136
137 ret = __va(paddr);
138 memset(ret, 0, size);
135 prom_early_allocated += size; 139 prom_early_allocated += size;
136 140
137 return ret; 141 return ret;
diff --git a/arch/sparc64/kernel/rtrap.S b/arch/sparc64/kernel/rtrap.S
index 079d18a11d24..ecf6753b204a 100644
--- a/arch/sparc64/kernel/rtrap.S
+++ b/arch/sparc64/kernel/rtrap.S
@@ -18,12 +18,6 @@
18#define RTRAP_PSTATE_IRQOFF (PSTATE_RMO|PSTATE_PEF|PSTATE_PRIV) 18#define RTRAP_PSTATE_IRQOFF (PSTATE_RMO|PSTATE_PEF|PSTATE_PRIV)
19#define RTRAP_PSTATE_AG_IRQOFF (PSTATE_RMO|PSTATE_PEF|PSTATE_PRIV|PSTATE_AG) 19#define RTRAP_PSTATE_AG_IRQOFF (PSTATE_RMO|PSTATE_PEF|PSTATE_PRIV|PSTATE_AG)
20 20
21 /* Register %l6 keeps track of whether we are returning
22 * from a system call or not. It is cleared if we call
23 * do_notify_resume, and it must not be otherwise modified
24 * until we fully commit to returning to userspace.
25 */
26
27 .text 21 .text
28 .align 32 22 .align 32
29__handle_softirq: 23__handle_softirq:
@@ -56,14 +50,12 @@ __handle_user_windows:
56 be,pt %xcc, __handle_user_windows_continue 50 be,pt %xcc, __handle_user_windows_continue
57 nop 51 nop
58 mov %l5, %o1 52 mov %l5, %o1
59 mov %l6, %o2
60 add %sp, PTREGS_OFF, %o0 53 add %sp, PTREGS_OFF, %o0
61 mov %l0, %o3 54 mov %l0, %o2
62 55
63 call do_notify_resume 56 call do_notify_resume
64 wrpr %g0, RTRAP_PSTATE, %pstate 57 wrpr %g0, RTRAP_PSTATE, %pstate
65 wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate 58 wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate
66 clr %l6
67 /* Signal delivery can modify pt_regs tstate, so we must 59 /* Signal delivery can modify pt_regs tstate, so we must
68 * reload it. 60 * reload it.
69 */ 61 */
@@ -99,14 +91,12 @@ __handle_perfctrs:
99 be,pt %xcc, __handle_perfctrs_continue 91 be,pt %xcc, __handle_perfctrs_continue
100 sethi %hi(TSTATE_PEF), %o0 92 sethi %hi(TSTATE_PEF), %o0
101 mov %l5, %o1 93 mov %l5, %o1
102 mov %l6, %o2
103 add %sp, PTREGS_OFF, %o0 94 add %sp, PTREGS_OFF, %o0
104 mov %l0, %o3 95 mov %l0, %o2
105 call do_notify_resume 96 call do_notify_resume
106 97
107 wrpr %g0, RTRAP_PSTATE, %pstate 98 wrpr %g0, RTRAP_PSTATE, %pstate
108 wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate 99 wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate
109 clr %l6
110 /* Signal delivery can modify pt_regs tstate, so we must 100 /* Signal delivery can modify pt_regs tstate, so we must
111 * reload it. 101 * reload it.
112 */ 102 */
@@ -127,13 +117,11 @@ __handle_userfpu:
127 117
128__handle_signal: 118__handle_signal:
129 mov %l5, %o1 119 mov %l5, %o1
130 mov %l6, %o2
131 add %sp, PTREGS_OFF, %o0 120 add %sp, PTREGS_OFF, %o0
132 mov %l0, %o3 121 mov %l0, %o2
133 call do_notify_resume 122 call do_notify_resume
134 wrpr %g0, RTRAP_PSTATE, %pstate 123 wrpr %g0, RTRAP_PSTATE, %pstate
135 wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate 124 wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate
136 clr %l6
137 125
138 /* Signal delivery can modify pt_regs tstate, so we must 126 /* Signal delivery can modify pt_regs tstate, so we must
139 * reload it. 127 * reload it.
@@ -145,9 +133,8 @@ __handle_signal:
145 andn %l1, %l4, %l1 133 andn %l1, %l4, %l1
146 134
147 .align 64 135 .align 64
148 .globl rtrap_irq, rtrap_clr_l6, rtrap, irqsz_patchme, rtrap_xcall 136 .globl rtrap_irq, rtrap, irqsz_patchme, rtrap_xcall
149rtrap_irq: 137rtrap_irq:
150rtrap_clr_l6: clr %l6
151rtrap: 138rtrap:
152#ifndef CONFIG_SMP 139#ifndef CONFIG_SMP
153 sethi %hi(per_cpu____cpu_data), %l0 140 sethi %hi(per_cpu____cpu_data), %l0
diff --git a/arch/sparc64/kernel/sbus.c b/arch/sparc64/kernel/sbus.c
index d1fb13ba02b5..fa2827c4a3ad 100644
--- a/arch/sparc64/kernel/sbus.c
+++ b/arch/sparc64/kernel/sbus.c
@@ -544,6 +544,7 @@ static void __init sbus_iommu_init(int __node, struct sbus_bus *sbus)
544 544
545 sbus->ofdev.dev.archdata.iommu = iommu; 545 sbus->ofdev.dev.archdata.iommu = iommu;
546 sbus->ofdev.dev.archdata.stc = strbuf; 546 sbus->ofdev.dev.archdata.stc = strbuf;
547 sbus->ofdev.dev.archdata.numa_node = -1;
547 548
548 reg_base = regs + SYSIO_IOMMUREG_BASE; 549 reg_base = regs + SYSIO_IOMMUREG_BASE;
549 iommu->iommu_control = reg_base + IOMMU_CONTROL; 550 iommu->iommu_control = reg_base + IOMMU_CONTROL;
@@ -575,7 +576,7 @@ static void __init sbus_iommu_init(int __node, struct sbus_bus *sbus)
575 sbus->portid, regs); 576 sbus->portid, regs);
576 577
577 /* Setup for TSB_SIZE=7, TBW_SIZE=0, MMU_DE=1, MMU_EN=1 */ 578 /* Setup for TSB_SIZE=7, TBW_SIZE=0, MMU_DE=1, MMU_EN=1 */
578 if (iommu_table_init(iommu, IO_TSB_SIZE, MAP_BASE, 0xffffffff)) 579 if (iommu_table_init(iommu, IO_TSB_SIZE, MAP_BASE, 0xffffffff, -1))
579 goto fatal_memory_error; 580 goto fatal_memory_error;
580 581
581 control = upa_readq(iommu->iommu_control); 582 control = upa_readq(iommu->iommu_control);
diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c
index 6acb4c51cfe4..da5e6ee0c661 100644
--- a/arch/sparc64/kernel/setup.c
+++ b/arch/sparc64/kernel/setup.c
@@ -82,7 +82,7 @@ unsigned long cmdline_memory_size = 0;
82static struct console prom_early_console = { 82static struct console prom_early_console = {
83 .name = "earlyprom", 83 .name = "earlyprom",
84 .write = prom_console_write, 84 .write = prom_console_write,
85 .flags = CON_PRINTBUFFER | CON_BOOT, 85 .flags = CON_PRINTBUFFER | CON_BOOT | CON_ANYTIME,
86 .index = -1, 86 .index = -1,
87}; 87};
88 88
@@ -281,6 +281,7 @@ void __init setup_arch(char **cmdline_p)
281 /* Initialize PROM console and command line. */ 281 /* Initialize PROM console and command line. */
282 *cmdline_p = prom_getbootargs(); 282 *cmdline_p = prom_getbootargs();
283 strcpy(boot_command_line, *cmdline_p); 283 strcpy(boot_command_line, *cmdline_p);
284 parse_early_param();
284 285
285 boot_flags_init(*cmdline_p); 286 boot_flags_init(*cmdline_p);
286 register_console(&prom_early_console); 287 register_console(&prom_early_console);
diff --git a/arch/sparc64/kernel/signal.c b/arch/sparc64/kernel/signal.c
index 1c47009eb5ec..77a3e8592cbc 100644
--- a/arch/sparc64/kernel/signal.c
+++ b/arch/sparc64/kernel/signal.c
@@ -510,15 +510,20 @@ static inline void syscall_restart(unsigned long orig_i0, struct pt_regs *regs,
510 * want to handle. Thus you cannot kill init even with a SIGKILL even by 510 * want to handle. Thus you cannot kill init even with a SIGKILL even by
511 * mistake. 511 * mistake.
512 */ 512 */
513static void do_signal(struct pt_regs *regs, unsigned long orig_i0, int restart_syscall) 513static void do_signal(struct pt_regs *regs, unsigned long orig_i0)
514{ 514{
515 siginfo_t info;
516 struct signal_deliver_cookie cookie; 515 struct signal_deliver_cookie cookie;
517 struct k_sigaction ka; 516 struct k_sigaction ka;
518 int signr;
519 sigset_t *oldset; 517 sigset_t *oldset;
518 siginfo_t info;
519 int signr, tt;
520 520
521 cookie.restart_syscall = restart_syscall; 521 tt = regs->magic & 0x1ff;
522 if (tt == 0x110 || tt == 0x111 || tt == 0x16d) {
523 regs->magic &= ~0x1ff;
524 cookie.restart_syscall = 1;
525 } else
526 cookie.restart_syscall = 0;
522 cookie.orig_i0 = orig_i0; 527 cookie.orig_i0 = orig_i0;
523 528
524 if (test_thread_flag(TIF_RESTORE_SIGMASK)) 529 if (test_thread_flag(TIF_RESTORE_SIGMASK))
@@ -529,9 +534,8 @@ static void do_signal(struct pt_regs *regs, unsigned long orig_i0, int restart_s
529#ifdef CONFIG_SPARC32_COMPAT 534#ifdef CONFIG_SPARC32_COMPAT
530 if (test_thread_flag(TIF_32BIT)) { 535 if (test_thread_flag(TIF_32BIT)) {
531 extern void do_signal32(sigset_t *, struct pt_regs *, 536 extern void do_signal32(sigset_t *, struct pt_regs *,
532 unsigned long, int); 537 struct signal_deliver_cookie *);
533 do_signal32(oldset, regs, orig_i0, 538 do_signal32(oldset, regs, &cookie);
534 cookie.restart_syscall);
535 return; 539 return;
536 } 540 }
537#endif 541#endif
@@ -539,7 +543,7 @@ static void do_signal(struct pt_regs *regs, unsigned long orig_i0, int restart_s
539 signr = get_signal_to_deliver(&info, &ka, regs, &cookie); 543 signr = get_signal_to_deliver(&info, &ka, regs, &cookie);
540 if (signr > 0) { 544 if (signr > 0) {
541 if (cookie.restart_syscall) 545 if (cookie.restart_syscall)
542 syscall_restart(orig_i0, regs, &ka.sa); 546 syscall_restart(cookie.orig_i0, regs, &ka.sa);
543 handle_signal(signr, &ka, &info, oldset, regs); 547 handle_signal(signr, &ka, &info, oldset, regs);
544 548
545 /* a signal was successfully delivered; the saved 549 /* a signal was successfully delivered; the saved
@@ -576,11 +580,10 @@ static void do_signal(struct pt_regs *regs, unsigned long orig_i0, int restart_s
576 } 580 }
577} 581}
578 582
579void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, int restart_syscall, 583void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, unsigned long thread_info_flags)
580 unsigned long thread_info_flags)
581{ 584{
582 if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK)) 585 if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK))
583 do_signal(regs, orig_i0, restart_syscall); 586 do_signal(regs, orig_i0);
584} 587}
585 588
586void ptrace_signal_deliver(struct pt_regs *regs, void *cookie) 589void ptrace_signal_deliver(struct pt_regs *regs, void *cookie)
diff --git a/arch/sparc64/kernel/signal32.c b/arch/sparc64/kernel/signal32.c
index 74e0512f135c..43cdec64d9c9 100644
--- a/arch/sparc64/kernel/signal32.c
+++ b/arch/sparc64/kernel/signal32.c
@@ -982,20 +982,16 @@ static inline void syscall_restart32(unsigned long orig_i0, struct pt_regs *regs
982 * mistake. 982 * mistake.
983 */ 983 */
984void do_signal32(sigset_t *oldset, struct pt_regs * regs, 984void do_signal32(sigset_t *oldset, struct pt_regs * regs,
985 unsigned long orig_i0, int restart_syscall) 985 struct signal_deliver_cookie *cookie)
986{ 986{
987 siginfo_t info;
988 struct signal_deliver_cookie cookie;
989 struct k_sigaction ka; 987 struct k_sigaction ka;
988 siginfo_t info;
990 int signr; 989 int signr;
991 990
992 cookie.restart_syscall = restart_syscall; 991 signr = get_signal_to_deliver(&info, &ka, regs, cookie);
993 cookie.orig_i0 = orig_i0;
994
995 signr = get_signal_to_deliver(&info, &ka, regs, &cookie);
996 if (signr > 0) { 992 if (signr > 0) {
997 if (cookie.restart_syscall) 993 if (cookie->restart_syscall)
998 syscall_restart32(orig_i0, regs, &ka.sa); 994 syscall_restart32(cookie->orig_i0, regs, &ka.sa);
999 handle_signal32(signr, &ka, &info, oldset, regs); 995 handle_signal32(signr, &ka, &info, oldset, regs);
1000 996
1001 /* a signal was successfully delivered; the saved 997 /* a signal was successfully delivered; the saved
@@ -1007,16 +1003,16 @@ void do_signal32(sigset_t *oldset, struct pt_regs * regs,
1007 clear_thread_flag(TIF_RESTORE_SIGMASK); 1003 clear_thread_flag(TIF_RESTORE_SIGMASK);
1008 return; 1004 return;
1009 } 1005 }
1010 if (cookie.restart_syscall && 1006 if (cookie->restart_syscall &&
1011 (regs->u_regs[UREG_I0] == ERESTARTNOHAND || 1007 (regs->u_regs[UREG_I0] == ERESTARTNOHAND ||
1012 regs->u_regs[UREG_I0] == ERESTARTSYS || 1008 regs->u_regs[UREG_I0] == ERESTARTSYS ||
1013 regs->u_regs[UREG_I0] == ERESTARTNOINTR)) { 1009 regs->u_regs[UREG_I0] == ERESTARTNOINTR)) {
1014 /* replay the system call when we are done */ 1010 /* replay the system call when we are done */
1015 regs->u_regs[UREG_I0] = cookie.orig_i0; 1011 regs->u_regs[UREG_I0] = cookie->orig_i0;
1016 regs->tpc -= 4; 1012 regs->tpc -= 4;
1017 regs->tnpc -= 4; 1013 regs->tnpc -= 4;
1018 } 1014 }
1019 if (cookie.restart_syscall && 1015 if (cookie->restart_syscall &&
1020 regs->u_regs[UREG_I0] == ERESTART_RESTARTBLOCK) { 1016 regs->u_regs[UREG_I0] == ERESTART_RESTARTBLOCK) {
1021 regs->u_regs[UREG_G1] = __NR_restart_syscall; 1017 regs->u_regs[UREG_G1] = __NR_restart_syscall;
1022 regs->tpc -= 4; 1018 regs->tpc -= 4;
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c
index 59f020d69d4c..409dd71f2738 100644
--- a/arch/sparc64/kernel/smp.c
+++ b/arch/sparc64/kernel/smp.c
@@ -20,7 +20,7 @@
20#include <linux/cache.h> 20#include <linux/cache.h>
21#include <linux/jiffies.h> 21#include <linux/jiffies.h>
22#include <linux/profile.h> 22#include <linux/profile.h>
23#include <linux/bootmem.h> 23#include <linux/lmb.h>
24 24
25#include <asm/head.h> 25#include <asm/head.h>
26#include <asm/ptrace.h> 26#include <asm/ptrace.h>
@@ -866,14 +866,21 @@ void smp_call_function_client(int irq, struct pt_regs *regs)
866 void *info = call_data->info; 866 void *info = call_data->info;
867 867
868 clear_softint(1 << irq); 868 clear_softint(1 << irq);
869
870 irq_enter();
871
872 if (!call_data->wait) {
873 /* let initiator proceed after getting data */
874 atomic_inc(&call_data->finished);
875 }
876
877 func(info);
878
879 irq_exit();
880
869 if (call_data->wait) { 881 if (call_data->wait) {
870 /* let initiator proceed only after completion */ 882 /* let initiator proceed only after completion */
871 func(info);
872 atomic_inc(&call_data->finished); 883 atomic_inc(&call_data->finished);
873 } else {
874 /* let initiator proceed after getting data */
875 atomic_inc(&call_data->finished);
876 func(info);
877 } 884 }
878} 885}
879 886
@@ -1032,7 +1039,9 @@ void smp_receive_signal(int cpu)
1032 1039
1033void smp_receive_signal_client(int irq, struct pt_regs *regs) 1040void smp_receive_signal_client(int irq, struct pt_regs *regs)
1034{ 1041{
1042 irq_enter();
1035 clear_softint(1 << irq); 1043 clear_softint(1 << irq);
1044 irq_exit();
1036} 1045}
1037 1046
1038void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) 1047void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs)
@@ -1040,6 +1049,8 @@ void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs)
1040 struct mm_struct *mm; 1049 struct mm_struct *mm;
1041 unsigned long flags; 1050 unsigned long flags;
1042 1051
1052 irq_enter();
1053
1043 clear_softint(1 << irq); 1054 clear_softint(1 << irq);
1044 1055
1045 /* See if we need to allocate a new TLB context because 1056 /* See if we need to allocate a new TLB context because
@@ -1059,6 +1070,8 @@ void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs)
1059 load_secondary_context(mm); 1070 load_secondary_context(mm);
1060 __flush_tlb_mm(CTX_HWBITS(mm->context), 1071 __flush_tlb_mm(CTX_HWBITS(mm->context),
1061 SECONDARY_CONTEXT); 1072 SECONDARY_CONTEXT);
1073
1074 irq_exit();
1062} 1075}
1063 1076
1064void smp_new_mmu_context_version(void) 1077void smp_new_mmu_context_version(void)
@@ -1217,6 +1230,8 @@ void smp_penguin_jailcell(int irq, struct pt_regs *regs)
1217{ 1230{
1218 clear_softint(1 << irq); 1231 clear_softint(1 << irq);
1219 1232
1233 irq_enter();
1234
1220 preempt_disable(); 1235 preempt_disable();
1221 1236
1222 __asm__ __volatile__("flushw"); 1237 __asm__ __volatile__("flushw");
@@ -1229,6 +1244,8 @@ void smp_penguin_jailcell(int irq, struct pt_regs *regs)
1229 prom_world(0); 1244 prom_world(0);
1230 1245
1231 preempt_enable(); 1246 preempt_enable();
1247
1248 irq_exit();
1232} 1249}
1233 1250
1234/* /proc/profile writes can call this, don't __init it please. */ 1251/* /proc/profile writes can call this, don't __init it please. */
@@ -1431,7 +1448,7 @@ EXPORT_SYMBOL(__per_cpu_shift);
1431 1448
1432void __init real_setup_per_cpu_areas(void) 1449void __init real_setup_per_cpu_areas(void)
1433{ 1450{
1434 unsigned long goal, size, i; 1451 unsigned long paddr, goal, size, i;
1435 char *ptr; 1452 char *ptr;
1436 1453
1437 /* Copy section for each CPU (we discard the original) */ 1454 /* Copy section for each CPU (we discard the original) */
@@ -1441,8 +1458,13 @@ void __init real_setup_per_cpu_areas(void)
1441 for (size = PAGE_SIZE; size < goal; size <<= 1UL) 1458 for (size = PAGE_SIZE; size < goal; size <<= 1UL)
1442 __per_cpu_shift++; 1459 __per_cpu_shift++;
1443 1460
1444 ptr = alloc_bootmem_pages(size * NR_CPUS); 1461 paddr = lmb_alloc(size * NR_CPUS, PAGE_SIZE);
1462 if (!paddr) {
1463 prom_printf("Cannot allocate per-cpu memory.\n");
1464 prom_halt();
1465 }
1445 1466
1467 ptr = __va(paddr);
1446 __per_cpu_base = ptr - __per_cpu_start; 1468 __per_cpu_base = ptr - __per_cpu_start;
1447 1469
1448 for (i = 0; i < NR_CPUS; i++, ptr += size) 1470 for (i = 0; i < NR_CPUS; i++, ptr += size)
diff --git a/arch/sparc64/kernel/sparc64_ksyms.c b/arch/sparc64/kernel/sparc64_ksyms.c
index 38736460b8db..66336590e830 100644
--- a/arch/sparc64/kernel/sparc64_ksyms.c
+++ b/arch/sparc64/kernel/sparc64_ksyms.c
@@ -68,8 +68,6 @@ extern void *__memscan_zero(void *, size_t);
68extern void *__memscan_generic(void *, int, size_t); 68extern void *__memscan_generic(void *, int, size_t);
69extern int __memcmp(const void *, const void *, __kernel_size_t); 69extern int __memcmp(const void *, const void *, __kernel_size_t);
70extern __kernel_size_t strlen(const char *); 70extern __kernel_size_t strlen(const char *);
71extern void linux_sparc_syscall(void);
72extern void rtrap(void);
73extern void show_regs(struct pt_regs *); 71extern void show_regs(struct pt_regs *);
74extern void syscall_trace(struct pt_regs *, int); 72extern void syscall_trace(struct pt_regs *, int);
75extern void sys_sigsuspend(void); 73extern void sys_sigsuspend(void);
diff --git a/arch/sparc64/kernel/stacktrace.c b/arch/sparc64/kernel/stacktrace.c
index 84d39e873e88..01b52f561af4 100644
--- a/arch/sparc64/kernel/stacktrace.c
+++ b/arch/sparc64/kernel/stacktrace.c
@@ -20,6 +20,8 @@ void save_stack_trace(struct stack_trace *trace)
20 thread_base = (unsigned long) tp; 20 thread_base = (unsigned long) tp;
21 do { 21 do {
22 struct reg_window *rw; 22 struct reg_window *rw;
23 struct pt_regs *regs;
24 unsigned long pc;
23 25
24 /* Bogus frame pointer? */ 26 /* Bogus frame pointer? */
25 if (fp < (thread_base + sizeof(struct thread_info)) || 27 if (fp < (thread_base + sizeof(struct thread_info)) ||
@@ -27,11 +29,19 @@ void save_stack_trace(struct stack_trace *trace)
27 break; 29 break;
28 30
29 rw = (struct reg_window *) fp; 31 rw = (struct reg_window *) fp;
32 regs = (struct pt_regs *) (rw + 1);
33
34 if ((regs->magic & ~0x1ff) == PT_REGS_MAGIC) {
35 pc = regs->tpc;
36 fp = regs->u_regs[UREG_I6] + STACK_BIAS;
37 } else {
38 pc = rw->ins[7];
39 fp = rw->ins[6] + STACK_BIAS;
40 }
41
30 if (trace->skip > 0) 42 if (trace->skip > 0)
31 trace->skip--; 43 trace->skip--;
32 else 44 else
33 trace->entries[trace->nr_entries++] = rw->ins[7]; 45 trace->entries[trace->nr_entries++] = pc;
34
35 fp = rw->ins[6] + STACK_BIAS;
36 } while (trace->nr_entries < trace->max_entries); 46 } while (trace->nr_entries < trace->max_entries);
37} 47}
diff --git a/arch/sparc64/kernel/sun4v_tlb_miss.S b/arch/sparc64/kernel/sun4v_tlb_miss.S
index fd9430562e0b..e1fbf8c75787 100644
--- a/arch/sparc64/kernel/sun4v_tlb_miss.S
+++ b/arch/sparc64/kernel/sun4v_tlb_miss.S
@@ -262,7 +262,7 @@ sun4v_iacc:
262 mov %l5, %o2 262 mov %l5, %o2
263 call sun4v_insn_access_exception 263 call sun4v_insn_access_exception
264 add %sp, PTREGS_OFF, %o0 264 add %sp, PTREGS_OFF, %o0
265 ba,a,pt %xcc, rtrap_clr_l6 265 ba,a,pt %xcc, rtrap
266 266
267 /* Instruction Access Exception, tl1. */ 267 /* Instruction Access Exception, tl1. */
268sun4v_iacc_tl1: 268sun4v_iacc_tl1:
@@ -278,7 +278,7 @@ sun4v_iacc_tl1:
278 mov %l5, %o2 278 mov %l5, %o2
279 call sun4v_insn_access_exception_tl1 279 call sun4v_insn_access_exception_tl1
280 add %sp, PTREGS_OFF, %o0 280 add %sp, PTREGS_OFF, %o0
281 ba,a,pt %xcc, rtrap_clr_l6 281 ba,a,pt %xcc, rtrap
282 282
283 /* Data Access Exception, tl0. */ 283 /* Data Access Exception, tl0. */
284sun4v_dacc: 284sun4v_dacc:
@@ -294,7 +294,7 @@ sun4v_dacc:
294 mov %l5, %o2 294 mov %l5, %o2
295 call sun4v_data_access_exception 295 call sun4v_data_access_exception
296 add %sp, PTREGS_OFF, %o0 296 add %sp, PTREGS_OFF, %o0
297 ba,a,pt %xcc, rtrap_clr_l6 297 ba,a,pt %xcc, rtrap
298 298
299 /* Data Access Exception, tl1. */ 299 /* Data Access Exception, tl1. */
300sun4v_dacc_tl1: 300sun4v_dacc_tl1:
@@ -310,7 +310,7 @@ sun4v_dacc_tl1:
310 mov %l5, %o2 310 mov %l5, %o2
311 call sun4v_data_access_exception_tl1 311 call sun4v_data_access_exception_tl1
312 add %sp, PTREGS_OFF, %o0 312 add %sp, PTREGS_OFF, %o0
313 ba,a,pt %xcc, rtrap_clr_l6 313 ba,a,pt %xcc, rtrap
314 314
315 /* Memory Address Unaligned. */ 315 /* Memory Address Unaligned. */
316sun4v_mna: 316sun4v_mna:
@@ -344,7 +344,7 @@ sun4v_mna:
344 mov %l5, %o2 344 mov %l5, %o2
345 call sun4v_do_mna 345 call sun4v_do_mna
346 add %sp, PTREGS_OFF, %o0 346 add %sp, PTREGS_OFF, %o0
347 ba,a,pt %xcc, rtrap_clr_l6 347 ba,a,pt %xcc, rtrap
348 348
349 /* Privileged Action. */ 349 /* Privileged Action. */
350sun4v_privact: 350sun4v_privact:
@@ -352,7 +352,7 @@ sun4v_privact:
352 rd %pc, %g7 352 rd %pc, %g7
353 call do_privact 353 call do_privact
354 add %sp, PTREGS_OFF, %o0 354 add %sp, PTREGS_OFF, %o0
355 ba,a,pt %xcc, rtrap_clr_l6 355 ba,a,pt %xcc, rtrap
356 356
357 /* Unaligned ldd float, tl0. */ 357 /* Unaligned ldd float, tl0. */
358sun4v_lddfmna: 358sun4v_lddfmna:
@@ -368,7 +368,7 @@ sun4v_lddfmna:
368 mov %l5, %o2 368 mov %l5, %o2
369 call handle_lddfmna 369 call handle_lddfmna
370 add %sp, PTREGS_OFF, %o0 370 add %sp, PTREGS_OFF, %o0
371 ba,a,pt %xcc, rtrap_clr_l6 371 ba,a,pt %xcc, rtrap
372 372
373 /* Unaligned std float, tl0. */ 373 /* Unaligned std float, tl0. */
374sun4v_stdfmna: 374sun4v_stdfmna:
@@ -384,7 +384,7 @@ sun4v_stdfmna:
384 mov %l5, %o2 384 mov %l5, %o2
385 call handle_stdfmna 385 call handle_stdfmna
386 add %sp, PTREGS_OFF, %o0 386 add %sp, PTREGS_OFF, %o0
387 ba,a,pt %xcc, rtrap_clr_l6 387 ba,a,pt %xcc, rtrap
388 388
389#define BRANCH_ALWAYS 0x10680000 389#define BRANCH_ALWAYS 0x10680000
390#define NOP 0x01000000 390#define NOP 0x01000000
diff --git a/arch/sparc64/kernel/sys_sparc.c b/arch/sparc64/kernel/sys_sparc.c
index 73ed01ba40dc..8d4761f15fa9 100644
--- a/arch/sparc64/kernel/sys_sparc.c
+++ b/arch/sparc64/kernel/sys_sparc.c
@@ -454,8 +454,8 @@ asmlinkage long sys_ipc(unsigned int call, int first, unsigned long second,
454 err = sys_semget(first, (int)second, (int)third); 454 err = sys_semget(first, (int)second, (int)third);
455 goto out; 455 goto out;
456 case SEMCTL: { 456 case SEMCTL: {
457 err = sys_semctl(first, third, 457 err = sys_semctl(first, second,
458 (int)second | IPC_64, 458 (int)third | IPC_64,
459 (union semun) ptr); 459 (union semun) ptr);
460 goto out; 460 goto out;
461 } 461 }
diff --git a/arch/sparc64/kernel/sysfs.c b/arch/sparc64/kernel/sysfs.c
index 52816c7be0b9..e885034a6b73 100644
--- a/arch/sparc64/kernel/sysfs.c
+++ b/arch/sparc64/kernel/sysfs.c
@@ -273,10 +273,22 @@ static void __init check_mmu_stats(void)
273 mmu_stats_supported = 1; 273 mmu_stats_supported = 1;
274} 274}
275 275
276static void register_nodes(void)
277{
278#ifdef CONFIG_NUMA
279 int i;
280
281 for (i = 0; i < MAX_NUMNODES; i++)
282 register_one_node(i);
283#endif
284}
285
276static int __init topology_init(void) 286static int __init topology_init(void)
277{ 287{
278 int cpu; 288 int cpu;
279 289
290 register_nodes();
291
280 check_mmu_stats(); 292 check_mmu_stats();
281 293
282 register_cpu_notifier(&sysfs_cpu_nb); 294 register_cpu_notifier(&sysfs_cpu_nb);
diff --git a/arch/sparc64/kernel/traps.c b/arch/sparc64/kernel/traps.c
index 96da847023f3..d9b8d46707d1 100644
--- a/arch/sparc64/kernel/traps.c
+++ b/arch/sparc64/kernel/traps.c
@@ -2091,9 +2091,8 @@ static void user_instruction_dump(unsigned int __user *pc)
2091 2091
2092void show_stack(struct task_struct *tsk, unsigned long *_ksp) 2092void show_stack(struct task_struct *tsk, unsigned long *_ksp)
2093{ 2093{
2094 unsigned long pc, fp, thread_base, ksp; 2094 unsigned long fp, thread_base, ksp;
2095 struct thread_info *tp; 2095 struct thread_info *tp;
2096 struct reg_window *rw;
2097 int count = 0; 2096 int count = 0;
2098 2097
2099 ksp = (unsigned long) _ksp; 2098 ksp = (unsigned long) _ksp;
@@ -2117,15 +2116,27 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
2117 printk("\n"); 2116 printk("\n");
2118#endif 2117#endif
2119 do { 2118 do {
2119 struct reg_window *rw;
2120 struct pt_regs *regs;
2121 unsigned long pc;
2122
2120 /* Bogus frame pointer? */ 2123 /* Bogus frame pointer? */
2121 if (fp < (thread_base + sizeof(struct thread_info)) || 2124 if (fp < (thread_base + sizeof(struct thread_info)) ||
2122 fp >= (thread_base + THREAD_SIZE)) 2125 fp >= (thread_base + THREAD_SIZE))
2123 break; 2126 break;
2124 rw = (struct reg_window *)fp; 2127 rw = (struct reg_window *)fp;
2125 pc = rw->ins[7]; 2128 regs = (struct pt_regs *) (rw + 1);
2129
2130 if ((regs->magic & ~0x1ff) == PT_REGS_MAGIC) {
2131 pc = regs->tpc;
2132 fp = regs->u_regs[UREG_I6] + STACK_BIAS;
2133 } else {
2134 pc = rw->ins[7];
2135 fp = rw->ins[6] + STACK_BIAS;
2136 }
2137
2126 printk(" [%016lx] ", pc); 2138 printk(" [%016lx] ", pc);
2127 print_symbol("%s\n", pc); 2139 print_symbol("%s\n", pc);
2128 fp = rw->ins[6] + STACK_BIAS;
2129 } while (++count < 16); 2140 } while (++count < 16);
2130#ifndef CONFIG_KALLSYMS 2141#ifndef CONFIG_KALLSYMS
2131 printk("\n"); 2142 printk("\n");
diff --git a/arch/sparc64/kernel/tsb.S b/arch/sparc64/kernel/tsb.S
index 10adb2fb8ffe..c499214b501d 100644
--- a/arch/sparc64/kernel/tsb.S
+++ b/arch/sparc64/kernel/tsb.S
@@ -275,7 +275,7 @@ sparc64_realfault_common:
275 stx %l5, [%g6 + TI_FAULT_ADDR] ! Save fault address 275 stx %l5, [%g6 + TI_FAULT_ADDR] ! Save fault address
276 call do_sparc64_fault ! Call fault handler 276 call do_sparc64_fault ! Call fault handler
277 add %sp, PTREGS_OFF, %o0 ! Compute pt_regs arg 277 add %sp, PTREGS_OFF, %o0 ! Compute pt_regs arg
278 ba,pt %xcc, rtrap_clr_l6 ! Restore cpu state 278 ba,pt %xcc, rtrap ! Restore cpu state
279 nop ! Delay slot (fill me) 279 nop ! Delay slot (fill me)
280 280
281winfix_trampoline: 281winfix_trampoline:
diff --git a/arch/sparc64/kernel/winfixup.S b/arch/sparc64/kernel/winfixup.S
index c4aa110a10e5..a6b0863c27df 100644
--- a/arch/sparc64/kernel/winfixup.S
+++ b/arch/sparc64/kernel/winfixup.S
@@ -32,7 +32,7 @@ fill_fixup:
32 rd %pc, %g7 32 rd %pc, %g7
33 call do_sparc64_fault 33 call do_sparc64_fault
34 add %sp, PTREGS_OFF, %o0 34 add %sp, PTREGS_OFF, %o0
35 ba,pt %xcc, rtrap_clr_l6 35 ba,pt %xcc, rtrap
36 nop 36 nop
37 37
38 /* Be very careful about usage of the trap globals here. 38 /* Be very careful about usage of the trap globals here.
@@ -100,7 +100,7 @@ spill_fixup_dax:
100 rd %pc, %g7 100 rd %pc, %g7
101 call do_sparc64_fault 101 call do_sparc64_fault
102 add %sp, PTREGS_OFF, %o0 102 add %sp, PTREGS_OFF, %o0
103 ba,a,pt %xcc, rtrap_clr_l6 103 ba,a,pt %xcc, rtrap
104 104
105winfix_mna: 105winfix_mna:
106 andn %g3, 0x7f, %g3 106 andn %g3, 0x7f, %g3
@@ -122,12 +122,12 @@ fill_fixup_mna:
122 mov %l4, %o2 122 mov %l4, %o2
123 call sun4v_do_mna 123 call sun4v_do_mna
124 mov %l5, %o1 124 mov %l5, %o1
125 ba,a,pt %xcc, rtrap_clr_l6 125 ba,a,pt %xcc, rtrap
1261: mov %l4, %o1 1261: mov %l4, %o1
127 mov %l5, %o2 127 mov %l5, %o2
128 call mem_address_unaligned 128 call mem_address_unaligned
129 nop 129 nop
130 ba,a,pt %xcc, rtrap_clr_l6 130 ba,a,pt %xcc, rtrap
131 131
132winfix_dax: 132winfix_dax:
133 andn %g3, 0x7f, %g3 133 andn %g3, 0x7f, %g3
@@ -150,7 +150,7 @@ fill_fixup_dax:
150 add %sp, PTREGS_OFF, %o0 150 add %sp, PTREGS_OFF, %o0
151 call sun4v_data_access_exception 151 call sun4v_data_access_exception
152 nop 152 nop
153 ba,a,pt %xcc, rtrap_clr_l6 153 ba,a,pt %xcc, rtrap
1541: call spitfire_data_access_exception 1541: call spitfire_data_access_exception
155 nop 155 nop
156 ba,a,pt %xcc, rtrap_clr_l6 156 ba,a,pt %xcc, rtrap
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c
index f37078d96407..177d8aaeec42 100644
--- a/arch/sparc64/mm/init.c
+++ b/arch/sparc64/mm/init.c
@@ -24,6 +24,8 @@
24#include <linux/cache.h> 24#include <linux/cache.h>
25#include <linux/sort.h> 25#include <linux/sort.h>
26#include <linux/percpu.h> 26#include <linux/percpu.h>
27#include <linux/lmb.h>
28#include <linux/mmzone.h>
27 29
28#include <asm/head.h> 30#include <asm/head.h>
29#include <asm/system.h> 31#include <asm/system.h>
@@ -72,9 +74,7 @@ extern struct tsb swapper_4m_tsb[KERNEL_TSB4M_NENTRIES];
72#define MAX_BANKS 32 74#define MAX_BANKS 32
73 75
74static struct linux_prom64_registers pavail[MAX_BANKS] __initdata; 76static struct linux_prom64_registers pavail[MAX_BANKS] __initdata;
75static struct linux_prom64_registers pavail_rescan[MAX_BANKS] __initdata;
76static int pavail_ents __initdata; 77static int pavail_ents __initdata;
77static int pavail_rescan_ents __initdata;
78 78
79static int cmp_p64(const void *a, const void *b) 79static int cmp_p64(const void *a, const void *b)
80{ 80{
@@ -715,285 +715,684 @@ out:
715 smp_new_mmu_context_version(); 715 smp_new_mmu_context_version();
716} 716}
717 717
718/* Find a free area for the bootmem map, avoiding the kernel image 718static int numa_enabled = 1;
719 * and the initial ramdisk. 719static int numa_debug;
720 */ 720
721static unsigned long __init choose_bootmap_pfn(unsigned long start_pfn, 721static int __init early_numa(char *p)
722 unsigned long end_pfn)
723{ 722{
724 unsigned long avoid_start, avoid_end, bootmap_size; 723 if (!p)
725 int i; 724 return 0;
725
726 if (strstr(p, "off"))
727 numa_enabled = 0;
728
729 if (strstr(p, "debug"))
730 numa_debug = 1;
731
732 return 0;
733}
734early_param("numa", early_numa);
726 735
727 bootmap_size = bootmem_bootmap_pages(end_pfn - start_pfn); 736#define numadbg(f, a...) \
728 bootmap_size <<= PAGE_SHIFT; 737do { if (numa_debug) \
738 printk(KERN_INFO f, ## a); \
739} while (0)
729 740
730 avoid_start = avoid_end = 0; 741static void __init find_ramdisk(unsigned long phys_base)
742{
731#ifdef CONFIG_BLK_DEV_INITRD 743#ifdef CONFIG_BLK_DEV_INITRD
732 avoid_start = initrd_start; 744 if (sparc_ramdisk_image || sparc_ramdisk_image64) {
733 avoid_end = PAGE_ALIGN(initrd_end); 745 unsigned long ramdisk_image;
746
747 /* Older versions of the bootloader only supported a
748 * 32-bit physical address for the ramdisk image
749 * location, stored at sparc_ramdisk_image. Newer
750 * SILO versions set sparc_ramdisk_image to zero and
751 * provide a full 64-bit physical address at
752 * sparc_ramdisk_image64.
753 */
754 ramdisk_image = sparc_ramdisk_image;
755 if (!ramdisk_image)
756 ramdisk_image = sparc_ramdisk_image64;
757
758 /* Another bootloader quirk. The bootloader normalizes
759 * the physical address to KERNBASE, so we have to
760 * factor that back out and add in the lowest valid
761 * physical page address to get the true physical address.
762 */
763 ramdisk_image -= KERNBASE;
764 ramdisk_image += phys_base;
765
766 numadbg("Found ramdisk at physical address 0x%lx, size %u\n",
767 ramdisk_image, sparc_ramdisk_size);
768
769 initrd_start = ramdisk_image;
770 initrd_end = ramdisk_image + sparc_ramdisk_size;
771
772 lmb_reserve(initrd_start, initrd_end);
773 }
734#endif 774#endif
775}
735 776
736 for (i = 0; i < pavail_ents; i++) { 777struct node_mem_mask {
737 unsigned long start, end; 778 unsigned long mask;
779 unsigned long val;
780 unsigned long bootmem_paddr;
781};
782static struct node_mem_mask node_masks[MAX_NUMNODES];
783static int num_node_masks;
738 784
739 start = pavail[i].phys_addr; 785int numa_cpu_lookup_table[NR_CPUS];
740 end = start + pavail[i].reg_size; 786cpumask_t numa_cpumask_lookup_table[MAX_NUMNODES];
741 787
742 while (start < end) { 788#ifdef CONFIG_NEED_MULTIPLE_NODES
743 if (start >= kern_base && 789static bootmem_data_t plat_node_bdata[MAX_NUMNODES];
744 start < PAGE_ALIGN(kern_base + kern_size)) {
745 start = PAGE_ALIGN(kern_base + kern_size);
746 continue;
747 }
748 if (start >= avoid_start && start < avoid_end) {
749 start = avoid_end;
750 continue;
751 }
752 790
753 if ((end - start) < bootmap_size) 791struct mdesc_mblock {
754 break; 792 u64 base;
793 u64 size;
794 u64 offset; /* RA-to-PA */
795};
796static struct mdesc_mblock *mblocks;
797static int num_mblocks;
755 798
756 if (start < kern_base && 799static unsigned long ra_to_pa(unsigned long addr)
757 (start + bootmap_size) > kern_base) { 800{
758 start = PAGE_ALIGN(kern_base + kern_size); 801 int i;
759 continue;
760 }
761 802
762 if (start < avoid_start && 803 for (i = 0; i < num_mblocks; i++) {
763 (start + bootmap_size) > avoid_start) { 804 struct mdesc_mblock *m = &mblocks[i];
764 start = avoid_end;
765 continue;
766 }
767 805
768 /* OK, it doesn't overlap anything, use it. */ 806 if (addr >= m->base &&
769 return start >> PAGE_SHIFT; 807 addr < (m->base + m->size)) {
808 addr += m->offset;
809 break;
770 } 810 }
771 } 811 }
772 812 return addr;
773 prom_printf("Cannot find free area for bootmap, aborting.\n");
774 prom_halt();
775} 813}
776 814
777static void __init trim_pavail(unsigned long *cur_size_p, 815static int find_node(unsigned long addr)
778 unsigned long *end_of_phys_p)
779{ 816{
780 unsigned long to_trim = *cur_size_p - cmdline_memory_size;
781 unsigned long avoid_start, avoid_end;
782 int i; 817 int i;
783 818
784 to_trim = PAGE_ALIGN(to_trim); 819 addr = ra_to_pa(addr);
820 for (i = 0; i < num_node_masks; i++) {
821 struct node_mem_mask *p = &node_masks[i];
785 822
786 avoid_start = avoid_end = 0; 823 if ((addr & p->mask) == p->val)
787#ifdef CONFIG_BLK_DEV_INITRD 824 return i;
788 avoid_start = initrd_start; 825 }
789 avoid_end = PAGE_ALIGN(initrd_end); 826 return -1;
827}
828
829static unsigned long nid_range(unsigned long start, unsigned long end,
830 int *nid)
831{
832 *nid = find_node(start);
833 start += PAGE_SIZE;
834 while (start < end) {
835 int n = find_node(start);
836
837 if (n != *nid)
838 break;
839 start += PAGE_SIZE;
840 }
841
842 return start;
843}
844#else
845static unsigned long nid_range(unsigned long start, unsigned long end,
846 int *nid)
847{
848 *nid = 0;
849 return end;
850}
790#endif 851#endif
791 852
792 /* Trim some pavail[] entries in order to satisfy the 853/* This must be invoked after performing all of the necessary
793 * requested "mem=xxx" kernel command line specification. 854 * add_active_range() calls for 'nid'. We need to be able to get
794 * 855 * correct data from get_pfn_range_for_nid().
795 * We must not trim off the kernel image area nor the 856 */
796 * initial ramdisk range (if any). Also, we must not trim 857static void __init allocate_node_data(int nid)
797 * any pavail[] entry down to zero in order to preserve 858{
798 * the invariant that all pavail[] entries have a non-zero 859 unsigned long paddr, num_pages, start_pfn, end_pfn;
799 * size which is assumed by all of the code in here. 860 struct pglist_data *p;
800 */ 861
801 for (i = 0; i < pavail_ents; i++) { 862#ifdef CONFIG_NEED_MULTIPLE_NODES
802 unsigned long start, end, kern_end; 863 paddr = lmb_alloc_nid(sizeof(struct pglist_data),
803 unsigned long trim_low, trim_high, n; 864 SMP_CACHE_BYTES, nid, nid_range);
865 if (!paddr) {
866 prom_printf("Cannot allocate pglist_data for nid[%d]\n", nid);
867 prom_halt();
868 }
869 NODE_DATA(nid) = __va(paddr);
870 memset(NODE_DATA(nid), 0, sizeof(struct pglist_data));
804 871
805 kern_end = PAGE_ALIGN(kern_base + kern_size); 872 NODE_DATA(nid)->bdata = &plat_node_bdata[nid];
873#endif
806 874
807 trim_low = start = pavail[i].phys_addr; 875 p = NODE_DATA(nid);
808 trim_high = end = start + pavail[i].reg_size;
809 876
810 if (kern_base >= start && 877 get_pfn_range_for_nid(nid, &start_pfn, &end_pfn);
811 kern_base < end) { 878 p->node_start_pfn = start_pfn;
812 trim_low = kern_base; 879 p->node_spanned_pages = end_pfn - start_pfn;
813 if (kern_end >= end) 880
814 continue; 881 if (p->node_spanned_pages) {
815 } 882 num_pages = bootmem_bootmap_pages(p->node_spanned_pages);
816 if (kern_end >= start && 883
817 kern_end < end) { 884 paddr = lmb_alloc_nid(num_pages << PAGE_SHIFT, PAGE_SIZE, nid,
818 trim_high = kern_end; 885 nid_range);
819 } 886 if (!paddr) {
820 if (avoid_start && 887 prom_printf("Cannot allocate bootmap for nid[%d]\n",
821 avoid_start >= start && 888 nid);
822 avoid_start < end) { 889 prom_halt();
823 if (trim_low > avoid_start)
824 trim_low = avoid_start;
825 if (avoid_end >= end)
826 continue;
827 }
828 if (avoid_end &&
829 avoid_end >= start &&
830 avoid_end < end) {
831 if (trim_high < avoid_end)
832 trim_high = avoid_end;
833 } 890 }
891 node_masks[nid].bootmem_paddr = paddr;
892 }
893}
894
895static void init_node_masks_nonnuma(void)
896{
897 int i;
898
899 numadbg("Initializing tables for non-numa.\n");
900
901 node_masks[0].mask = node_masks[0].val = 0;
902 num_node_masks = 1;
903
904 for (i = 0; i < NR_CPUS; i++)
905 numa_cpu_lookup_table[i] = 0;
906
907 numa_cpumask_lookup_table[0] = CPU_MASK_ALL;
908}
909
910#ifdef CONFIG_NEED_MULTIPLE_NODES
911struct pglist_data *node_data[MAX_NUMNODES];
912
913EXPORT_SYMBOL(numa_cpu_lookup_table);
914EXPORT_SYMBOL(numa_cpumask_lookup_table);
915EXPORT_SYMBOL(node_data);
916
917struct mdesc_mlgroup {
918 u64 node;
919 u64 latency;
920 u64 match;
921 u64 mask;
922};
923static struct mdesc_mlgroup *mlgroups;
924static int num_mlgroups;
925
926static int scan_pio_for_cfg_handle(struct mdesc_handle *md, u64 pio,
927 u32 cfg_handle)
928{
929 u64 arc;
834 930
835 if (trim_high <= trim_low) 931 mdesc_for_each_arc(arc, md, pio, MDESC_ARC_TYPE_FWD) {
932 u64 target = mdesc_arc_target(md, arc);
933 const u64 *val;
934
935 val = mdesc_get_property(md, target,
936 "cfg-handle", NULL);
937 if (val && *val == cfg_handle)
938 return 0;
939 }
940 return -ENODEV;
941}
942
943static int scan_arcs_for_cfg_handle(struct mdesc_handle *md, u64 grp,
944 u32 cfg_handle)
945{
946 u64 arc, candidate, best_latency = ~(u64)0;
947
948 candidate = MDESC_NODE_NULL;
949 mdesc_for_each_arc(arc, md, grp, MDESC_ARC_TYPE_FWD) {
950 u64 target = mdesc_arc_target(md, arc);
951 const char *name = mdesc_node_name(md, target);
952 const u64 *val;
953
954 if (strcmp(name, "pio-latency-group"))
836 continue; 955 continue;
837 956
838 if (trim_low == start && trim_high == end) { 957 val = mdesc_get_property(md, target, "latency", NULL);
839 /* Whole chunk is available for trimming. 958 if (!val)
840 * Trim all except one page, in order to keep 959 continue;
841 * entry non-empty. 960
842 */ 961 if (*val < best_latency) {
843 n = (end - start) - PAGE_SIZE; 962 candidate = target;
844 if (n > to_trim) 963 best_latency = *val;
845 n = to_trim;
846
847 if (n) {
848 pavail[i].phys_addr += n;
849 pavail[i].reg_size -= n;
850 to_trim -= n;
851 }
852 } else {
853 n = (trim_low - start);
854 if (n > to_trim)
855 n = to_trim;
856
857 if (n) {
858 pavail[i].phys_addr += n;
859 pavail[i].reg_size -= n;
860 to_trim -= n;
861 }
862 if (to_trim) {
863 n = end - trim_high;
864 if (n > to_trim)
865 n = to_trim;
866 if (n) {
867 pavail[i].reg_size -= n;
868 to_trim -= n;
869 }
870 }
871 } 964 }
965 }
966
967 if (candidate == MDESC_NODE_NULL)
968 return -ENODEV;
969
970 return scan_pio_for_cfg_handle(md, candidate, cfg_handle);
971}
972
973int of_node_to_nid(struct device_node *dp)
974{
975 const struct linux_prom64_registers *regs;
976 struct mdesc_handle *md;
977 u32 cfg_handle;
978 int count, nid;
979 u64 grp;
872 980
873 if (!to_trim) 981 if (!mlgroups)
982 return -1;
983
984 regs = of_get_property(dp, "reg", NULL);
985 if (!regs)
986 return -1;
987
988 cfg_handle = (regs->phys_addr >> 32UL) & 0x0fffffff;
989
990 md = mdesc_grab();
991
992 count = 0;
993 nid = -1;
994 mdesc_for_each_node_by_name(md, grp, "group") {
995 if (!scan_arcs_for_cfg_handle(md, grp, cfg_handle)) {
996 nid = count;
874 break; 997 break;
998 }
999 count++;
875 } 1000 }
876 1001
877 /* Recalculate. */ 1002 mdesc_release(md);
878 *cur_size_p = 0UL; 1003
879 for (i = 0; i < pavail_ents; i++) { 1004 return nid;
880 *end_of_phys_p = pavail[i].phys_addr +
881 pavail[i].reg_size;
882 *cur_size_p += pavail[i].reg_size;
883 }
884} 1005}
885 1006
886/* About pages_avail, this is the value we will use to calculate 1007static void add_node_ranges(void)
887 * the zholes_size[] argument given to free_area_init_node(). The
888 * page allocator uses this to calculate nr_kernel_pages,
889 * nr_all_pages and zone->present_pages. On NUMA it is used
890 * to calculate zone->min_unmapped_pages and zone->min_slab_pages.
891 *
892 * So this number should really be set to what the page allocator
893 * actually ends up with. This means:
894 * 1) It should include bootmem map pages, we'll release those.
895 * 2) It should not include the kernel image, except for the
896 * __init sections which we will also release.
897 * 3) It should include the initrd image, since we'll release
898 * that too.
899 */
900static unsigned long __init bootmem_init(unsigned long *pages_avail,
901 unsigned long phys_base)
902{ 1008{
903 unsigned long bootmap_size, end_pfn;
904 unsigned long end_of_phys_memory = 0UL;
905 unsigned long bootmap_pfn, bytes_avail, size;
906 int i; 1009 int i;
907 1010
908 bytes_avail = 0UL; 1011 for (i = 0; i < lmb.memory.cnt; i++) {
909 for (i = 0; i < pavail_ents; i++) { 1012 unsigned long size = lmb_size_bytes(&lmb.memory, i);
910 end_of_phys_memory = pavail[i].phys_addr + 1013 unsigned long start, end;
911 pavail[i].reg_size; 1014
912 bytes_avail += pavail[i].reg_size; 1015 start = lmb.memory.region[i].base;
1016 end = start + size;
1017 while (start < end) {
1018 unsigned long this_end;
1019 int nid;
1020
1021 this_end = nid_range(start, end, &nid);
1022
1023 numadbg("Adding active range nid[%d] "
1024 "start[%lx] end[%lx]\n",
1025 nid, start, this_end);
1026
1027 add_active_range(nid,
1028 start >> PAGE_SHIFT,
1029 this_end >> PAGE_SHIFT);
1030
1031 start = this_end;
1032 }
913 } 1033 }
1034}
914 1035
915 /* Determine the location of the initial ramdisk before trying 1036static int __init grab_mlgroups(struct mdesc_handle *md)
916 * to honor the "mem=xxx" command line argument. We must know 1037{
917 * where the kernel image and the ramdisk image are so that we 1038 unsigned long paddr;
918 * do not trim those two areas from the physical memory map. 1039 int count = 0;
919 */ 1040 u64 node;
1041
1042 mdesc_for_each_node_by_name(md, node, "memory-latency-group")
1043 count++;
1044 if (!count)
1045 return -ENOENT;
1046
1047 paddr = lmb_alloc(count * sizeof(struct mdesc_mlgroup),
1048 SMP_CACHE_BYTES);
1049 if (!paddr)
1050 return -ENOMEM;
1051
1052 mlgroups = __va(paddr);
1053 num_mlgroups = count;
1054
1055 count = 0;
1056 mdesc_for_each_node_by_name(md, node, "memory-latency-group") {
1057 struct mdesc_mlgroup *m = &mlgroups[count++];
1058 const u64 *val;
1059
1060 m->node = node;
1061
1062 val = mdesc_get_property(md, node, "latency", NULL);
1063 m->latency = *val;
1064 val = mdesc_get_property(md, node, "address-match", NULL);
1065 m->match = *val;
1066 val = mdesc_get_property(md, node, "address-mask", NULL);
1067 m->mask = *val;
1068
1069 numadbg("MLGROUP[%d]: node[%lx] latency[%lx] "
1070 "match[%lx] mask[%lx]\n",
1071 count - 1, m->node, m->latency, m->match, m->mask);
1072 }
920 1073
921#ifdef CONFIG_BLK_DEV_INITRD 1074 return 0;
922 /* Now have to check initial ramdisk, so that bootmap does not overwrite it */ 1075}
923 if (sparc_ramdisk_image || sparc_ramdisk_image64) { 1076
924 unsigned long ramdisk_image = sparc_ramdisk_image ? 1077static int __init grab_mblocks(struct mdesc_handle *md)
925 sparc_ramdisk_image : sparc_ramdisk_image64; 1078{
926 ramdisk_image -= KERNBASE; 1079 unsigned long paddr;
927 initrd_start = ramdisk_image + phys_base; 1080 int count = 0;
928 initrd_end = initrd_start + sparc_ramdisk_size; 1081 u64 node;
929 if (initrd_end > end_of_phys_memory) { 1082
930 printk(KERN_CRIT "initrd extends beyond end of memory " 1083 mdesc_for_each_node_by_name(md, node, "mblock")
931 "(0x%016lx > 0x%016lx)\ndisabling initrd\n", 1084 count++;
932 initrd_end, end_of_phys_memory); 1085 if (!count)
933 initrd_start = 0; 1086 return -ENOENT;
934 initrd_end = 0; 1087
1088 paddr = lmb_alloc(count * sizeof(struct mdesc_mblock),
1089 SMP_CACHE_BYTES);
1090 if (!paddr)
1091 return -ENOMEM;
1092
1093 mblocks = __va(paddr);
1094 num_mblocks = count;
1095
1096 count = 0;
1097 mdesc_for_each_node_by_name(md, node, "mblock") {
1098 struct mdesc_mblock *m = &mblocks[count++];
1099 const u64 *val;
1100
1101 val = mdesc_get_property(md, node, "base", NULL);
1102 m->base = *val;
1103 val = mdesc_get_property(md, node, "size", NULL);
1104 m->size = *val;
1105 val = mdesc_get_property(md, node,
1106 "address-congruence-offset", NULL);
1107 m->offset = *val;
1108
1109 numadbg("MBLOCK[%d]: base[%lx] size[%lx] offset[%lx]\n",
1110 count - 1, m->base, m->size, m->offset);
1111 }
1112
1113 return 0;
1114}
1115
1116static void __init numa_parse_mdesc_group_cpus(struct mdesc_handle *md,
1117 u64 grp, cpumask_t *mask)
1118{
1119 u64 arc;
1120
1121 cpus_clear(*mask);
1122
1123 mdesc_for_each_arc(arc, md, grp, MDESC_ARC_TYPE_BACK) {
1124 u64 target = mdesc_arc_target(md, arc);
1125 const char *name = mdesc_node_name(md, target);
1126 const u64 *id;
1127
1128 if (strcmp(name, "cpu"))
1129 continue;
1130 id = mdesc_get_property(md, target, "id", NULL);
1131 if (*id < NR_CPUS)
1132 cpu_set(*id, *mask);
1133 }
1134}
1135
1136static struct mdesc_mlgroup * __init find_mlgroup(u64 node)
1137{
1138 int i;
1139
1140 for (i = 0; i < num_mlgroups; i++) {
1141 struct mdesc_mlgroup *m = &mlgroups[i];
1142 if (m->node == node)
1143 return m;
1144 }
1145 return NULL;
1146}
1147
1148static int __init numa_attach_mlgroup(struct mdesc_handle *md, u64 grp,
1149 int index)
1150{
1151 struct mdesc_mlgroup *candidate = NULL;
1152 u64 arc, best_latency = ~(u64)0;
1153 struct node_mem_mask *n;
1154
1155 mdesc_for_each_arc(arc, md, grp, MDESC_ARC_TYPE_FWD) {
1156 u64 target = mdesc_arc_target(md, arc);
1157 struct mdesc_mlgroup *m = find_mlgroup(target);
1158 if (!m)
1159 continue;
1160 if (m->latency < best_latency) {
1161 candidate = m;
1162 best_latency = m->latency;
935 } 1163 }
936 } 1164 }
937#endif 1165 if (!candidate)
1166 return -ENOENT;
1167
1168 if (num_node_masks != index) {
1169 printk(KERN_ERR "Inconsistent NUMA state, "
1170 "index[%d] != num_node_masks[%d]\n",
1171 index, num_node_masks);
1172 return -EINVAL;
1173 }
938 1174
939 if (cmdline_memory_size && 1175 n = &node_masks[num_node_masks++];
940 bytes_avail > cmdline_memory_size)
941 trim_pavail(&bytes_avail,
942 &end_of_phys_memory);
943 1176
944 *pages_avail = bytes_avail >> PAGE_SHIFT; 1177 n->mask = candidate->mask;
1178 n->val = candidate->match;
945 1179
946 end_pfn = end_of_phys_memory >> PAGE_SHIFT; 1180 numadbg("NUMA NODE[%d]: mask[%lx] val[%lx] (latency[%lx])\n",
1181 index, n->mask, n->val, candidate->latency);
947 1182
948 /* Initialize the boot-time allocator. */ 1183 return 0;
949 max_pfn = max_low_pfn = end_pfn; 1184}
950 min_low_pfn = (phys_base >> PAGE_SHIFT); 1185
1186static int __init numa_parse_mdesc_group(struct mdesc_handle *md, u64 grp,
1187 int index)
1188{
1189 cpumask_t mask;
1190 int cpu;
951 1191
952 bootmap_pfn = choose_bootmap_pfn(min_low_pfn, end_pfn); 1192 numa_parse_mdesc_group_cpus(md, grp, &mask);
953 1193
954 bootmap_size = init_bootmem_node(NODE_DATA(0), bootmap_pfn, 1194 for_each_cpu_mask(cpu, mask)
955 min_low_pfn, end_pfn); 1195 numa_cpu_lookup_table[cpu] = index;
1196 numa_cpumask_lookup_table[index] = mask;
956 1197
957 /* Now register the available physical memory with the 1198 if (numa_debug) {
958 * allocator. 1199 printk(KERN_INFO "NUMA GROUP[%d]: cpus [ ", index);
959 */ 1200 for_each_cpu_mask(cpu, mask)
960 for (i = 0; i < pavail_ents; i++) 1201 printk("%d ", cpu);
961 free_bootmem(pavail[i].phys_addr, pavail[i].reg_size); 1202 printk("]\n");
1203 }
962 1204
963#ifdef CONFIG_BLK_DEV_INITRD 1205 return numa_attach_mlgroup(md, grp, index);
964 if (initrd_start) { 1206}
965 size = initrd_end - initrd_start; 1207
1208static int __init numa_parse_mdesc(void)
1209{
1210 struct mdesc_handle *md = mdesc_grab();
1211 int i, err, count;
1212 u64 node;
1213
1214 node = mdesc_node_by_name(md, MDESC_NODE_NULL, "latency-groups");
1215 if (node == MDESC_NODE_NULL) {
1216 mdesc_release(md);
1217 return -ENOENT;
1218 }
1219
1220 err = grab_mblocks(md);
1221 if (err < 0)
1222 goto out;
1223
1224 err = grab_mlgroups(md);
1225 if (err < 0)
1226 goto out;
1227
1228 count = 0;
1229 mdesc_for_each_node_by_name(md, node, "group") {
1230 err = numa_parse_mdesc_group(md, node, count);
1231 if (err < 0)
1232 break;
1233 count++;
1234 }
1235
1236 add_node_ranges();
1237
1238 for (i = 0; i < num_node_masks; i++) {
1239 allocate_node_data(i);
1240 node_set_online(i);
1241 }
1242
1243 err = 0;
1244out:
1245 mdesc_release(md);
1246 return err;
1247}
1248
1249static int __init numa_parse_sun4u(void)
1250{
1251 return -1;
1252}
966 1253
967 /* Reserve the initrd image area. */ 1254static int __init bootmem_init_numa(void)
968 reserve_bootmem(initrd_start, size, BOOTMEM_DEFAULT); 1255{
1256 int err = -1;
969 1257
970 initrd_start += PAGE_OFFSET; 1258 numadbg("bootmem_init_numa()\n");
971 initrd_end += PAGE_OFFSET; 1259
1260 if (numa_enabled) {
1261 if (tlb_type == hypervisor)
1262 err = numa_parse_mdesc();
1263 else
1264 err = numa_parse_sun4u();
972 } 1265 }
1266 return err;
1267}
1268
1269#else
1270
1271static int bootmem_init_numa(void)
1272{
1273 return -1;
1274}
1275
973#endif 1276#endif
974 /* Reserve the kernel text/data/bss. */
975 reserve_bootmem(kern_base, kern_size, BOOTMEM_DEFAULT);
976 *pages_avail -= PAGE_ALIGN(kern_size) >> PAGE_SHIFT;
977
978 /* Add back in the initmem pages. */
979 size = ((unsigned long)(__init_end) & PAGE_MASK) -
980 PAGE_ALIGN((unsigned long)__init_begin);
981 *pages_avail += size >> PAGE_SHIFT;
982
983 /* Reserve the bootmem map. We do not account for it
984 * in pages_avail because we will release that memory
985 * in free_all_bootmem.
986 */
987 size = bootmap_size;
988 reserve_bootmem((bootmap_pfn << PAGE_SHIFT), size, BOOTMEM_DEFAULT);
989 1277
990 for (i = 0; i < pavail_ents; i++) { 1278static void __init bootmem_init_nonnuma(void)
1279{
1280 unsigned long top_of_ram = lmb_end_of_DRAM();
1281 unsigned long total_ram = lmb_phys_mem_size();
1282 unsigned int i;
1283
1284 numadbg("bootmem_init_nonnuma()\n");
1285
1286 printk(KERN_INFO "Top of RAM: 0x%lx, Total RAM: 0x%lx\n",
1287 top_of_ram, total_ram);
1288 printk(KERN_INFO "Memory hole size: %ldMB\n",
1289 (top_of_ram - total_ram) >> 20);
1290
1291 init_node_masks_nonnuma();
1292
1293 for (i = 0; i < lmb.memory.cnt; i++) {
1294 unsigned long size = lmb_size_bytes(&lmb.memory, i);
991 unsigned long start_pfn, end_pfn; 1295 unsigned long start_pfn, end_pfn;
992 1296
993 start_pfn = pavail[i].phys_addr >> PAGE_SHIFT; 1297 if (!size)
994 end_pfn = (start_pfn + (pavail[i].reg_size >> PAGE_SHIFT)); 1298 continue;
995 memory_present(0, start_pfn, end_pfn); 1299
1300 start_pfn = lmb.memory.region[i].base >> PAGE_SHIFT;
1301 end_pfn = start_pfn + lmb_size_pages(&lmb.memory, i);
1302 add_active_range(0, start_pfn, end_pfn);
1303 }
1304
1305 allocate_node_data(0);
1306
1307 node_set_online(0);
1308}
1309
1310static void __init reserve_range_in_node(int nid, unsigned long start,
1311 unsigned long end)
1312{
1313 numadbg(" reserve_range_in_node(nid[%d],start[%lx],end[%lx]\n",
1314 nid, start, end);
1315 while (start < end) {
1316 unsigned long this_end;
1317 int n;
1318
1319 this_end = nid_range(start, end, &n);
1320 if (n == nid) {
1321 numadbg(" MATCH reserving range [%lx:%lx]\n",
1322 start, this_end);
1323 reserve_bootmem_node(NODE_DATA(nid), start,
1324 (this_end - start), BOOTMEM_DEFAULT);
1325 } else
1326 numadbg(" NO MATCH, advancing start to %lx\n",
1327 this_end);
1328
1329 start = this_end;
1330 }
1331}
1332
1333static void __init trim_reserved_in_node(int nid)
1334{
1335 int i;
1336
1337 numadbg(" trim_reserved_in_node(%d)\n", nid);
1338
1339 for (i = 0; i < lmb.reserved.cnt; i++) {
1340 unsigned long start = lmb.reserved.region[i].base;
1341 unsigned long size = lmb_size_bytes(&lmb.reserved, i);
1342 unsigned long end = start + size;
1343
1344 reserve_range_in_node(nid, start, end);
1345 }
1346}
1347
1348static void __init bootmem_init_one_node(int nid)
1349{
1350 struct pglist_data *p;
1351
1352 numadbg("bootmem_init_one_node(%d)\n", nid);
1353
1354 p = NODE_DATA(nid);
1355
1356 if (p->node_spanned_pages) {
1357 unsigned long paddr = node_masks[nid].bootmem_paddr;
1358 unsigned long end_pfn;
1359
1360 end_pfn = p->node_start_pfn + p->node_spanned_pages;
1361
1362 numadbg(" init_bootmem_node(%d, %lx, %lx, %lx)\n",
1363 nid, paddr >> PAGE_SHIFT, p->node_start_pfn, end_pfn);
1364
1365 init_bootmem_node(p, paddr >> PAGE_SHIFT,
1366 p->node_start_pfn, end_pfn);
1367
1368 numadbg(" free_bootmem_with_active_regions(%d, %lx)\n",
1369 nid, end_pfn);
1370 free_bootmem_with_active_regions(nid, end_pfn);
1371
1372 trim_reserved_in_node(nid);
1373
1374 numadbg(" sparse_memory_present_with_active_regions(%d)\n",
1375 nid);
1376 sparse_memory_present_with_active_regions(nid);
996 } 1377 }
1378}
1379
1380static unsigned long __init bootmem_init(unsigned long phys_base)
1381{
1382 unsigned long end_pfn;
1383 int nid;
1384
1385 end_pfn = lmb_end_of_DRAM() >> PAGE_SHIFT;
1386 max_pfn = max_low_pfn = end_pfn;
1387 min_low_pfn = (phys_base >> PAGE_SHIFT);
1388
1389 if (bootmem_init_numa() < 0)
1390 bootmem_init_nonnuma();
1391
1392 /* XXX cpu notifier XXX */
1393
1394 for_each_online_node(nid)
1395 bootmem_init_one_node(nid);
997 1396
998 sparse_init(); 1397 sparse_init();
999 1398
@@ -1289,7 +1688,7 @@ void __init setup_per_cpu_areas(void)
1289 1688
1290void __init paging_init(void) 1689void __init paging_init(void)
1291{ 1690{
1292 unsigned long end_pfn, pages_avail, shift, phys_base; 1691 unsigned long end_pfn, shift, phys_base;
1293 unsigned long real_end, i; 1692 unsigned long real_end, i;
1294 1693
1295 /* These build time checkes make sure that the dcache_dirty_cpu() 1694 /* These build time checkes make sure that the dcache_dirty_cpu()
@@ -1330,12 +1729,26 @@ void __init paging_init(void)
1330 sun4v_ktsb_init(); 1729 sun4v_ktsb_init();
1331 } 1730 }
1332 1731
1732 lmb_init();
1733
1333 /* Find available physical memory... */ 1734 /* Find available physical memory... */
1334 read_obp_memory("available", &pavail[0], &pavail_ents); 1735 read_obp_memory("available", &pavail[0], &pavail_ents);
1335 1736
1336 phys_base = 0xffffffffffffffffUL; 1737 phys_base = 0xffffffffffffffffUL;
1337 for (i = 0; i < pavail_ents; i++) 1738 for (i = 0; i < pavail_ents; i++) {
1338 phys_base = min(phys_base, pavail[i].phys_addr); 1739 phys_base = min(phys_base, pavail[i].phys_addr);
1740 lmb_add(pavail[i].phys_addr, pavail[i].reg_size);
1741 }
1742
1743 lmb_reserve(kern_base, kern_size);
1744
1745 find_ramdisk(phys_base);
1746
1747 if (cmdline_memory_size)
1748 lmb_enforce_memory_limit(phys_base + cmdline_memory_size);
1749
1750 lmb_analyze();
1751 lmb_dump_all();
1339 1752
1340 set_bit(0, mmu_context_bmap); 1753 set_bit(0, mmu_context_bmap);
1341 1754
@@ -1371,14 +1784,10 @@ void __init paging_init(void)
1371 if (tlb_type == hypervisor) 1784 if (tlb_type == hypervisor)
1372 sun4v_ktsb_register(); 1785 sun4v_ktsb_register();
1373 1786
1374 /* Setup bootmem... */ 1787 /* We must setup the per-cpu areas before we pull in the
1375 pages_avail = 0; 1788 * PROM and the MDESC. The code there fills in cpu and
1376 last_valid_pfn = end_pfn = bootmem_init(&pages_avail, phys_base); 1789 * other information into per-cpu data structures.
1377 1790 */
1378 max_mapnr = last_valid_pfn;
1379
1380 kernel_physical_mapping_init();
1381
1382 real_setup_per_cpu_areas(); 1791 real_setup_per_cpu_areas();
1383 1792
1384 prom_build_devicetree(); 1793 prom_build_devicetree();
@@ -1386,20 +1795,22 @@ void __init paging_init(void)
1386 if (tlb_type == hypervisor) 1795 if (tlb_type == hypervisor)
1387 sun4v_mdesc_init(); 1796 sun4v_mdesc_init();
1388 1797
1798 /* Setup bootmem... */
1799 last_valid_pfn = end_pfn = bootmem_init(phys_base);
1800
1801#ifndef CONFIG_NEED_MULTIPLE_NODES
1802 max_mapnr = last_valid_pfn;
1803#endif
1804 kernel_physical_mapping_init();
1805
1389 { 1806 {
1390 unsigned long zones_size[MAX_NR_ZONES]; 1807 unsigned long max_zone_pfns[MAX_NR_ZONES];
1391 unsigned long zholes_size[MAX_NR_ZONES];
1392 int znum;
1393 1808
1394 for (znum = 0; znum < MAX_NR_ZONES; znum++) 1809 memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
1395 zones_size[znum] = zholes_size[znum] = 0;
1396 1810
1397 zones_size[ZONE_NORMAL] = end_pfn; 1811 max_zone_pfns[ZONE_NORMAL] = end_pfn;
1398 zholes_size[ZONE_NORMAL] = end_pfn - pages_avail;
1399 1812
1400 free_area_init_node(0, &contig_page_data, zones_size, 1813 free_area_init_nodes(max_zone_pfns);
1401 __pa(PAGE_OFFSET) >> PAGE_SHIFT,
1402 zholes_size);
1403 } 1814 }
1404 1815
1405 printk("Booting Linux...\n"); 1816 printk("Booting Linux...\n");
@@ -1408,21 +1819,52 @@ void __init paging_init(void)
1408 cpu_probe(); 1819 cpu_probe();
1409} 1820}
1410 1821
1411static void __init taint_real_pages(void) 1822int __init page_in_phys_avail(unsigned long paddr)
1823{
1824 int i;
1825
1826 paddr &= PAGE_MASK;
1827
1828 for (i = 0; i < pavail_ents; i++) {
1829 unsigned long start, end;
1830
1831 start = pavail[i].phys_addr;
1832 end = start + pavail[i].reg_size;
1833
1834 if (paddr >= start && paddr < end)
1835 return 1;
1836 }
1837 if (paddr >= kern_base && paddr < (kern_base + kern_size))
1838 return 1;
1839#ifdef CONFIG_BLK_DEV_INITRD
1840 if (paddr >= __pa(initrd_start) &&
1841 paddr < __pa(PAGE_ALIGN(initrd_end)))
1842 return 1;
1843#endif
1844
1845 return 0;
1846}
1847
1848static struct linux_prom64_registers pavail_rescan[MAX_BANKS] __initdata;
1849static int pavail_rescan_ents __initdata;
1850
1851/* Certain OBP calls, such as fetching "available" properties, can
1852 * claim physical memory. So, along with initializing the valid
1853 * address bitmap, what we do here is refetch the physical available
1854 * memory list again, and make sure it provides at least as much
1855 * memory as 'pavail' does.
1856 */
1857static void setup_valid_addr_bitmap_from_pavail(void)
1412{ 1858{
1413 int i; 1859 int i;
1414 1860
1415 read_obp_memory("available", &pavail_rescan[0], &pavail_rescan_ents); 1861 read_obp_memory("available", &pavail_rescan[0], &pavail_rescan_ents);
1416 1862
1417 /* Find changes discovered in the physmem available rescan and
1418 * reserve the lost portions in the bootmem maps.
1419 */
1420 for (i = 0; i < pavail_ents; i++) { 1863 for (i = 0; i < pavail_ents; i++) {
1421 unsigned long old_start, old_end; 1864 unsigned long old_start, old_end;
1422 1865
1423 old_start = pavail[i].phys_addr; 1866 old_start = pavail[i].phys_addr;
1424 old_end = old_start + 1867 old_end = old_start + pavail[i].reg_size;
1425 pavail[i].reg_size;
1426 while (old_start < old_end) { 1868 while (old_start < old_end) {
1427 int n; 1869 int n;
1428 1870
@@ -1440,7 +1882,16 @@ static void __init taint_real_pages(void)
1440 goto do_next_page; 1882 goto do_next_page;
1441 } 1883 }
1442 } 1884 }
1443 reserve_bootmem(old_start, PAGE_SIZE, BOOTMEM_DEFAULT); 1885
1886 prom_printf("mem_init: Lost memory in pavail\n");
1887 prom_printf("mem_init: OLD start[%lx] size[%lx]\n",
1888 pavail[i].phys_addr,
1889 pavail[i].reg_size);
1890 prom_printf("mem_init: NEW start[%lx] size[%lx]\n",
1891 pavail_rescan[i].phys_addr,
1892 pavail_rescan[i].reg_size);
1893 prom_printf("mem_init: Cannot continue, aborting.\n");
1894 prom_halt();
1444 1895
1445 do_next_page: 1896 do_next_page:
1446 old_start += PAGE_SIZE; 1897 old_start += PAGE_SIZE;
@@ -1448,32 +1899,6 @@ static void __init taint_real_pages(void)
1448 } 1899 }
1449} 1900}
1450 1901
1451int __init page_in_phys_avail(unsigned long paddr)
1452{
1453 int i;
1454
1455 paddr &= PAGE_MASK;
1456
1457 for (i = 0; i < pavail_rescan_ents; i++) {
1458 unsigned long start, end;
1459
1460 start = pavail_rescan[i].phys_addr;
1461 end = start + pavail_rescan[i].reg_size;
1462
1463 if (paddr >= start && paddr < end)
1464 return 1;
1465 }
1466 if (paddr >= kern_base && paddr < (kern_base + kern_size))
1467 return 1;
1468#ifdef CONFIG_BLK_DEV_INITRD
1469 if (paddr >= __pa(initrd_start) &&
1470 paddr < __pa(PAGE_ALIGN(initrd_end)))
1471 return 1;
1472#endif
1473
1474 return 0;
1475}
1476
1477void __init mem_init(void) 1902void __init mem_init(void)
1478{ 1903{
1479 unsigned long codepages, datapages, initpages; 1904 unsigned long codepages, datapages, initpages;
@@ -1496,14 +1921,26 @@ void __init mem_init(void)
1496 addr += PAGE_SIZE; 1921 addr += PAGE_SIZE;
1497 } 1922 }
1498 1923
1499 taint_real_pages(); 1924 setup_valid_addr_bitmap_from_pavail();
1500 1925
1501 high_memory = __va(last_valid_pfn << PAGE_SHIFT); 1926 high_memory = __va(last_valid_pfn << PAGE_SHIFT);
1502 1927
1928#ifdef CONFIG_NEED_MULTIPLE_NODES
1929 for_each_online_node(i) {
1930 if (NODE_DATA(i)->node_spanned_pages != 0) {
1931 totalram_pages +=
1932 free_all_bootmem_node(NODE_DATA(i));
1933 }
1934 }
1935#else
1936 totalram_pages = free_all_bootmem();
1937#endif
1938
1503 /* We subtract one to account for the mem_map_zero page 1939 /* We subtract one to account for the mem_map_zero page
1504 * allocated below. 1940 * allocated below.
1505 */ 1941 */
1506 totalram_pages = num_physpages = free_all_bootmem() - 1; 1942 totalram_pages -= 1;
1943 num_physpages = totalram_pages;
1507 1944
1508 /* 1945 /*
1509 * Set up the zero page, mark it reserved, so that page count 1946 * Set up the zero page, mark it reserved, so that page count
diff --git a/arch/sparc64/mm/tsb.c b/arch/sparc64/mm/tsb.c
index a3e6e4b635b3..fe70c8a557b5 100644
--- a/arch/sparc64/mm/tsb.c
+++ b/arch/sparc64/mm/tsb.c
@@ -321,7 +321,8 @@ retry_tsb_alloc:
321 if (new_size > (PAGE_SIZE * 2)) 321 if (new_size > (PAGE_SIZE * 2))
322 gfp_flags = __GFP_NOWARN | __GFP_NORETRY; 322 gfp_flags = __GFP_NOWARN | __GFP_NORETRY;
323 323
324 new_tsb = kmem_cache_alloc(tsb_caches[new_cache_index], gfp_flags); 324 new_tsb = kmem_cache_alloc_node(tsb_caches[new_cache_index],
325 gfp_flags, numa_node_id());
325 if (unlikely(!new_tsb)) { 326 if (unlikely(!new_tsb)) {
326 /* Not being able to fork due to a high-order TSB 327 /* Not being able to fork due to a high-order TSB
327 * allocation failure is very bad behavior. Just back 328 * allocation failure is very bad behavior. Just back
diff --git a/arch/sparc64/mm/ultra.S b/arch/sparc64/mm/ultra.S
index 2865c105b6a4..e686a67561af 100644
--- a/arch/sparc64/mm/ultra.S
+++ b/arch/sparc64/mm/ultra.S
@@ -476,7 +476,6 @@ xcall_sync_tick:
476#endif 476#endif
477 call smp_synchronize_tick_client 477 call smp_synchronize_tick_client
478 nop 478 nop
479 clr %l6
480 b rtrap_xcall 479 b rtrap_xcall
481 ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1 480 ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1
482 481
@@ -511,7 +510,6 @@ xcall_report_regs:
511#endif 510#endif
512 call __show_regs 511 call __show_regs
513 add %sp, PTREGS_OFF, %o0 512 add %sp, PTREGS_OFF, %o0
514 clr %l6
515 /* Has to be a non-v9 branch due to the large distance. */ 513 /* Has to be a non-v9 branch due to the large distance. */
516 b rtrap_xcall 514 b rtrap_xcall
517 ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1 515 ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1
@@ -576,7 +574,7 @@ __hypervisor_tlb_xcall_error:
576 mov %l4, %o0 574 mov %l4, %o0
577 call hypervisor_tlbop_error_xcall 575 call hypervisor_tlbop_error_xcall
578 mov %l5, %o1 576 mov %l5, %o1
579 ba,a,pt %xcc, rtrap_clr_l6 577 ba,a,pt %xcc, rtrap
580 578
581 .globl __hypervisor_xcall_flush_tlb_mm 579 .globl __hypervisor_xcall_flush_tlb_mm
582__hypervisor_xcall_flush_tlb_mm: /* 21 insns */ 580__hypervisor_xcall_flush_tlb_mm: /* 21 insns */
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 87a693cf2bb7..4d350b5cbc71 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -23,7 +23,7 @@ config X86
23 select HAVE_KPROBES 23 select HAVE_KPROBES
24 select HAVE_KRETPROBES 24 select HAVE_KRETPROBES
25 select HAVE_KVM if ((X86_32 && !X86_VOYAGER && !X86_VISWS && !X86_NUMAQ) || X86_64) 25 select HAVE_KVM if ((X86_32 && !X86_VOYAGER && !X86_VISWS && !X86_NUMAQ) || X86_64)
26 select HAVE_ARCH_KGDB 26 select HAVE_ARCH_KGDB if !X86_VOYAGER
27 27
28 28
29config GENERIC_LOCKBREAK 29config GENERIC_LOCKBREAK
diff --git a/arch/x86/boot/.gitignore b/arch/x86/boot/.gitignore
index b1bdc4c6f9f2..172cf8a98bdd 100644
--- a/arch/x86/boot/.gitignore
+++ b/arch/x86/boot/.gitignore
@@ -1,7 +1,8 @@
1bootsect 1bootsect
2bzImage 2bzImage
3cpustr.h
4mkcpustr
5offsets.h
3setup 6setup
4setup.bin 7setup.bin
5setup.elf 8setup.elf
6cpustr.h
7mkcpustr
diff --git a/arch/x86/kernel/acpi/realmode/.gitignore b/arch/x86/kernel/acpi/realmode/.gitignore
new file mode 100644
index 000000000000..58f1f48a58f8
--- /dev/null
+++ b/arch/x86/kernel/acpi/realmode/.gitignore
@@ -0,0 +1,3 @@
1wakeup.bin
2wakeup.elf
3wakeup.lds
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index df4099dc1c68..65c7857a90dd 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -511,31 +511,30 @@ void *__kprobes text_poke(void *addr, const void *opcode, size_t len)
511 unsigned long flags; 511 unsigned long flags;
512 char *vaddr; 512 char *vaddr;
513 int nr_pages = 2; 513 int nr_pages = 2;
514 struct page *pages[2];
515 int i;
514 516
515 BUG_ON(len > sizeof(long)); 517 if (!core_kernel_text((unsigned long)addr)) {
516 BUG_ON((((long)addr + len - 1) & ~(sizeof(long) - 1)) 518 pages[0] = vmalloc_to_page(addr);
517 - ((long)addr & ~(sizeof(long) - 1))); 519 pages[1] = vmalloc_to_page(addr + PAGE_SIZE);
518 if (kernel_text_address((unsigned long)addr)) {
519 struct page *pages[2] = { virt_to_page(addr),
520 virt_to_page(addr + PAGE_SIZE) };
521 if (!pages[1])
522 nr_pages = 1;
523 vaddr = vmap(pages, nr_pages, VM_MAP, PAGE_KERNEL);
524 BUG_ON(!vaddr);
525 local_irq_save(flags);
526 memcpy(&vaddr[(unsigned long)addr & ~PAGE_MASK], opcode, len);
527 local_irq_restore(flags);
528 vunmap(vaddr);
529 } else { 520 } else {
530 /* 521 pages[0] = virt_to_page(addr);
531 * modules are in vmalloc'ed memory, always writable. 522 WARN_ON(!PageReserved(pages[0]));
532 */ 523 pages[1] = virt_to_page(addr + PAGE_SIZE);
533 local_irq_save(flags);
534 memcpy(addr, opcode, len);
535 local_irq_restore(flags);
536 } 524 }
525 BUG_ON(!pages[0]);
526 if (!pages[1])
527 nr_pages = 1;
528 vaddr = vmap(pages, nr_pages, VM_MAP, PAGE_KERNEL);
529 BUG_ON(!vaddr);
530 local_irq_save(flags);
531 memcpy(&vaddr[(unsigned long)addr & ~PAGE_MASK], opcode, len);
532 local_irq_restore(flags);
533 vunmap(vaddr);
537 sync_core(); 534 sync_core();
538 /* Could also do a CLFLUSH here to speed up CPU recovery; but 535 /* Could also do a CLFLUSH here to speed up CPU recovery; but
539 that causes hangs on some VIA CPUs. */ 536 that causes hangs on some VIA CPUs. */
537 for (i = 0; i < len; i++)
538 BUG_ON(((char *)addr)[i] != ((char *)opcode)[i]);
540 return addr; 539 return addr;
541} 540}
diff --git a/arch/x86/kernel/apic_32.c b/arch/x86/kernel/apic_32.c
index 687208190b06..8317401170b8 100644
--- a/arch/x86/kernel/apic_32.c
+++ b/arch/x86/kernel/apic_32.c
@@ -902,7 +902,7 @@ void __init init_bsp_APIC(void)
902 apic_write_around(APIC_LVT1, value); 902 apic_write_around(APIC_LVT1, value);
903} 903}
904 904
905void __cpuinit lapic_setup_esr(void) 905static void __cpuinit lapic_setup_esr(void)
906{ 906{
907 unsigned long oldvalue, value, maxlvt; 907 unsigned long oldvalue, value, maxlvt;
908 if (lapic_is_integrated() && !esr_disable) { 908 if (lapic_is_integrated() && !esr_disable) {
diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c
index 9e8e5c050c55..bf83157337e4 100644
--- a/arch/x86/kernel/apic_64.c
+++ b/arch/x86/kernel/apic_64.c
@@ -429,7 +429,7 @@ void __init setup_boot_APIC_clock(void)
429 * set the DUMMY flag again and force the broadcast mode in the 429 * set the DUMMY flag again and force the broadcast mode in the
430 * clockevents layer. 430 * clockevents layer.
431 */ 431 */
432void __cpuinit check_boot_apic_timer_broadcast(void) 432static void __cpuinit check_boot_apic_timer_broadcast(void)
433{ 433{
434 if (!disable_apic_timer || 434 if (!disable_apic_timer ||
435 (lapic_clockevent.features & CLOCK_EVT_FEAT_DUMMY)) 435 (lapic_clockevent.features & CLOCK_EVT_FEAT_DUMMY))
@@ -834,7 +834,7 @@ void __cpuinit setup_local_APIC(void)
834 preempt_enable(); 834 preempt_enable();
835} 835}
836 836
837void __cpuinit lapic_setup_esr(void) 837static void __cpuinit lapic_setup_esr(void)
838{ 838{
839 unsigned maxlvt = lapic_get_maxlvt(); 839 unsigned maxlvt = lapic_get_maxlvt();
840 840
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
index 7adad088e373..77de848bd1fb 100644
--- a/arch/x86/kernel/process_32.c
+++ b/arch/x86/kernel/process_32.c
@@ -550,7 +550,7 @@ static void hard_enable_TSC(void)
550 write_cr4(read_cr4() & ~X86_CR4_TSD); 550 write_cr4(read_cr4() & ~X86_CR4_TSD);
551} 551}
552 552
553void enable_TSC(void) 553static void enable_TSC(void)
554{ 554{
555 preempt_disable(); 555 preempt_disable();
556 if (test_and_clear_thread_flag(TIF_NOTSC)) 556 if (test_and_clear_thread_flag(TIF_NOTSC))
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index 891af1a1b48a..131c2ee7ac56 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -562,7 +562,7 @@ static void hard_enable_TSC(void)
562 write_cr4(read_cr4() & ~X86_CR4_TSD); 562 write_cr4(read_cr4() & ~X86_CR4_TSD);
563} 563}
564 564
565void enable_TSC(void) 565static void enable_TSC(void)
566{ 566{
567 preempt_disable(); 567 preempt_disable();
568 if (test_and_clear_thread_flag(TIF_NOTSC)) 568 if (test_and_clear_thread_flag(TIF_NOTSC))
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 0d1f44ae6eea..c0c68c18a788 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -18,8 +18,6 @@ unsigned disabled_cpus __cpuinitdata;
18unsigned int boot_cpu_physical_apicid = -1U; 18unsigned int boot_cpu_physical_apicid = -1U;
19EXPORT_SYMBOL(boot_cpu_physical_apicid); 19EXPORT_SYMBOL(boot_cpu_physical_apicid);
20 20
21physid_mask_t phys_cpu_present_map;
22
23DEFINE_PER_CPU(u16, x86_cpu_to_apicid) = BAD_APICID; 21DEFINE_PER_CPU(u16, x86_cpu_to_apicid) = BAD_APICID;
24EXPORT_PER_CPU_SYMBOL(x86_cpu_to_apicid); 22EXPORT_PER_CPU_SYMBOL(x86_cpu_to_apicid);
25 23
diff --git a/arch/x86/kernel/setup_32.c b/arch/x86/kernel/setup_32.c
index 78828b0f604f..455d3c80960b 100644
--- a/arch/x86/kernel/setup_32.c
+++ b/arch/x86/kernel/setup_32.c
@@ -442,7 +442,7 @@ static void __init reserve_ebda_region(void)
442} 442}
443 443
444#ifndef CONFIG_NEED_MULTIPLE_NODES 444#ifndef CONFIG_NEED_MULTIPLE_NODES
445void __init setup_bootmem_allocator(void); 445static void __init setup_bootmem_allocator(void);
446static unsigned long __init setup_memory(void) 446static unsigned long __init setup_memory(void)
447{ 447{
448 /* 448 /*
@@ -477,7 +477,7 @@ static unsigned long __init setup_memory(void)
477 return max_low_pfn; 477 return max_low_pfn;
478} 478}
479 479
480void __init zone_sizes_init(void) 480static void __init zone_sizes_init(void)
481{ 481{
482 unsigned long max_zone_pfns[MAX_NR_ZONES]; 482 unsigned long max_zone_pfns[MAX_NR_ZONES];
483 memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); 483 memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 2de2f7a2ed5d..eef79e84145f 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -184,7 +184,7 @@ static void unmap_cpu_to_node(int cpu)
184u8 cpu_2_logical_apicid[NR_CPUS] __read_mostly = 184u8 cpu_2_logical_apicid[NR_CPUS] __read_mostly =
185 { [0 ... NR_CPUS-1] = BAD_APICID }; 185 { [0 ... NR_CPUS-1] = BAD_APICID };
186 186
187void map_cpu_to_logical_apicid(void) 187static void map_cpu_to_logical_apicid(void)
188{ 188{
189 int cpu = smp_processor_id(); 189 int cpu = smp_processor_id();
190 int apicid = logical_smp_processor_id(); 190 int apicid = logical_smp_processor_id();
@@ -197,7 +197,7 @@ void map_cpu_to_logical_apicid(void)
197 map_cpu_to_node(cpu, node); 197 map_cpu_to_node(cpu, node);
198} 198}
199 199
200void unmap_cpu_to_logical_apicid(int cpu) 200static void unmap_cpu_to_logical_apicid(int cpu)
201{ 201{
202 cpu_2_logical_apicid[cpu] = BAD_APICID; 202 cpu_2_logical_apicid[cpu] = BAD_APICID;
203 unmap_cpu_to_node(cpu); 203 unmap_cpu_to_node(cpu);
@@ -211,7 +211,7 @@ void unmap_cpu_to_logical_apicid(int cpu)
211 * Report back to the Boot Processor. 211 * Report back to the Boot Processor.
212 * Running on AP. 212 * Running on AP.
213 */ 213 */
214void __cpuinit smp_callin(void) 214static void __cpuinit smp_callin(void)
215{ 215{
216 int cpuid, phys_id; 216 int cpuid, phys_id;
217 unsigned long timeout; 217 unsigned long timeout;
@@ -436,7 +436,7 @@ valid_k7:
436#endif 436#endif
437} 437}
438 438
439void __cpuinit smp_checks(void) 439static void __cpuinit smp_checks(void)
440{ 440{
441 if (smp_b_stepping) 441 if (smp_b_stepping)
442 printk(KERN_WARNING "WARNING: SMP operation may be unreliable" 442 printk(KERN_WARNING "WARNING: SMP operation may be unreliable"
@@ -565,7 +565,7 @@ void __init smp_alloc_memory(void)
565} 565}
566#endif 566#endif
567 567
568void impress_friends(void) 568static void impress_friends(void)
569{ 569{
570 int cpu; 570 int cpu;
571 unsigned long bogosum = 0; 571 unsigned long bogosum = 0;
@@ -1287,7 +1287,7 @@ void cpu_exit_clear(void)
1287} 1287}
1288# endif /* CONFIG_X86_32 */ 1288# endif /* CONFIG_X86_32 */
1289 1289
1290void remove_siblinginfo(int cpu) 1290static void remove_siblinginfo(int cpu)
1291{ 1291{
1292 int sibling; 1292 int sibling;
1293 struct cpuinfo_x86 *c = &cpu_data(cpu); 1293 struct cpuinfo_x86 *c = &cpu_data(cpu);
diff --git a/arch/x86/kernel/tlb_64.c b/arch/x86/kernel/tlb_64.c
index 1558e513757e..df224a8774cb 100644
--- a/arch/x86/kernel/tlb_64.c
+++ b/arch/x86/kernel/tlb_64.c
@@ -191,7 +191,7 @@ void native_flush_tlb_others(const cpumask_t *cpumaskp, struct mm_struct *mm,
191 spin_unlock(&f->tlbstate_lock); 191 spin_unlock(&f->tlbstate_lock);
192} 192}
193 193
194int __cpuinit init_smp_flush(void) 194static int __cpuinit init_smp_flush(void)
195{ 195{
196 int i; 196 int i;
197 197
diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
index edff4c985485..61efa2f7d564 100644
--- a/arch/x86/kernel/vsyscall_64.c
+++ b/arch/x86/kernel/vsyscall_64.c
@@ -216,7 +216,7 @@ vgetcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *tcache)
216 return 0; 216 return 0;
217} 217}
218 218
219long __vsyscall(3) venosys_1(void) 219static long __vsyscall(3) venosys_1(void)
220{ 220{
221 return -ENOSYS; 221 return -ENOSYS;
222} 222}
diff --git a/arch/x86/mach-visws/mpparse.c b/arch/x86/mach-visws/mpparse.c
index 2a8456a1f44f..57484e91ab90 100644
--- a/arch/x86/mach-visws/mpparse.c
+++ b/arch/x86/mach-visws/mpparse.c
@@ -11,22 +11,9 @@
11/* Have we found an MP table */ 11/* Have we found an MP table */
12int smp_found_config; 12int smp_found_config;
13 13
14/*
15 * Various Linux-internal data structures created from the
16 * MP-table.
17 */
18int apic_version [MAX_APICS];
19
20int pic_mode; 14int pic_mode;
21unsigned long mp_lapic_addr;
22
23/* Processor that is doing the boot up */
24unsigned int boot_cpu_physical_apicid = -1U;
25
26/* Bitmask of physically existing CPUs */
27physid_mask_t phys_cpu_present_map;
28 15
29unsigned int __initdata maxcpus = NR_CPUS; 16extern unsigned int __cpuinitdata maxcpus;
30 17
31/* 18/*
32 * The Visual Workstation is Intel MP compliant in the hardware 19 * The Visual Workstation is Intel MP compliant in the hardware
diff --git a/arch/x86/mach-voyager/voyager_smp.c b/arch/x86/mach-voyager/voyager_smp.c
index 394046effd78..6e2c4efce0ef 100644
--- a/arch/x86/mach-voyager/voyager_smp.c
+++ b/arch/x86/mach-voyager/voyager_smp.c
@@ -206,11 +206,6 @@ static struct irq_chip vic_chip = {
206/* used to count up as CPUs are brought on line (starts at 0) */ 206/* used to count up as CPUs are brought on line (starts at 0) */
207static int cpucount = 0; 207static int cpucount = 0;
208 208
209/* steal a page from the bottom of memory for the trampoline and
210 * squirrel its address away here. This will be in kernel virtual
211 * space */
212unsigned char *trampoline_base;
213
214/* The per cpu profile stuff - used in smp_local_timer_interrupt */ 209/* The per cpu profile stuff - used in smp_local_timer_interrupt */
215static DEFINE_PER_CPU(int, prof_multiplier) = 1; 210static DEFINE_PER_CPU(int, prof_multiplier) = 1;
216static DEFINE_PER_CPU(int, prof_old_multiplier) = 1; 211static DEFINE_PER_CPU(int, prof_old_multiplier) = 1;
@@ -427,18 +422,6 @@ void __init smp_store_cpu_info(int id)
427 identify_secondary_cpu(c); 422 identify_secondary_cpu(c);
428} 423}
429 424
430/* set up the trampoline and return the physical address of the code */
431unsigned long __init setup_trampoline(void)
432{
433 /* these two are global symbols in trampoline.S */
434 extern const __u8 trampoline_end[];
435 extern const __u8 trampoline_data[];
436
437 memcpy(trampoline_base, trampoline_data,
438 trampoline_end - trampoline_data);
439 return virt_to_phys(trampoline_base);
440}
441
442/* Routine initially called when a non-boot CPU is brought online */ 425/* Routine initially called when a non-boot CPU is brought online */
443static void __init start_secondary(void *unused) 426static void __init start_secondary(void *unused)
444{ 427{
diff --git a/arch/x86/mm/dump_pagetables.c b/arch/x86/mm/dump_pagetables.c
index 6791b8334bc6..2c24bea92c66 100644
--- a/arch/x86/mm/dump_pagetables.c
+++ b/arch/x86/mm/dump_pagetables.c
@@ -324,7 +324,7 @@ static const struct file_operations ptdump_fops = {
324 .release = single_release, 324 .release = single_release,
325}; 325};
326 326
327int pt_dump_init(void) 327static int pt_dump_init(void)
328{ 328{
329 struct dentry *pe; 329 struct dentry *pe;
330 330
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index 1ff7906a9a4d..b798e7b92b17 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -135,7 +135,7 @@ static __init void *spp_getpage(void)
135 return ptr; 135 return ptr;
136} 136}
137 137
138static __init void 138static void
139set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot) 139set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot)
140{ 140{
141 pgd_t *pgd; 141 pgd_t *pgd;
@@ -173,7 +173,7 @@ set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot)
173 new_pte = pfn_pte(phys >> PAGE_SHIFT, prot); 173 new_pte = pfn_pte(phys >> PAGE_SHIFT, prot);
174 174
175 pte = pte_offset_kernel(pmd, vaddr); 175 pte = pte_offset_kernel(pmd, vaddr);
176 if (!pte_none(*pte) && 176 if (!pte_none(*pte) && pte_val(new_pte) &&
177 pte_val(*pte) != (pte_val(new_pte) & __supported_pte_mask)) 177 pte_val(*pte) != (pte_val(new_pte) & __supported_pte_mask))
178 pte_ERROR(*pte); 178 pte_ERROR(*pte);
179 set_pte(pte, new_pte); 179 set_pte(pte, new_pte);
@@ -214,8 +214,7 @@ void __init cleanup_highmap(void)
214} 214}
215 215
216/* NOTE: this is meant to be run only at boot */ 216/* NOTE: this is meant to be run only at boot */
217void __init 217void __set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
218__set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
219{ 218{
220 unsigned long address = __fix_to_virt(idx); 219 unsigned long address = __fix_to_virt(idx);
221 220
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index 57e762c141f7..bd5e05c654dc 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -991,7 +991,7 @@ static const struct file_operations dpa_fops = {
991 .release = single_release, 991 .release = single_release,
992}; 992};
993 993
994int __init debug_pagealloc_proc_init(void) 994static int __init debug_pagealloc_proc_init(void)
995{ 995{
996 struct dentry *de; 996 struct dentry *de;
997 997
diff --git a/arch/x86/mm/srat_64.c b/arch/x86/mm/srat_64.c
index fb43d89f46f3..3890234e5b26 100644
--- a/arch/x86/mm/srat_64.c
+++ b/arch/x86/mm/srat_64.c
@@ -163,7 +163,7 @@ acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa)
163 pxm, apic_id, node); 163 pxm, apic_id, node);
164} 164}
165 165
166int update_end_of_memory(unsigned long end) {return -1;} 166static int update_end_of_memory(unsigned long end) {return -1;}
167static int hotadd_enough_memory(struct bootnode *nd) {return 1;} 167static int hotadd_enough_memory(struct bootnode *nd) {return 1;}
168#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE 168#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE
169static inline int save_add_info(void) {return 1;} 169static inline int save_add_info(void) {return 1;}