diff options
Diffstat (limited to 'arch')
194 files changed, 12216 insertions, 2972 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 | |||
| 71 | static void __init | 71 | static void __init |
| 72 | quirk_cypress(struct pci_dev *dev) | 72 | quirk_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 | ||
| 394 | static void __init | 382 | void __init |
| 395 | pcibios_claim_one_bus(struct pci_bus *b) | 383 | pcibios_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 | ||
| 189 | extern void free_reserved_mem(void *, void *); | 189 | extern void free_reserved_mem(void *, void *); |
| 190 | extern void pcibios_claim_one_bus(struct pci_bus *); | ||
| 190 | 191 | ||
| 191 | static struct resource irongate_mem = { | 192 | static 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 | ||
| 84 | void __init lh7a40x_init_board_irq (void) | 83 | void __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 |
| 472 | arm1020_processor_functions: | 472 | arm1020_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 |
| 453 | arm1020e_processor_functions: | 453 | arm1020e_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 |
| 436 | arm1022_processor_functions: | 436 | arm1022_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 |
| 431 | arm1026_processor_functions: | 431 | arm1026_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 |
| 294 | ENTRY(arm6_processor_functions) | 294 | ENTRY(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 |
| 311 | ENTRY(arm7_processor_functions) | 311 | ENTRY(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 |
| 199 | ENTRY(arm720_processor_functions) | 199 | ENTRY(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 |
| 127 | ENTRY(arm740_processor_functions) | 127 | ENTRY(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 |
| 65 | ENTRY(arm7tdmi_processor_functions) | 65 | ENTRY(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 |
| 418 | arm920_processor_functions: | 418 | arm920_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 |
| 422 | arm922_processor_functions: | 422 | arm922_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 |
| 485 | arm925_processor_functions: | 485 | arm925_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 |
| 438 | arm926_processor_functions: | 438 | arm926_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 |
| 322 | ENTRY(arm940_processor_functions) | 322 | ENTRY(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 |
| 377 | ENTRY(arm946_processor_functions) | 377 | ENTRY(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 |
| 65 | ENTRY(arm9tdmi_processor_functions) | 65 | ENTRY(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 |
| 424 | feroceon_processor_functions: | 424 | feroceon_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 |
| 217 | ENTRY(sa110_processor_functions) | 217 | ENTRY(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 |
| 232 | ENTRY(sa1100_processor_functions) | 232 | ENTRY(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 |
| 220 | ENTRY(v6_processor_functions) | 220 | ENTRY(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 |
| 206 | ENTRY(v7_processor_functions) | 206 | ENTRY(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 |
| 451 | ENTRY(xsc3_processor_functions) | 451 | ENTRY(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 |
| 528 | ENTRY(xscale_processor_functions) | 528 | ENTRY(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 | ||
| 50 | config GENERIC_TIME | ||
| 51 | bool | ||
| 52 | default n | ||
| 53 | |||
| 54 | config GENERIC_GPIO | 50 | config 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 | ||
| 227 | config BFIN_DUAL_CORE | ||
| 228 | bool | ||
| 229 | depends on (BF561) | ||
| 230 | default y | ||
| 231 | |||
| 232 | config BFIN_SINGLE_CORE | ||
| 233 | bool | ||
| 234 | depends on !BFIN_DUAL_CORE | ||
| 235 | default y | ||
| 236 | |||
| 237 | config MEM_GENERIC_BOARD | 223 | config 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 | ||
| 264 | config MEM_MT48LC32M16A2TG_75 | 250 | config 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 | ||
| 269 | source "arch/blackfin/mach-bf527/Kconfig" | 255 | source "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 | ||
| 275 | config 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 | |||
| 289 | comment "Clock/PLL Setup" | 289 | comment "Clock/PLL Setup" |
| 290 | 290 | ||
| 291 | config CLKIN_HZ | 291 | config 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 | ||
| 301 | config BFIN_KERNEL_CLOCK | 304 | config 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 | ||
| 313 | config MEM_SIZE | ||
| 314 | int "SDRAM Memory Size in MBytes" | ||
| 315 | depends on BFIN_KERNEL_CLOCK | ||
| 316 | default 64 | ||
| 317 | |||
| 318 | config 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 | |||
| 310 | config PLL_BYPASS | 332 | config 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 | ||
| 391 | config 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 | |||
| 399 | choice | ||
| 400 | prompt "DDR SDRAM Chip Type" | ||
| 401 | depends on BFIN_KERNEL_CLOCK | ||
| 402 | depends on BF54x | ||
| 403 | default MEM_MT46V32M16_5B | ||
| 404 | |||
| 405 | config MEM_MT46V32M16_6T | ||
| 406 | bool "MT46V32M16_6T" | ||
| 407 | |||
| 408 | config MEM_MT46V32M16_5B | ||
| 409 | bool "MT46V32M16_5B" | ||
| 410 | endchoice | ||
| 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 | ||
| 416 | source kernel/Kconfig.hz | 452 | source kernel/Kconfig.hz |
| 417 | 453 | ||
| 418 | comment "Memory Setup" | 454 | config GENERIC_TIME |
| 419 | 455 | bool "Generic time" | |
| 420 | config 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 | ||
| 431 | config MEM_ADD_WIDTH | 458 | config 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 | ||
| 463 | config 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 | ||
| 443 | choice | 476 | source kernel/time/Kconfig |
| 444 | prompt "DDR SDRAM Chip Type" | ||
| 445 | depends on BFIN548_EZKIT | ||
| 446 | default MEM_MT46V32M16_5B | ||
| 447 | 477 | ||
| 448 | config MEM_MT46V32M16_6T | 478 | comment "Memory Setup" |
| 449 | bool "MT46V32M16_6T" | ||
| 450 | 479 | ||
| 451 | config MEM_MT46V32M16_5B | 480 | comment "Misc" |
| 452 | bool "MT46V32M16_5B" | ||
| 453 | endchoice | ||
| 454 | 481 | ||
| 455 | config ENET_FLASH_PIN | 482 | config 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 | ||
| 465 | config 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 | |||
| 479 | choice | 492 | choice |
| 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 | ||
| 662 | source "mm/Kconfig" | 675 | source "mm/Kconfig" |
| 663 | 676 | ||
| 664 | config 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 | |||
| 672 | config BFIN_GPTIMERS | 677 | config 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 | |||
| 72 | KBUILD_CFLAGS += -mcpu=$(cpu-y)-$(rev-y) | 72 | KBUILD_CFLAGS += -mcpu=$(cpu-y)-$(rev-y) |
| 73 | KBUILD_AFLAGS += -mcpu=$(cpu-y)-$(rev-y) | 73 | KBUILD_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 | ||
| 77 | CHECKFLAGS_SILICON = $(shell echo "" | $(CPP) $(KBUILD_CFLAGS) -dD - 2>/dev/null | awk '$$2 == "__SILICON_REVISION__" { print $$3 }') | ||
| 78 | CHECKFLAGS += -D__SILICON_REVISION__=$(CHECKFLAGS_SILICON) -Dl1_text=__used__ | ||
| 79 | |||
| 75 | head-y := arch/$(ARCH)/mach-$(MACHINE)/head.o arch/$(ARCH)/kernel/init_task.o | 80 | head-y := arch/$(ARCH)/mach-$(MACHINE)/head.o arch/$(ARCH)/kernel/init_task.o |
| 76 | 81 | ||
| 77 | core-y += arch/$(ARCH)/kernel/ arch/$(ARCH)/mm/ arch/$(ARCH)/mach-common/ | 82 | core-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 | |||
| 13 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
| 14 | CONFIG_GENERIC_HARDIRQS=y | 14 | CONFIG_GENERIC_HARDIRQS=y |
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | 15 | CONFIG_GENERIC_IRQ_PROBE=y |
| 16 | # CONFIG_GENERIC_TIME is not set | 16 | CONFIG_GENERIC_TIME=y |
| 17 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
| 18 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
| 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| @@ -250,7 +250,7 @@ CONFIG_HZ=250 | |||
| 250 | # | 250 | # |
| 251 | # Memory Setup | 251 | # Memory Setup |
| 252 | # | 252 | # |
| 253 | CONFIG_MEM_SIZE=64 | 253 | CONFIG_MAX_MEM_SIZE=512 |
| 254 | CONFIG_MEM_ADD_WIDTH=10 | 254 | CONFIG_MEM_ADD_WIDTH=10 |
| 255 | CONFIG_BOOT_LOAD=0x1000 | 255 | CONFIG_BOOT_LOAD=0x1000 |
| 256 | CONFIG_BFIN_SCRATCH_REG_RETN=y | 256 | CONFIG_BFIN_SCRATCH_REG_RETN=y |
| @@ -720,8 +720,8 @@ CONFIG_BFIN_OTP=y | |||
| 720 | # | 720 | # |
| 721 | CONFIG_SERIAL_BFIN=y | 721 | CONFIG_SERIAL_BFIN=y |
| 722 | CONFIG_SERIAL_BFIN_CONSOLE=y | 722 | CONFIG_SERIAL_BFIN_CONSOLE=y |
| 723 | # CONFIG_SERIAL_BFIN_DMA is not set | 723 | CONFIG_SERIAL_BFIN_DMA=y |
| 724 | CONFIG_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 |
| 726 | CONFIG_SERIAL_BFIN_UART1=y | 726 | CONFIG_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 | |||
| 13 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
| 14 | CONFIG_GENERIC_HARDIRQS=y | 14 | CONFIG_GENERIC_HARDIRQS=y |
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | 15 | CONFIG_GENERIC_IRQ_PROBE=y |
| 16 | # CONFIG_GENERIC_TIME is not set | 16 | CONFIG_GENERIC_TIME=y |
| 17 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
| 18 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
| 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| @@ -212,7 +212,7 @@ CONFIG_HZ=250 | |||
| 212 | # | 212 | # |
| 213 | # Memory Setup | 213 | # Memory Setup |
| 214 | # | 214 | # |
| 215 | CONFIG_MEM_SIZE=32 | 215 | CONFIG_MAX_MEM_SIZE=512 |
| 216 | CONFIG_MEM_ADD_WIDTH=9 | 216 | CONFIG_MEM_ADD_WIDTH=9 |
| 217 | CONFIG_BOOT_LOAD=0x1000 | 217 | CONFIG_BOOT_LOAD=0x1000 |
| 218 | CONFIG_BFIN_SCRATCH_REG_RETN=y | 218 | CONFIG_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 | |||
| 13 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
| 14 | CONFIG_GENERIC_HARDIRQS=y | 14 | CONFIG_GENERIC_HARDIRQS=y |
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | 15 | CONFIG_GENERIC_IRQ_PROBE=y |
| 16 | # CONFIG_GENERIC_TIME is not set | 16 | CONFIG_GENERIC_TIME=y |
| 17 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
| 18 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
| 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| @@ -212,7 +212,7 @@ CONFIG_HZ=250 | |||
| 212 | # | 212 | # |
| 213 | # Memory Setup | 213 | # Memory Setup |
| 214 | # | 214 | # |
| 215 | CONFIG_MEM_SIZE=128 | 215 | CONFIG_MAX_MEM_SIZE=512 |
| 216 | CONFIG_MEM_ADD_WIDTH=11 | 216 | CONFIG_MEM_ADD_WIDTH=11 |
| 217 | CONFIG_ENET_FLASH_PIN=0 | 217 | CONFIG_ENET_FLASH_PIN=0 |
| 218 | CONFIG_BOOT_LOAD=0x1000 | 218 | CONFIG_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 | |||
| 13 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
| 14 | CONFIG_GENERIC_HARDIRQS=y | 14 | CONFIG_GENERIC_HARDIRQS=y |
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | 15 | CONFIG_GENERIC_IRQ_PROBE=y |
| 16 | # CONFIG_GENERIC_TIME is not set | 16 | CONFIG_GENERIC_TIME=y |
| 17 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
| 18 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
| 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| @@ -220,7 +220,7 @@ CONFIG_HZ=250 | |||
| 220 | # | 220 | # |
| 221 | # Memory Setup | 221 | # Memory Setup |
| 222 | # | 222 | # |
| 223 | CONFIG_MEM_SIZE=64 | 223 | CONFIG_MAX_MEM_SIZE=512 |
| 224 | CONFIG_MEM_ADD_WIDTH=10 | 224 | CONFIG_MEM_ADD_WIDTH=10 |
| 225 | CONFIG_BOOT_LOAD=0x1000 | 225 | CONFIG_BOOT_LOAD=0x1000 |
| 226 | CONFIG_BFIN_SCRATCH_REG_RETN=y | 226 | CONFIG_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 | |||
| 13 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
| 14 | CONFIG_GENERIC_HARDIRQS=y | 14 | CONFIG_GENERIC_HARDIRQS=y |
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | 15 | CONFIG_GENERIC_IRQ_PROBE=y |
| 16 | # CONFIG_GENERIC_TIME is not set | 16 | CONFIG_GENERIC_TIME=y |
| 17 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
| 18 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
| 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| @@ -285,7 +285,7 @@ CONFIG_HZ=250 | |||
| 285 | # | 285 | # |
| 286 | # Memory Setup | 286 | # Memory Setup |
| 287 | # | 287 | # |
| 288 | CONFIG_MEM_SIZE=64 | 288 | CONFIG_MAX_MEM_SIZE=512 |
| 289 | # CONFIG_MEM_MT46V32M16_6T is not set | 289 | # CONFIG_MEM_MT46V32M16_6T is not set |
| 290 | CONFIG_MEM_MT46V32M16_5B=y | 290 | CONFIG_MEM_MT46V32M16_5B=y |
| 291 | CONFIG_BOOT_LOAD=0x1000 | 291 | CONFIG_BOOT_LOAD=0x1000 |
| @@ -813,8 +813,8 @@ CONFIG_HW_CONSOLE=y | |||
| 813 | # | 813 | # |
| 814 | CONFIG_SERIAL_BFIN=y | 814 | CONFIG_SERIAL_BFIN=y |
| 815 | CONFIG_SERIAL_BFIN_CONSOLE=y | 815 | CONFIG_SERIAL_BFIN_CONSOLE=y |
| 816 | # CONFIG_SERIAL_BFIN_DMA is not set | 816 | CONFIG_SERIAL_BFIN_DMA=y |
| 817 | CONFIG_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 |
| 819 | CONFIG_SERIAL_BFIN_UART1=y | 819 | CONFIG_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 | |||
| 13 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
| 14 | CONFIG_GENERIC_HARDIRQS=y | 14 | CONFIG_GENERIC_HARDIRQS=y |
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | 15 | CONFIG_GENERIC_IRQ_PROBE=y |
| 16 | # CONFIG_GENERIC_TIME is not set | 16 | CONFIG_GENERIC_TIME=y |
| 17 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
| 18 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
| 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| @@ -256,7 +256,7 @@ CONFIG_HZ=250 | |||
| 256 | # | 256 | # |
| 257 | # Memory Setup | 257 | # Memory Setup |
| 258 | # | 258 | # |
| 259 | CONFIG_MEM_SIZE=64 | 259 | CONFIG_MAX_MEM_SIZE=512 |
| 260 | CONFIG_MEM_ADD_WIDTH=9 | 260 | CONFIG_MEM_ADD_WIDTH=9 |
| 261 | CONFIG_BOOT_LOAD=0x1000 | 261 | CONFIG_BOOT_LOAD=0x1000 |
| 262 | CONFIG_BFIN_SCRATCH_REG_RETN=y | 262 | CONFIG_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 | ||
| 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | ||
| 9 | CONFIG_BLACKFIN=y | ||
| 10 | CONFIG_ZONE_DMA=y | ||
| 11 | CONFIG_SEMAPHORE_SLEEPERS=y | ||
| 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 13 | CONFIG_GENERIC_HWEIGHT=y | ||
| 14 | CONFIG_GENERIC_HARDIRQS=y | ||
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | ||
| 16 | CONFIG_GENERIC_TIME=y | ||
| 17 | CONFIG_GENERIC_GPIO=y | ||
| 18 | CONFIG_FORCE_MAX_ZONEORDER=14 | ||
| 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 21 | |||
| 22 | # | ||
| 23 | # Code maturity level options | ||
| 24 | # | ||
| 25 | CONFIG_EXPERIMENTAL=y | ||
| 26 | CONFIG_BROKEN_ON_SMP=y | ||
| 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 28 | |||
| 29 | # | ||
| 30 | # General setup | ||
| 31 | # | ||
| 32 | CONFIG_LOCALVERSION="" | ||
| 33 | CONFIG_LOCALVERSION_AUTO=y | ||
| 34 | CONFIG_SYSVIPC=y | ||
| 35 | # CONFIG_IPC_NS is not set | ||
| 36 | CONFIG_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 | ||
| 43 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 44 | CONFIG_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 | ||
| 48 | CONFIG_SYSCTL=y | ||
| 49 | CONFIG_EMBEDDED=y | ||
| 50 | # CONFIG_UID16 is not set | ||
| 51 | CONFIG_SYSCTL_SYSCALL=y | ||
| 52 | CONFIG_KALLSYMS=y | ||
| 53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 54 | # CONFIG_HOTPLUG is not set | ||
| 55 | CONFIG_PRINTK=y | ||
| 56 | CONFIG_BUG=y | ||
| 57 | CONFIG_ELF_CORE=y | ||
| 58 | CONFIG_BASE_FULL=y | ||
| 59 | CONFIG_FUTEX=y | ||
| 60 | CONFIG_ANON_INODES=y | ||
| 61 | CONFIG_EPOLL=y | ||
| 62 | CONFIG_SIGNALFD=y | ||
| 63 | CONFIG_EVENTFD=y | ||
| 64 | CONFIG_VM_EVENT_COUNTERS=y | ||
| 65 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | ||
| 66 | # CONFIG_NP2 is not set | ||
| 67 | CONFIG_SLAB=y | ||
| 68 | # CONFIG_SLUB is not set | ||
| 69 | # CONFIG_SLOB is not set | ||
| 70 | CONFIG_RT_MUTEXES=y | ||
| 71 | CONFIG_TINY_SHMEM=y | ||
| 72 | CONFIG_BASE_SMALL=0 | ||
| 73 | |||
| 74 | # | ||
| 75 | # Loadable module support | ||
| 76 | # | ||
| 77 | CONFIG_MODULES=y | ||
| 78 | CONFIG_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 | ||
| 82 | CONFIG_KMOD=y | ||
| 83 | |||
| 84 | # | ||
| 85 | # Block layer | ||
| 86 | # | ||
| 87 | CONFIG_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 | # | ||
| 95 | CONFIG_IOSCHED_NOOP=y | ||
| 96 | # CONFIG_IOSCHED_AS is not set | ||
| 97 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 98 | CONFIG_IOSCHED_CFQ=y | ||
| 99 | # CONFIG_DEFAULT_AS is not set | ||
| 100 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 101 | # CONFIG_DEFAULT_CFQ is not set | ||
| 102 | CONFIG_DEFAULT_NOOP=y | ||
| 103 | CONFIG_DEFAULT_IOSCHED="noop" | ||
| 104 | CONFIG_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=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 | ||
| 136 | CONFIG_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 | ||
| 141 | CONFIG_BF53x=y | ||
| 142 | CONFIG_BFIN_SINGLE_CORE=y | ||
| 143 | CONFIG_MEM_MT48LC16M16A2TG_75=y | ||
| 144 | # CONFIG_BFIN533_EZKIT is not set | ||
| 145 | # CONFIG_BFIN533_STAMP is not set | ||
| 146 | CONFIG_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 | # | ||
| 161 | CONFIG_UART_ERROR=7 | ||
| 162 | CONFIG_SPORT0_ERROR=7 | ||
| 163 | CONFIG_SPI_ERROR=7 | ||
| 164 | CONFIG_SPORT1_ERROR=7 | ||
| 165 | CONFIG_PPI_ERROR=7 | ||
| 166 | CONFIG_DMA_ERROR=7 | ||
| 167 | CONFIG_PLLWAKE_ERROR=7 | ||
| 168 | CONFIG_RTC_ERROR=8 | ||
| 169 | CONFIG_DMA0_PPI=8 | ||
| 170 | CONFIG_DMA1_SPORT0RX=9 | ||
| 171 | CONFIG_DMA2_SPORT0TX=9 | ||
| 172 | CONFIG_DMA3_SPORT1RX=9 | ||
| 173 | CONFIG_DMA4_SPORT1TX=9 | ||
| 174 | CONFIG_DMA5_SPI=10 | ||
| 175 | CONFIG_DMA6_UARTRX=10 | ||
| 176 | CONFIG_DMA7_UARTTX=10 | ||
| 177 | CONFIG_TIMER0=11 | ||
| 178 | CONFIG_TIMER1=11 | ||
| 179 | CONFIG_TIMER2=11 | ||
| 180 | CONFIG_PFA=12 | ||
| 181 | CONFIG_PFB=12 | ||
| 182 | CONFIG_MEMDMA0=13 | ||
| 183 | CONFIG_MEMDMA1=13 | ||
| 184 | CONFIG_WDTIMER=13 | ||
| 185 | |||
| 186 | # | ||
| 187 | # Board customizations | ||
| 188 | # | ||
| 189 | # CONFIG_CMDLINE_BOOL is not set | ||
| 190 | |||
| 191 | # | ||
| 192 | # Clock/PLL Setup | ||
| 193 | # | ||
| 194 | CONFIG_CLKIN_HZ=25000000 | ||
| 195 | # CONFIG_BFIN_KERNEL_CLOCK is not set | ||
| 196 | CONFIG_MAX_VCO_HZ=750000000 | ||
| 197 | CONFIG_MIN_VCO_HZ=50000000 | ||
| 198 | CONFIG_MAX_SCLK_HZ=133333333 | ||
| 199 | CONFIG_MIN_SCLK_HZ=27000000 | ||
| 200 | |||
| 201 | # | ||
| 202 | # Kernel Timer/Scheduler | ||
| 203 | # | ||
| 204 | # CONFIG_HZ_100 is not set | ||
| 205 | CONFIG_HZ_250=y | ||
| 206 | # CONFIG_HZ_300 is not set | ||
| 207 | # CONFIG_HZ_1000 is not set | ||
| 208 | CONFIG_HZ=250 | ||
| 209 | |||
| 210 | # | ||
| 211 | # Memory Setup | ||
| 212 | # | ||
| 213 | CONFIG_MAX_MEM_SIZE=32 | ||
| 214 | CONFIG_MEM_ADD_WIDTH=9 | ||
| 215 | CONFIG_BOOT_LOAD=0x1000 | ||
| 216 | CONFIG_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 | # | ||
| 227 | CONFIG_I_ENTRY_L1=y | ||
| 228 | CONFIG_EXCPT_IRQ_SYSC_L1=y | ||
| 229 | CONFIG_DO_IRQ_L1=y | ||
| 230 | CONFIG_CORE_TIMER_IRQ_L1=y | ||
| 231 | CONFIG_IDLE_L1=y | ||
| 232 | CONFIG_SCHEDULE_L1=y | ||
| 233 | CONFIG_ARITHMETIC_OPS_L1=y | ||
| 234 | CONFIG_ACCESS_OK_L1=y | ||
| 235 | CONFIG_MEMSET_L1=y | ||
| 236 | CONFIG_MEMCPY_L1=y | ||
| 237 | CONFIG_SYS_BFIN_SPINLOCK_L1=y | ||
| 238 | CONFIG_IP_CHECKSUM_L1=y | ||
| 239 | CONFIG_CACHELINE_ALIGNED_L1=y | ||
| 240 | CONFIG_SYSCALL_TAB_L1=y | ||
| 241 | CONFIG_CPLB_SWITCH_TAB_L1=y | ||
| 242 | CONFIG_RAMKERNEL=y | ||
| 243 | # CONFIG_ROMKERNEL is not set | ||
| 244 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 245 | CONFIG_FLATMEM_MANUAL=y | ||
| 246 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 247 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 248 | CONFIG_FLATMEM=y | ||
| 249 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 250 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 251 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 252 | # CONFIG_RESOURCES_64BIT is not set | ||
| 253 | CONFIG_ZONE_DMA_FLAG=1 | ||
| 254 | CONFIG_LARGE_ALLOCS=y | ||
| 255 | # CONFIG_BFIN_GPTIMERS is not set | ||
| 256 | CONFIG_BFIN_DMA_5XX=y | ||
| 257 | # CONFIG_DMA_UNCACHED_2M is not set | ||
| 258 | CONFIG_DMA_UNCACHED_1M=y | ||
| 259 | # CONFIG_DMA_UNCACHED_NONE is not set | ||
| 260 | |||
| 261 | # | ||
| 262 | # Cache Support | ||
| 263 | # | ||
| 264 | CONFIG_BFIN_ICACHE=y | ||
| 265 | CONFIG_BFIN_DCACHE=y | ||
| 266 | # CONFIG_BFIN_DCACHE_BANKA is not set | ||
| 267 | # CONFIG_BFIN_ICACHE_LOCK is not set | ||
| 268 | CONFIG_BFIN_WB=y | ||
| 269 | # CONFIG_BFIN_WT is not set | ||
| 270 | CONFIG_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 | # | ||
| 280 | CONFIG_C_AMCKEN=y | ||
| 281 | CONFIG_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 | ||
| 286 | CONFIG_C_AMBEN_ALL=y | ||
| 287 | |||
| 288 | # | ||
| 289 | # EBIU_AMBCTL Control | ||
| 290 | # | ||
| 291 | CONFIG_BANK_0=0x7BB0 | ||
| 292 | CONFIG_BANK_1=0x7BB0 | ||
| 293 | CONFIG_BANK_2=0x7BB0 | ||
| 294 | CONFIG_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 | # | ||
| 309 | CONFIG_BINFMT_ELF_FDPIC=y | ||
| 310 | CONFIG_BINFMT_FLAT=y | ||
| 311 | CONFIG_BINFMT_ZFLAT=y | ||
| 312 | CONFIG_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 | # | ||
| 329 | CONFIG_NET=y | ||
| 330 | |||
| 331 | # | ||
| 332 | # Networking options | ||
| 333 | # | ||
| 334 | CONFIG_PACKET=y | ||
| 335 | # CONFIG_PACKET_MMAP is not set | ||
| 336 | CONFIG_UNIX=y | ||
| 337 | CONFIG_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 | ||
| 342 | CONFIG_INET=y | ||
| 343 | # CONFIG_IP_MULTICAST is not set | ||
| 344 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 345 | CONFIG_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 | ||
| 350 | CONFIG_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 | ||
| 356 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 357 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 358 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 359 | CONFIG_INET_DIAG=y | ||
| 360 | CONFIG_INET_TCP_DIAG=y | ||
| 361 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 362 | CONFIG_TCP_CONG_CUBIC=y | ||
| 363 | CONFIG_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 | # | ||
| 416 | CONFIG_STANDALONE=y | ||
| 417 | CONFIG_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 | ||
| 424 | CONFIG_MTD=y | ||
| 425 | # CONFIG_MTD_DEBUG is not set | ||
| 426 | # CONFIG_MTD_CONCAT is not set | ||
| 427 | CONFIG_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 | # | ||
| 434 | CONFIG_MTD_CHAR=y | ||
| 435 | CONFIG_MTD_BLKDEVS=y | ||
| 436 | CONFIG_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 | ||
| 448 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 449 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 450 | CONFIG_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 | ||
| 454 | CONFIG_MTD_CFI_I1=y | ||
| 455 | CONFIG_MTD_CFI_I2=y | ||
| 456 | # CONFIG_MTD_CFI_I4 is not set | ||
| 457 | # CONFIG_MTD_CFI_I8 is not set | ||
| 458 | CONFIG_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 | ||
| 466 | CONFIG_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 | ||
| 507 | CONFIG_BLK_DEV_RAM=y | ||
| 508 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 509 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
| 510 | CONFIG_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 | # | ||
| 535 | CONFIG_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 | # | ||
| 545 | CONFIG_NET_ETHERNET=y | ||
| 546 | CONFIG_MII=y | ||
| 547 | CONFIG_SMC91X=y | ||
| 548 | # CONFIG_SMSC911X is not set | ||
| 549 | # CONFIG_DM9000 is not set | ||
| 550 | CONFIG_NETDEV_1000=y | ||
| 551 | # CONFIG_AX88180 is not set | ||
| 552 | CONFIG_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 | ||
| 597 | CONFIG_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 | # | ||
| 610 | CONFIG_SERIAL_BFIN=y | ||
| 611 | CONFIG_SERIAL_BFIN_CONSOLE=y | ||
| 612 | CONFIG_SERIAL_BFIN_DMA=y | ||
| 613 | # CONFIG_SERIAL_BFIN_PIO is not set | ||
| 614 | CONFIG_SERIAL_BFIN_UART0=y | ||
| 615 | # CONFIG_BFIN_UART0_CTSRTS is not set | ||
| 616 | CONFIG_SERIAL_CORE=y | ||
| 617 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 618 | # CONFIG_SERIAL_BFIN_SPORT is not set | ||
| 619 | CONFIG_UNIX98_PTYS=y | ||
| 620 | CONFIG_LEGACY_PTYS=y | ||
| 621 | CONFIG_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 | ||
| 654 | CONFIG_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 | ||
| 675 | CONFIG_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 | # | ||
| 697 | CONFIG_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 | # | ||
| 763 | CONFIG_EXT2_FS=y | ||
| 764 | CONFIG_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 | ||
| 769 | CONFIG_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 | ||
| 778 | CONFIG_INOTIFY=y | ||
| 779 | CONFIG_INOTIFY_USER=y | ||
| 780 | # CONFIG_QUOTA is not set | ||
| 781 | CONFIG_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 | # | ||
| 802 | CONFIG_PROC_FS=y | ||
| 803 | CONFIG_PROC_SYSCTL=y | ||
| 804 | CONFIG_SYSFS=y | ||
| 805 | # CONFIG_TMPFS is not set | ||
| 806 | # CONFIG_HUGETLB_PAGE is not set | ||
| 807 | CONFIG_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 | ||
| 845 | CONFIG_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 | ||
| 866 | CONFIG_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 | ||
| 874 | CONFIG_DEBUG_HUNT_FOR_ZERO=y | ||
| 875 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y | ||
| 876 | CONFIG_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 | ||
| 879 | CONFIG_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 | ||
| 883 | CONFIG_CPLB_INFO=y | ||
| 884 | CONFIG_ACCESS_CHECK=y | ||
| 885 | |||
| 886 | # | ||
| 887 | # Security options | ||
| 888 | # | ||
| 889 | # CONFIG_KEYS is not set | ||
| 890 | CONFIG_SECURITY=y | ||
| 891 | # CONFIG_SECURITY_NETWORK is not set | ||
| 892 | CONFIG_SECURITY_CAPABILITIES=y | ||
| 893 | |||
| 894 | # | ||
| 895 | # Cryptographic options | ||
| 896 | # | ||
| 897 | # CONFIG_CRYPTO is not set | ||
| 898 | |||
| 899 | # | ||
| 900 | # Library routines | ||
| 901 | # | ||
| 902 | CONFIG_BITREVERSE=y | ||
| 903 | CONFIG_CRC_CCITT=m | ||
| 904 | # CONFIG_CRC16 is not set | ||
| 905 | # CONFIG_CRC_ITU_T is not set | ||
| 906 | CONFIG_CRC32=y | ||
| 907 | # CONFIG_LIBCRC32C is not set | ||
| 908 | CONFIG_ZLIB_INFLATE=y | ||
| 909 | CONFIG_PLIST=y | ||
| 910 | CONFIG_HAS_IOMEM=y | ||
| 911 | CONFIG_HAS_IOPORT=y | ||
| 912 | CONFIG_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 | ||
| 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | ||
| 9 | CONFIG_BLACKFIN=y | ||
| 10 | CONFIG_ZONE_DMA=y | ||
| 11 | CONFIG_SEMAPHORE_SLEEPERS=y | ||
| 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 13 | CONFIG_GENERIC_HWEIGHT=y | ||
| 14 | CONFIG_GENERIC_HARDIRQS=y | ||
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | ||
| 16 | CONFIG_GENERIC_TIME=y | ||
| 17 | CONFIG_GENERIC_GPIO=y | ||
| 18 | CONFIG_FORCE_MAX_ZONEORDER=14 | ||
| 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 21 | |||
| 22 | # | ||
| 23 | # Code maturity level options | ||
| 24 | # | ||
| 25 | CONFIG_EXPERIMENTAL=y | ||
| 26 | CONFIG_BROKEN_ON_SMP=y | ||
| 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 28 | |||
| 29 | # | ||
| 30 | # General setup | ||
| 31 | # | ||
| 32 | CONFIG_LOCALVERSION="" | ||
| 33 | CONFIG_LOCALVERSION_AUTO=y | ||
| 34 | CONFIG_SYSVIPC=y | ||
| 35 | # CONFIG_IPC_NS is not set | ||
| 36 | CONFIG_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 | ||
| 43 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 44 | CONFIG_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 | ||
| 48 | CONFIG_SYSCTL=y | ||
| 49 | CONFIG_EMBEDDED=y | ||
| 50 | # CONFIG_UID16 is not set | ||
| 51 | CONFIG_SYSCTL_SYSCALL=y | ||
| 52 | CONFIG_KALLSYMS=y | ||
| 53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 54 | # CONFIG_HOTPLUG is not set | ||
| 55 | CONFIG_PRINTK=y | ||
| 56 | CONFIG_BUG=y | ||
| 57 | CONFIG_ELF_CORE=y | ||
| 58 | CONFIG_BASE_FULL=y | ||
| 59 | CONFIG_FUTEX=y | ||
| 60 | CONFIG_ANON_INODES=y | ||
| 61 | CONFIG_EPOLL=y | ||
| 62 | CONFIG_SIGNALFD=y | ||
| 63 | CONFIG_EVENTFD=y | ||
| 64 | CONFIG_VM_EVENT_COUNTERS=y | ||
| 65 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | ||
| 66 | # CONFIG_NP2 is not set | ||
| 67 | CONFIG_SLAB=y | ||
| 68 | # CONFIG_SLUB is not set | ||
| 69 | # CONFIG_SLOB is not set | ||
| 70 | CONFIG_RT_MUTEXES=y | ||
| 71 | CONFIG_TINY_SHMEM=y | ||
| 72 | CONFIG_BASE_SMALL=0 | ||
| 73 | |||
| 74 | # | ||
| 75 | # Loadable module support | ||
| 76 | # | ||
| 77 | CONFIG_MODULES=y | ||
| 78 | CONFIG_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 | ||
| 82 | CONFIG_KMOD=y | ||
| 83 | |||
| 84 | # | ||
| 85 | # Block layer | ||
| 86 | # | ||
| 87 | CONFIG_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 | # | ||
| 95 | CONFIG_IOSCHED_NOOP=y | ||
| 96 | # CONFIG_IOSCHED_AS is not set | ||
| 97 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 98 | CONFIG_IOSCHED_CFQ=y | ||
| 99 | # CONFIG_DEFAULT_AS is not set | ||
| 100 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 101 | # CONFIG_DEFAULT_CFQ is not set | ||
| 102 | CONFIG_DEFAULT_NOOP=y | ||
| 103 | CONFIG_DEFAULT_IOSCHED="noop" | ||
| 104 | CONFIG_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 | ||
| 126 | CONFIG_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 | ||
| 135 | CONFIG_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 | ||
| 141 | CONFIG_BF53x=y | ||
| 142 | CONFIG_BFIN_SINGLE_CORE=y | ||
| 143 | CONFIG_MEM_MT48LC16M16A2TG_75=y | ||
| 144 | CONFIG_IRQ_PLL_WAKEUP=7 | ||
| 145 | CONFIG_IRQ_RTC=8 | ||
| 146 | CONFIG_IRQ_PPI=8 | ||
| 147 | CONFIG_IRQ_SPORT0_RX=9 | ||
| 148 | CONFIG_IRQ_SPORT0_TX=9 | ||
| 149 | CONFIG_IRQ_SPORT1_RX=9 | ||
| 150 | CONFIG_IRQ_SPORT1_TX=9 | ||
| 151 | CONFIG_IRQ_TWI=10 | ||
| 152 | CONFIG_IRQ_SPI=10 | ||
| 153 | CONFIG_IRQ_UART0_RX=10 | ||
| 154 | CONFIG_IRQ_UART0_TX=10 | ||
| 155 | CONFIG_IRQ_UART1_RX=10 | ||
| 156 | CONFIG_IRQ_UART1_TX=10 | ||
| 157 | CONFIG_IRQ_MAC_RX=11 | ||
| 158 | CONFIG_IRQ_MAC_TX=11 | ||
| 159 | CONFIG_IRQ_TMR0=12 | ||
| 160 | CONFIG_IRQ_TMR1=12 | ||
| 161 | CONFIG_IRQ_TMR2=12 | ||
| 162 | CONFIG_IRQ_TMR3=12 | ||
| 163 | CONFIG_IRQ_TMR4=12 | ||
| 164 | CONFIG_IRQ_TMR5=12 | ||
| 165 | CONFIG_IRQ_TMR6=12 | ||
| 166 | CONFIG_IRQ_TMR7=12 | ||
| 167 | CONFIG_IRQ_PORTG_INTB=12 | ||
| 168 | CONFIG_IRQ_MEM_DMA0=13 | ||
| 169 | CONFIG_IRQ_MEM_DMA1=13 | ||
| 170 | CONFIG_IRQ_WATCH=13 | ||
| 171 | # CONFIG_BFIN537_STAMP is not set | ||
| 172 | CONFIG_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 | # | ||
| 188 | CONFIG_IRQ_DMA_ERROR=7 | ||
| 189 | CONFIG_IRQ_ERROR=7 | ||
| 190 | CONFIG_IRQ_CAN_RX=11 | ||
| 191 | CONFIG_IRQ_CAN_TX=11 | ||
| 192 | CONFIG_IRQ_PROG_INTA=12 | ||
| 193 | |||
| 194 | # | ||
| 195 | # Board customizations | ||
| 196 | # | ||
| 197 | # CONFIG_CMDLINE_BOOL is not set | ||
| 198 | |||
| 199 | # | ||
| 200 | # Clock/PLL Setup | ||
| 201 | # | ||
| 202 | CONFIG_CLKIN_HZ=25000000 | ||
| 203 | # CONFIG_BFIN_KERNEL_CLOCK is not set | ||
| 204 | CONFIG_MAX_VCO_HZ=600000000 | ||
| 205 | CONFIG_MIN_VCO_HZ=50000000 | ||
| 206 | CONFIG_MAX_SCLK_HZ=133333333 | ||
| 207 | CONFIG_MIN_SCLK_HZ=27000000 | ||
| 208 | |||
| 209 | # | ||
| 210 | # Kernel Timer/Scheduler | ||
| 211 | # | ||
| 212 | # CONFIG_HZ_100 is not set | ||
| 213 | CONFIG_HZ_250=y | ||
| 214 | # CONFIG_HZ_300 is not set | ||
| 215 | # CONFIG_HZ_1000 is not set | ||
| 216 | CONFIG_HZ=250 | ||
| 217 | |||
| 218 | # | ||
| 219 | # Memory Setup | ||
| 220 | # | ||
| 221 | CONFIG_MAX_MEM_SIZE=32 | ||
| 222 | CONFIG_MEM_ADD_WIDTH=9 | ||
| 223 | CONFIG_BOOT_LOAD=0x1000 | ||
| 224 | CONFIG_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 | # | ||
| 235 | CONFIG_I_ENTRY_L1=y | ||
| 236 | CONFIG_EXCPT_IRQ_SYSC_L1=y | ||
| 237 | CONFIG_DO_IRQ_L1=y | ||
| 238 | CONFIG_CORE_TIMER_IRQ_L1=y | ||
| 239 | CONFIG_IDLE_L1=y | ||
| 240 | CONFIG_SCHEDULE_L1=y | ||
| 241 | CONFIG_ARITHMETIC_OPS_L1=y | ||
| 242 | CONFIG_ACCESS_OK_L1=y | ||
| 243 | CONFIG_MEMSET_L1=y | ||
| 244 | CONFIG_MEMCPY_L1=y | ||
| 245 | CONFIG_SYS_BFIN_SPINLOCK_L1=y | ||
| 246 | CONFIG_IP_CHECKSUM_L1=y | ||
| 247 | CONFIG_CACHELINE_ALIGNED_L1=y | ||
| 248 | CONFIG_SYSCALL_TAB_L1=y | ||
| 249 | CONFIG_CPLB_SWITCH_TAB_L1=y | ||
| 250 | CONFIG_RAMKERNEL=y | ||
| 251 | # CONFIG_ROMKERNEL is not set | ||
| 252 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 253 | CONFIG_FLATMEM_MANUAL=y | ||
| 254 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 255 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 256 | CONFIG_FLATMEM=y | ||
| 257 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 258 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 259 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 260 | # CONFIG_RESOURCES_64BIT is not set | ||
| 261 | CONFIG_ZONE_DMA_FLAG=1 | ||
| 262 | CONFIG_LARGE_ALLOCS=y | ||
| 263 | # CONFIG_BFIN_GPTIMERS is not set | ||
| 264 | CONFIG_BFIN_DMA_5XX=y | ||
| 265 | # CONFIG_DMA_UNCACHED_2M is not set | ||
| 266 | CONFIG_DMA_UNCACHED_1M=y | ||
| 267 | # CONFIG_DMA_UNCACHED_NONE is not set | ||
| 268 | |||
| 269 | # | ||
| 270 | # Cache Support | ||
| 271 | # | ||
| 272 | CONFIG_BFIN_ICACHE=y | ||
| 273 | CONFIG_BFIN_DCACHE=y | ||
| 274 | # CONFIG_BFIN_DCACHE_BANKA is not set | ||
| 275 | # CONFIG_BFIN_ICACHE_LOCK is not set | ||
| 276 | CONFIG_BFIN_WB=y | ||
| 277 | # CONFIG_BFIN_WT is not set | ||
| 278 | CONFIG_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 | # | ||
| 288 | CONFIG_C_AMCKEN=y | ||
| 289 | CONFIG_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 | ||
| 294 | CONFIG_C_AMBEN_ALL=y | ||
| 295 | |||
| 296 | # | ||
| 297 | # EBIU_AMBCTL Control | ||
| 298 | # | ||
| 299 | CONFIG_BANK_0=0x7BB0 | ||
| 300 | CONFIG_BANK_1=0x7BB0 | ||
| 301 | CONFIG_BANK_2=0x7BB0 | ||
| 302 | CONFIG_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 | # | ||
| 317 | CONFIG_BINFMT_ELF_FDPIC=y | ||
| 318 | CONFIG_BINFMT_FLAT=y | ||
| 319 | CONFIG_BINFMT_ZFLAT=y | ||
| 320 | CONFIG_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 | # | ||
| 337 | CONFIG_NET=y | ||
| 338 | |||
| 339 | # | ||
| 340 | # Networking options | ||
| 341 | # | ||
| 342 | CONFIG_PACKET=y | ||
| 343 | # CONFIG_PACKET_MMAP is not set | ||
| 344 | CONFIG_UNIX=y | ||
| 345 | CONFIG_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 | ||
| 350 | CONFIG_INET=y | ||
| 351 | # CONFIG_IP_MULTICAST is not set | ||
| 352 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 353 | CONFIG_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 | ||
| 358 | CONFIG_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 | ||
| 364 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 365 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 366 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 367 | CONFIG_INET_DIAG=y | ||
| 368 | CONFIG_INET_TCP_DIAG=y | ||
| 369 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 370 | CONFIG_TCP_CONG_CUBIC=y | ||
| 371 | CONFIG_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 | # | ||
| 424 | CONFIG_STANDALONE=y | ||
| 425 | CONFIG_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 | ||
| 432 | CONFIG_MTD=y | ||
| 433 | # CONFIG_MTD_DEBUG is not set | ||
| 434 | # CONFIG_MTD_CONCAT is not set | ||
| 435 | CONFIG_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 | # | ||
| 442 | CONFIG_MTD_CHAR=y | ||
| 443 | CONFIG_MTD_BLKDEVS=y | ||
| 444 | CONFIG_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 | ||
| 456 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 457 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 458 | CONFIG_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 | ||
| 462 | CONFIG_MTD_CFI_I1=y | ||
| 463 | CONFIG_MTD_CFI_I2=y | ||
| 464 | # CONFIG_MTD_CFI_I4 is not set | ||
| 465 | # CONFIG_MTD_CFI_I8 is not set | ||
| 466 | CONFIG_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 | ||
| 474 | CONFIG_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 | ||
| 515 | CONFIG_BLK_DEV_RAM=y | ||
| 516 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 517 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
| 518 | CONFIG_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 | # | ||
| 543 | CONFIG_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=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 | # | ||
| 566 | CONFIG_NET_ETHERNET=y | ||
| 567 | CONFIG_MII=y | ||
| 568 | # CONFIG_SMC91X is not set | ||
| 569 | CONFIG_BFIN_MAC=y | ||
| 570 | CONFIG_BFIN_MAC_USE_L1=y | ||
| 571 | CONFIG_BFIN_TX_DESC_NUM=10 | ||
| 572 | CONFIG_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 | ||
| 576 | CONFIG_NETDEV_1000=y | ||
| 577 | # CONFIG_AX88180 is not set | ||
| 578 | CONFIG_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 | ||
| 623 | CONFIG_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 | # | ||
| 636 | CONFIG_SERIAL_BFIN=y | ||
| 637 | CONFIG_SERIAL_BFIN_CONSOLE=y | ||
| 638 | CONFIG_SERIAL_BFIN_DMA=y | ||
| 639 | # CONFIG_SERIAL_BFIN_PIO is not set | ||
| 640 | CONFIG_SERIAL_BFIN_UART0=y | ||
| 641 | # CONFIG_BFIN_UART0_CTSRTS is not set | ||
| 642 | CONFIG_SERIAL_BFIN_UART1=y | ||
| 643 | # CONFIG_BFIN_UART1_CTSRTS is not set | ||
| 644 | CONFIG_SERIAL_CORE=y | ||
| 645 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 646 | # CONFIG_SERIAL_BFIN_SPORT is not set | ||
| 647 | CONFIG_UNIX98_PTYS=y | ||
| 648 | CONFIG_LEGACY_PTYS=y | ||
| 649 | CONFIG_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 | ||
| 682 | CONFIG_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 | ||
| 703 | CONFIG_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 | # | ||
| 725 | CONFIG_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 | # | ||
| 791 | CONFIG_EXT2_FS=y | ||
| 792 | CONFIG_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 | ||
| 797 | CONFIG_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 | ||
| 806 | CONFIG_INOTIFY=y | ||
| 807 | CONFIG_INOTIFY_USER=y | ||
| 808 | # CONFIG_QUOTA is not set | ||
| 809 | CONFIG_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 | # | ||
| 830 | CONFIG_PROC_FS=y | ||
| 831 | CONFIG_PROC_SYSCTL=y | ||
| 832 | CONFIG_SYSFS=y | ||
| 833 | # CONFIG_TMPFS is not set | ||
| 834 | # CONFIG_HUGETLB_PAGE is not set | ||
| 835 | CONFIG_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 | ||
| 873 | CONFIG_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 | ||
| 894 | CONFIG_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 | ||
| 903 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y | ||
| 904 | CONFIG_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 | ||
| 907 | CONFIG_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 | ||
| 911 | CONFIG_CPLB_INFO=y | ||
| 912 | CONFIG_ACCESS_CHECK=y | ||
| 913 | |||
| 914 | # | ||
| 915 | # Security options | ||
| 916 | # | ||
| 917 | # CONFIG_KEYS is not set | ||
| 918 | CONFIG_SECURITY=y | ||
| 919 | # CONFIG_SECURITY_NETWORK is not set | ||
| 920 | CONFIG_SECURITY_CAPABILITIES=y | ||
| 921 | |||
| 922 | # | ||
| 923 | # Cryptographic options | ||
| 924 | # | ||
| 925 | # CONFIG_CRYPTO is not set | ||
| 926 | |||
| 927 | # | ||
| 928 | # Library routines | ||
| 929 | # | ||
| 930 | CONFIG_BITREVERSE=y | ||
| 931 | CONFIG_CRC_CCITT=m | ||
| 932 | # CONFIG_CRC16 is not set | ||
| 933 | # CONFIG_CRC_ITU_T is not set | ||
| 934 | CONFIG_CRC32=y | ||
| 935 | # CONFIG_LIBCRC32C is not set | ||
| 936 | CONFIG_ZLIB_INFLATE=y | ||
| 937 | CONFIG_PLIST=y | ||
| 938 | CONFIG_HAS_IOMEM=y | ||
| 939 | CONFIG_HAS_IOPORT=y | ||
| 940 | CONFIG_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 | ||
| 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | ||
| 9 | CONFIG_BLACKFIN=y | ||
| 10 | CONFIG_ZONE_DMA=y | ||
| 11 | CONFIG_SEMAPHORE_SLEEPERS=y | ||
| 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 13 | CONFIG_GENERIC_HWEIGHT=y | ||
| 14 | CONFIG_GENERIC_HARDIRQS=y | ||
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | ||
| 16 | CONFIG_GENERIC_TIME=y | ||
| 17 | CONFIG_GENERIC_GPIO=y | ||
| 18 | CONFIG_FORCE_MAX_ZONEORDER=14 | ||
| 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 21 | |||
| 22 | # | ||
| 23 | # Code maturity level options | ||
| 24 | # | ||
| 25 | CONFIG_EXPERIMENTAL=y | ||
| 26 | CONFIG_BROKEN_ON_SMP=y | ||
| 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 28 | |||
| 29 | # | ||
| 30 | # General setup | ||
| 31 | # | ||
| 32 | CONFIG_LOCALVERSION="" | ||
| 33 | CONFIG_LOCALVERSION_AUTO=y | ||
| 34 | CONFIG_SYSVIPC=y | ||
| 35 | # CONFIG_IPC_NS is not set | ||
| 36 | CONFIG_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 | ||
| 43 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 44 | CONFIG_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 | ||
| 48 | CONFIG_SYSCTL=y | ||
| 49 | CONFIG_EMBEDDED=y | ||
| 50 | # CONFIG_UID16 is not set | ||
| 51 | CONFIG_SYSCTL_SYSCALL=y | ||
| 52 | CONFIG_KALLSYMS=y | ||
| 53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 54 | # CONFIG_HOTPLUG is not set | ||
| 55 | CONFIG_PRINTK=y | ||
| 56 | CONFIG_BUG=y | ||
| 57 | CONFIG_ELF_CORE=y | ||
| 58 | CONFIG_BASE_FULL=y | ||
| 59 | CONFIG_FUTEX=y | ||
| 60 | CONFIG_ANON_INODES=y | ||
| 61 | CONFIG_EPOLL=y | ||
| 62 | CONFIG_SIGNALFD=y | ||
| 63 | CONFIG_EVENTFD=y | ||
| 64 | CONFIG_VM_EVENT_COUNTERS=y | ||
| 65 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | ||
| 66 | # CONFIG_NP2 is not set | ||
| 67 | CONFIG_SLAB=y | ||
| 68 | # CONFIG_SLUB is not set | ||
| 69 | # CONFIG_SLOB is not set | ||
| 70 | CONFIG_RT_MUTEXES=y | ||
| 71 | CONFIG_TINY_SHMEM=y | ||
| 72 | CONFIG_BASE_SMALL=0 | ||
| 73 | |||
| 74 | # | ||
| 75 | # Loadable module support | ||
| 76 | # | ||
| 77 | CONFIG_MODULES=y | ||
| 78 | CONFIG_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 | ||
| 82 | CONFIG_KMOD=y | ||
| 83 | |||
| 84 | # | ||
| 85 | # Block layer | ||
| 86 | # | ||
| 87 | CONFIG_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 | # | ||
| 95 | CONFIG_IOSCHED_NOOP=y | ||
| 96 | # CONFIG_IOSCHED_AS is not set | ||
| 97 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 98 | CONFIG_IOSCHED_CFQ=y | ||
| 99 | # CONFIG_DEFAULT_AS is not set | ||
| 100 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 101 | # CONFIG_DEFAULT_CFQ is not set | ||
| 102 | CONFIG_DEFAULT_NOOP=y | ||
| 103 | CONFIG_DEFAULT_IOSCHED="noop" | ||
| 104 | CONFIG_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 | ||
| 126 | CONFIG_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 | ||
| 135 | CONFIG_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 | ||
| 141 | CONFIG_BF53x=y | ||
| 142 | CONFIG_BFIN_SINGLE_CORE=y | ||
| 143 | CONFIG_MEM_MT48LC16M16A2TG_75=y | ||
| 144 | CONFIG_IRQ_PLL_WAKEUP=7 | ||
| 145 | CONFIG_IRQ_RTC=8 | ||
| 146 | CONFIG_IRQ_PPI=8 | ||
| 147 | CONFIG_IRQ_SPORT0_RX=9 | ||
| 148 | CONFIG_IRQ_SPORT0_TX=9 | ||
| 149 | CONFIG_IRQ_SPORT1_RX=9 | ||
| 150 | CONFIG_IRQ_SPORT1_TX=9 | ||
| 151 | CONFIG_IRQ_TWI=10 | ||
| 152 | CONFIG_IRQ_SPI=10 | ||
| 153 | CONFIG_IRQ_UART0_RX=10 | ||
| 154 | CONFIG_IRQ_UART0_TX=10 | ||
| 155 | CONFIG_IRQ_UART1_RX=10 | ||
| 156 | CONFIG_IRQ_UART1_TX=10 | ||
| 157 | CONFIG_IRQ_MAC_RX=11 | ||
| 158 | CONFIG_IRQ_MAC_TX=11 | ||
| 159 | CONFIG_IRQ_TMR0=12 | ||
| 160 | CONFIG_IRQ_TMR1=12 | ||
| 161 | CONFIG_IRQ_TMR2=12 | ||
| 162 | CONFIG_IRQ_TMR3=12 | ||
| 163 | CONFIG_IRQ_TMR4=12 | ||
| 164 | CONFIG_IRQ_TMR5=12 | ||
| 165 | CONFIG_IRQ_TMR6=12 | ||
| 166 | CONFIG_IRQ_TMR7=12 | ||
| 167 | CONFIG_IRQ_PORTG_INTB=12 | ||
| 168 | CONFIG_IRQ_MEM_DMA0=13 | ||
| 169 | CONFIG_IRQ_MEM_DMA1=13 | ||
| 170 | CONFIG_IRQ_WATCH=13 | ||
| 171 | # CONFIG_BFIN537_STAMP is not set | ||
| 172 | CONFIG_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 | # | ||
| 188 | CONFIG_IRQ_DMA_ERROR=7 | ||
| 189 | CONFIG_IRQ_ERROR=7 | ||
| 190 | CONFIG_IRQ_CAN_RX=11 | ||
| 191 | CONFIG_IRQ_CAN_TX=11 | ||
| 192 | CONFIG_IRQ_PROG_INTA=12 | ||
| 193 | |||
| 194 | # | ||
| 195 | # Board customizations | ||
| 196 | # | ||
| 197 | # CONFIG_CMDLINE_BOOL is not set | ||
| 198 | |||
| 199 | # | ||
| 200 | # Clock/PLL Setup | ||
| 201 | # | ||
| 202 | CONFIG_CLKIN_HZ=30000000 | ||
| 203 | # CONFIG_BFIN_KERNEL_CLOCK is not set | ||
| 204 | CONFIG_MAX_VCO_HZ=600000000 | ||
| 205 | CONFIG_MIN_VCO_HZ=50000000 | ||
| 206 | CONFIG_MAX_SCLK_HZ=133333333 | ||
| 207 | CONFIG_MIN_SCLK_HZ=27000000 | ||
| 208 | |||
| 209 | # | ||
| 210 | # Kernel Timer/Scheduler | ||
| 211 | # | ||
| 212 | # CONFIG_HZ_100 is not set | ||
| 213 | CONFIG_HZ_250=y | ||
| 214 | # CONFIG_HZ_300 is not set | ||
| 215 | # CONFIG_HZ_1000 is not set | ||
| 216 | CONFIG_HZ=250 | ||
| 217 | |||
| 218 | # | ||
| 219 | # Memory Setup | ||
| 220 | # | ||
| 221 | CONFIG_MAX_MEM_SIZE=32 | ||
| 222 | CONFIG_MEM_ADD_WIDTH=9 | ||
| 223 | CONFIG_BOOT_LOAD=0x1000 | ||
| 224 | CONFIG_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 | # | ||
| 235 | CONFIG_I_ENTRY_L1=y | ||
| 236 | CONFIG_EXCPT_IRQ_SYSC_L1=y | ||
| 237 | CONFIG_DO_IRQ_L1=y | ||
| 238 | CONFIG_CORE_TIMER_IRQ_L1=y | ||
| 239 | CONFIG_IDLE_L1=y | ||
| 240 | CONFIG_SCHEDULE_L1=y | ||
| 241 | CONFIG_ARITHMETIC_OPS_L1=y | ||
| 242 | CONFIG_ACCESS_OK_L1=y | ||
| 243 | CONFIG_MEMSET_L1=y | ||
| 244 | CONFIG_MEMCPY_L1=y | ||
| 245 | CONFIG_SYS_BFIN_SPINLOCK_L1=y | ||
| 246 | CONFIG_IP_CHECKSUM_L1=y | ||
| 247 | CONFIG_CACHELINE_ALIGNED_L1=y | ||
| 248 | CONFIG_SYSCALL_TAB_L1=y | ||
| 249 | CONFIG_CPLB_SWITCH_TAB_L1=y | ||
| 250 | CONFIG_RAMKERNEL=y | ||
| 251 | # CONFIG_ROMKERNEL is not set | ||
| 252 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 253 | CONFIG_FLATMEM_MANUAL=y | ||
| 254 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 255 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 256 | CONFIG_FLATMEM=y | ||
| 257 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 258 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 259 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 260 | # CONFIG_RESOURCES_64BIT is not set | ||
| 261 | CONFIG_ZONE_DMA_FLAG=1 | ||
| 262 | CONFIG_LARGE_ALLOCS=y | ||
| 263 | # CONFIG_BFIN_GPTIMERS is not set | ||
| 264 | CONFIG_BFIN_DMA_5XX=y | ||
| 265 | # CONFIG_DMA_UNCACHED_2M is not set | ||
| 266 | CONFIG_DMA_UNCACHED_1M=y | ||
| 267 | # CONFIG_DMA_UNCACHED_NONE is not set | ||
| 268 | |||
| 269 | # | ||
| 270 | # Cache Support | ||
| 271 | # | ||
| 272 | CONFIG_BFIN_ICACHE=y | ||
| 273 | CONFIG_BFIN_DCACHE=y | ||
| 274 | # CONFIG_BFIN_DCACHE_BANKA is not set | ||
| 275 | # CONFIG_BFIN_ICACHE_LOCK is not set | ||
| 276 | CONFIG_BFIN_WB=y | ||
| 277 | # CONFIG_BFIN_WT is not set | ||
| 278 | CONFIG_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 | # | ||
| 288 | CONFIG_C_AMCKEN=y | ||
| 289 | CONFIG_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 | ||
| 294 | CONFIG_C_AMBEN_ALL=y | ||
| 295 | |||
| 296 | # | ||
| 297 | # EBIU_AMBCTL Control | ||
| 298 | # | ||
| 299 | CONFIG_BANK_0=0x7BB0 | ||
| 300 | CONFIG_BANK_1=0x7BB0 | ||
| 301 | CONFIG_BANK_2=0xFFC3 | ||
| 302 | CONFIG_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 | # | ||
| 317 | CONFIG_BINFMT_ELF_FDPIC=y | ||
| 318 | CONFIG_BINFMT_FLAT=y | ||
| 319 | CONFIG_BINFMT_ZFLAT=y | ||
| 320 | CONFIG_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 | # | ||
| 337 | CONFIG_NET=y | ||
| 338 | |||
| 339 | # | ||
| 340 | # Networking options | ||
| 341 | # | ||
| 342 | CONFIG_PACKET=y | ||
| 343 | # CONFIG_PACKET_MMAP is not set | ||
| 344 | CONFIG_UNIX=y | ||
| 345 | CONFIG_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 | ||
| 350 | CONFIG_INET=y | ||
| 351 | # CONFIG_IP_MULTICAST is not set | ||
| 352 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 353 | CONFIG_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 | ||
| 358 | CONFIG_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 | ||
| 364 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 365 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 366 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 367 | CONFIG_INET_DIAG=y | ||
| 368 | CONFIG_INET_TCP_DIAG=y | ||
| 369 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 370 | CONFIG_TCP_CONG_CUBIC=y | ||
| 371 | CONFIG_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 | # | ||
| 424 | CONFIG_STANDALONE=y | ||
| 425 | CONFIG_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 | ||
| 432 | CONFIG_MTD=y | ||
| 433 | # CONFIG_MTD_DEBUG is not set | ||
| 434 | # CONFIG_MTD_CONCAT is not set | ||
| 435 | CONFIG_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 | # | ||
| 442 | CONFIG_MTD_CHAR=y | ||
| 443 | CONFIG_MTD_BLKDEVS=y | ||
| 444 | CONFIG_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 | ||
| 456 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 457 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 458 | CONFIG_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 | ||
| 462 | CONFIG_MTD_CFI_I1=y | ||
| 463 | CONFIG_MTD_CFI_I2=y | ||
| 464 | # CONFIG_MTD_CFI_I4 is not set | ||
| 465 | # CONFIG_MTD_CFI_I8 is not set | ||
| 466 | CONFIG_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 | ||
| 474 | CONFIG_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 | ||
| 515 | CONFIG_BLK_DEV_RAM=y | ||
| 516 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 517 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
| 518 | CONFIG_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 | # | ||
| 543 | CONFIG_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 | # | ||
| 553 | CONFIG_NET_ETHERNET=y | ||
| 554 | CONFIG_MII=y | ||
| 555 | CONFIG_SMC91X=y | ||
| 556 | # CONFIG_BFIN_MAC is not set | ||
| 557 | # CONFIG_SMSC911X is not set | ||
| 558 | # CONFIG_DM9000 is not set | ||
| 559 | CONFIG_NETDEV_1000=y | ||
| 560 | # CONFIG_AX88180 is not set | ||
| 561 | CONFIG_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 | ||
| 606 | CONFIG_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 | # | ||
| 619 | CONFIG_SERIAL_BFIN=y | ||
| 620 | CONFIG_SERIAL_BFIN_CONSOLE=y | ||
| 621 | CONFIG_SERIAL_BFIN_DMA=y | ||
| 622 | # CONFIG_SERIAL_BFIN_PIO is not set | ||
| 623 | CONFIG_SERIAL_BFIN_UART0=y | ||
| 624 | # CONFIG_BFIN_UART0_CTSRTS is not set | ||
| 625 | CONFIG_SERIAL_BFIN_UART1=y | ||
| 626 | # CONFIG_BFIN_UART1_CTSRTS is not set | ||
| 627 | CONFIG_SERIAL_CORE=y | ||
| 628 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 629 | # CONFIG_SERIAL_BFIN_SPORT is not set | ||
| 630 | CONFIG_UNIX98_PTYS=y | ||
| 631 | CONFIG_LEGACY_PTYS=y | ||
| 632 | CONFIG_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 | ||
| 665 | CONFIG_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 | ||
| 686 | CONFIG_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 | # | ||
| 708 | CONFIG_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 | # | ||
| 722 | CONFIG_USB_GADGET=y | ||
| 723 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | ||
| 724 | CONFIG_USB_GADGET_SELECTED=y | ||
| 725 | # CONFIG_USB_GADGET_FSL_USB2 is not set | ||
| 726 | CONFIG_USB_GADGET_NET2272=y | ||
| 727 | CONFIG_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 | ||
| 735 | CONFIG_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 | # | ||
| 791 | CONFIG_EXT2_FS=y | ||
| 792 | CONFIG_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 | ||
| 797 | CONFIG_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 | ||
| 806 | CONFIG_INOTIFY=y | ||
| 807 | CONFIG_INOTIFY_USER=y | ||
| 808 | # CONFIG_QUOTA is not set | ||
| 809 | CONFIG_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 | # | ||
| 830 | CONFIG_PROC_FS=y | ||
| 831 | CONFIG_PROC_SYSCTL=y | ||
| 832 | CONFIG_SYSFS=y | ||
| 833 | # CONFIG_TMPFS is not set | ||
| 834 | # CONFIG_HUGETLB_PAGE is not set | ||
| 835 | CONFIG_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 | ||
| 873 | CONFIG_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 | ||
| 894 | CONFIG_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 | ||
| 903 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y | ||
| 904 | CONFIG_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 | ||
| 907 | CONFIG_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 | ||
| 911 | CONFIG_CPLB_INFO=y | ||
| 912 | CONFIG_ACCESS_CHECK=y | ||
| 913 | |||
| 914 | # | ||
| 915 | # Security options | ||
| 916 | # | ||
| 917 | # CONFIG_KEYS is not set | ||
| 918 | CONFIG_SECURITY=y | ||
| 919 | # CONFIG_SECURITY_NETWORK is not set | ||
| 920 | CONFIG_SECURITY_CAPABILITIES=y | ||
| 921 | |||
| 922 | # | ||
| 923 | # Cryptographic options | ||
| 924 | # | ||
| 925 | # CONFIG_CRYPTO is not set | ||
| 926 | |||
| 927 | # | ||
| 928 | # Library routines | ||
| 929 | # | ||
| 930 | CONFIG_BITREVERSE=y | ||
| 931 | CONFIG_CRC_CCITT=m | ||
| 932 | # CONFIG_CRC16 is not set | ||
| 933 | # CONFIG_CRC_ITU_T is not set | ||
| 934 | CONFIG_CRC32=y | ||
| 935 | # CONFIG_LIBCRC32C is not set | ||
| 936 | CONFIG_ZLIB_INFLATE=y | ||
| 937 | CONFIG_PLIST=y | ||
| 938 | CONFIG_HAS_IOMEM=y | ||
| 939 | CONFIG_HAS_IOPORT=y | ||
| 940 | CONFIG_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 | ||
| 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | ||
| 9 | CONFIG_BLACKFIN=y | ||
| 10 | CONFIG_ZONE_DMA=y | ||
| 11 | CONFIG_SEMAPHORE_SLEEPERS=y | ||
| 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 13 | CONFIG_GENERIC_HWEIGHT=y | ||
| 14 | CONFIG_GENERIC_HARDIRQS=y | ||
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | ||
| 16 | CONFIG_GENERIC_GPIO=y | ||
| 17 | CONFIG_FORCE_MAX_ZONEORDER=14 | ||
| 18 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 20 | |||
| 21 | # | ||
| 22 | # General setup | ||
| 23 | # | ||
| 24 | CONFIG_EXPERIMENTAL=y | ||
| 25 | CONFIG_BROKEN_ON_SMP=y | ||
| 26 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 27 | CONFIG_LOCALVERSION="" | ||
| 28 | CONFIG_LOCALVERSION_AUTO=y | ||
| 29 | CONFIG_SYSVIPC=y | ||
| 30 | CONFIG_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 | ||
| 37 | CONFIG_IKCONFIG=y | ||
| 38 | CONFIG_IKCONFIG_PROC=y | ||
| 39 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 40 | # CONFIG_CGROUPS is not set | ||
| 41 | CONFIG_FAIR_GROUP_SCHED=y | ||
| 42 | CONFIG_FAIR_USER_SCHED=y | ||
| 43 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
| 44 | CONFIG_SYSFS_DEPRECATED=y | ||
| 45 | # CONFIG_RELAY is not set | ||
| 46 | CONFIG_BLK_DEV_INITRD=y | ||
| 47 | CONFIG_INITRAMFS_SOURCE="" | ||
| 48 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 49 | CONFIG_SYSCTL=y | ||
| 50 | CONFIG_EMBEDDED=y | ||
| 51 | CONFIG_UID16=y | ||
| 52 | CONFIG_SYSCTL_SYSCALL=y | ||
| 53 | CONFIG_KALLSYMS=y | ||
| 54 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 55 | CONFIG_HOTPLUG=y | ||
| 56 | CONFIG_PRINTK=y | ||
| 57 | CONFIG_BUG=y | ||
| 58 | CONFIG_ELF_CORE=y | ||
| 59 | CONFIG_BASE_FULL=y | ||
| 60 | CONFIG_FUTEX=y | ||
| 61 | CONFIG_ANON_INODES=y | ||
| 62 | CONFIG_EPOLL=y | ||
| 63 | CONFIG_SIGNALFD=y | ||
| 64 | CONFIG_EVENTFD=y | ||
| 65 | CONFIG_VM_EVENT_COUNTERS=y | ||
| 66 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | ||
| 67 | # CONFIG_NP2 is not set | ||
| 68 | CONFIG_SLAB=y | ||
| 69 | # CONFIG_SLUB is not set | ||
| 70 | # CONFIG_SLOB is not set | ||
| 71 | CONFIG_SLABINFO=y | ||
| 72 | CONFIG_RT_MUTEXES=y | ||
| 73 | CONFIG_TINY_SHMEM=y | ||
| 74 | CONFIG_BASE_SMALL=0 | ||
| 75 | CONFIG_MODULES=y | ||
| 76 | CONFIG_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 | ||
| 80 | CONFIG_KMOD=y | ||
| 81 | CONFIG_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 | # | ||
| 90 | CONFIG_IOSCHED_NOOP=y | ||
| 91 | CONFIG_IOSCHED_AS=y | ||
| 92 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 93 | CONFIG_IOSCHED_CFQ=y | ||
| 94 | CONFIG_DEFAULT_AS=y | ||
| 95 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 96 | # CONFIG_DEFAULT_CFQ is not set | ||
| 97 | # CONFIG_DEFAULT_NOOP is not set | ||
| 98 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
| 99 | # CONFIG_PREEMPT_NONE is not set | ||
| 100 | CONFIG_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 | ||
| 125 | CONFIG_BF548=y | ||
| 126 | # CONFIG_BF549 is not set | ||
| 127 | # CONFIG_BF561 is not set | ||
| 128 | CONFIG_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 | ||
| 136 | CONFIG_BF54x=y | ||
| 137 | CONFIG_IRQ_PLL_WAKEUP=7 | ||
| 138 | CONFIG_IRQ_RTC=8 | ||
| 139 | CONFIG_IRQ_SPORT0_RX=9 | ||
| 140 | CONFIG_IRQ_SPORT0_TX=9 | ||
| 141 | CONFIG_IRQ_SPORT1_RX=9 | ||
| 142 | CONFIG_IRQ_SPORT1_TX=9 | ||
| 143 | CONFIG_IRQ_UART0_RX=10 | ||
| 144 | CONFIG_IRQ_UART0_TX=10 | ||
| 145 | CONFIG_IRQ_UART1_RX=10 | ||
| 146 | CONFIG_IRQ_UART1_TX=10 | ||
| 147 | CONFIG_IRQ_CNT=8 | ||
| 148 | CONFIG_IRQ_USB_INT0=11 | ||
| 149 | CONFIG_IRQ_USB_INT1=11 | ||
| 150 | CONFIG_IRQ_USB_INT2=11 | ||
| 151 | CONFIG_IRQ_USB_DMA=11 | ||
| 152 | CONFIG_IRQ_TIMER0=11 | ||
| 153 | CONFIG_IRQ_TIMER1=11 | ||
| 154 | CONFIG_IRQ_TIMER2=11 | ||
| 155 | CONFIG_IRQ_TIMER3=11 | ||
| 156 | CONFIG_IRQ_TIMER4=11 | ||
| 157 | CONFIG_IRQ_TIMER5=11 | ||
| 158 | CONFIG_IRQ_TIMER6=11 | ||
| 159 | CONFIG_IRQ_TIMER7=11 | ||
| 160 | CONFIG_IRQ_TIMER8=11 | ||
| 161 | CONFIG_IRQ_TIMER9=11 | ||
| 162 | CONFIG_IRQ_TIMER10=11 | ||
| 163 | # CONFIG_BFIN548_EZKIT is not set | ||
| 164 | CONFIG_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 | # | ||
| 178 | CONFIG_IRQ_DMAC0_ERR=7 | ||
| 179 | CONFIG_IRQ_EPPI0_ERR=7 | ||
| 180 | CONFIG_IRQ_SPORT0_ERR=7 | ||
| 181 | CONFIG_IRQ_SPORT1_ERR=7 | ||
| 182 | CONFIG_IRQ_SPI0_ERR=7 | ||
| 183 | CONFIG_IRQ_UART0_ERR=7 | ||
| 184 | CONFIG_IRQ_EPPI0=8 | ||
| 185 | CONFIG_IRQ_SPI0=10 | ||
| 186 | CONFIG_IRQ_PINT0=12 | ||
| 187 | CONFIG_IRQ_PINT1=12 | ||
| 188 | CONFIG_IRQ_MDMAS0=13 | ||
| 189 | CONFIG_IRQ_MDMAS1=13 | ||
| 190 | CONFIG_IRQ_WATCHDOG=13 | ||
| 191 | CONFIG_IRQ_DMAC1_ERR=7 | ||
| 192 | CONFIG_IRQ_SPORT2_ERR=7 | ||
| 193 | CONFIG_IRQ_SPORT3_ERR=7 | ||
| 194 | CONFIG_IRQ_MXVR_DATA=7 | ||
| 195 | CONFIG_IRQ_SPI1_ERR=7 | ||
| 196 | CONFIG_IRQ_SPI2_ERR=7 | ||
| 197 | CONFIG_IRQ_UART1_ERR=7 | ||
| 198 | CONFIG_IRQ_UART2_ERR=7 | ||
| 199 | CONFIG_IRQ_CAN0_ERR=7 | ||
| 200 | CONFIG_IRQ_SPORT2_RX=9 | ||
| 201 | CONFIG_IRQ_SPORT2_TX=9 | ||
| 202 | CONFIG_IRQ_SPORT3_RX=9 | ||
| 203 | CONFIG_IRQ_SPORT3_TX=9 | ||
| 204 | CONFIG_IRQ_EPPI1=9 | ||
| 205 | CONFIG_IRQ_EPPI2=9 | ||
| 206 | CONFIG_IRQ_SPI1=10 | ||
| 207 | CONFIG_IRQ_SPI2=10 | ||
| 208 | CONFIG_IRQ_ATAPI_RX=10 | ||
| 209 | CONFIG_IRQ_ATAPI_TX=10 | ||
| 210 | CONFIG_IRQ_TWI0=11 | ||
| 211 | CONFIG_IRQ_TWI1=11 | ||
| 212 | CONFIG_IRQ_CAN0_RX=11 | ||
| 213 | CONFIG_IRQ_CAN0_TX=11 | ||
| 214 | CONFIG_IRQ_MDMAS2=13 | ||
| 215 | CONFIG_IRQ_MDMAS3=13 | ||
| 216 | CONFIG_IRQ_MXVR_ERR=11 | ||
| 217 | CONFIG_IRQ_MXVR_MSG=11 | ||
| 218 | CONFIG_IRQ_MXVR_PKT=11 | ||
| 219 | CONFIG_IRQ_EPPI1_ERR=7 | ||
| 220 | CONFIG_IRQ_EPPI2_ERR=7 | ||
| 221 | CONFIG_IRQ_UART3_ERR=7 | ||
| 222 | CONFIG_IRQ_HOST_ERR=7 | ||
| 223 | CONFIG_IRQ_PIXC_ERR=7 | ||
| 224 | CONFIG_IRQ_NFC_ERR=7 | ||
| 225 | CONFIG_IRQ_ATAPI_ERR=7 | ||
| 226 | CONFIG_IRQ_CAN1_ERR=7 | ||
| 227 | CONFIG_IRQ_HS_DMA_ERR=7 | ||
| 228 | CONFIG_IRQ_PIXC_IN0=8 | ||
| 229 | CONFIG_IRQ_PIXC_IN1=8 | ||
| 230 | CONFIG_IRQ_PIXC_OUT=8 | ||
| 231 | CONFIG_IRQ_SDH=8 | ||
| 232 | CONFIG_IRQ_KEY=8 | ||
| 233 | CONFIG_IRQ_CAN1_RX=11 | ||
| 234 | CONFIG_IRQ_CAN1_TX=11 | ||
| 235 | CONFIG_IRQ_SDH_MASK0=11 | ||
| 236 | CONFIG_IRQ_SDH_MASK1=11 | ||
| 237 | CONFIG_IRQ_OTPSEC=11 | ||
| 238 | CONFIG_IRQ_PINT2=11 | ||
| 239 | CONFIG_IRQ_PINT3=11 | ||
| 240 | |||
| 241 | # | ||
| 242 | # Pin Interrupt to Port Assignment | ||
| 243 | # | ||
| 244 | |||
| 245 | # | ||
| 246 | # Assignment | ||
| 247 | # | ||
| 248 | CONFIG_PINTx_REASSIGN=y | ||
| 249 | CONFIG_PINT0_ASSIGN=0x00000101 | ||
| 250 | CONFIG_PINT1_ASSIGN=0x01010000 | ||
| 251 | CONFIG_PINT2_ASSIGN=0x07000101 | ||
| 252 | CONFIG_PINT3_ASSIGN=0x02020303 | ||
| 253 | |||
| 254 | # | ||
| 255 | # Board customizations | ||
| 256 | # | ||
| 257 | # CONFIG_CMDLINE_BOOL is not set | ||
| 258 | |||
| 259 | # | ||
| 260 | # Clock/PLL Setup | ||
| 261 | # | ||
| 262 | CONFIG_CLKIN_HZ=25000000 | ||
| 263 | # CONFIG_BFIN_KERNEL_CLOCK is not set | ||
| 264 | CONFIG_MAX_VCO_HZ=600000000 | ||
| 265 | CONFIG_MIN_VCO_HZ=50000000 | ||
| 266 | CONFIG_MAX_SCLK_HZ=133333333 | ||
| 267 | CONFIG_MIN_SCLK_HZ=27000000 | ||
| 268 | |||
| 269 | # | ||
| 270 | # Kernel Timer/Scheduler | ||
| 271 | # | ||
| 272 | # CONFIG_HZ_100 is not set | ||
| 273 | CONFIG_HZ_250=y | ||
| 274 | # CONFIG_HZ_300 is not set | ||
| 275 | # CONFIG_HZ_1000 is not set | ||
| 276 | CONFIG_HZ=250 | ||
| 277 | # CONFIG_GENERIC_TIME is not set | ||
| 278 | # CONFIG_TICK_ONESHOT is not set | ||
| 279 | |||
| 280 | # | ||
| 281 | # Memory Setup | ||
| 282 | # | ||
| 283 | CONFIG_MAX_MEM_SIZE=64 | ||
| 284 | # CONFIG_MEM_MT46V32M16_6T is not set | ||
| 285 | CONFIG_MEM_MT46V32M16_5B=y | ||
| 286 | CONFIG_BOOT_LOAD=0x1000 | ||
| 287 | CONFIG_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 | # | ||
| 298 | CONFIG_I_ENTRY_L1=y | ||
| 299 | CONFIG_EXCPT_IRQ_SYSC_L1=y | ||
| 300 | CONFIG_DO_IRQ_L1=y | ||
| 301 | CONFIG_CORE_TIMER_IRQ_L1=y | ||
| 302 | CONFIG_IDLE_L1=y | ||
| 303 | # CONFIG_SCHEDULE_L1 is not set | ||
| 304 | CONFIG_ARITHMETIC_OPS_L1=y | ||
| 305 | CONFIG_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 | ||
| 310 | CONFIG_CACHELINE_ALIGNED_L1=y | ||
| 311 | # CONFIG_SYSCALL_TAB_L1 is not set | ||
| 312 | # CONFIG_CPLB_SWITCH_TAB_L1 is not set | ||
| 313 | CONFIG_RAMKERNEL=y | ||
| 314 | # CONFIG_ROMKERNEL is not set | ||
| 315 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 316 | CONFIG_FLATMEM_MANUAL=y | ||
| 317 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 318 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 319 | CONFIG_FLATMEM=y | ||
| 320 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 321 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 322 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
| 323 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 324 | # CONFIG_RESOURCES_64BIT is not set | ||
| 325 | CONFIG_ZONE_DMA_FLAG=1 | ||
| 326 | CONFIG_VIRT_TO_BUS=y | ||
| 327 | # CONFIG_BFIN_GPTIMERS is not set | ||
| 328 | CONFIG_BFIN_DMA_5XX=y | ||
| 329 | # CONFIG_DMA_UNCACHED_2M is not set | ||
| 330 | CONFIG_DMA_UNCACHED_1M=y | ||
| 331 | # CONFIG_DMA_UNCACHED_NONE is not set | ||
| 332 | |||
| 333 | # | ||
| 334 | # Cache Support | ||
| 335 | # | ||
| 336 | CONFIG_BFIN_ICACHE=y | ||
| 337 | CONFIG_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 | ||
| 341 | CONFIG_BFIN_WT=y | ||
| 342 | CONFIG_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 | # | ||
| 352 | CONFIG_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 | ||
| 358 | CONFIG_C_AMBEN_ALL=y | ||
| 359 | |||
| 360 | # | ||
| 361 | # EBIU_AMBCTL Control | ||
| 362 | # | ||
| 363 | CONFIG_BANK_0=0x7BB0 | ||
| 364 | CONFIG_BANK_1=0x5554 | ||
| 365 | CONFIG_BANK_2=0x7BB0 | ||
| 366 | CONFIG_BANK_3=0x99B3 | ||
| 367 | CONFIG_EBIU_MBSCTLVAL=0x0 | ||
| 368 | CONFIG_EBIU_MODEVAL=0x1 | ||
| 369 | CONFIG_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 | # | ||
| 381 | CONFIG_BINFMT_ELF_FDPIC=y | ||
| 382 | CONFIG_BINFMT_FLAT=y | ||
| 383 | CONFIG_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 | ||
| 391 | CONFIG_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 | # | ||
| 402 | CONFIG_NET=y | ||
| 403 | |||
| 404 | # | ||
| 405 | # Networking options | ||
| 406 | # | ||
| 407 | CONFIG_PACKET=y | ||
| 408 | # CONFIG_PACKET_MMAP is not set | ||
| 409 | CONFIG_UNIX=y | ||
| 410 | CONFIG_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 | ||
| 415 | CONFIG_INET=y | ||
| 416 | # CONFIG_IP_MULTICAST is not set | ||
| 417 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 418 | CONFIG_IP_FIB_HASH=y | ||
| 419 | CONFIG_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 | ||
| 426 | CONFIG_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 | ||
| 432 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 433 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 434 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 435 | # CONFIG_INET_LRO is not set | ||
| 436 | CONFIG_INET_DIAG=y | ||
| 437 | CONFIG_INET_TCP_DIAG=y | ||
| 438 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 439 | CONFIG_TCP_CONG_CUBIC=y | ||
| 440 | CONFIG_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 | # | ||
| 490 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 491 | CONFIG_STANDALONE=y | ||
| 492 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 493 | # CONFIG_FW_LOADER is not set | ||
| 494 | # CONFIG_SYS_HYPERVISOR is not set | ||
| 495 | # CONFIG_CONNECTOR is not set | ||
| 496 | CONFIG_MTD=y | ||
| 497 | # CONFIG_MTD_DEBUG is not set | ||
| 498 | # CONFIG_MTD_CONCAT is not set | ||
| 499 | CONFIG_MTD_PARTITIONS=y | ||
| 500 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 501 | CONFIG_MTD_CMDLINE_PARTS=y | ||
| 502 | |||
| 503 | # | ||
| 504 | # User Modules And Translation Layers | ||
| 505 | # | ||
| 506 | CONFIG_MTD_CHAR=y | ||
| 507 | CONFIG_MTD_BLKDEVS=y | ||
| 508 | CONFIG_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 | # | ||
| 519 | CONFIG_MTD_CFI=y | ||
| 520 | # CONFIG_MTD_JEDECPROBE is not set | ||
| 521 | CONFIG_MTD_GEN_PROBE=y | ||
| 522 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 523 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 524 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 525 | CONFIG_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 | ||
| 529 | CONFIG_MTD_CFI_I1=y | ||
| 530 | CONFIG_MTD_CFI_I2=y | ||
| 531 | # CONFIG_MTD_CFI_I4 is not set | ||
| 532 | # CONFIG_MTD_CFI_I8 is not set | ||
| 533 | CONFIG_MTD_CFI_INTELEXT=y | ||
| 534 | # CONFIG_MTD_CFI_AMDSTD is not set | ||
| 535 | # CONFIG_MTD_CFI_STAA is not set | ||
| 536 | CONFIG_MTD_CFI_UTIL=y | ||
| 537 | CONFIG_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 | # | ||
| 544 | CONFIG_MTD_COMPLEX_MAPPINGS=y | ||
| 545 | CONFIG_MTD_PHYSMAP=y | ||
| 546 | CONFIG_MTD_PHYSMAP_START=0x20000000 | ||
| 547 | CONFIG_MTD_PHYSMAP_LEN=0x800000 | ||
| 548 | CONFIG_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 | ||
| 576 | CONFIG_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 | ||
| 581 | CONFIG_BLK_DEV_RAM=y | ||
| 582 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 583 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
| 584 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
| 585 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 586 | # CONFIG_ATA_OVER_ETH is not set | ||
| 587 | CONFIG_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 | ||
| 595 | CONFIG_SCSI=y | ||
| 596 | CONFIG_SCSI_DMA=y | ||
| 597 | # CONFIG_SCSI_TGT is not set | ||
| 598 | # CONFIG_SCSI_NETLINK is not set | ||
| 599 | CONFIG_SCSI_PROC_FS=y | ||
| 600 | |||
| 601 | # | ||
| 602 | # SCSI support type (disk, tape, CD-ROM) | ||
| 603 | # | ||
| 604 | CONFIG_BLK_DEV_SD=y | ||
| 605 | # CONFIG_CHR_DEV_ST is not set | ||
| 606 | # CONFIG_CHR_DEV_OSST is not set | ||
| 607 | CONFIG_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 | ||
| 619 | CONFIG_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 | ||
| 629 | CONFIG_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 | ||
| 634 | CONFIG_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 | ||
| 643 | CONFIG_NET_ETHERNET=y | ||
| 644 | CONFIG_MII=y | ||
| 645 | # CONFIG_SMC91X is not set | ||
| 646 | CONFIG_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 | # | ||
| 683 | CONFIG_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 | ||
| 692 | CONFIG_INPUT_EVDEV=m | ||
| 693 | CONFIG_INPUT_EVBUG=m | ||
| 694 | |||
| 695 | # | ||
| 696 | # Input Device Drivers | ||
| 697 | # | ||
| 698 | CONFIG_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 | ||
| 728 | CONFIG_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 | # | ||
| 745 | CONFIG_SERIAL_BFIN=y | ||
| 746 | CONFIG_SERIAL_BFIN_CONSOLE=y | ||
| 747 | # CONFIG_SERIAL_BFIN_DMA is not set | ||
| 748 | CONFIG_SERIAL_BFIN_PIO=y | ||
| 749 | # CONFIG_SERIAL_BFIN_UART0 is not set | ||
| 750 | CONFIG_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 | ||
| 754 | CONFIG_SERIAL_CORE=y | ||
| 755 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 756 | # CONFIG_SERIAL_BFIN_SPORT is not set | ||
| 757 | CONFIG_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 | ||
| 765 | CONFIG_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 | ||
| 770 | CONFIG_I2C=y | ||
| 771 | CONFIG_I2C_BOARDINFO=y | ||
| 772 | CONFIG_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 | # | ||
| 784 | CONFIG_I2C_BLACKFIN_TWI=y | ||
| 785 | CONFIG_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 | # | ||
| 817 | CONFIG_SPI=y | ||
| 818 | CONFIG_SPI_MASTER=y | ||
| 819 | |||
| 820 | # | ||
| 821 | # SPI Master Controller Drivers | ||
| 822 | # | ||
| 823 | CONFIG_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 | ||
| 834 | CONFIG_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 | ||
| 882 | CONFIG_WATCHDOG=y | ||
| 883 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
| 884 | |||
| 885 | # | ||
| 886 | # Watchdog Device Drivers | ||
| 887 | # | ||
| 888 | # CONFIG_SOFT_WATCHDOG is not set | ||
| 889 | CONFIG_BFIN_WDT=y | ||
| 890 | |||
| 891 | # | ||
| 892 | # USB-based Watchdog Cards | ||
| 893 | # | ||
| 894 | # CONFIG_USBPCWATCHDOG is not set | ||
| 895 | |||
| 896 | # | ||
| 897 | # Sonics Silicon Backplane | ||
| 898 | # | ||
| 899 | CONFIG_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 | ||
| 912 | CONFIG_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 | ||
| 932 | CONFIG_HID_SUPPORT=y | ||
| 933 | CONFIG_HID=y | ||
| 934 | # CONFIG_HID_DEBUG is not set | ||
| 935 | # CONFIG_HIDRAW is not set | ||
| 936 | |||
| 937 | # | ||
| 938 | # USB Input Devices | ||
| 939 | # | ||
| 940 | CONFIG_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 | ||
| 944 | CONFIG_USB_SUPPORT=y | ||
| 945 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 946 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
| 947 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
| 948 | CONFIG_USB=y | ||
| 949 | # CONFIG_USB_DEBUG is not set | ||
| 950 | |||
| 951 | # | ||
| 952 | # Miscellaneous USB options | ||
| 953 | # | ||
| 954 | # CONFIG_USB_DEVICEFS is not set | ||
| 955 | CONFIG_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 | ||
| 967 | CONFIG_USB_MUSB_HDRC=y | ||
| 968 | CONFIG_USB_MUSB_SOC=y | ||
| 969 | |||
| 970 | # | ||
| 971 | # Blackfin BF54x, BF525 and BF527 high speed USB support | ||
| 972 | # | ||
| 973 | CONFIG_USB_MUSB_HOST=y | ||
| 974 | # CONFIG_USB_MUSB_PERIPHERAL is not set | ||
| 975 | # CONFIG_USB_MUSB_OTG is not set | ||
| 976 | CONFIG_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 | ||
| 980 | CONFIG_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 | # | ||
| 995 | CONFIG_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 | ||
| 1015 | CONFIG_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 | ||
| 1057 | CONFIG_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 | # | ||
| 1064 | CONFIG_MMC_BLOCK=y | ||
| 1065 | CONFIG_MMC_BLOCK_BOUNCE=y | ||
| 1066 | # CONFIG_SDIO_UART is not set | ||
| 1067 | |||
| 1068 | # | ||
| 1069 | # MMC/SD Host Controller Drivers | ||
| 1070 | # | ||
| 1071 | CONFIG_SDH_BFIN=y | ||
| 1072 | # CONFIG_MMC_SPI is not set | ||
| 1073 | # CONFIG_SPI_MMC is not set | ||
| 1074 | # CONFIG_NEW_LEDS is not set | ||
| 1075 | CONFIG_RTC_LIB=y | ||
| 1076 | CONFIG_RTC_CLASS=y | ||
| 1077 | CONFIG_RTC_HCTOSYS=y | ||
| 1078 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
| 1079 | # CONFIG_RTC_DEBUG is not set | ||
| 1080 | |||
| 1081 | # | ||
| 1082 | # RTC interfaces | ||
| 1083 | # | ||
| 1084 | CONFIG_RTC_INTF_SYSFS=y | ||
| 1085 | CONFIG_RTC_INTF_PROC=y | ||
| 1086 | CONFIG_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 | # | ||
| 1123 | CONFIG_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 | ||
| 1149 | CONFIG_INOTIFY=y | ||
| 1150 | CONFIG_INOTIFY_USER=y | ||
| 1151 | # CONFIG_QUOTA is not set | ||
| 1152 | CONFIG_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 | # | ||
| 1160 | CONFIG_ISO9660_FS=m | ||
| 1161 | CONFIG_JOLIET=y | ||
| 1162 | CONFIG_ZISOFS=y | ||
| 1163 | # CONFIG_UDF_FS is not set | ||
| 1164 | |||
| 1165 | # | ||
| 1166 | # DOS/FAT/NT Filesystems | ||
| 1167 | # | ||
| 1168 | CONFIG_FAT_FS=m | ||
| 1169 | CONFIG_MSDOS_FS=m | ||
| 1170 | CONFIG_VFAT_FS=m | ||
| 1171 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 1172 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 1173 | CONFIG_NTFS_FS=m | ||
| 1174 | # CONFIG_NTFS_DEBUG is not set | ||
| 1175 | CONFIG_NTFS_RW=y | ||
| 1176 | |||
| 1177 | # | ||
| 1178 | # Pseudo filesystems | ||
| 1179 | # | ||
| 1180 | CONFIG_PROC_FS=y | ||
| 1181 | CONFIG_PROC_SYSCTL=y | ||
| 1182 | CONFIG_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 | ||
| 1197 | CONFIG_YAFFS_FS=m | ||
| 1198 | CONFIG_YAFFS_YAFFS1=y | ||
| 1199 | # CONFIG_YAFFS_DOES_ECC is not set | ||
| 1200 | CONFIG_YAFFS_YAFFS2=y | ||
| 1201 | CONFIG_YAFFS_AUTO_YAFFS2=y | ||
| 1202 | # CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set | ||
| 1203 | CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10 | ||
| 1204 | # CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set | ||
| 1205 | # CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set | ||
| 1206 | CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y | ||
| 1207 | CONFIG_JFFS2_FS=m | ||
| 1208 | CONFIG_JFFS2_FS_DEBUG=0 | ||
| 1209 | CONFIG_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 | ||
| 1214 | CONFIG_JFFS2_ZLIB=y | ||
| 1215 | # CONFIG_JFFS2_LZO is not set | ||
| 1216 | CONFIG_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 | ||
| 1224 | CONFIG_NETWORK_FILESYSTEMS=y | ||
| 1225 | CONFIG_NFS_FS=m | ||
| 1226 | CONFIG_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 | ||
| 1230 | CONFIG_NFSD=m | ||
| 1231 | CONFIG_NFSD_V3=y | ||
| 1232 | # CONFIG_NFSD_V3_ACL is not set | ||
| 1233 | # CONFIG_NFSD_V4 is not set | ||
| 1234 | CONFIG_NFSD_TCP=y | ||
| 1235 | CONFIG_LOCKD=m | ||
| 1236 | CONFIG_LOCKD_V4=y | ||
| 1237 | CONFIG_EXPORTFS=m | ||
| 1238 | CONFIG_NFS_COMMON=y | ||
| 1239 | CONFIG_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 | ||
| 1243 | CONFIG_SMB_FS=m | ||
| 1244 | CONFIG_SMB_NLS_DEFAULT=y | ||
| 1245 | CONFIG_SMB_NLS_REMOTE="cp437" | ||
| 1246 | CONFIG_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 | # | ||
| 1259 | CONFIG_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 | ||
| 1265 | CONFIG_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 | ||
| 1277 | CONFIG_NLS=y | ||
| 1278 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 1279 | CONFIG_NLS_CODEPAGE_437=m | ||
| 1280 | CONFIG_NLS_CODEPAGE_737=m | ||
| 1281 | CONFIG_NLS_CODEPAGE_775=m | ||
| 1282 | CONFIG_NLS_CODEPAGE_850=m | ||
| 1283 | CONFIG_NLS_CODEPAGE_852=m | ||
| 1284 | CONFIG_NLS_CODEPAGE_855=m | ||
| 1285 | CONFIG_NLS_CODEPAGE_857=m | ||
| 1286 | CONFIG_NLS_CODEPAGE_860=m | ||
| 1287 | CONFIG_NLS_CODEPAGE_861=m | ||
| 1288 | CONFIG_NLS_CODEPAGE_862=m | ||
| 1289 | CONFIG_NLS_CODEPAGE_863=m | ||
| 1290 | CONFIG_NLS_CODEPAGE_864=m | ||
| 1291 | CONFIG_NLS_CODEPAGE_865=m | ||
| 1292 | CONFIG_NLS_CODEPAGE_866=m | ||
| 1293 | CONFIG_NLS_CODEPAGE_869=m | ||
| 1294 | CONFIG_NLS_CODEPAGE_936=m | ||
| 1295 | CONFIG_NLS_CODEPAGE_950=m | ||
| 1296 | CONFIG_NLS_CODEPAGE_932=m | ||
| 1297 | CONFIG_NLS_CODEPAGE_949=m | ||
| 1298 | CONFIG_NLS_CODEPAGE_874=m | ||
| 1299 | CONFIG_NLS_ISO8859_8=m | ||
| 1300 | CONFIG_NLS_CODEPAGE_1250=m | ||
| 1301 | CONFIG_NLS_CODEPAGE_1251=m | ||
| 1302 | CONFIG_NLS_ASCII=m | ||
| 1303 | CONFIG_NLS_ISO8859_1=m | ||
| 1304 | CONFIG_NLS_ISO8859_2=m | ||
| 1305 | CONFIG_NLS_ISO8859_3=m | ||
| 1306 | CONFIG_NLS_ISO8859_4=m | ||
| 1307 | CONFIG_NLS_ISO8859_5=m | ||
| 1308 | CONFIG_NLS_ISO8859_6=m | ||
| 1309 | CONFIG_NLS_ISO8859_7=m | ||
| 1310 | CONFIG_NLS_ISO8859_9=m | ||
| 1311 | CONFIG_NLS_ISO8859_13=m | ||
| 1312 | CONFIG_NLS_ISO8859_14=m | ||
| 1313 | CONFIG_NLS_ISO8859_15=m | ||
| 1314 | CONFIG_NLS_KOI8_R=m | ||
| 1315 | CONFIG_NLS_KOI8_U=m | ||
| 1316 | CONFIG_NLS_UTF8=m | ||
| 1317 | # CONFIG_DLM is not set | ||
| 1318 | CONFIG_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 | ||
| 1326 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
| 1327 | CONFIG_ENABLE_MUST_CHECK=y | ||
| 1328 | # CONFIG_MAGIC_SYSRQ is not set | ||
| 1329 | # CONFIG_UNUSED_SYMBOLS is not set | ||
| 1330 | CONFIG_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 | ||
| 1336 | CONFIG_DEBUG_HUNT_FOR_ZERO=y | ||
| 1337 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y | ||
| 1338 | CONFIG_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 | ||
| 1341 | CONFIG_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 | ||
| 1345 | CONFIG_CPLB_INFO=y | ||
| 1346 | CONFIG_ACCESS_CHECK=y | ||
| 1347 | |||
| 1348 | # | ||
| 1349 | # Security options | ||
| 1350 | # | ||
| 1351 | # CONFIG_KEYS is not set | ||
| 1352 | CONFIG_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 | # | ||
| 1361 | CONFIG_BITREVERSE=y | ||
| 1362 | CONFIG_CRC_CCITT=m | ||
| 1363 | # CONFIG_CRC16 is not set | ||
| 1364 | # CONFIG_CRC_ITU_T is not set | ||
| 1365 | CONFIG_CRC32=y | ||
| 1366 | # CONFIG_CRC7 is not set | ||
| 1367 | # CONFIG_LIBCRC32C is not set | ||
| 1368 | CONFIG_ZLIB_INFLATE=y | ||
| 1369 | CONFIG_ZLIB_DEFLATE=m | ||
| 1370 | CONFIG_PLIST=y | ||
| 1371 | CONFIG_HAS_IOMEM=y | ||
| 1372 | CONFIG_HAS_IOPORT=y | ||
| 1373 | CONFIG_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 | ||
| 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 9 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | ||
| 10 | CONFIG_BLACKFIN=y | ||
| 11 | CONFIG_ZONE_DMA=y | ||
| 12 | CONFIG_SEMAPHORE_SLEEPERS=y | ||
| 13 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 14 | CONFIG_GENERIC_HWEIGHT=y | ||
| 15 | CONFIG_GENERIC_HARDIRQS=y | ||
| 16 | CONFIG_GENERIC_IRQ_PROBE=y | ||
| 17 | CONFIG_GENERIC_GPIO=y | ||
| 18 | CONFIG_FORCE_MAX_ZONEORDER=14 | ||
| 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 21 | |||
| 22 | # | ||
| 23 | # General setup | ||
| 24 | # | ||
| 25 | CONFIG_EXPERIMENTAL=y | ||
| 26 | CONFIG_BROKEN_ON_SMP=y | ||
| 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 28 | CONFIG_LOCALVERSION="" | ||
| 29 | CONFIG_LOCALVERSION_AUTO=y | ||
| 30 | CONFIG_SYSVIPC=y | ||
| 31 | CONFIG_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 | ||
| 39 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 40 | # CONFIG_CGROUPS is not set | ||
| 41 | CONFIG_FAIR_GROUP_SCHED=y | ||
| 42 | CONFIG_FAIR_USER_SCHED=y | ||
| 43 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
| 44 | CONFIG_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 | ||
| 48 | CONFIG_SYSCTL=y | ||
| 49 | CONFIG_EMBEDDED=y | ||
| 50 | # CONFIG_UID16 is not set | ||
| 51 | CONFIG_SYSCTL_SYSCALL=y | ||
| 52 | CONFIG_KALLSYMS=y | ||
| 53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 54 | # CONFIG_HOTPLUG is not set | ||
| 55 | CONFIG_PRINTK=y | ||
| 56 | CONFIG_BUG=y | ||
| 57 | CONFIG_ELF_CORE=y | ||
| 58 | CONFIG_BASE_FULL=y | ||
| 59 | CONFIG_FUTEX=y | ||
| 60 | CONFIG_ANON_INODES=y | ||
| 61 | CONFIG_EPOLL=y | ||
| 62 | CONFIG_SIGNALFD=y | ||
| 63 | CONFIG_EVENTFD=y | ||
| 64 | CONFIG_VM_EVENT_COUNTERS=y | ||
| 65 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | ||
| 66 | # CONFIG_NP2 is not set | ||
| 67 | CONFIG_SLAB=y | ||
| 68 | # CONFIG_SLUB is not set | ||
| 69 | # CONFIG_SLOB is not set | ||
| 70 | CONFIG_SLABINFO=y | ||
| 71 | CONFIG_RT_MUTEXES=y | ||
| 72 | CONFIG_TINY_SHMEM=y | ||
| 73 | CONFIG_BASE_SMALL=0 | ||
| 74 | CONFIG_MODULES=y | ||
| 75 | CONFIG_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 | ||
| 79 | CONFIG_KMOD=y | ||
| 80 | CONFIG_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 | # | ||
| 89 | CONFIG_IOSCHED_NOOP=y | ||
| 90 | # CONFIG_IOSCHED_AS is not set | ||
| 91 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 92 | CONFIG_IOSCHED_CFQ=y | ||
| 93 | # CONFIG_DEFAULT_AS is not set | ||
| 94 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 95 | # CONFIG_DEFAULT_CFQ is not set | ||
| 96 | CONFIG_DEFAULT_NOOP=y | ||
| 97 | CONFIG_DEFAULT_IOSCHED="noop" | ||
| 98 | CONFIG_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 | ||
| 126 | CONFIG_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 | ||
| 130 | CONFIG_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 | ||
| 135 | CONFIG_BFIN_DUAL_CORE=y | ||
| 136 | CONFIG_MEM_MT48LC8M32B2B5_7=y | ||
| 137 | CONFIG_IRQ_PLL_WAKEUP=7 | ||
| 138 | CONFIG_IRQ_SPORT0_ERROR=7 | ||
| 139 | CONFIG_IRQ_SPORT1_ERROR=7 | ||
| 140 | CONFIG_IRQ_SPI_ERROR=7 | ||
| 141 | # CONFIG_BFIN561_EZKIT is not set | ||
| 142 | # CONFIG_BFIN561_TEPLA is not set | ||
| 143 | CONFIG_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 | # | ||
| 157 | CONFIG_BF561_COREB=y | ||
| 158 | # CONFIG_BF561_COREB_RESET is not set | ||
| 159 | |||
| 160 | # | ||
| 161 | # Interrupt Priority Assignment | ||
| 162 | # | ||
| 163 | |||
| 164 | # | ||
| 165 | # Priority | ||
| 166 | # | ||
| 167 | CONFIG_IRQ_DMA1_ERROR=7 | ||
| 168 | CONFIG_IRQ_DMA2_ERROR=7 | ||
| 169 | CONFIG_IRQ_IMDMA_ERROR=7 | ||
| 170 | CONFIG_IRQ_PPI0_ERROR=7 | ||
| 171 | CONFIG_IRQ_PPI1_ERROR=7 | ||
| 172 | CONFIG_IRQ_UART_ERROR=7 | ||
| 173 | CONFIG_IRQ_RESERVED_ERROR=7 | ||
| 174 | CONFIG_IRQ_DMA1_0=8 | ||
| 175 | CONFIG_IRQ_DMA1_1=8 | ||
| 176 | CONFIG_IRQ_DMA1_2=8 | ||
| 177 | CONFIG_IRQ_DMA1_3=8 | ||
| 178 | CONFIG_IRQ_DMA1_4=8 | ||
| 179 | CONFIG_IRQ_DMA1_5=8 | ||
| 180 | CONFIG_IRQ_DMA1_6=8 | ||
| 181 | CONFIG_IRQ_DMA1_7=8 | ||
| 182 | CONFIG_IRQ_DMA1_8=8 | ||
| 183 | CONFIG_IRQ_DMA1_9=8 | ||
| 184 | CONFIG_IRQ_DMA1_10=8 | ||
| 185 | CONFIG_IRQ_DMA1_11=8 | ||
| 186 | CONFIG_IRQ_DMA2_0=9 | ||
| 187 | CONFIG_IRQ_DMA2_1=9 | ||
| 188 | CONFIG_IRQ_DMA2_2=9 | ||
| 189 | CONFIG_IRQ_DMA2_3=9 | ||
| 190 | CONFIG_IRQ_DMA2_4=9 | ||
| 191 | CONFIG_IRQ_DMA2_5=9 | ||
| 192 | CONFIG_IRQ_DMA2_6=9 | ||
| 193 | CONFIG_IRQ_DMA2_7=9 | ||
| 194 | CONFIG_IRQ_DMA2_8=9 | ||
| 195 | CONFIG_IRQ_DMA2_9=9 | ||
| 196 | CONFIG_IRQ_DMA2_10=9 | ||
| 197 | CONFIG_IRQ_DMA2_11=9 | ||
| 198 | CONFIG_IRQ_TIMER0=10 | ||
| 199 | CONFIG_IRQ_TIMER1=10 | ||
| 200 | CONFIG_IRQ_TIMER2=10 | ||
| 201 | CONFIG_IRQ_TIMER3=10 | ||
| 202 | CONFIG_IRQ_TIMER4=10 | ||
| 203 | CONFIG_IRQ_TIMER5=10 | ||
| 204 | CONFIG_IRQ_TIMER6=10 | ||
| 205 | CONFIG_IRQ_TIMER7=10 | ||
| 206 | CONFIG_IRQ_TIMER8=10 | ||
| 207 | CONFIG_IRQ_TIMER9=10 | ||
| 208 | CONFIG_IRQ_TIMER10=10 | ||
| 209 | CONFIG_IRQ_TIMER11=10 | ||
| 210 | CONFIG_IRQ_PROG0_INTA=11 | ||
| 211 | CONFIG_IRQ_PROG0_INTB=11 | ||
| 212 | CONFIG_IRQ_PROG1_INTA=11 | ||
| 213 | CONFIG_IRQ_PROG1_INTB=11 | ||
| 214 | CONFIG_IRQ_PROG2_INTA=11 | ||
| 215 | CONFIG_IRQ_PROG2_INTB=11 | ||
| 216 | CONFIG_IRQ_DMA1_WRRD0=8 | ||
| 217 | CONFIG_IRQ_DMA1_WRRD1=8 | ||
| 218 | CONFIG_IRQ_DMA2_WRRD0=9 | ||
| 219 | CONFIG_IRQ_DMA2_WRRD1=9 | ||
| 220 | CONFIG_IRQ_IMDMA_WRRD0=12 | ||
| 221 | CONFIG_IRQ_IMDMA_WRRD1=12 | ||
| 222 | CONFIG_IRQ_WDTIMER=13 | ||
| 223 | |||
| 224 | # | ||
| 225 | # Board customizations | ||
| 226 | # | ||
| 227 | # CONFIG_CMDLINE_BOOL is not set | ||
| 228 | |||
| 229 | # | ||
| 230 | # Clock/PLL Setup | ||
| 231 | # | ||
| 232 | CONFIG_CLKIN_HZ=25000000 | ||
| 233 | # CONFIG_BFIN_KERNEL_CLOCK is not set | ||
| 234 | CONFIG_MAX_VCO_HZ=600000000 | ||
| 235 | CONFIG_MIN_VCO_HZ=50000000 | ||
| 236 | CONFIG_MAX_SCLK_HZ=133333333 | ||
| 237 | CONFIG_MIN_SCLK_HZ=27000000 | ||
| 238 | |||
| 239 | # | ||
| 240 | # Kernel Timer/Scheduler | ||
| 241 | # | ||
| 242 | # CONFIG_HZ_100 is not set | ||
| 243 | CONFIG_HZ_250=y | ||
| 244 | # CONFIG_HZ_300 is not set | ||
| 245 | # CONFIG_HZ_1000 is not set | ||
| 246 | CONFIG_HZ=250 | ||
| 247 | CONFIG_GENERIC_TIME=y | ||
| 248 | CONFIG_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 | ||
| 253 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
| 254 | |||
| 255 | # | ||
| 256 | # Memory Setup | ||
| 257 | # | ||
| 258 | CONFIG_MAX_MEM_SIZE=32 | ||
| 259 | CONFIG_BOOT_LOAD=0x1000 | ||
| 260 | CONFIG_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 | # | ||
| 271 | CONFIG_I_ENTRY_L1=y | ||
| 272 | CONFIG_EXCPT_IRQ_SYSC_L1=y | ||
| 273 | CONFIG_DO_IRQ_L1=y | ||
| 274 | CONFIG_CORE_TIMER_IRQ_L1=y | ||
| 275 | CONFIG_IDLE_L1=y | ||
| 276 | CONFIG_SCHEDULE_L1=y | ||
| 277 | CONFIG_ARITHMETIC_OPS_L1=y | ||
| 278 | CONFIG_ACCESS_OK_L1=y | ||
| 279 | CONFIG_MEMSET_L1=y | ||
| 280 | CONFIG_MEMCPY_L1=y | ||
| 281 | CONFIG_SYS_BFIN_SPINLOCK_L1=y | ||
| 282 | CONFIG_IP_CHECKSUM_L1=y | ||
| 283 | CONFIG_CACHELINE_ALIGNED_L1=y | ||
| 284 | CONFIG_SYSCALL_TAB_L1=y | ||
| 285 | CONFIG_CPLB_SWITCH_TAB_L1=y | ||
| 286 | CONFIG_RAMKERNEL=y | ||
| 287 | # CONFIG_ROMKERNEL is not set | ||
| 288 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 289 | CONFIG_FLATMEM_MANUAL=y | ||
| 290 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 291 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 292 | CONFIG_FLATMEM=y | ||
| 293 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 294 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 295 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
| 296 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 297 | # CONFIG_RESOURCES_64BIT is not set | ||
| 298 | CONFIG_ZONE_DMA_FLAG=1 | ||
| 299 | CONFIG_VIRT_TO_BUS=y | ||
| 300 | CONFIG_LARGE_ALLOCS=y | ||
| 301 | # CONFIG_BFIN_GPTIMERS is not set | ||
| 302 | CONFIG_BFIN_DMA_5XX=y | ||
| 303 | # CONFIG_DMA_UNCACHED_2M is not set | ||
| 304 | CONFIG_DMA_UNCACHED_1M=y | ||
| 305 | # CONFIG_DMA_UNCACHED_NONE is not set | ||
| 306 | |||
| 307 | # | ||
| 308 | # Cache Support | ||
| 309 | # | ||
| 310 | CONFIG_BFIN_ICACHE=y | ||
| 311 | CONFIG_BFIN_DCACHE=y | ||
| 312 | # CONFIG_BFIN_DCACHE_BANKA is not set | ||
| 313 | # CONFIG_BFIN_ICACHE_LOCK is not set | ||
| 314 | CONFIG_BFIN_WB=y | ||
| 315 | # CONFIG_BFIN_WT is not set | ||
| 316 | CONFIG_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 | # | ||
| 326 | CONFIG_C_AMCKEN=y | ||
| 327 | CONFIG_C_CDPRIO=y | ||
| 328 | CONFIG_C_B0PEN=y | ||
| 329 | CONFIG_C_B1PEN=y | ||
| 330 | CONFIG_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 | ||
| 336 | CONFIG_C_AMBEN_ALL=y | ||
| 337 | |||
| 338 | # | ||
| 339 | # EBIU_AMBCTL Control | ||
| 340 | # | ||
| 341 | CONFIG_BANK_0=0x7BB0 | ||
| 342 | CONFIG_BANK_1=0x7BB0 | ||
| 343 | CONFIG_BANK_2=0x7BB0 | ||
| 344 | CONFIG_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 | # | ||
| 355 | CONFIG_BINFMT_ELF_FDPIC=y | ||
| 356 | CONFIG_BINFMT_FLAT=y | ||
| 357 | CONFIG_BINFMT_ZFLAT=y | ||
| 358 | CONFIG_BINFMT_SHARED_FLAT=y | ||
| 359 | # CONFIG_BINFMT_MISC is not set | ||
| 360 | |||
| 361 | # | ||
| 362 | # Power management options | ||
| 363 | # | ||
| 364 | # CONFIG_PM is not set | ||
| 365 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
| 366 | # CONFIG_PM_WAKEUP_BY_GPIO is not set | ||
| 367 | |||
| 368 | # | ||
| 369 | # Networking | ||
| 370 | # | ||
| 371 | CONFIG_NET=y | ||
| 372 | |||
| 373 | # | ||
| 374 | # Networking options | ||
| 375 | # | ||
| 376 | CONFIG_PACKET=y | ||
| 377 | # CONFIG_PACKET_MMAP is not set | ||
| 378 | CONFIG_UNIX=y | ||
| 379 | CONFIG_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 | ||
| 384 | CONFIG_INET=y | ||
| 385 | # CONFIG_IP_MULTICAST is not set | ||
| 386 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 387 | CONFIG_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 | ||
| 392 | CONFIG_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 | ||
| 398 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 399 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 400 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 401 | # CONFIG_INET_LRO is not set | ||
| 402 | CONFIG_INET_DIAG=y | ||
| 403 | CONFIG_INET_TCP_DIAG=y | ||
| 404 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 405 | CONFIG_TCP_CONG_CUBIC=y | ||
| 406 | CONFIG_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 | # | ||
| 456 | CONFIG_STANDALONE=y | ||
| 457 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 458 | # CONFIG_SYS_HYPERVISOR is not set | ||
| 459 | # CONFIG_CONNECTOR is not set | ||
| 460 | CONFIG_MTD=y | ||
| 461 | # CONFIG_MTD_DEBUG is not set | ||
| 462 | # CONFIG_MTD_CONCAT is not set | ||
| 463 | CONFIG_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 | # | ||
| 470 | CONFIG_MTD_CHAR=y | ||
| 471 | CONFIG_MTD_BLKDEVS=y | ||
| 472 | CONFIG_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 | ||
| 485 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 486 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 487 | CONFIG_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 | ||
| 491 | CONFIG_MTD_CFI_I1=y | ||
| 492 | CONFIG_MTD_CFI_I2=y | ||
| 493 | # CONFIG_MTD_CFI_I4 is not set | ||
| 494 | # CONFIG_MTD_CFI_I8 is not set | ||
| 495 | CONFIG_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 | ||
| 503 | CONFIG_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 | ||
| 528 | CONFIG_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 | ||
| 532 | CONFIG_BLK_DEV_RAM=y | ||
| 533 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 534 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
| 535 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
| 536 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 537 | # CONFIG_ATA_OVER_ETH is not set | ||
| 538 | CONFIG_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 | ||
| 553 | CONFIG_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 | ||
| 562 | CONFIG_NET_ETHERNET=y | ||
| 563 | CONFIG_MII=y | ||
| 564 | CONFIG_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 | ||
| 572 | CONFIG_NETDEV_1000=y | ||
| 573 | # CONFIG_AX88180 is not set | ||
| 574 | CONFIG_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 | # | ||
| 624 | CONFIG_SERIAL_BFIN=y | ||
| 625 | CONFIG_SERIAL_BFIN_CONSOLE=y | ||
| 626 | CONFIG_SERIAL_BFIN_DMA=y | ||
| 627 | # CONFIG_SERIAL_BFIN_PIO is not set | ||
| 628 | CONFIG_SERIAL_BFIN_UART0=y | ||
| 629 | # CONFIG_BFIN_UART0_CTSRTS is not set | ||
| 630 | CONFIG_SERIAL_CORE=y | ||
| 631 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 632 | # CONFIG_SERIAL_BFIN_SPORT is not set | ||
| 633 | CONFIG_UNIX98_PTYS=y | ||
| 634 | CONFIG_LEGACY_PTYS=y | ||
| 635 | CONFIG_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 | ||
| 656 | CONFIG_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 | # | ||
| 674 | CONFIG_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 | ||
| 687 | CONFIG_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 | ||
| 706 | CONFIG_USB_SUPPORT=y | ||
| 707 | CONFIG_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 | # | ||
| 741 | CONFIG_EXT2_FS=y | ||
| 742 | CONFIG_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 | ||
| 747 | CONFIG_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 | ||
| 756 | CONFIG_INOTIFY=y | ||
| 757 | CONFIG_INOTIFY_USER=y | ||
| 758 | # CONFIG_QUOTA is not set | ||
| 759 | CONFIG_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 | # | ||
| 780 | CONFIG_PROC_FS=y | ||
| 781 | CONFIG_PROC_SYSCTL=y | ||
| 782 | CONFIG_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 | ||
| 805 | CONFIG_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 | ||
| 818 | CONFIG_MSDOS_PARTITION=y | ||
| 819 | # CONFIG_NLS is not set | ||
| 820 | # CONFIG_DLM is not set | ||
| 821 | CONFIG_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 | ||
| 829 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
| 830 | CONFIG_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 | ||
| 839 | CONFIG_DEBUG_HUNT_FOR_ZERO=y | ||
| 840 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y | ||
| 841 | CONFIG_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 | ||
| 844 | CONFIG_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 | ||
| 849 | CONFIG_CPLB_INFO=y | ||
| 850 | CONFIG_ACCESS_CHECK=y | ||
| 851 | |||
| 852 | # | ||
| 853 | # Security options | ||
| 854 | # | ||
| 855 | # CONFIG_KEYS is not set | ||
| 856 | CONFIG_SECURITY=y | ||
| 857 | # CONFIG_SECURITY_NETWORK is not set | ||
| 858 | CONFIG_SECURITY_CAPABILITIES=y | ||
| 859 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
| 860 | # CONFIG_CRYPTO is not set | ||
| 861 | |||
| 862 | # | ||
| 863 | # Library routines | ||
| 864 | # | ||
| 865 | CONFIG_BITREVERSE=y | ||
| 866 | CONFIG_CRC_CCITT=m | ||
| 867 | # CONFIG_CRC16 is not set | ||
| 868 | # CONFIG_CRC_ITU_T is not set | ||
| 869 | CONFIG_CRC32=y | ||
| 870 | # CONFIG_CRC7 is not set | ||
| 871 | # CONFIG_LIBCRC32C is not set | ||
| 872 | CONFIG_ZLIB_INFLATE=y | ||
| 873 | CONFIG_PLIST=y | ||
| 874 | CONFIG_HAS_IOMEM=y | ||
| 875 | CONFIG_HAS_IOPORT=y | ||
| 876 | CONFIG_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 | |||
| 13 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
| 14 | CONFIG_GENERIC_HARDIRQS=y | 14 | CONFIG_GENERIC_HARDIRQS=y |
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | 15 | CONFIG_GENERIC_IRQ_PROBE=y |
| 16 | # CONFIG_GENERIC_TIME is not set | 16 | CONFIG_GENERIC_TIME=y |
| 17 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
| 18 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
| 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| @@ -207,7 +207,7 @@ CONFIG_HZ=250 | |||
| 207 | # | 207 | # |
| 208 | # Memory Setup | 208 | # Memory Setup |
| 209 | # | 209 | # |
| 210 | CONFIG_MEM_SIZE=32 | 210 | CONFIG_MAX_MEM_SIZE=32 |
| 211 | CONFIG_MEM_ADD_WIDTH=9 | 211 | CONFIG_MEM_ADD_WIDTH=9 |
| 212 | CONFIG_BOOT_LOAD=0x1000 | 212 | CONFIG_BOOT_LOAD=0x1000 |
| 213 | CONFIG_BFIN_SCRATCH_REG_RETN=y | 213 | CONFIG_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 | ||
| 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | ||
| 9 | CONFIG_BLACKFIN=y | ||
| 10 | CONFIG_ZONE_DMA=y | ||
| 11 | CONFIG_SEMAPHORE_SLEEPERS=y | ||
| 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 13 | CONFIG_GENERIC_HWEIGHT=y | ||
| 14 | CONFIG_GENERIC_HARDIRQS=y | ||
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | ||
| 16 | # CONFIG_GENERIC_TIME is not set | ||
| 17 | CONFIG_GENERIC_GPIO=y | ||
| 18 | CONFIG_FORCE_MAX_ZONEORDER=14 | ||
| 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 21 | |||
| 22 | # | ||
| 23 | # Code maturity level options | ||
| 24 | # | ||
| 25 | CONFIG_EXPERIMENTAL=y | ||
| 26 | CONFIG_BROKEN_ON_SMP=y | ||
| 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 28 | |||
| 29 | # | ||
| 30 | # General setup | ||
| 31 | # | ||
| 32 | CONFIG_LOCALVERSION="" | ||
| 33 | CONFIG_LOCALVERSION_AUTO=y | ||
| 34 | CONFIG_SYSVIPC=y | ||
| 35 | # CONFIG_IPC_NS is not set | ||
| 36 | CONFIG_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 | ||
| 43 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 44 | CONFIG_SYSFS_DEPRECATED=y | ||
| 45 | # CONFIG_RELAY is not set | ||
| 46 | CONFIG_BLK_DEV_INITRD=y | ||
| 47 | CONFIG_INITRAMFS_SOURCE="" | ||
| 48 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 49 | CONFIG_SYSCTL=y | ||
| 50 | CONFIG_EMBEDDED=y | ||
| 51 | CONFIG_UID16=y | ||
| 52 | CONFIG_SYSCTL_SYSCALL=y | ||
| 53 | CONFIG_KALLSYMS=y | ||
| 54 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 55 | # CONFIG_HOTPLUG is not set | ||
| 56 | CONFIG_PRINTK=y | ||
| 57 | CONFIG_BUG=y | ||
| 58 | CONFIG_ELF_CORE=y | ||
| 59 | CONFIG_BASE_FULL=y | ||
| 60 | CONFIG_FUTEX=y | ||
| 61 | CONFIG_ANON_INODES=y | ||
| 62 | CONFIG_EPOLL=y | ||
| 63 | CONFIG_SIGNALFD=y | ||
| 64 | CONFIG_EVENTFD=y | ||
| 65 | CONFIG_VM_EVENT_COUNTERS=y | ||
| 66 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | ||
| 67 | # CONFIG_NP2 is not set | ||
| 68 | CONFIG_SLAB=y | ||
| 69 | # CONFIG_SLUB is not set | ||
| 70 | # CONFIG_SLOB is not set | ||
| 71 | CONFIG_RT_MUTEXES=y | ||
| 72 | CONFIG_TINY_SHMEM=y | ||
| 73 | CONFIG_BASE_SMALL=0 | ||
| 74 | |||
| 75 | # | ||
| 76 | # Loadable module support | ||
| 77 | # | ||
| 78 | CONFIG_MODULES=y | ||
| 79 | CONFIG_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 | ||
| 83 | CONFIG_KMOD=y | ||
| 84 | |||
| 85 | # | ||
| 86 | # Block layer | ||
| 87 | # | ||
| 88 | CONFIG_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 | # | ||
| 96 | CONFIG_IOSCHED_NOOP=y | ||
| 97 | CONFIG_IOSCHED_AS=y | ||
| 98 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 99 | CONFIG_IOSCHED_CFQ=y | ||
| 100 | CONFIG_DEFAULT_AS=y | ||
| 101 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 102 | # CONFIG_DEFAULT_CFQ is not set | ||
| 103 | # CONFIG_DEFAULT_NOOP is not set | ||
| 104 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
| 105 | CONFIG_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 | ||
| 123 | CONFIG_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 | ||
| 139 | CONFIG_BF_REV_0_5=y | ||
| 140 | # CONFIG_BF_REV_ANY is not set | ||
| 141 | # CONFIG_BF_REV_NONE is not set | ||
| 142 | CONFIG_BF53x=y | ||
| 143 | CONFIG_BFIN_SINGLE_CORE=y | ||
| 144 | CONFIG_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 | ||
| 149 | CONFIG_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 | # | ||
| 163 | CONFIG_UART_ERROR=7 | ||
| 164 | CONFIG_SPORT0_ERROR=7 | ||
| 165 | CONFIG_SPI_ERROR=7 | ||
| 166 | CONFIG_SPORT1_ERROR=7 | ||
| 167 | CONFIG_PPI_ERROR=7 | ||
| 168 | CONFIG_DMA_ERROR=7 | ||
| 169 | CONFIG_PLLWAKE_ERROR=7 | ||
| 170 | CONFIG_RTC_ERROR=8 | ||
| 171 | CONFIG_DMA0_PPI=8 | ||
| 172 | CONFIG_DMA1_SPORT0RX=9 | ||
| 173 | CONFIG_DMA2_SPORT0TX=9 | ||
| 174 | CONFIG_DMA3_SPORT1RX=9 | ||
| 175 | CONFIG_DMA4_SPORT1TX=9 | ||
| 176 | CONFIG_DMA5_SPI=10 | ||
| 177 | CONFIG_DMA6_UARTRX=10 | ||
| 178 | CONFIG_DMA7_UARTTX=10 | ||
| 179 | CONFIG_TIMER0=11 | ||
| 180 | CONFIG_TIMER1=11 | ||
| 181 | CONFIG_TIMER2=11 | ||
| 182 | CONFIG_PFA=12 | ||
| 183 | CONFIG_PFB=12 | ||
| 184 | CONFIG_MEMDMA0=13 | ||
| 185 | CONFIG_MEMDMA1=13 | ||
| 186 | CONFIG_WDTIMER=13 | ||
| 187 | |||
| 188 | # | ||
| 189 | # Board customizations | ||
| 190 | # | ||
| 191 | # CONFIG_CMDLINE_BOOL is not set | ||
| 192 | |||
| 193 | # | ||
| 194 | # Clock/PLL Setup | ||
| 195 | # | ||
| 196 | CONFIG_CLKIN_HZ=10000000 | ||
| 197 | # CONFIG_BFIN_KERNEL_CLOCK is not set | ||
| 198 | CONFIG_MAX_VCO_HZ=400000000 | ||
| 199 | CONFIG_MIN_VCO_HZ=50000000 | ||
| 200 | CONFIG_MAX_SCLK_HZ=133333333 | ||
| 201 | CONFIG_MIN_SCLK_HZ=27000000 | ||
| 202 | |||
| 203 | # | ||
| 204 | # Kernel Timer/Scheduler | ||
| 205 | # | ||
| 206 | # CONFIG_HZ_100 is not set | ||
| 207 | CONFIG_HZ_250=y | ||
| 208 | # CONFIG_HZ_300 is not set | ||
| 209 | # CONFIG_HZ_1000 is not set | ||
| 210 | CONFIG_HZ=250 | ||
| 211 | |||
| 212 | # | ||
| 213 | # Memory Setup | ||
| 214 | # | ||
| 215 | CONFIG_MEM_SIZE=64 | ||
| 216 | CONFIG_MEM_ADD_WIDTH=10 | ||
| 217 | |||
| 218 | # | ||
| 219 | # Hardware addresses | ||
| 220 | # | ||
| 221 | CONFIG_IP0X_NET1=0x20100000 | ||
| 222 | CONFIG_IP0X_NET2=0x20200000 | ||
| 223 | CONFIG_IP0X_USB=0x20300000 | ||
| 224 | CONFIG_BOOT_LOAD=0x1000 | ||
| 225 | CONFIG_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 | # | ||
| 236 | CONFIG_I_ENTRY_L1=y | ||
| 237 | CONFIG_EXCPT_IRQ_SYSC_L1=y | ||
| 238 | CONFIG_DO_IRQ_L1=y | ||
| 239 | CONFIG_CORE_TIMER_IRQ_L1=y | ||
| 240 | CONFIG_IDLE_L1=y | ||
| 241 | CONFIG_SCHEDULE_L1=y | ||
| 242 | CONFIG_ARITHMETIC_OPS_L1=y | ||
| 243 | CONFIG_ACCESS_OK_L1=y | ||
| 244 | CONFIG_MEMSET_L1=y | ||
| 245 | CONFIG_MEMCPY_L1=y | ||
| 246 | CONFIG_SYS_BFIN_SPINLOCK_L1=y | ||
| 247 | # CONFIG_IP_CHECKSUM_L1 is not set | ||
| 248 | CONFIG_CACHELINE_ALIGNED_L1=y | ||
| 249 | # CONFIG_SYSCALL_TAB_L1 is not set | ||
| 250 | # CONFIG_CPLB_SWITCH_TAB_L1 is not set | ||
| 251 | CONFIG_RAMKERNEL=y | ||
| 252 | # CONFIG_ROMKERNEL is not set | ||
| 253 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 254 | CONFIG_FLATMEM_MANUAL=y | ||
| 255 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 256 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 257 | CONFIG_FLATMEM=y | ||
| 258 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 259 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 260 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 261 | # CONFIG_RESOURCES_64BIT is not set | ||
| 262 | CONFIG_ZONE_DMA_FLAG=1 | ||
| 263 | CONFIG_LARGE_ALLOCS=y | ||
| 264 | # CONFIG_BFIN_GPTIMERS is not set | ||
| 265 | CONFIG_BFIN_DMA_5XX=y | ||
| 266 | # CONFIG_DMA_UNCACHED_2M is not set | ||
| 267 | CONFIG_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 | ||
| 276 | CONFIG_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 | # | ||
| 286 | CONFIG_C_AMCKEN=y | ||
| 287 | CONFIG_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 | ||
| 292 | CONFIG_C_AMBEN_ALL=y | ||
| 293 | |||
| 294 | # | ||
| 295 | # EBIU_AMBCTL Control | ||
| 296 | # | ||
| 297 | CONFIG_BANK_0=0xffc2 | ||
| 298 | CONFIG_BANK_1=0xffc2 | ||
| 299 | CONFIG_BANK_2=0xffc2 | ||
| 300 | CONFIG_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 | # | ||
| 315 | CONFIG_BINFMT_ELF_FDPIC=y | ||
| 316 | CONFIG_BINFMT_FLAT=y | ||
| 317 | CONFIG_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 | # | ||
| 324 | CONFIG_PM=y | ||
| 325 | # CONFIG_PM_LEGACY is not set | ||
| 326 | # CONFIG_PM_DEBUG is not set | ||
| 327 | # CONFIG_PM_SYSFS_DEPRECATED is not set | ||
| 328 | CONFIG_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 | # | ||
| 335 | CONFIG_NET=y | ||
| 336 | |||
| 337 | # | ||
| 338 | # Networking options | ||
| 339 | # | ||
| 340 | CONFIG_PACKET=y | ||
| 341 | # CONFIG_PACKET_MMAP is not set | ||
| 342 | CONFIG_UNIX=y | ||
| 343 | CONFIG_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 | ||
| 348 | CONFIG_INET=y | ||
| 349 | # CONFIG_IP_MULTICAST is not set | ||
| 350 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 351 | CONFIG_IP_FIB_HASH=y | ||
| 352 | CONFIG_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 | ||
| 359 | CONFIG_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 | ||
| 365 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 366 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 367 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 368 | CONFIG_INET_DIAG=y | ||
| 369 | CONFIG_INET_TCP_DIAG=y | ||
| 370 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 371 | CONFIG_TCP_CONG_CUBIC=y | ||
| 372 | CONFIG_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 | ||
| 380 | CONFIG_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 | ||
| 389 | CONFIG_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 | ||
| 402 | CONFIG_NETFILTER_XT_MATCH_MAC=y | ||
| 403 | # CONFIG_NETFILTER_XT_MATCH_MARK is not set | ||
| 404 | # CONFIG_NETFILTER_XT_MATCH_POLICY is not set | ||
| 405 | CONFIG_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 | ||
| 419 | CONFIG_IP_NF_IPTABLES=y | ||
| 420 | CONFIG_IP_NF_MATCH_IPRANGE=y | ||
| 421 | CONFIG_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 | ||
| 428 | CONFIG_IP_NF_FILTER=y | ||
| 429 | CONFIG_IP_NF_TARGET_REJECT=y | ||
| 430 | # CONFIG_IP_NF_TARGET_LOG is not set | ||
| 431 | # CONFIG_IP_NF_TARGET_ULOG is not set | ||
| 432 | CONFIG_IP_NF_MANGLE=y | ||
| 433 | CONFIG_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 | # | ||
| 483 | CONFIG_STANDALONE=y | ||
| 484 | CONFIG_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 | ||
| 491 | CONFIG_MTD=y | ||
| 492 | # CONFIG_MTD_DEBUG is not set | ||
| 493 | # CONFIG_MTD_CONCAT is not set | ||
| 494 | CONFIG_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 | # | ||
| 501 | CONFIG_MTD_CHAR=y | ||
| 502 | CONFIG_MTD_BLKDEVS=y | ||
| 503 | CONFIG_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 | # | ||
| 513 | CONFIG_MTD_CFI=y | ||
| 514 | # CONFIG_MTD_JEDECPROBE is not set | ||
| 515 | CONFIG_MTD_GEN_PROBE=y | ||
| 516 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 517 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 518 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 519 | CONFIG_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 | ||
| 523 | CONFIG_MTD_CFI_I1=y | ||
| 524 | CONFIG_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 | ||
| 528 | CONFIG_MTD_CFI_AMDSTD=y | ||
| 529 | # CONFIG_MTD_CFI_STAA is not set | ||
| 530 | CONFIG_MTD_CFI_UTIL=y | ||
| 531 | CONFIG_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 | # | ||
| 538 | CONFIG_MTD_COMPLEX_MAPPINGS=y | ||
| 539 | # CONFIG_MTD_PHYSMAP is not set | ||
| 540 | CONFIG_MTD_UCLINUX=y | ||
| 541 | CONFIG_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 | ||
| 559 | CONFIG_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 | ||
| 563 | CONFIG_MTD_NAND_BFIN=y | ||
| 564 | CONFIG_BFIN_NAND_BASE=0x20000000 | ||
| 565 | CONFIG_BFIN_NAND_SIZE=0x10000000 | ||
| 566 | CONFIG_BFIN_NAND_CLE=2 | ||
| 567 | CONFIG_BFIN_NAND_ALE=1 | ||
| 568 | CONFIG_BFIN_NAND_READY=10 | ||
| 569 | CONFIG_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 | ||
| 597 | CONFIG_BLK_DEV_RAM=y | ||
| 598 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 599 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
| 600 | CONFIG_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 | ||
| 613 | CONFIG_SCSI=y | ||
| 614 | # CONFIG_SCSI_TGT is not set | ||
| 615 | # CONFIG_SCSI_NETLINK is not set | ||
| 616 | CONFIG_SCSI_PROC_FS=y | ||
| 617 | |||
| 618 | # | ||
| 619 | # SCSI support type (disk, tape, CD-ROM) | ||
| 620 | # | ||
| 621 | CONFIG_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 | ||
| 635 | CONFIG_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 | # | ||
| 661 | CONFIG_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 | # | ||
| 671 | CONFIG_NET_ETHERNET=y | ||
| 672 | CONFIG_MII=y | ||
| 673 | # CONFIG_SMC91X is not set | ||
| 674 | # CONFIG_SMSC911X is not set | ||
| 675 | CONFIG_DM9000=y | ||
| 676 | CONFIG_NETDEV_1000=y | ||
| 677 | # CONFIG_AX88180 is not set | ||
| 678 | CONFIG_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 | ||
| 733 | CONFIG_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 | # | ||
| 747 | CONFIG_SERIAL_BFIN=y | ||
| 748 | CONFIG_SERIAL_BFIN_CONSOLE=y | ||
| 749 | CONFIG_SERIAL_BFIN_DMA=y | ||
| 750 | # CONFIG_SERIAL_BFIN_PIO is not set | ||
| 751 | CONFIG_SERIAL_BFIN_UART0=y | ||
| 752 | # CONFIG_BFIN_UART0_CTSRTS is not set | ||
| 753 | CONFIG_SERIAL_CORE=y | ||
| 754 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 755 | # CONFIG_SERIAL_BFIN_SPORT is not set | ||
| 756 | CONFIG_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 | ||
| 768 | CONFIG_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 | ||
| 781 | CONFIG_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 | # | ||
| 795 | CONFIG_SPI=y | ||
| 796 | CONFIG_SPI_MASTER=y | ||
| 797 | |||
| 798 | # | ||
| 799 | # SPI Master Controller Drivers | ||
| 800 | # | ||
| 801 | CONFIG_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 | ||
| 826 | CONFIG_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 | # | ||
| 849 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 850 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
| 851 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
| 852 | CONFIG_USB=y | ||
| 853 | # CONFIG_USB_DEBUG is not set | ||
| 854 | |||
| 855 | # | ||
| 856 | # Miscellaneous USB options | ||
| 857 | # | ||
| 858 | CONFIG_USB_DEVICEFS=y | ||
| 859 | CONFIG_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 | ||
| 863 | CONFIG_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 | ||
| 870 | CONFIG_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 | # | ||
| 888 | CONFIG_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 | ||
| 906 | CONFIG_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 | ||
| 948 | CONFIG_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 | # | ||
| 955 | CONFIG_MMC_BLOCK=m | ||
| 956 | |||
| 957 | # | ||
| 958 | # MMC/SD Host Controller Drivers | ||
| 959 | # | ||
| 960 | CONFIG_SPI_MMC=m | ||
| 961 | CONFIG_SPI_MMC_FRAMEWORK_DRIVER=y | ||
| 962 | # CONFIG_SPI_MMC_BFIN_PIO_SPI is not set | ||
| 963 | CONFIG_SPI_MMC_CS_CHAN=5 | ||
| 964 | CONFIG_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 | # | ||
| 992 | CONFIG_RTC_LIB=y | ||
| 993 | CONFIG_RTC_CLASS=y | ||
| 994 | CONFIG_RTC_HCTOSYS=y | ||
| 995 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
| 996 | # CONFIG_RTC_DEBUG is not set | ||
| 997 | |||
| 998 | # | ||
| 999 | # RTC interfaces | ||
| 1000 | # | ||
| 1001 | CONFIG_RTC_INTF_SYSFS=y | ||
| 1002 | CONFIG_RTC_INTF_PROC=y | ||
| 1003 | CONFIG_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 | # | ||
| 1028 | CONFIG_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 | # | ||
| 1051 | CONFIG_EXT2_FS=y | ||
| 1052 | CONFIG_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 | ||
| 1057 | CONFIG_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 | ||
| 1066 | CONFIG_INOTIFY=y | ||
| 1067 | CONFIG_INOTIFY_USER=y | ||
| 1068 | # CONFIG_QUOTA is not set | ||
| 1069 | CONFIG_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 | # | ||
| 1083 | CONFIG_FAT_FS=y | ||
| 1084 | CONFIG_MSDOS_FS=y | ||
| 1085 | CONFIG_VFAT_FS=y | ||
| 1086 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 1087 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 1088 | # CONFIG_NTFS_FS is not set | ||
| 1089 | |||
| 1090 | # | ||
| 1091 | # Pseudo filesystems | ||
| 1092 | # | ||
| 1093 | CONFIG_PROC_FS=y | ||
| 1094 | CONFIG_PROC_SYSCTL=y | ||
| 1095 | CONFIG_SYSFS=y | ||
| 1096 | # CONFIG_TMPFS is not set | ||
| 1097 | # CONFIG_HUGETLB_PAGE is not set | ||
| 1098 | CONFIG_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 | ||
| 1111 | CONFIG_YAFFS_FS=y | ||
| 1112 | CONFIG_YAFFS_YAFFS1=y | ||
| 1113 | # CONFIG_YAFFS_DOES_ECC is not set | ||
| 1114 | CONFIG_YAFFS_YAFFS2=y | ||
| 1115 | CONFIG_YAFFS_AUTO_YAFFS2=y | ||
| 1116 | # CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set | ||
| 1117 | CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10 | ||
| 1118 | # CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set | ||
| 1119 | # CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set | ||
| 1120 | CONFIG_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 | ||
| 1145 | CONFIG_MSDOS_PARTITION=y | ||
| 1146 | |||
| 1147 | # | ||
| 1148 | # Native Language Support | ||
| 1149 | # | ||
| 1150 | CONFIG_NLS=y | ||
| 1151 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 1152 | CONFIG_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 | ||
| 1176 | CONFIG_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 | ||
| 1205 | CONFIG_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 | ||
| 1213 | CONFIG_DEBUG_HUNT_FOR_ZERO=y | ||
| 1214 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y | ||
| 1215 | CONFIG_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 | ||
| 1218 | CONFIG_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 | ||
| 1222 | CONFIG_CPLB_INFO=y | ||
| 1223 | CONFIG_ACCESS_CHECK=y | ||
| 1224 | |||
| 1225 | # | ||
| 1226 | # Security options | ||
| 1227 | # | ||
| 1228 | # CONFIG_KEYS is not set | ||
| 1229 | CONFIG_SECURITY=y | ||
| 1230 | # CONFIG_SECURITY_NETWORK is not set | ||
| 1231 | CONFIG_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 | # | ||
| 1242 | CONFIG_BITREVERSE=y | ||
| 1243 | CONFIG_CRC_CCITT=y | ||
| 1244 | # CONFIG_CRC16 is not set | ||
| 1245 | # CONFIG_CRC_ITU_T is not set | ||
| 1246 | CONFIG_CRC32=y | ||
| 1247 | # CONFIG_LIBCRC32C is not set | ||
| 1248 | CONFIG_ZLIB_INFLATE=y | ||
| 1249 | CONFIG_PLIST=y | ||
| 1250 | CONFIG_HAS_IOMEM=y | ||
| 1251 | CONFIG_HAS_IOPORT=y | ||
| 1252 | CONFIG_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 | |||
| 13 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
| 14 | CONFIG_GENERIC_HARDIRQS=y | 14 | CONFIG_GENERIC_HARDIRQS=y |
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | 15 | CONFIG_GENERIC_IRQ_PROBE=y |
| 16 | # CONFIG_GENERIC_TIME is not set | 16 | CONFIG_GENERIC_TIME=y |
| 17 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
| 18 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
| 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| @@ -214,7 +214,7 @@ CONFIG_HZ=250 | |||
| 214 | # | 214 | # |
| 215 | # Memory Setup | 215 | # Memory Setup |
| 216 | # | 216 | # |
| 217 | CONFIG_MEM_SIZE=64 | 217 | CONFIG_MAX_MEM_SIZE=64 |
| 218 | CONFIG_MEM_ADD_WIDTH=10 | 218 | CONFIG_MEM_ADD_WIDTH=10 |
| 219 | CONFIG_BOOT_LOAD=0x1000 | 219 | CONFIG_BOOT_LOAD=0x1000 |
| 220 | CONFIG_BFIN_SCRATCH_REG_RETN=y | 220 | CONFIG_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 | ||
| 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 9 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | ||
| 10 | CONFIG_BLACKFIN=y | ||
| 11 | CONFIG_ZONE_DMA=y | ||
| 12 | CONFIG_BFIN=y | ||
| 13 | CONFIG_SEMAPHORE_SLEEPERS=y | ||
| 14 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 15 | CONFIG_GENERIC_HWEIGHT=y | ||
| 16 | CONFIG_GENERIC_HARDIRQS=y | ||
| 17 | CONFIG_GENERIC_IRQ_PROBE=y | ||
| 18 | # CONFIG_GENERIC_TIME is not set | ||
| 19 | CONFIG_GENERIC_GPIO=y | ||
| 20 | CONFIG_FORCE_MAX_ZONEORDER=14 | ||
| 21 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 22 | CONFIG_IRQCHIP_DEMUX_GPIO=y | ||
| 23 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 24 | |||
| 25 | # | ||
| 26 | # Code maturity level options | ||
| 27 | # | ||
| 28 | CONFIG_EXPERIMENTAL=y | ||
| 29 | CONFIG_BROKEN_ON_SMP=y | ||
| 30 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 31 | |||
| 32 | # | ||
| 33 | # General setup | ||
| 34 | # | ||
| 35 | CONFIG_LOCALVERSION="" | ||
| 36 | CONFIG_LOCALVERSION_AUTO=y | ||
| 37 | CONFIG_SYSVIPC=y | ||
| 38 | # CONFIG_IPC_NS is not set | ||
| 39 | CONFIG_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 | ||
| 46 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 47 | CONFIG_SYSFS_DEPRECATED=y | ||
| 48 | # CONFIG_RELAY is not set | ||
| 49 | CONFIG_BLK_DEV_INITRD=y | ||
| 50 | CONFIG_INITRAMFS_SOURCE="" | ||
| 51 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 52 | CONFIG_SYSCTL=y | ||
| 53 | CONFIG_EMBEDDED=y | ||
| 54 | CONFIG_UID16=y | ||
| 55 | CONFIG_SYSCTL_SYSCALL=y | ||
| 56 | CONFIG_KALLSYMS=y | ||
| 57 | CONFIG_KALLSYMS_ALL=y | ||
| 58 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 59 | CONFIG_HOTPLUG=y | ||
| 60 | CONFIG_PRINTK=y | ||
| 61 | CONFIG_BUG=y | ||
| 62 | CONFIG_ELF_CORE=y | ||
| 63 | CONFIG_BASE_FULL=y | ||
| 64 | CONFIG_FUTEX=y | ||
| 65 | CONFIG_ANON_INODES=y | ||
| 66 | CONFIG_EPOLL=y | ||
| 67 | CONFIG_SIGNALFD=y | ||
| 68 | CONFIG_EVENTFD=y | ||
| 69 | CONFIG_VM_EVENT_COUNTERS=y | ||
| 70 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | ||
| 71 | # CONFIG_NP2 is not set | ||
| 72 | CONFIG_SLAB=y | ||
| 73 | # CONFIG_SLUB is not set | ||
| 74 | # CONFIG_SLOB is not set | ||
| 75 | CONFIG_RT_MUTEXES=y | ||
| 76 | CONFIG_TINY_SHMEM=y | ||
| 77 | CONFIG_BASE_SMALL=0 | ||
| 78 | |||
| 79 | # | ||
| 80 | # Loadable module support | ||
| 81 | # | ||
| 82 | CONFIG_MODULES=y | ||
| 83 | CONFIG_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 | ||
| 87 | CONFIG_KMOD=y | ||
| 88 | |||
| 89 | # | ||
| 90 | # Block layer | ||
| 91 | # | ||
| 92 | CONFIG_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 | # | ||
| 100 | CONFIG_IOSCHED_NOOP=y | ||
| 101 | CONFIG_IOSCHED_AS=y | ||
| 102 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 103 | CONFIG_IOSCHED_CFQ=y | ||
| 104 | CONFIG_DEFAULT_AS=y | ||
| 105 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 106 | # CONFIG_DEFAULT_CFQ is not set | ||
| 107 | # CONFIG_DEFAULT_NOOP is not set | ||
| 108 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
| 109 | # CONFIG_PREEMPT_NONE is not set | ||
| 110 | CONFIG_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 | ||
| 128 | CONFIG_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 | ||
| 136 | CONFIG_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 | ||
| 142 | CONFIG_BF53x=y | ||
| 143 | CONFIG_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 | ||
| 158 | CONFIG_GENERIC_BOARD=y | ||
| 159 | CONFIG_MEM_GENERIC_BOARD=y | ||
| 160 | CONFIG_IRQ_PLL_WAKEUP=7 | ||
| 161 | CONFIG_IRQ_RTC=8 | ||
| 162 | CONFIG_IRQ_PPI=8 | ||
| 163 | CONFIG_IRQ_SPORT0_RX=9 | ||
| 164 | CONFIG_IRQ_SPORT0_TX=9 | ||
| 165 | CONFIG_IRQ_SPORT1_RX=9 | ||
| 166 | CONFIG_IRQ_SPORT1_TX=9 | ||
| 167 | CONFIG_IRQ_TWI=10 | ||
| 168 | CONFIG_IRQ_SPI=10 | ||
| 169 | CONFIG_IRQ_UART0_RX=10 | ||
| 170 | CONFIG_IRQ_UART0_TX=10 | ||
| 171 | CONFIG_IRQ_UART1_RX=10 | ||
| 172 | CONFIG_IRQ_UART1_TX=10 | ||
| 173 | CONFIG_IRQ_MAC_RX=11 | ||
| 174 | CONFIG_IRQ_MAC_TX=11 | ||
| 175 | CONFIG_IRQ_TMR0=12 | ||
| 176 | CONFIG_IRQ_TMR1=12 | ||
| 177 | CONFIG_IRQ_TMR2=12 | ||
| 178 | CONFIG_IRQ_TMR3=12 | ||
| 179 | CONFIG_IRQ_TMR4=12 | ||
| 180 | CONFIG_IRQ_TMR5=12 | ||
| 181 | CONFIG_IRQ_TMR6=12 | ||
| 182 | CONFIG_IRQ_TMR7=12 | ||
| 183 | CONFIG_IRQ_PORTG_INTB=12 | ||
| 184 | CONFIG_IRQ_MEM_DMA0=13 | ||
| 185 | CONFIG_IRQ_MEM_DMA1=13 | ||
| 186 | CONFIG_IRQ_WATCH=13 | ||
| 187 | |||
| 188 | # | ||
| 189 | # BF537 Specific Configuration | ||
| 190 | # | ||
| 191 | |||
| 192 | # | ||
| 193 | # Interrupt Priority Assignment | ||
| 194 | # | ||
| 195 | |||
| 196 | # | ||
| 197 | # Priority | ||
| 198 | # | ||
| 199 | CONFIG_IRQ_DMA_ERROR=7 | ||
| 200 | CONFIG_IRQ_ERROR=7 | ||
| 201 | CONFIG_IRQ_CAN_RX=11 | ||
| 202 | CONFIG_IRQ_CAN_TX=11 | ||
| 203 | CONFIG_IRQ_PROG_INTA=12 | ||
| 204 | |||
| 205 | # | ||
| 206 | # Board customizations | ||
| 207 | # | ||
| 208 | # CONFIG_CMDLINE_BOOL is not set | ||
| 209 | |||
| 210 | # | ||
| 211 | # Clock/PLL Setup | ||
| 212 | # | ||
| 213 | CONFIG_CLKIN_HZ=22118400 | ||
| 214 | # CONFIG_BFIN_KERNEL_CLOCK is not set | ||
| 215 | CONFIG_MAX_VCO_HZ=600000000 | ||
| 216 | CONFIG_MIN_VCO_HZ=50000000 | ||
| 217 | CONFIG_MAX_SCLK_HZ=133000000 | ||
| 218 | CONFIG_MIN_SCLK_HZ=27000000 | ||
| 219 | |||
| 220 | # | ||
| 221 | # Kernel Timer/Scheduler | ||
| 222 | # | ||
| 223 | # CONFIG_HZ_100 is not set | ||
| 224 | CONFIG_HZ_250=y | ||
| 225 | # CONFIG_HZ_300 is not set | ||
| 226 | # CONFIG_HZ_1000 is not set | ||
| 227 | CONFIG_HZ=250 | ||
| 228 | |||
| 229 | # | ||
| 230 | # Memory Setup | ||
| 231 | # | ||
| 232 | CONFIG_MAX_MEM_SIZE=32 | ||
| 233 | CONFIG_MEM_ADD_WIDTH=9 | ||
| 234 | CONFIG_BOOT_LOAD=0x400000 | ||
| 235 | CONFIG_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 | # | ||
| 246 | CONFIG_I_ENTRY_L1=y | ||
| 247 | CONFIG_EXCPT_IRQ_SYSC_L1=y | ||
| 248 | CONFIG_DO_IRQ_L1=y | ||
| 249 | CONFIG_CORE_TIMER_IRQ_L1=y | ||
| 250 | CONFIG_IDLE_L1=y | ||
| 251 | CONFIG_SCHEDULE_L1=y | ||
| 252 | CONFIG_ARITHMETIC_OPS_L1=y | ||
| 253 | CONFIG_ACCESS_OK_L1=y | ||
| 254 | CONFIG_MEMSET_L1=y | ||
| 255 | CONFIG_MEMCPY_L1=y | ||
| 256 | CONFIG_SYS_BFIN_SPINLOCK_L1=y | ||
| 257 | # CONFIG_IP_CHECKSUM_L1 is not set | ||
| 258 | CONFIG_CACHELINE_ALIGNED_L1=y | ||
| 259 | # CONFIG_SYSCALL_TAB_L1 is not set | ||
| 260 | # CONFIG_CPLB_SWITCH_TAB_L1 is not set | ||
| 261 | CONFIG_RAMKERNEL=y | ||
| 262 | # CONFIG_ROMKERNEL is not set | ||
| 263 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 264 | CONFIG_FLATMEM_MANUAL=y | ||
| 265 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 266 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 267 | CONFIG_FLATMEM=y | ||
| 268 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 269 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 270 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 271 | # CONFIG_RESOURCES_64BIT is not set | ||
| 272 | CONFIG_ZONE_DMA_FLAG=1 | ||
| 273 | CONFIG_LARGE_ALLOCS=y | ||
| 274 | CONFIG_BFIN_DMA_5XX=y | ||
| 275 | CONFIG_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 | # | ||
| 282 | CONFIG_BFIN_ICACHE=y | ||
| 283 | CONFIG_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 | ||
| 287 | CONFIG_BFIN_WT=y | ||
| 288 | CONFIG_L1_MAX_PIECE=16 | ||
| 289 | |||
| 290 | # | ||
| 291 | # Asynchonous Memory Configuration | ||
| 292 | # | ||
| 293 | |||
| 294 | # | ||
| 295 | # EBIU_AMGCTL Global Control | ||
| 296 | # | ||
| 297 | CONFIG_C_AMCKEN=y | ||
| 298 | CONFIG_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 | ||
| 303 | CONFIG_C_AMBEN_ALL=y | ||
| 304 | |||
| 305 | # | ||
| 306 | # EBIU_AMBCTL Control | ||
| 307 | # | ||
| 308 | CONFIG_BANK_0=0x7BB0 | ||
| 309 | CONFIG_BANK_1=0x7BB0 | ||
| 310 | CONFIG_BANK_2=0x7BB0 | ||
| 311 | CONFIG_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 | # | ||
| 327 | CONFIG_BINFMT_ELF_FDPIC=y | ||
| 328 | CONFIG_BINFMT_FLAT=y | ||
| 329 | CONFIG_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 | # | ||
| 336 | CONFIG_PM=y | ||
| 337 | # CONFIG_PM_LEGACY is not set | ||
| 338 | # CONFIG_PM_DEBUG is not set | ||
| 339 | # CONFIG_PM_SYSFS_DEPRECATED is not set | ||
| 340 | CONFIG_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 | ||
| 343 | CONFIG_PM_WAKEUP_SIC_IWR=0x80000000 | ||
| 344 | |||
| 345 | # | ||
| 346 | # CPU Frequency scaling | ||
| 347 | # | ||
| 348 | # CONFIG_CPU_FREQ is not set | ||
| 349 | |||
| 350 | # | ||
| 351 | # Networking | ||
| 352 | # | ||
| 353 | CONFIG_NET=y | ||
| 354 | |||
| 355 | # | ||
| 356 | # Networking options | ||
| 357 | # | ||
| 358 | CONFIG_PACKET=y | ||
| 359 | # CONFIG_PACKET_MMAP is not set | ||
| 360 | CONFIG_UNIX=y | ||
| 361 | CONFIG_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 | ||
| 366 | CONFIG_INET=y | ||
| 367 | # CONFIG_IP_MULTICAST is not set | ||
| 368 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 369 | CONFIG_IP_FIB_HASH=y | ||
| 370 | CONFIG_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 | ||
| 377 | CONFIG_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 | ||
| 383 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 384 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 385 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 386 | CONFIG_INET_DIAG=y | ||
| 387 | CONFIG_INET_TCP_DIAG=y | ||
| 388 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 389 | CONFIG_TCP_CONG_CUBIC=y | ||
| 390 | CONFIG_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 | ||
| 423 | CONFIG_IRDA=m | ||
| 424 | |||
| 425 | # | ||
| 426 | # IrDA protocols | ||
| 427 | # | ||
| 428 | CONFIG_IRLAN=m | ||
| 429 | CONFIG_IRCOMM=m | ||
| 430 | # CONFIG_IRDA_ULTRA is not set | ||
| 431 | |||
| 432 | # | ||
| 433 | # IrDA options | ||
| 434 | # | ||
| 435 | CONFIG_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 | # | ||
| 446 | CONFIG_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 | # | ||
| 484 | CONFIG_STANDALONE=y | ||
| 485 | CONFIG_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 | ||
| 495 | CONFIG_MTD=y | ||
| 496 | # CONFIG_MTD_DEBUG is not set | ||
| 497 | # CONFIG_MTD_CONCAT is not set | ||
| 498 | CONFIG_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 | # | ||
| 505 | CONFIG_MTD_CHAR=m | ||
| 506 | CONFIG_MTD_BLKDEVS=y | ||
| 507 | CONFIG_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 | ||
| 518 | CONFIG_MTD_JEDECPROBE=m | ||
| 519 | CONFIG_MTD_GEN_PROBE=m | ||
| 520 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 521 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 522 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 523 | CONFIG_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 | ||
| 527 | CONFIG_MTD_CFI_I1=y | ||
| 528 | CONFIG_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 | ||
| 534 | CONFIG_MTD_MW320D=m | ||
| 535 | CONFIG_MTD_RAM=y | ||
| 536 | CONFIG_MTD_ROM=m | ||
| 537 | # CONFIG_MTD_ABSENT is not set | ||
| 538 | |||
| 539 | # | ||
| 540 | # Mapping drivers for chip access | ||
| 541 | # | ||
| 542 | CONFIG_MTD_COMPLEX_MAPPINGS=y | ||
| 543 | # CONFIG_MTD_PHYSMAP is not set | ||
| 544 | CONFIG_MTD_BF5xx=m | ||
| 545 | CONFIG_BFIN_FLASH_SIZE=0x400000 | ||
| 546 | CONFIG_EBIU_FLASH_BASE=0x20000000 | ||
| 547 | CONFIG_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 | ||
| 566 | CONFIG_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 | ||
| 570 | CONFIG_MTD_NAND_BFIN=m | ||
| 571 | CONFIG_BFIN_NAND_BASE=0x20212000 | ||
| 572 | CONFIG_BFIN_NAND_CLE=2 | ||
| 573 | CONFIG_BFIN_NAND_ALE=1 | ||
| 574 | CONFIG_BFIN_NAND_READY=3 | ||
| 575 | CONFIG_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 | ||
| 602 | CONFIG_BLK_DEV_RAM=y | ||
| 603 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 604 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
| 605 | CONFIG_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 | # | ||
| 630 | CONFIG_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 | # | ||
| 669 | CONFIG_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 | ||
| 679 | CONFIG_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 | ||
| 690 | CONFIG_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 | ||
| 696 | CONFIG_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 | ||
| 711 | CONFIG_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 | # | ||
| 733 | CONFIG_SERIAL_BFIN=y | ||
| 734 | CONFIG_SERIAL_BFIN_CONSOLE=y | ||
| 735 | CONFIG_SERIAL_BFIN_DMA=y | ||
| 736 | # CONFIG_SERIAL_BFIN_PIO is not set | ||
| 737 | CONFIG_SERIAL_BFIN_UART0=y | ||
| 738 | # CONFIG_BFIN_UART0_CTSRTS is not set | ||
| 739 | # CONFIG_SERIAL_BFIN_UART1 is not set | ||
| 740 | CONFIG_SERIAL_CORE=y | ||
| 741 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 742 | # CONFIG_SERIAL_BFIN_SPORT is not set | ||
| 743 | CONFIG_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 | ||
| 755 | CONFIG_WATCHDOG=y | ||
| 756 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
| 757 | |||
| 758 | # | ||
| 759 | # Watchdog Device Drivers | ||
| 760 | # | ||
| 761 | # CONFIG_SOFT_WATCHDOG is not set | ||
| 762 | CONFIG_BFIN_WDT=y | ||
| 763 | CONFIG_HW_RANDOM=m | ||
| 764 | # CONFIG_GEN_RTC is not set | ||
| 765 | CONFIG_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 | ||
| 773 | CONFIG_I2C=y | ||
| 774 | CONFIG_I2C_BOARDINFO=y | ||
| 775 | CONFIG_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 | ||
| 788 | CONFIG_I2C_BLACKFIN_TWI=y | ||
| 789 | CONFIG_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 | # | ||
| 817 | CONFIG_SPI=y | ||
| 818 | # CONFIG_SPI_DEBUG is not set | ||
| 819 | CONFIG_SPI_MASTER=y | ||
| 820 | |||
| 821 | # | ||
| 822 | # SPI Master Controller Drivers | ||
| 823 | # | ||
| 824 | CONFIG_SPI_BFIN=y | ||
| 825 | # CONFIG_SPI_BITBANG is not set | ||
| 826 | |||
| 827 | # | ||
| 828 | # SPI Protocol Masters | ||
| 829 | # | ||
| 830 | CONFIG_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 | ||
| 837 | CONFIG_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 | # | ||
| 892 | CONFIG_VIDEO_DEV=y | ||
| 893 | # CONFIG_VIDEO_V4L1 is not set | ||
| 894 | CONFIG_VIDEO_V4L1_COMPAT=y | ||
| 895 | CONFIG_VIDEO_V4L2=y | ||
| 896 | CONFIG_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 | ||
| 946 | CONFIG_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 | ||
| 956 | CONFIG_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 | # | ||
| 986 | CONFIG_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 | # | ||
| 1052 | CONFIG_EXT2_FS=y | ||
| 1053 | CONFIG_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 | ||
| 1058 | CONFIG_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 | ||
| 1067 | CONFIG_INOTIFY=y | ||
| 1068 | CONFIG_INOTIFY_USER=y | ||
| 1069 | # CONFIG_QUOTA is not set | ||
| 1070 | CONFIG_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 | # | ||
| 1091 | CONFIG_PROC_FS=y | ||
| 1092 | CONFIG_PROC_SYSCTL=y | ||
| 1093 | CONFIG_SYSFS=y | ||
| 1094 | # CONFIG_TMPFS is not set | ||
| 1095 | # CONFIG_HUGETLB_PAGE is not set | ||
| 1096 | CONFIG_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 | ||
| 1109 | CONFIG_YAFFS_FS=m | ||
| 1110 | CONFIG_YAFFS_YAFFS1=y | ||
| 1111 | # CONFIG_YAFFS_DOES_ECC is not set | ||
| 1112 | CONFIG_YAFFS_YAFFS2=y | ||
| 1113 | CONFIG_YAFFS_AUTO_YAFFS2=y | ||
| 1114 | # CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set | ||
| 1115 | CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10 | ||
| 1116 | # CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set | ||
| 1117 | # CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set | ||
| 1118 | CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y | ||
| 1119 | CONFIG_JFFS2_FS=m | ||
| 1120 | CONFIG_JFFS2_FS_DEBUG=0 | ||
| 1121 | CONFIG_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 | ||
| 1125 | CONFIG_JFFS2_ZLIB=y | ||
| 1126 | CONFIG_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 | # | ||
| 1138 | CONFIG_NFS_FS=m | ||
| 1139 | CONFIG_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 | ||
| 1144 | CONFIG_LOCKD=m | ||
| 1145 | CONFIG_LOCKD_V4=y | ||
| 1146 | CONFIG_NFS_COMMON=y | ||
| 1147 | CONFIG_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 | ||
| 1151 | CONFIG_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 | ||
| 1163 | CONFIG_MSDOS_PARTITION=y | ||
| 1164 | |||
| 1165 | # | ||
| 1166 | # Native Language Support | ||
| 1167 | # | ||
| 1168 | CONFIG_NLS=m | ||
| 1169 | CONFIG_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 | ||
| 1223 | CONFIG_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 | ||
| 1228 | CONFIG_DEBUG_KERNEL=y | ||
| 1229 | # CONFIG_DEBUG_SHIRQ is not set | ||
| 1230 | CONFIG_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 | ||
| 1242 | CONFIG_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 | ||
| 1251 | CONFIG_DEBUG_HUNT_FOR_ZERO=y | ||
| 1252 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y | ||
| 1253 | CONFIG_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 | ||
| 1256 | CONFIG_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 | ||
| 1260 | CONFIG_CPLB_INFO=y | ||
| 1261 | CONFIG_ACCESS_CHECK=y | ||
| 1262 | |||
| 1263 | # | ||
| 1264 | # Security options | ||
| 1265 | # | ||
| 1266 | # CONFIG_KEYS is not set | ||
| 1267 | CONFIG_SECURITY=y | ||
| 1268 | # CONFIG_SECURITY_NETWORK is not set | ||
| 1269 | CONFIG_SECURITY_CAPABILITIES=y | ||
| 1270 | |||
| 1271 | # | ||
| 1272 | # Cryptographic options | ||
| 1273 | # | ||
| 1274 | # CONFIG_CRYPTO is not set | ||
| 1275 | |||
| 1276 | # | ||
| 1277 | # Library routines | ||
| 1278 | # | ||
| 1279 | CONFIG_BITREVERSE=y | ||
| 1280 | CONFIG_CRC_CCITT=m | ||
| 1281 | # CONFIG_CRC16 is not set | ||
| 1282 | # CONFIG_CRC_ITU_T is not set | ||
| 1283 | CONFIG_CRC32=y | ||
| 1284 | # CONFIG_LIBCRC32C is not set | ||
| 1285 | CONFIG_ZLIB_INFLATE=y | ||
| 1286 | CONFIG_ZLIB_DEFLATE=m | ||
| 1287 | CONFIG_PLIST=y | ||
| 1288 | CONFIG_HAS_IOMEM=y | ||
| 1289 | CONFIG_HAS_IOPORT=y | ||
| 1290 | CONFIG_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 | ||
| 7 | obj-y := \ | 7 | obj-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 | ||
| 12 | ifeq ($(CONFIG_GENERIC_CLOCKEVENTS),y) | ||
| 13 | obj-y += time-ts.o | ||
| 14 | else | ||
| 15 | obj-y += time.o | ||
| 16 | endif | ||
| 17 | |||
| 12 | obj-$(CONFIG_BFIN_GPTIMERS) += gptimers.o | 18 | obj-$(CONFIG_BFIN_GPTIMERS) += gptimers.o |
| 13 | obj-$(CONFIG_MODULES) += module.o | 19 | obj-$(CONFIG_MODULES) += module.o |
| 14 | obj-$(CONFIG_BFIN_DMA_5XX) += bfin_dma_5xx.o | 20 | obj-$(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 | ||
| 400 | static 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 | |||
| 425 | static int __init bfin_gpio_init(void) | 398 | static 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 | } |
| 433 | arch_initcall(bfin_gpio_init); | 404 | arch_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 | ||
| 860 | anyway: | 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 | ||
| 933 | anyway: | 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: | |||
| 944 | EXPORT_SYMBOL(peripheral_request); | 915 | EXPORT_SYMBOL(peripheral_request); |
| 945 | #endif | 916 | #endif |
| 946 | 917 | ||
| 947 | int peripheral_request_list(unsigned short per[], const char *label) | 918 | int 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 | } |
| 1000 | EXPORT_SYMBOL(peripheral_free); | 969 | EXPORT_SYMBOL(peripheral_free); |
| 1001 | 970 | ||
| 1002 | void peripheral_free_list(unsigned short per[]) | 971 | void 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 | } |
| 1011 | EXPORT_SYMBOL(peripheral_free_list); | 977 | EXPORT_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 | } |
| 1153 | EXPORT_SYMBOL(gpio_get_value); | 1117 | EXPORT_SYMBOL(gpio_get_value); |
| 1154 | 1118 | ||
| 1119 | void 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 | ||
| 1157 | int gpio_direction_input(unsigned gpio) | 1133 | int 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 | ||
| 1197 | void 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 | |||
| 50 | static char page_size_string_table[][4] = { "1K", "4K", "1M", "4M" }; | 42 | static char page_size_string_table[][4] = { "1K", "4K", "1M", "4M" }; |
| 51 | 43 | ||
| 52 | static char *cplb_print_entry(char *buf, struct cplb_entry *tbl, int switched) | 44 | static 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 | ||
| 251 | static noinline int dcplb_protection_fault(void) | 287 | static 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 | ||
| 177 | static 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 | |||
| 187 | static int __init cplbinfo_init(void) | 175 | static 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 | |||
| 29 | u_long icplb_table[MAX_CPLBS + 1]; | 58 | u_long icplb_table[MAX_CPLBS + 1]; |
| 30 | u_long dcplb_table[MAX_CPLBS + 1]; | 59 | u_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 |
| 72 | void default_idle(void)__attribute__((l1_text)); | 74 | static void default_idle(void)__attribute__((l1_text)); |
| 73 | void cpu_idle(void)__attribute__((l1_text)); | 75 | void cpu_idle(void)__attribute__((l1_text)); |
| 74 | #endif | 76 | #endif |
| 75 | 77 | ||
| 76 | void 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 | */ | ||
| 82 | static 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 | ||
| 86 | void (*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 | */ |
| 94 | void cpu_idle(void) | 96 | void 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 | ||
| 192 | asmlinkage int sys_execve(char *name, char **argv, char **envp) | 205 | asmlinkage 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 | ||
| 233 | void finish_atomic_sections (struct pt_regs *regs) | 246 | void finish_atomic_sections (struct pt_regs *regs) |
| 234 | { | 247 | { |
| 248 | int __user *up0 = (int __user *)®s->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)) |
| 31 | void bfin_reset(void) | 23 | void 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; | |||
| 35 | EXPORT_SYMBOL(_bfin_swrst); | 35 | EXPORT_SYMBOL(_bfin_swrst); |
| 36 | 36 | ||
| 37 | unsigned long memory_start, memory_end, physical_mem_end; | 37 | unsigned long memory_start, memory_end, physical_mem_end; |
| 38 | unsigned long _rambase, _ramstart, _ramend; | ||
| 38 | unsigned long reserved_mem_dcache_on; | 39 | unsigned long reserved_mem_dcache_on; |
| 39 | unsigned long reserved_mem_icache_on; | 40 | unsigned long reserved_mem_icache_on; |
| 40 | EXPORT_SYMBOL(memory_start); | 41 | EXPORT_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 | */ | ||
| 553 | void __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 | |||
| 550 | static __init void setup_bootmem_allocator(void) | 577 | static __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 | }) | ||
| 665 | static 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 | |||
| 614 | void __init setup_arch(char **cmdline_p) | 702 | void __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 | ||
| 58 | asmlinkage int sys_sigaltstack(const stack_t * uss, stack_t * uoss) | 61 | asmlinkage 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 | ||
| 63 | static inline int | 66 | static inline int |
| 64 | rt_restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc, int *pr0) | 67 | rt_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 | ||
| 162 | static inline void push_cache(unsigned long vaddr, unsigned int len) | ||
| 163 | { | ||
| 164 | flush_icache_range(vaddr, vaddr + len); | ||
| 165 | } | ||
| 166 | |||
| 167 | static inline void *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, | 165 | static 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 | */ |
| 52 | asmlinkage int sys_pipe(unsigned long *fildes) | 52 | asmlinkage 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 | |||
| 48 | static unsigned long cyc2ns_scale; | ||
| 49 | #define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */ | ||
| 50 | |||
| 51 | static inline void set_cyc2ns_scale(unsigned long cpu_khz) | ||
| 52 | { | ||
| 53 | cyc2ns_scale = (1000000 << CYC2NS_SCALE_FACTOR) / cpu_khz; | ||
| 54 | } | ||
| 55 | |||
| 56 | static inline unsigned long long cycles_2_ns(cycle_t cyc) | ||
| 57 | { | ||
| 58 | return (cyc * cyc2ns_scale) >> CYC2NS_SCALE_FACTOR; | ||
| 59 | } | ||
| 60 | |||
| 61 | static cycle_t read_cycles(void) | ||
| 62 | { | ||
| 63 | return get_cycles(); | ||
| 64 | } | ||
| 65 | |||
| 66 | unsigned long long sched_clock(void) | ||
| 67 | { | ||
| 68 | return cycles_2_ns(read_cycles()); | ||
| 69 | } | ||
| 70 | |||
| 71 | static 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 | |||
| 80 | static 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 | |||
| 96 | static 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 | |||
| 104 | static 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 | |||
| 135 | static 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 | ||
| 159 | irqreturn_t timer_interrupt(int irq, void *dev_id); | ||
| 160 | |||
| 161 | static 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 | |||
| 170 | static 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 | |||
| 177 | irqreturn_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 | |||
| 184 | static 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 | |||
| 197 | void __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 | |||
| 65 | static void | 52 | static void |
| 66 | time_sched_init(irq_handler_t timer_routine) | 53 | time_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 | ||
| 70 | void *saved_icplb_fault_addr, *saved_dcplb_fault_addr; | ||
| 71 | |||
| 70 | int kstack_depth_to_print = 48; | 72 | int kstack_depth_to_print = 48; |
| 71 | 73 | ||
| 72 | static void decode_address(char *buf, unsigned long address) | 74 | static 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 @@ | |||
| 5 | extra-y := head.o | 5 | extra-y := head.o |
| 6 | 6 | ||
| 7 | obj-y := ints-priority.o dma.o | 7 | obj-y := ints-priority.o dma.o |
| 8 | |||
| 9 | obj-$(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 = { | |||
| 416 | static struct mtd_partition bfin_spi_flash_partitions[] = { | 416 | static 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) | ||
| 711 | static 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 | |||
| 728 | static 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) |
| 711 | static struct resource bfin_twi0_resource[] = { | 737 | static 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 | ||
| 897 | static int __init stamp_init(void) | 927 | static 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 */ | ||
| 48 | static 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 | */ | ||
| 60 | static 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 | |||
| 73 | static 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 | */ | ||
| 112 | static int bf527_verify_speed(struct cpufreq_policy *policy) | ||
| 113 | { | ||
| 114 | return cpufreq_frequency_table_verify(policy, &bf527_freq_table); | ||
| 115 | } | ||
| 116 | |||
| 117 | static 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 | |||
| 131 | static struct freq_attr *bf527_freq_attr[] = { | ||
| 132 | &cpufreq_freq_attr_scaling_available_freqs, | ||
| 133 | NULL, | ||
| 134 | }; | ||
| 135 | |||
| 136 | static 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 | |||
| 146 | static int __init bf527_cpu_init(void) | ||
| 147 | { | ||
| 148 | return cpufreq_register_driver(&bf527_driver); | ||
| 149 | } | ||
| 150 | |||
| 151 | static void __exit bf527_cpu_exit(void) | ||
| 152 | { | ||
| 153 | cpufreq_unregister_driver(&bf527_driver); | ||
| 154 | } | ||
| 155 | |||
| 156 | MODULE_AUTHOR("Mickael Kang"); | ||
| 157 | MODULE_DESCRIPTION("cpufreq driver for bf527 CPU"); | ||
| 158 | MODULE_LICENSE("GPL"); | ||
| 159 | |||
| 160 | module_init(bf527_cpu_init); | ||
| 161 | module_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 | ||
| 32 | struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = { | 34 | struct 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 | }; |
| 52 | EXPORT_SYMBOL(dma_io_base_addr); | ||
| 50 | 53 | ||
| 51 | int channel2irq(unsigned int channel) | 54 | int 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; |
| 440 | ENDPROC(_start_dma_code) | 437 | ENDPROC(_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 @@ | |||
| 5 | extra-y := head.o | 5 | extra-y := head.o |
| 6 | 6 | ||
| 7 | obj-y := ints-priority.o dma.o | 7 | obj-y := ints-priority.o dma.o |
| 8 | |||
| 9 | obj-$(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) | ||
| 308 | static 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 | |||
| 318 | static 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 = { | |||
| 411 | static int __init H8606_init(void) | 434 | static 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 | ||
| 29 | config 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 | |||
| 29 | config GENERIC_BF533_BOARD | 35 | config 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 | ||
| 5 | obj-$(CONFIG_GENERIC_BF533_BOARD) += generic_board.o | 5 | obj-$(CONFIG_GENERIC_BF533_BOARD) += generic_board.o |
| 6 | obj-$(CONFIG_BFIN533_STAMP) += stamp.o | 6 | obj-$(CONFIG_BFIN533_STAMP) += stamp.o |
| 7 | obj-$(CONFIG_BFIN532_IP0X) += ip0x.o | ||
| 7 | obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o | 8 | obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o |
| 8 | obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o | 9 | obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o |
| 9 | obj-$(CONFIG_H8606_HVSISTEMAS) += H8606.o | 10 | obj-$(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) | ||
| 238 | static 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 | |||
| 248 | static 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) |
| 238 | static struct platform_device bfin_sport0_uart_device = { | 257 | static 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 | ||
| 356 | static int __init cm_bf533_init(void) | 379 | static 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) | ||
| 241 | static 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 | |||
| 251 | static 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 | ||
| 370 | static int __init ezkit_init(void) | 393 | static 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 | ||
| 85 | static int __init generic_board_init(void) | 85 | static 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 | */ | ||
| 49 | const 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 | |||
| 59 | static 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 | |||
| 75 | static 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 | */ | ||
| 95 | static struct dm9000_plat_data dm9000_platdata1 = { | ||
| 96 | .flags = DM9000_PLATF_16BITONLY, | ||
| 97 | }; | ||
| 98 | |||
| 99 | static 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 | |||
| 109 | static struct dm9000_plat_data dm9000_platdata2 = { | ||
| 110 | .flags = DM9000_PLATF_16BITONLY, | ||
| 111 | }; | ||
| 112 | |||
| 113 | static 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) | ||
| 131 | static 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 */ | ||
| 154 | static 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 */ | ||
| 168 | static 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 | |||
| 173 | static 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) | ||
| 183 | static struct resource bfin_uart_resources[] = { | ||
| 184 | { | ||
| 185 | .start = 0xFFC00400, | ||
| 186 | .end = 0xFFC004FF, | ||
| 187 | .flags = IORESOURCE_MEM, | ||
| 188 | }, | ||
| 189 | }; | ||
| 190 | |||
| 191 | static 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) | ||
| 200 | static 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 | |||
| 210 | static 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) | ||
| 219 | static 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 | |||
| 235 | static 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 | |||
| 246 | static 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 | |||
| 258 | static 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 | |||
| 283 | static 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 | |||
| 303 | arch_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) | ||
| 112 | static struct mtd_partition stamp_partitions[] = { | 114 | static 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) | ||
| 374 | static 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 | |||
| 384 | static 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) |
| 371 | static struct platform_device bfin_sport0_uart_device = { | 393 | static 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 | ||
| 498 | static 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 | |||
| 475 | static struct platform_device *stamp_devices[] __initdata = { | 522 | static 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 | ||
| 521 | static int __init stamp_init(void) | 575 | static 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 */ | ||
| 48 | static 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 | */ | ||
| 60 | static 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 | |||
| 72 | static 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 | */ | ||
| 109 | static int bf533_verify_speed(struct cpufreq_policy *policy) | ||
| 110 | { | ||
| 111 | return cpufreq_frequency_table_verify(policy, &bf533_freq_table); | ||
| 112 | } | ||
| 113 | |||
| 114 | static 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 | |||
| 128 | static struct freq_attr *bf533_freq_attr[] = { | ||
| 129 | &cpufreq_freq_attr_scaling_available_freqs, | ||
| 130 | NULL, | ||
| 131 | }; | ||
| 132 | |||
| 133 | static 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 | |||
| 143 | static int __init bf533_cpu_init(void) | ||
| 144 | { | ||
| 145 | return cpufreq_register_driver(&bf533_driver); | ||
| 146 | } | ||
| 147 | |||
| 148 | static void __exit bf533_cpu_exit(void) | ||
| 149 | { | ||
| 150 | cpufreq_unregister_driver(&bf533_driver); | ||
| 151 | } | ||
| 152 | |||
| 153 | MODULE_AUTHOR("Mickael Kang"); | ||
| 154 | MODULE_DESCRIPTION("cpufreq driver for BF533 CPU"); | ||
| 155 | MODULE_LICENSE("GPL"); | ||
| 156 | |||
| 157 | module_init(bf533_cpu_init); | ||
| 158 | module_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 | ||
| 32 | struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = { | 34 | struct 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 | }; |
| 48 | EXPORT_SYMBOL(dma_io_base_addr); | ||
| 46 | 49 | ||
| 47 | int channel2irq(unsigned int channel) | 50 | int 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; |
| 432 | ENDPROC(_start_dma_code) | 429 | ENDPROC(_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 @@ | |||
| 5 | extra-y := head.o | 5 | extra-y := head.o |
| 6 | 6 | ||
| 7 | obj-y := ints-priority.o dma.o | 7 | obj-y := ints-priority.o dma.o |
| 8 | |||
| 9 | obj-$(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) | ||
| 329 | static 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 | |||
| 346 | static 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) | ||
| 355 | static 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 | |||
| 368 | static 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) |
| 329 | static struct platform_device bfin_sport0_uart_device = { | 377 | static 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 | ||
| 426 | static int __init cm_bf537_init(void) | 482 | static 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) | ||
| 558 | static 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 | |||
| 575 | static 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) |
| 558 | static struct resource bfin_twi0_resource[] = { | 584 | static 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 | ||
| 691 | static int __init stamp_init(void) | 721 | static 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) | ||
| 229 | static 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 | |||
| 246 | static 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) |
| 229 | static struct resource bfin_twi0_resource[] = { | 255 | static 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 | ||
| 298 | static int __init minotaur_init(void) | 328 | static 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) | ||
| 456 | static 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 | |||
| 473 | static 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 | ||
| 456 | static struct platform_device *stamp_devices[] __initdata = { | 481 | static 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 | ||
| 498 | static int __init stamp_init(void) | 527 | static 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) | ||
| 356 | static struct mtd_partition stamp_partitions[] = { | 358 | static 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 */ | ||
| 509 | static 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 | |||
| 503 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | 515 | static 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) | ||
| 702 | static 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 | |||
| 719 | static 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) |
| 680 | static struct resource bfin_twi0_resource[] = { | 728 | static 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 | ||
| 750 | static 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) |
| 702 | static struct platform_device bfin_sport0_uart_device = { | 775 | static 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 | ||
| 824 | static int __init stamp_init(void) | 904 | static 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 */ | ||
| 48 | static 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 | */ | ||
| 60 | static 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 | |||
| 73 | static 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 | */ | ||
| 110 | static int bf537_verify_speed(struct cpufreq_policy *policy) | ||
| 111 | { | ||
| 112 | return cpufreq_frequency_table_verify(policy, &bf537_freq_table); | ||
| 113 | } | ||
| 114 | |||
| 115 | static 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 | |||
| 129 | static struct freq_attr *bf537_freq_attr[] = { | ||
| 130 | &cpufreq_freq_attr_scaling_available_freqs, | ||
| 131 | NULL, | ||
| 132 | }; | ||
| 133 | |||
| 134 | static 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 | |||
| 144 | static int __init bf537_cpu_init(void) | ||
| 145 | { | ||
| 146 | return cpufreq_register_driver(&bf537_driver); | ||
| 147 | } | ||
| 148 | |||
| 149 | static void __exit bf537_cpu_exit(void) | ||
| 150 | { | ||
| 151 | cpufreq_unregister_driver(&bf537_driver); | ||
| 152 | } | ||
| 153 | |||
| 154 | MODULE_AUTHOR("Mickael Kang"); | ||
| 155 | MODULE_DESCRIPTION("cpufreq driver for BF537 CPU"); | ||
| 156 | MODULE_LICENSE("GPL"); | ||
| 157 | |||
| 158 | module_init(bf537_cpu_init); | ||
| 159 | module_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 | ||
| 32 | struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = { | 34 | struct 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 | }; |
| 52 | EXPORT_SYMBOL(dma_io_base_addr); | ||
| 50 | 53 | ||
| 51 | int channel2irq(unsigned int channel) | 54 | int 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; |
| 484 | ENDPROC(_start_dma_code) | 469 | ENDPROC(_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 @@ | |||
| 5 | extra-y := head.o | 5 | extra-y := head.o |
| 6 | 6 | ||
| 7 | obj-y := ints-priority.o dma.o | 7 | obj-y := ints-priority.o dma.o |
| 8 | |||
| 9 | obj-$(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 | |||
| 12 | config BFIN548_BLUETECHNIX_CM | ||
| 13 | bool "Bluetechnix CM-BF548" | ||
| 14 | depends on (BF548) | ||
| 15 | help | ||
| 16 | CM-BF548 support for DEV-Board. | ||
| 11 | 17 | ||
| 12 | endchoice | 18 | endchoice |
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 | ||
| 5 | obj-$(CONFIG_BFIN548_EZKIT) += ezkit.o led.o | 5 | obj-$(CONFIG_BFIN548_EZKIT) += ezkit.o led.o |
| 6 | obj-$(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 | */ | ||
| 53 | const 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 | |||
| 63 | static 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 | |||
| 72 | static struct resource bf54x_lq043_resources[] = { | ||
| 73 | { | ||
| 74 | .start = IRQ_EPPI0_ERR, | ||
| 75 | .end = IRQ_EPPI0_ERR, | ||
| 76 | .flags = IORESOURCE_IRQ, | ||
| 77 | }, | ||
| 78 | }; | ||
| 79 | |||
| 80 | static 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) | ||
| 92 | static 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 | |||
| 111 | static 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 | |||
| 122 | static struct resource bf54x_kpad_resources[] = { | ||
| 123 | { | ||
| 124 | .start = IRQ_KEY, | ||
| 125 | .end = IRQ_KEY, | ||
| 126 | .flags = IORESOURCE_IRQ, | ||
| 127 | }, | ||
| 128 | }; | ||
| 129 | |||
| 130 | static 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) | ||
| 142 | static 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) | ||
| 149 | static 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 | |||
| 179 | static 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) | ||
| 188 | static 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 | |||
| 219 | static 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) | ||
| 228 | static 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 | }; | ||
| 241 | static 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) | ||
| 250 | static 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 | |||
| 268 | static 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 | |||
| 279 | static u64 musb_dmamask = ~(u32)0; | ||
| 280 | |||
| 281 | static 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) | ||
| 295 | static 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 | |||
| 308 | static 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) | ||
| 317 | static 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 | |||
| 330 | static 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 | |||
| 339 | static 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 | |||
| 352 | static 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) | ||
| 364 | static 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) */ | ||
| 375 | static 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 | |||
| 388 | static 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 | |||
| 395 | static 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) | ||
| 403 | static 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 | |||
| 409 | static 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) | ||
| 425 | static struct bfin5xx_spi_chip spidev_chip_info = { | ||
| 426 | .enable_dma = 0, | ||
| 427 | .bits_per_word = 8, | ||
| 428 | }; | ||
| 429 | #endif | ||
| 430 | |||
| 431 | static 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) */ | ||
| 468 | static 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) */ | ||
| 482 | static 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 */ | ||
| 496 | static 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 | |||
| 502 | static 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 | |||
| 512 | static 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 | |||
| 518 | static 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) | ||
| 530 | static 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 | |||
| 543 | static 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 */ | ||
| 551 | static 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 | |||
| 564 | static 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 | |||
| 576 | static struct gpio_keys_button bfin_gpio_keys_table[] = { | ||
| 577 | {BTN_0, GPIO_PH7, 1, "gpio-keys: BTN0"}, | ||
| 578 | }; | ||
| 579 | |||
| 580 | static 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 | |||
| 585 | static struct platform_device bfin_device_gpiokeys = { | ||
| 586 | .name = "gpio-keys", | ||
| 587 | .dev = { | ||
| 588 | .platform_data = &bfin_gpio_keys_data, | ||
| 589 | }, | ||
| 590 | }; | ||
| 591 | #endif | ||
| 592 | |||
| 593 | static 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 | |||
| 651 | static 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 | |||
| 664 | arch_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) | ||
| 192 | static 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 | |||
| 223 | static 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) |
| 191 | static struct resource smsc911x_resources[] = { | 232 | static 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) | ||
| 333 | static struct mtd_partition ezkit_partitions[] = { | 375 | static 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) | ||
| 448 | static 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) |
| 404 | static struct bfin5xx_spi_chip spi_ad7877_chip_info = { | 455 | static 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 | ||
| 636 | static struct i2c_board_info __initdata bfin_i2c_board_info0[] = { | ||
| 637 | }; | ||
| 638 | |||
| 639 | #if !defined(CONFIG_BF542) /* The BF542 only has 1 TWI */ | ||
| 640 | static 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 | ||
| 667 | static int __init ezkit_init(void) | 758 | static 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 */ | ||
| 48 | static 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 | */ | ||
| 60 | static 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 | |||
| 73 | static 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 | */ | ||
| 110 | static int bf548_verify_speed(struct cpufreq_policy *policy) | ||
| 111 | { | ||
| 112 | return cpufreq_frequency_table_verify(policy, &bf548_freq_table); | ||
| 113 | } | ||
| 114 | |||
| 115 | static 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 | |||
| 129 | static struct freq_attr *bf548_freq_attr[] = { | ||
| 130 | &cpufreq_freq_attr_scaling_available_freqs, | ||
| 131 | NULL, | ||
| 132 | }; | ||
| 133 | |||
| 134 | static 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 | |||
| 144 | static int __init bf548_cpu_init(void) | ||
| 145 | { | ||
| 146 | return cpufreq_register_driver(&bf548_driver); | ||
| 147 | } | ||
| 148 | |||
| 149 | static void __exit bf548_cpu_exit(void) | ||
| 150 | { | ||
| 151 | cpufreq_unregister_driver(&bf548_driver); | ||
| 152 | } | ||
| 153 | |||
| 154 | MODULE_AUTHOR("Mickael Kang"); | ||
| 155 | MODULE_DESCRIPTION("cpufreq driver for BF548 CPU"); | ||
| 156 | MODULE_LICENSE("GPL"); | ||
| 157 | |||
| 158 | module_init(bf548_cpu_init); | ||
| 159 | module_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] = { | 35 | struct 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 | }; |
| 69 | EXPORT_SYMBOL(base_addr); | 69 | EXPORT_SYMBOL(dma_io_base_addr); |
| 70 | 70 | ||
| 71 | int channel2irq(unsigned int channel) | 71 | int 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; |
| 457 | ENDPROC(_start_dma_code) | 454 | ENDPROC(_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) | ||
| 287 | static 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 | |||
| 297 | static 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 | ||
| 350 | static int __init cm_bf561_init(void) | 373 | static 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) | ||
| 224 | static 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 | |||
| 234 | static 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) | ||
| 223 | static struct mtd_partition ezkit_partitions[] = { | 243 | static 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 | ||
| 466 | static int __init ezkit_init(void) | 494 | static 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 | ||
| 71 | static int __init generic_board_init(void) | 71 | static 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 | ||
| 51 | static int __init tepla_init(void) | 51 | static 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 | ||
| 32 | struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = { | 34 | struct 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 | }; |
| 72 | EXPORT_SYMBOL(dma_io_base_addr); | ||
| 70 | 73 | ||
| 71 | int channel2irq(unsigned int channel) | 74 | int 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; |
| 412 | ENDPROC(_start_dma_code) | 409 | ENDPROC(_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 | ||
| 9 | obj-$(CONFIG_PM) += pm.o dpmc.o | 9 | obj-$(CONFIG_PM) += pm.o dpmc.o |
| 10 | obj-$(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[] */ | ||
| 41 | static 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 | |||
| 60 | static 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 | |||
| 67 | static 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 | |||
| 77 | static 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 | |||
| 111 | static int bfin_verify_speed(struct cpufreq_policy *policy) | ||
| 112 | { | ||
| 113 | return cpufreq_frequency_table_verify(policy, bfin_freq_table); | ||
| 114 | } | ||
| 115 | |||
| 116 | static 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 | |||
| 164 | static struct freq_attr *bfin_freq_attr[] = { | ||
| 165 | &cpufreq_freq_attr_scaling_available_freqs, | ||
| 166 | NULL, | ||
| 167 | }; | ||
| 168 | |||
| 169 | static 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 | |||
| 179 | static int __init bfin_cpu_init(void) | ||
| 180 | { | ||
| 181 | return cpufreq_register_driver(&bfin_driver); | ||
| 182 | } | ||
| 183 | |||
| 184 | static void __exit bfin_cpu_exit(void) | ||
| 185 | { | ||
| 186 | cpufreq_unregister_driver(&bfin_driver); | ||
| 187 | } | ||
| 188 | |||
| 189 | MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>"); | ||
| 190 | MODULE_DESCRIPTION("cpufreq driver for Blackfin"); | ||
| 191 | MODULE_LICENSE("GPL"); | ||
| 192 | |||
| 193 | module_init(bfin_cpu_init); | ||
| 194 | module_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 | ||
| 56 | ENTRY(_safe_speculative_execution) | ||
| 57 | NOP; | ||
| 58 | NOP; | ||
| 59 | NOP; | ||
| 60 | jump _safe_speculative_execution; | ||
| 61 | ENDPROC(_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) | |||
| 191 | ENDPROC(_bfin_return_from_exception) | 187 | ENDPROC(_bfin_return_from_exception) |
| 192 | 188 | ||
| 193 | ENTRY(_handle_bad_cplb) | 189 | ENTRY(_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) | |||
| 307 | ENTRY(_exception_to_level5) | 307 | ENTRY(_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 | ||
| 742 | ENTRY(_lower_to_irq14) | 716 | ENTRY(_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; |
| 810 | ENDPROC(_lower_to_irq14) | 784 | ENDPROC(_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 | */ | ||
| 815 | ENTRY(_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; | ||
| 824 | ENDPROC(_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 | */ | ||
| 1406 | ENTRY(_in_ptr_excause) | ||
| 1407 | .long 0; | 1364 | .long 0; |
| 1408 | ENTRY(_out_ptr_excause) | ||
| 1409 | .long 0; | ||
| 1410 | ALIGN | ||
| 1411 | ENTRY(_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, | |||
| 326 | static unsigned short gpio_enabled[gpio_bank(MAX_BLACKFIN_GPIOS)]; | 326 | static unsigned short gpio_enabled[gpio_bank(MAX_BLACKFIN_GPIOS)]; |
| 327 | static unsigned short gpio_edge_triggered[gpio_bank(MAX_BLACKFIN_GPIOS)]; | 327 | static unsigned short gpio_edge_triggered[gpio_bank(MAX_BLACKFIN_GPIOS)]; |
| 328 | 328 | ||
| 329 | extern void bfin_gpio_irq_prepare(unsigned gpio); | ||
| 329 | 330 | ||
| 330 | static void bfin_gpio_ack_irq(unsigned int irq) | 331 | static 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 | ||
| 365 | static unsigned int bfin_gpio_irq_startup(unsigned int irq) | 366 | static 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 | ||
| 384 | static void bfin_gpio_irq_shutdown(unsigned int irq) | 379 | static 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 | ||
| 391 | static int bfin_gpio_irq_type(unsigned int irq, unsigned int type) | 385 | static 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 | ||
| 585 | extern void bfin_gpio_irq_prepare(unsigned gpio); | ||
| 586 | |||
| 598 | inline unsigned short get_irq_base(u8 bank, u8 bmap) | 587 | inline 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 | ||
| 698 | static unsigned int bfin_gpio_irq_startup(unsigned int irq) | 687 | static 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 | ||
| 725 | static void bfin_gpio_irq_shutdown(unsigned int irq) | 708 | static 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 | ||
| 734 | static int bfin_gpio_irq_type(unsigned int irq, unsigned int type) | 716 | static 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 | ||
| 402 | void *l1_inst_sram_alloc(size_t size) | 402 | void *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 | ||
| 1413 | ret_sys_call: | 1412 | ret_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 | ||
| 108 | asmlinkage int sys_sigpause(unsigned int set) | ||
| 109 | { | ||
| 110 | return _sigpause_common(set); | ||
| 111 | } | ||
| 112 | |||
| 113 | asmlinkage int sys_sigsuspend(old_sigset_t set) | 108 | asmlinkage 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 | ||
| 251 | endmenu | 251 | endmenu |
| 252 | 252 | ||
| 253 | config NUMA | ||
| 254 | bool "NUMA support" | ||
| 255 | |||
| 256 | config 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. | ||
| 266 | config NODES_SPAN_OTHER_NODES | ||
| 267 | def_bool y | ||
| 268 | depends on NEED_MULTIPLE_NODES | ||
| 269 | |||
| 270 | config ARCH_POPULATES_NODE_MAP | ||
| 271 | def_bool y | ||
| 272 | |||
| 253 | config ARCH_SELECT_MEMORY_MODEL | 273 | config 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 | # |
| 6 | CONFIG_SPARC=y | 6 | CONFIG_SPARC=y |
| 7 | CONFIG_SPARC64=y | 7 | CONFIG_SPARC64=y |
| @@ -152,6 +152,8 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y | |||
| 152 | CONFIG_HUGETLB_PAGE_SIZE_4MB=y | 152 | CONFIG_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 | ||
| 156 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
| 155 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 157 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
| 156 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | 158 | CONFIG_ARCH_SPARSEMEM_ENABLE=y |
| 157 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y | 159 | CONFIG_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 | |||
| 1399 | CONFIG_DEBUG_BUGVERBOSE=y | 1397 | CONFIG_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 | |||
| 1425 | CONFIG_ASYNC_MEMCPY=m | 1424 | CONFIG_ASYNC_MEMCPY=m |
| 1426 | CONFIG_ASYNC_XOR=m | 1425 | CONFIG_ASYNC_XOR=m |
| 1427 | CONFIG_CRYPTO=y | 1426 | CONFIG_CRYPTO=y |
| 1427 | |||
| 1428 | # | ||
| 1429 | # Crypto core or helper | ||
| 1430 | # | ||
| 1428 | CONFIG_CRYPTO_ALGAPI=y | 1431 | CONFIG_CRYPTO_ALGAPI=y |
| 1429 | CONFIG_CRYPTO_AEAD=y | 1432 | CONFIG_CRYPTO_AEAD=y |
| 1430 | CONFIG_CRYPTO_BLKCIPHER=y | 1433 | CONFIG_CRYPTO_BLKCIPHER=y |
| 1431 | # CONFIG_CRYPTO_SEQIV is not set | ||
| 1432 | CONFIG_CRYPTO_HASH=y | 1434 | CONFIG_CRYPTO_HASH=y |
| 1433 | CONFIG_CRYPTO_MANAGER=y | 1435 | CONFIG_CRYPTO_MANAGER=y |
| 1436 | CONFIG_CRYPTO_GF128MUL=m | ||
| 1437 | CONFIG_CRYPTO_NULL=m | ||
| 1438 | # CONFIG_CRYPTO_CRYPTD is not set | ||
| 1439 | CONFIG_CRYPTO_AUTHENC=y | ||
| 1440 | CONFIG_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 | # | ||
| 1452 | CONFIG_CRYPTO_CBC=y | ||
| 1453 | # CONFIG_CRYPTO_CTR is not set | ||
| 1454 | # CONFIG_CRYPTO_CTS is not set | ||
| 1455 | CONFIG_CRYPTO_ECB=m | ||
| 1456 | CONFIG_CRYPTO_LRW=m | ||
| 1457 | CONFIG_CRYPTO_PCBC=m | ||
| 1458 | CONFIG_CRYPTO_XTS=m | ||
| 1459 | |||
| 1460 | # | ||
| 1461 | # Hash modes | ||
| 1462 | # | ||
| 1434 | CONFIG_CRYPTO_HMAC=y | 1463 | CONFIG_CRYPTO_HMAC=y |
| 1435 | CONFIG_CRYPTO_XCBC=y | 1464 | CONFIG_CRYPTO_XCBC=y |
| 1436 | CONFIG_CRYPTO_NULL=m | 1465 | |
| 1466 | # | ||
| 1467 | # Digest | ||
| 1468 | # | ||
| 1469 | CONFIG_CRYPTO_CRC32C=m | ||
| 1437 | CONFIG_CRYPTO_MD4=y | 1470 | CONFIG_CRYPTO_MD4=y |
| 1438 | CONFIG_CRYPTO_MD5=y | 1471 | CONFIG_CRYPTO_MD5=y |
| 1472 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
| 1439 | CONFIG_CRYPTO_SHA1=y | 1473 | CONFIG_CRYPTO_SHA1=y |
| 1440 | CONFIG_CRYPTO_SHA256=m | 1474 | CONFIG_CRYPTO_SHA256=m |
| 1441 | CONFIG_CRYPTO_SHA512=m | 1475 | CONFIG_CRYPTO_SHA512=m |
| 1442 | CONFIG_CRYPTO_WP512=m | ||
| 1443 | CONFIG_CRYPTO_TGR192=m | 1476 | CONFIG_CRYPTO_TGR192=m |
| 1444 | CONFIG_CRYPTO_GF128MUL=m | 1477 | CONFIG_CRYPTO_WP512=m |
| 1445 | CONFIG_CRYPTO_ECB=m | 1478 | |
| 1446 | CONFIG_CRYPTO_CBC=y | 1479 | # |
| 1447 | CONFIG_CRYPTO_PCBC=m | 1480 | # Ciphers |
| 1448 | CONFIG_CRYPTO_LRW=m | 1481 | # |
| 1449 | CONFIG_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 | ||
| 1454 | CONFIG_CRYPTO_DES=y | ||
| 1455 | CONFIG_CRYPTO_FCRYPT=m | ||
| 1456 | CONFIG_CRYPTO_BLOWFISH=m | ||
| 1457 | CONFIG_CRYPTO_TWOFISH=m | ||
| 1458 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
| 1459 | CONFIG_CRYPTO_SERPENT=m | ||
| 1460 | CONFIG_CRYPTO_AES=m | 1482 | CONFIG_CRYPTO_AES=m |
| 1483 | CONFIG_CRYPTO_ANUBIS=m | ||
| 1484 | CONFIG_CRYPTO_ARC4=m | ||
| 1485 | CONFIG_CRYPTO_BLOWFISH=m | ||
| 1486 | CONFIG_CRYPTO_CAMELLIA=m | ||
| 1461 | CONFIG_CRYPTO_CAST5=m | 1487 | CONFIG_CRYPTO_CAST5=m |
| 1462 | CONFIG_CRYPTO_CAST6=m | 1488 | CONFIG_CRYPTO_CAST6=m |
| 1463 | CONFIG_CRYPTO_TEA=m | 1489 | CONFIG_CRYPTO_DES=y |
| 1464 | CONFIG_CRYPTO_ARC4=m | 1490 | CONFIG_CRYPTO_FCRYPT=m |
| 1465 | CONFIG_CRYPTO_KHAZAD=m | 1491 | CONFIG_CRYPTO_KHAZAD=m |
| 1466 | CONFIG_CRYPTO_ANUBIS=m | ||
| 1467 | CONFIG_CRYPTO_SEED=m | ||
| 1468 | # CONFIG_CRYPTO_SALSA20 is not set | 1492 | # CONFIG_CRYPTO_SALSA20 is not set |
| 1493 | CONFIG_CRYPTO_SEED=m | ||
| 1494 | CONFIG_CRYPTO_SERPENT=m | ||
| 1495 | CONFIG_CRYPTO_TEA=m | ||
| 1496 | CONFIG_CRYPTO_TWOFISH=m | ||
| 1497 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
| 1498 | |||
| 1499 | # | ||
| 1500 | # Compression | ||
| 1501 | # | ||
| 1469 | CONFIG_CRYPTO_DEFLATE=y | 1502 | CONFIG_CRYPTO_DEFLATE=y |
| 1470 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
| 1471 | CONFIG_CRYPTO_CRC32C=m | ||
| 1472 | CONFIG_CRYPTO_CAMELLIA=m | ||
| 1473 | CONFIG_CRYPTO_TEST=m | ||
| 1474 | CONFIG_CRYPTO_AUTHENC=y | ||
| 1475 | # CONFIG_CRYPTO_LZO is not set | 1503 | # CONFIG_CRYPTO_LZO is not set |
| 1476 | CONFIG_CRYPTO_HW=y | 1504 | CONFIG_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 | |||
| 1492 | CONFIG_HAS_IOMEM=y | 1520 | CONFIG_HAS_IOMEM=y |
| 1493 | CONFIG_HAS_IOPORT=y | 1521 | CONFIG_HAS_IOPORT=y |
| 1494 | CONFIG_HAS_DMA=y | 1522 | CONFIG_HAS_DMA=y |
| 1523 | CONFIG_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 |
| 48 | 109: or %g7, %lo(109b), %g7 | 48 | 109: 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 | ||
| 52 | 1: TRAP_LOAD_THREAD_REG(%g6, %g1) | 52 | 1: 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 | ||
| 494 | invoke_utrap: | 494 | invoke_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 | ||
| 942 | do_icpe_tl1: | 942 | do_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 | ||
| 984 | dcpe_icpe_tl1_common: | 984 | dcpe_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 |
| 1287 | do_mna: | 1287 | do_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 |
| 1314 | do_lddfmna: | 1314 | do_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 |
| 1332 | do_stdfmna: | 1332 | do_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 |
| 1350 | breakpoint_trap: | 1350 | breakpoint_trap: |
| @@ -1424,13 +1424,13 @@ sys32_rt_sigreturn: | |||
| 1424 | 1: ldx [%curptr + TI_FLAGS], %l5 | 1424 | 1: 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 |
| 1563 | linux_sparc_syscall: | 1563 | linux_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 | ||
| 1611 | 1: | 1611 | 1: |
| @@ -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 | ||
| 21 | extern void do_notify_resume(struct pt_regs *regs, | 21 | extern 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 | ||
| 26 | extern asmlinkage void syscall_trace(struct pt_regs *regs, | 25 | extern 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 | ||
| 175 | int iommu_table_init(struct iommu *iommu, int tsbsize, | 175 | int 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) | |||
| 276 | static void *dma_4u_alloc_coherent(struct device *dev, size_t size, | 281 | static 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 | ||
| 87 | static struct mdesc_handle * __init mdesc_bootmem_alloc(unsigned int mdesc_size) | 87 | static 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 | ||
| 104 | static void mdesc_bootmem_free(struct mdesc_handle *hp) | 108 | static 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 | ||
| 127 | static struct mdesc_mem_ops bootmem_mdesc_ops = { | 131 | static 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 | ||
| 132 | static struct mdesc_handle *mdesc_kmalloc(unsigned int mdesc_size) | 136 | static 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 | ||
| 749 | out: | ||
| 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 | ||
| 1165 | int pcibus_to_node(struct pci_bus *pbus) | ||
| 1166 | { | ||
| 1167 | struct pci_pbm_info *pbm = pbus->sysdata; | ||
| 1168 | |||
| 1169 | return pbm->numa_node; | ||
| 1170 | } | ||
| 1171 | EXPORT_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 | ||
| 1164 | int pci_domain_nr(struct pci_bus *pbus) | 1176 | int 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 | ||
| 153 | struct pci_controller_info { | 155 | struct pci_controller_info { |
| @@ -161,8 +163,6 @@ extern struct pci_pbm_info *pci_pbm_root; | |||
| 161 | extern int pci_num_pbms; | 163 | extern int pci_num_pbms; |
| 162 | 164 | ||
| 163 | /* PCI bus scanning and fixup support. */ | 165 | /* PCI bus scanning and fixup support. */ |
| 164 | extern void pci_iommu_table_init(struct iommu *iommu, int tsbsize, | ||
| 165 | u32 dma_offset, u32 dma_addr_mask); | ||
| 166 | extern void pci_get_pbm_props(struct pci_pbm_info *pbm); | 166 | extern void pci_get_pbm_props(struct pci_pbm_info *pbm); |
| 167 | extern struct pci_bus *pci_scan_one_pbm(struct pci_pbm_info *pbm); | 167 | extern struct pci_bus *pci_scan_one_pbm(struct pci_pbm_info *pbm); |
| 168 | extern void pci_determine_mem_io_space(struct pci_pbm_info *pbm); | 168 | extern 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) | |||
| 127 | static void *dma_4v_alloc_coherent(struct device *dev, size_t size, | 127 | static 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 | } |
| 123 | EXPORT_SYMBOL(of_find_in_proplist); | 123 | EXPORT_SYMBOL(of_find_in_proplist); |
| 124 | 124 | ||
| 125 | static unsigned int prom_early_allocated; | 125 | static unsigned int prom_early_allocated __initdata; |
| 126 | 126 | ||
| 127 | static void * __init prom_early_alloc(unsigned long size) | 127 | static 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 |
| 149 | rtrap_irq: | 137 | rtrap_irq: |
| 150 | rtrap_clr_l6: clr %l6 | ||
| 151 | rtrap: | 138 | rtrap: |
| 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; | |||
| 82 | static struct console prom_early_console = { | 82 | static 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 | */ |
| 513 | static void do_signal(struct pt_regs *regs, unsigned long orig_i0, int restart_syscall) | 513 | static 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 | ||
| 579 | void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, int restart_syscall, | 583 | void 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 | ||
| 586 | void ptrace_signal_deliver(struct pt_regs *regs, void *cookie) | 589 | void 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 | */ |
| 984 | void do_signal32(sigset_t *oldset, struct pt_regs * regs, | 984 | void 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 | ||
| 1033 | void smp_receive_signal_client(int irq, struct pt_regs *regs) | 1040 | void 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 | ||
| 1038 | void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) | 1047 | void 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 | ||
| 1064 | void smp_new_mmu_context_version(void) | 1077 | void 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 | ||
| 1432 | void __init real_setup_per_cpu_areas(void) | 1449 | void __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); | |||
| 68 | extern void *__memscan_generic(void *, int, size_t); | 68 | extern void *__memscan_generic(void *, int, size_t); |
| 69 | extern int __memcmp(const void *, const void *, __kernel_size_t); | 69 | extern int __memcmp(const void *, const void *, __kernel_size_t); |
| 70 | extern __kernel_size_t strlen(const char *); | 70 | extern __kernel_size_t strlen(const char *); |
| 71 | extern void linux_sparc_syscall(void); | ||
| 72 | extern void rtrap(void); | ||
| 73 | extern void show_regs(struct pt_regs *); | 71 | extern void show_regs(struct pt_regs *); |
| 74 | extern void syscall_trace(struct pt_regs *, int); | 72 | extern void syscall_trace(struct pt_regs *, int); |
| 75 | extern void sys_sigsuspend(void); | 73 | extern 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. */ |
| 268 | sun4v_iacc_tl1: | 268 | sun4v_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. */ |
| 284 | sun4v_dacc: | 284 | sun4v_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. */ |
| 300 | sun4v_dacc_tl1: | 300 | sun4v_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. */ |
| 316 | sun4v_mna: | 316 | sun4v_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. */ |
| 350 | sun4v_privact: | 350 | sun4v_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. */ |
| 358 | sun4v_lddfmna: | 358 | sun4v_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. */ |
| 374 | sun4v_stdfmna: | 374 | sun4v_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 | ||
| 276 | static 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 | |||
| 276 | static int __init topology_init(void) | 286 | static 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 | ||
| 2092 | void show_stack(struct task_struct *tsk, unsigned long *_ksp) | 2092 | void 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 | ||
| 281 | winfix_trampoline: | 281 | winfix_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 | ||
| 105 | winfix_mna: | 105 | winfix_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 |
| 126 | 1: mov %l4, %o1 | 126 | 1: 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 | ||
| 132 | winfix_dax: | 132 | winfix_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 |
| 154 | 1: call spitfire_data_access_exception | 154 | 1: 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 | ||
| 74 | static struct linux_prom64_registers pavail[MAX_BANKS] __initdata; | 76 | static struct linux_prom64_registers pavail[MAX_BANKS] __initdata; |
| 75 | static struct linux_prom64_registers pavail_rescan[MAX_BANKS] __initdata; | ||
| 76 | static int pavail_ents __initdata; | 77 | static int pavail_ents __initdata; |
| 77 | static int pavail_rescan_ents __initdata; | ||
| 78 | 78 | ||
| 79 | static int cmp_p64(const void *a, const void *b) | 79 | static 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 | 718 | static int numa_enabled = 1; |
| 719 | * and the initial ramdisk. | 719 | static int numa_debug; |
| 720 | */ | 720 | |
| 721 | static unsigned long __init choose_bootmap_pfn(unsigned long start_pfn, | 721 | static 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 | } | ||
| 734 | early_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; | 737 | do { if (numa_debug) \ |
| 738 | printk(KERN_INFO f, ## a); \ | ||
| 739 | } while (0) | ||
| 729 | 740 | ||
| 730 | avoid_start = avoid_end = 0; | 741 | static 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++) { | 777 | struct node_mem_mask { |
| 737 | unsigned long start, end; | 778 | unsigned long mask; |
| 779 | unsigned long val; | ||
| 780 | unsigned long bootmem_paddr; | ||
| 781 | }; | ||
| 782 | static struct node_mem_mask node_masks[MAX_NUMNODES]; | ||
| 783 | static int num_node_masks; | ||
| 738 | 784 | ||
| 739 | start = pavail[i].phys_addr; | 785 | int numa_cpu_lookup_table[NR_CPUS]; |
| 740 | end = start + pavail[i].reg_size; | 786 | cpumask_t numa_cpumask_lookup_table[MAX_NUMNODES]; |
| 741 | 787 | ||
| 742 | while (start < end) { | 788 | #ifdef CONFIG_NEED_MULTIPLE_NODES |
| 743 | if (start >= kern_base && | 789 | static 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) | 791 | struct mdesc_mblock { |
| 754 | break; | 792 | u64 base; |
| 793 | u64 size; | ||
| 794 | u64 offset; /* RA-to-PA */ | ||
| 795 | }; | ||
| 796 | static struct mdesc_mblock *mblocks; | ||
| 797 | static int num_mblocks; | ||
| 755 | 798 | ||
| 756 | if (start < kern_base && | 799 | static 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 | ||
| 777 | static void __init trim_pavail(unsigned long *cur_size_p, | 815 | static 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 | |||
| 829 | static 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 | ||
| 845 | static 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 | 857 | static 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 | |||
| 895 | static 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 | ||
| 911 | struct pglist_data *node_data[MAX_NUMNODES]; | ||
| 912 | |||
| 913 | EXPORT_SYMBOL(numa_cpu_lookup_table); | ||
| 914 | EXPORT_SYMBOL(numa_cpumask_lookup_table); | ||
| 915 | EXPORT_SYMBOL(node_data); | ||
| 916 | |||
| 917 | struct mdesc_mlgroup { | ||
| 918 | u64 node; | ||
| 919 | u64 latency; | ||
| 920 | u64 match; | ||
| 921 | u64 mask; | ||
| 922 | }; | ||
| 923 | static struct mdesc_mlgroup *mlgroups; | ||
| 924 | static int num_mlgroups; | ||
| 925 | |||
| 926 | static 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 | |||
| 943 | static 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 | |||
| 973 | int 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 | 1007 | static 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 | */ | ||
| 900 | static 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 | 1036 | static 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 ? | 1077 | static 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 | |||
| 1116 | static 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 | |||
| 1136 | static 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 | |||
| 1148 | static 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 | |
| 1186 | static 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 | |
| 1208 | static 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; | ||
| 1244 | out: | ||
| 1245 | mdesc_release(md); | ||
| 1246 | return err; | ||
| 1247 | } | ||
| 1248 | |||
| 1249 | static int __init numa_parse_sun4u(void) | ||
| 1250 | { | ||
| 1251 | return -1; | ||
| 1252 | } | ||
| 966 | 1253 | ||
| 967 | /* Reserve the initrd image area. */ | 1254 | static 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 | |||
| 1271 | static 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++) { | 1278 | static 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 | |||
| 1310 | static 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 | |||
| 1333 | static 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 | |||
| 1348 | static 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 | |||
| 1380 | static 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 | ||
| 1290 | void __init paging_init(void) | 1689 | void __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 | ||
| 1411 | static void __init taint_real_pages(void) | 1822 | int __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 | |||
| 1848 | static struct linux_prom64_registers pavail_rescan[MAX_BANKS] __initdata; | ||
| 1849 | static 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 | */ | ||
| 1857 | static 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 | ||
| 1451 | int __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 | |||
| 1477 | void __init mem_init(void) | 1902 | void __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 | ||
| 29 | config GENERIC_LOCKBREAK | 29 | config GENERIC_LOCKBREAK |
diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug index 610aaecc19f8..239fd9fba0a5 100644 --- a/arch/x86/Kconfig.debug +++ b/arch/x86/Kconfig.debug | |||
| @@ -5,6 +5,17 @@ config TRACE_IRQFLAGS_SUPPORT | |||
| 5 | 5 | ||
| 6 | source "lib/Kconfig.debug" | 6 | source "lib/Kconfig.debug" |
| 7 | 7 | ||
| 8 | config NONPROMISC_DEVMEM | ||
| 9 | bool "Disable promiscuous /dev/mem" | ||
| 10 | help | ||
| 11 | The /dev/mem file by default only allows userspace access to PCI | ||
| 12 | space and the BIOS code and data regions. This is sufficient for | ||
| 13 | dosemu and X and all common users of /dev/mem. With this config | ||
| 14 | option, you allow userspace access to all of memory, including | ||
| 15 | kernel and userspace memory. Accidental access to this is | ||
| 16 | obviously disasterous, but specific access can be used by people | ||
| 17 | debugging the kernel. | ||
| 18 | |||
| 8 | config EARLY_PRINTK | 19 | config EARLY_PRINTK |
| 9 | bool "Early printk" if EMBEDDED | 20 | bool "Early printk" if EMBEDDED |
| 10 | default y | 21 | default y |
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 @@ | |||
| 1 | bootsect | 1 | bootsect |
| 2 | bzImage | 2 | bzImage |
| 3 | cpustr.h | ||
| 4 | mkcpustr | ||
| 5 | offsets.h | ||
| 3 | setup | 6 | setup |
| 4 | setup.bin | 7 | setup.bin |
| 5 | setup.elf | 8 | setup.elf |
| 6 | cpustr.h | ||
| 7 | mkcpustr | ||
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 @@ | |||
| 1 | wakeup.bin | ||
| 2 | wakeup.elf | ||
| 3 | wakeup.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 | ||
| 905 | void __cpuinit lapic_setup_esr(void) | 905 | static 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 | */ |
| 432 | void __cpuinit check_boot_apic_timer_broadcast(void) | 432 | static 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 | ||
| 837 | void __cpuinit lapic_setup_esr(void) | 837 | static 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/entry_32.S b/arch/x86/kernel/entry_32.S index f0f8934fc303..2a609dc3271c 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S | |||
| @@ -409,7 +409,7 @@ restore_nocheck_notrace: | |||
| 409 | irq_return: | 409 | irq_return: |
| 410 | INTERRUPT_RETURN | 410 | INTERRUPT_RETURN |
| 411 | .section .fixup,"ax" | 411 | .section .fixup,"ax" |
| 412 | iret_exc: | 412 | ENTRY(iret_exc) |
| 413 | pushl $0 # no error code | 413 | pushl $0 # no error code |
| 414 | pushl $do_iret_error | 414 | pushl $do_iret_error |
| 415 | jmp error_code | 415 | jmp error_code |
| @@ -1017,6 +1017,13 @@ ENTRY(kernel_thread_helper) | |||
| 1017 | ENDPROC(kernel_thread_helper) | 1017 | ENDPROC(kernel_thread_helper) |
| 1018 | 1018 | ||
| 1019 | #ifdef CONFIG_XEN | 1019 | #ifdef CONFIG_XEN |
| 1020 | /* Xen doesn't set %esp to be precisely what the normal sysenter | ||
| 1021 | entrypoint expects, so fix it up before using the normal path. */ | ||
| 1022 | ENTRY(xen_sysenter_target) | ||
| 1023 | RING0_INT_FRAME | ||
| 1024 | addl $5*4, %esp /* remove xen-provided frame */ | ||
| 1025 | jmp sysenter_past_esp | ||
| 1026 | |||
| 1020 | ENTRY(xen_hypervisor_callback) | 1027 | ENTRY(xen_hypervisor_callback) |
| 1021 | CFI_STARTPROC | 1028 | CFI_STARTPROC |
| 1022 | pushl $0 | 1029 | pushl $0 |
| @@ -1035,8 +1042,9 @@ ENTRY(xen_hypervisor_callback) | |||
| 1035 | cmpl $xen_iret_end_crit,%eax | 1042 | cmpl $xen_iret_end_crit,%eax |
| 1036 | jae 1f | 1043 | jae 1f |
| 1037 | 1044 | ||
| 1038 | call xen_iret_crit_fixup | 1045 | jmp xen_iret_crit_fixup |
| 1039 | 1046 | ||
| 1047 | ENTRY(xen_do_upcall) | ||
| 1040 | 1: mov %esp, %eax | 1048 | 1: mov %esp, %eax |
| 1041 | call xen_evtchn_do_upcall | 1049 | call xen_evtchn_do_upcall |
| 1042 | jmp ret_from_intr | 1050 | jmp ret_from_intr |
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c index 3733412d1357..74f0c5ea2a03 100644 --- a/arch/x86/kernel/paravirt.c +++ b/arch/x86/kernel/paravirt.c | |||
| @@ -366,11 +366,13 @@ struct pv_mmu_ops pv_mmu_ops = { | |||
| 366 | .flush_tlb_single = native_flush_tlb_single, | 366 | .flush_tlb_single = native_flush_tlb_single, |
| 367 | .flush_tlb_others = native_flush_tlb_others, | 367 | .flush_tlb_others = native_flush_tlb_others, |
| 368 | 368 | ||
| 369 | .alloc_pt = paravirt_nop, | 369 | .alloc_pte = paravirt_nop, |
| 370 | .alloc_pd = paravirt_nop, | 370 | .alloc_pmd = paravirt_nop, |
| 371 | .alloc_pd_clone = paravirt_nop, | 371 | .alloc_pmd_clone = paravirt_nop, |
| 372 | .release_pt = paravirt_nop, | 372 | .alloc_pud = paravirt_nop, |
| 373 | .release_pd = paravirt_nop, | 373 | .release_pte = paravirt_nop, |
| 374 | .release_pmd = paravirt_nop, | ||
| 375 | .release_pud = paravirt_nop, | ||
| 374 | 376 | ||
| 375 | .set_pte = native_set_pte, | 377 | .set_pte = native_set_pte, |
| 376 | .set_pte_at = native_set_pte_at, | 378 | .set_pte_at = native_set_pte_at, |
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 | ||
| 553 | void enable_TSC(void) | 553 | static 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 | ||
| 565 | void enable_TSC(void) | 565 | static 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/reboot.c b/arch/x86/kernel/reboot.c index 19c9386ac118..1791a751a772 100644 --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | #include <asm/apic.h> | 8 | #include <asm/apic.h> |
| 9 | #include <asm/desc.h> | 9 | #include <asm/desc.h> |
| 10 | #include <asm/hpet.h> | 10 | #include <asm/hpet.h> |
| 11 | #include <asm/pgtable.h> | ||
| 11 | #include <asm/reboot_fixups.h> | 12 | #include <asm/reboot_fixups.h> |
| 12 | #include <asm/reboot.h> | 13 | #include <asm/reboot.h> |
| 13 | 14 | ||
| @@ -15,7 +16,6 @@ | |||
| 15 | # include <linux/dmi.h> | 16 | # include <linux/dmi.h> |
| 16 | # include <linux/ctype.h> | 17 | # include <linux/ctype.h> |
| 17 | # include <linux/mc146818rtc.h> | 18 | # include <linux/mc146818rtc.h> |
| 18 | # include <asm/pgtable.h> | ||
| 19 | #else | 19 | #else |
| 20 | # include <asm/iommu.h> | 20 | # include <asm/iommu.h> |
| 21 | #endif | 21 | #endif |
| @@ -275,7 +275,7 @@ void machine_real_restart(unsigned char *code, int length) | |||
| 275 | /* Remap the kernel at virtual address zero, as well as offset zero | 275 | /* Remap the kernel at virtual address zero, as well as offset zero |
| 276 | from the kernel segment. This assumes the kernel segment starts at | 276 | from the kernel segment. This assumes the kernel segment starts at |
| 277 | virtual address PAGE_OFFSET. */ | 277 | virtual address PAGE_OFFSET. */ |
| 278 | memcpy(swapper_pg_dir, swapper_pg_dir + USER_PGD_PTRS, | 278 | memcpy(swapper_pg_dir, swapper_pg_dir + KERNEL_PGD_BOUNDARY, |
| 279 | sizeof(swapper_pg_dir [0]) * KERNEL_PGD_PTRS); | 279 | sizeof(swapper_pg_dir [0]) * KERNEL_PGD_PTRS); |
| 280 | 280 | ||
| 281 | /* | 281 | /* |
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; | |||
| 18 | unsigned int boot_cpu_physical_apicid = -1U; | 18 | unsigned int boot_cpu_physical_apicid = -1U; |
| 19 | EXPORT_SYMBOL(boot_cpu_physical_apicid); | 19 | EXPORT_SYMBOL(boot_cpu_physical_apicid); |
| 20 | 20 | ||
| 21 | physid_mask_t phys_cpu_present_map; | ||
| 22 | |||
| 23 | DEFINE_PER_CPU(u16, x86_cpu_to_apicid) = BAD_APICID; | 21 | DEFINE_PER_CPU(u16, x86_cpu_to_apicid) = BAD_APICID; |
| 24 | EXPORT_PER_CPU_SYMBOL(x86_cpu_to_apicid); | 22 | EXPORT_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 |
| 445 | void __init setup_bootmem_allocator(void); | 445 | static void __init setup_bootmem_allocator(void); |
| 446 | static unsigned long __init setup_memory(void) | 446 | static 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 | ||
| 480 | void __init zone_sizes_init(void) | 480 | static 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 6a925394bc7e..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) | |||
| 184 | u8 cpu_2_logical_apicid[NR_CPUS] __read_mostly = | 184 | u8 cpu_2_logical_apicid[NR_CPUS] __read_mostly = |
| 185 | { [0 ... NR_CPUS-1] = BAD_APICID }; | 185 | { [0 ... NR_CPUS-1] = BAD_APICID }; |
| 186 | 186 | ||
| 187 | void map_cpu_to_logical_apicid(void) | 187 | static 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 | ||
| 200 | void unmap_cpu_to_logical_apicid(int cpu) | 200 | static 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 | */ |
| 214 | void __cpuinit smp_callin(void) | 214 | static 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 | ||
| 439 | void __cpuinit smp_checks(void) | 439 | static 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 | ||
| 568 | void impress_friends(void) | 568 | static void impress_friends(void) |
| 569 | { | 569 | { |
| 570 | int cpu; | 570 | int cpu; |
| 571 | unsigned long bogosum = 0; | 571 | unsigned long bogosum = 0; |
| @@ -1039,8 +1039,8 @@ int __cpuinit native_cpu_up(unsigned int cpu) | |||
| 1039 | 1039 | ||
| 1040 | #ifdef CONFIG_X86_32 | 1040 | #ifdef CONFIG_X86_32 |
| 1041 | /* init low mem mapping */ | 1041 | /* init low mem mapping */ |
| 1042 | clone_pgd_range(swapper_pg_dir, swapper_pg_dir + USER_PGD_PTRS, | 1042 | clone_pgd_range(swapper_pg_dir, swapper_pg_dir + KERNEL_PGD_BOUNDARY, |
| 1043 | min_t(unsigned long, KERNEL_PGD_PTRS, USER_PGD_PTRS)); | 1043 | min_t(unsigned long, KERNEL_PGD_PTRS, KERNEL_PGD_BOUNDARY)); |
| 1044 | flush_tlb_all(); | 1044 | flush_tlb_all(); |
| 1045 | #endif | 1045 | #endif |
| 1046 | 1046 | ||
| @@ -1287,7 +1287,7 @@ void cpu_exit_clear(void) | |||
| 1287 | } | 1287 | } |
| 1288 | # endif /* CONFIG_X86_32 */ | 1288 | # endif /* CONFIG_X86_32 */ |
| 1289 | 1289 | ||
| 1290 | void remove_siblinginfo(int cpu) | 1290 | static 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 | ||
| 194 | int __cpuinit init_smp_flush(void) | 194 | static int __cpuinit init_smp_flush(void) |
| 195 | { | 195 | { |
| 196 | int i; | 196 | int i; |
| 197 | 197 | ||
diff --git a/arch/x86/kernel/vmi_32.c b/arch/x86/kernel/vmi_32.c index 12affe1f9bce..956f38927aa7 100644 --- a/arch/x86/kernel/vmi_32.c +++ b/arch/x86/kernel/vmi_32.c | |||
| @@ -320,7 +320,7 @@ static void check_zeroed_page(u32 pfn, int type, struct page *page) | |||
| 320 | * pdes need to be zeroed. | 320 | * pdes need to be zeroed. |
| 321 | */ | 321 | */ |
| 322 | if (type & VMI_PAGE_CLONE) | 322 | if (type & VMI_PAGE_CLONE) |
| 323 | limit = USER_PTRS_PER_PGD; | 323 | limit = KERNEL_PGD_BOUNDARY; |
| 324 | for (i = 0; i < limit; i++) | 324 | for (i = 0; i < limit; i++) |
| 325 | BUG_ON(ptr[i]); | 325 | BUG_ON(ptr[i]); |
| 326 | } | 326 | } |
| @@ -392,13 +392,13 @@ static void *vmi_kmap_atomic_pte(struct page *page, enum km_type type) | |||
| 392 | } | 392 | } |
| 393 | #endif | 393 | #endif |
| 394 | 394 | ||
| 395 | static void vmi_allocate_pt(struct mm_struct *mm, u32 pfn) | 395 | static void vmi_allocate_pte(struct mm_struct *mm, u32 pfn) |
| 396 | { | 396 | { |
| 397 | vmi_set_page_type(pfn, VMI_PAGE_L1); | 397 | vmi_set_page_type(pfn, VMI_PAGE_L1); |
| 398 | vmi_ops.allocate_page(pfn, VMI_PAGE_L1, 0, 0, 0); | 398 | vmi_ops.allocate_page(pfn, VMI_PAGE_L1, 0, 0, 0); |
| 399 | } | 399 | } |
| 400 | 400 | ||
| 401 | static void vmi_allocate_pd(struct mm_struct *mm, u32 pfn) | 401 | static void vmi_allocate_pmd(struct mm_struct *mm, u32 pfn) |
| 402 | { | 402 | { |
| 403 | /* | 403 | /* |
| 404 | * This call comes in very early, before mem_map is setup. | 404 | * This call comes in very early, before mem_map is setup. |
| @@ -409,20 +409,20 @@ static void vmi_allocate_pd(struct mm_struct *mm, u32 pfn) | |||
| 409 | vmi_ops.allocate_page(pfn, VMI_PAGE_L2, 0, 0, 0); | 409 | vmi_ops.allocate_page(pfn, VMI_PAGE_L2, 0, 0, 0); |
| 410 | } | 410 | } |
| 411 | 411 | ||
| 412 | static void vmi_allocate_pd_clone(u32 pfn, u32 clonepfn, u32 start, u32 count) | 412 | static void vmi_allocate_pmd_clone(u32 pfn, u32 clonepfn, u32 start, u32 count) |
| 413 | { | 413 | { |
| 414 | vmi_set_page_type(pfn, VMI_PAGE_L2 | VMI_PAGE_CLONE); | 414 | vmi_set_page_type(pfn, VMI_PAGE_L2 | VMI_PAGE_CLONE); |
| 415 | vmi_check_page_type(clonepfn, VMI_PAGE_L2); | 415 | vmi_check_page_type(clonepfn, VMI_PAGE_L2); |
| 416 | vmi_ops.allocate_page(pfn, VMI_PAGE_L2 | VMI_PAGE_CLONE, clonepfn, start, count); | 416 | vmi_ops.allocate_page(pfn, VMI_PAGE_L2 | VMI_PAGE_CLONE, clonepfn, start, count); |
| 417 | } | 417 | } |
| 418 | 418 | ||
| 419 | static void vmi_release_pt(u32 pfn) | 419 | static void vmi_release_pte(u32 pfn) |
| 420 | { | 420 | { |
| 421 | vmi_ops.release_page(pfn, VMI_PAGE_L1); | 421 | vmi_ops.release_page(pfn, VMI_PAGE_L1); |
| 422 | vmi_set_page_type(pfn, VMI_PAGE_NORMAL); | 422 | vmi_set_page_type(pfn, VMI_PAGE_NORMAL); |
| 423 | } | 423 | } |
| 424 | 424 | ||
| 425 | static void vmi_release_pd(u32 pfn) | 425 | static void vmi_release_pmd(u32 pfn) |
| 426 | { | 426 | { |
| 427 | vmi_ops.release_page(pfn, VMI_PAGE_L2); | 427 | vmi_ops.release_page(pfn, VMI_PAGE_L2); |
| 428 | vmi_set_page_type(pfn, VMI_PAGE_NORMAL); | 428 | vmi_set_page_type(pfn, VMI_PAGE_NORMAL); |
| @@ -871,15 +871,15 @@ static inline int __init activate_vmi(void) | |||
| 871 | 871 | ||
| 872 | vmi_ops.allocate_page = vmi_get_function(VMI_CALL_AllocatePage); | 872 | vmi_ops.allocate_page = vmi_get_function(VMI_CALL_AllocatePage); |
| 873 | if (vmi_ops.allocate_page) { | 873 | if (vmi_ops.allocate_page) { |
| 874 | pv_mmu_ops.alloc_pt = vmi_allocate_pt; | 874 | pv_mmu_ops.alloc_pte = vmi_allocate_pte; |
| 875 | pv_mmu_ops.alloc_pd = vmi_allocate_pd; | 875 | pv_mmu_ops.alloc_pmd = vmi_allocate_pmd; |
| 876 | pv_mmu_ops.alloc_pd_clone = vmi_allocate_pd_clone; | 876 | pv_mmu_ops.alloc_pmd_clone = vmi_allocate_pmd_clone; |
| 877 | } | 877 | } |
| 878 | 878 | ||
| 879 | vmi_ops.release_page = vmi_get_function(VMI_CALL_ReleasePage); | 879 | vmi_ops.release_page = vmi_get_function(VMI_CALL_ReleasePage); |
| 880 | if (vmi_ops.release_page) { | 880 | if (vmi_ops.release_page) { |
| 881 | pv_mmu_ops.release_pt = vmi_release_pt; | 881 | pv_mmu_ops.release_pte = vmi_release_pte; |
| 882 | pv_mmu_ops.release_pd = vmi_release_pd; | 882 | pv_mmu_ops.release_pmd = vmi_release_pmd; |
| 883 | } | 883 | } |
| 884 | 884 | ||
| 885 | /* Set linear is needed in all cases */ | 885 | /* Set linear is needed in all cases */ |
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 | ||
| 219 | long __vsyscall(3) venosys_1(void) | 219 | static 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 */ |
| 12 | int smp_found_config; | 12 | int smp_found_config; |
| 13 | 13 | ||
| 14 | /* | ||
| 15 | * Various Linux-internal data structures created from the | ||
| 16 | * MP-table. | ||
| 17 | */ | ||
| 18 | int apic_version [MAX_APICS]; | ||
| 19 | |||
| 20 | int pic_mode; | 14 | int pic_mode; |
| 21 | unsigned long mp_lapic_addr; | ||
| 22 | |||
| 23 | /* Processor that is doing the boot up */ | ||
| 24 | unsigned int boot_cpu_physical_apicid = -1U; | ||
| 25 | |||
| 26 | /* Bitmask of physically existing CPUs */ | ||
| 27 | physid_mask_t phys_cpu_present_map; | ||
| 28 | 15 | ||
| 29 | unsigned int __initdata maxcpus = NR_CPUS; | 16 | extern 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 96f60c7cd124..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) */ |
| 207 | static int cpucount = 0; | 207 | static 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 */ | ||
| 212 | unsigned 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 */ |
| 215 | static DEFINE_PER_CPU(int, prof_multiplier) = 1; | 210 | static DEFINE_PER_CPU(int, prof_multiplier) = 1; |
| 216 | static DEFINE_PER_CPU(int, prof_old_multiplier) = 1; | 211 | static 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 */ | ||
| 431 | unsigned 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 */ |
| 443 | static void __init start_secondary(void *unused) | 426 | static void __init start_secondary(void *unused) |
| 444 | { | 427 | { |
| @@ -560,8 +543,8 @@ static void __init do_boot_cpu(__u8 cpu) | |||
| 560 | hijack_source.idt.Offset, stack_start.sp)); | 543 | hijack_source.idt.Offset, stack_start.sp)); |
| 561 | 544 | ||
| 562 | /* init lowmem identity mapping */ | 545 | /* init lowmem identity mapping */ |
| 563 | clone_pgd_range(swapper_pg_dir, swapper_pg_dir + USER_PGD_PTRS, | 546 | clone_pgd_range(swapper_pg_dir, swapper_pg_dir + KERNEL_PGD_BOUNDARY, |
| 564 | min_t(unsigned long, KERNEL_PGD_PTRS, USER_PGD_PTRS)); | 547 | min_t(unsigned long, KERNEL_PGD_PTRS, KERNEL_PGD_BOUNDARY)); |
| 565 | flush_tlb_all(); | 548 | flush_tlb_all(); |
| 566 | 549 | ||
| 567 | if (quad_boot) { | 550 | if (quad_boot) { |
diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile index 20941d2954e2..b7b3e4c7cfc9 100644 --- a/arch/x86/mm/Makefile +++ b/arch/x86/mm/Makefile | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | obj-y := init_$(BITS).o fault.o ioremap.o extable.o pageattr.o mmap.o \ | 1 | obj-y := init_$(BITS).o fault.o ioremap.o extable.o pageattr.o mmap.o \ |
| 2 | pat.o | 2 | pat.o pgtable.o |
| 3 | 3 | ||
| 4 | obj-$(CONFIG_X86_32) += pgtable_32.o | 4 | obj-$(CONFIG_X86_32) += pgtable_32.o |
| 5 | 5 | ||
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 | ||
| 327 | int pt_dump_init(void) | 327 | static int pt_dump_init(void) |
| 328 | { | 328 | { |
| 329 | struct dentry *pe; | 329 | struct dentry *pe; |
| 330 | 330 | ||
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index 9ec62da85fd7..baf7c4f643c8 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c | |||
| @@ -71,7 +71,7 @@ static pmd_t * __init one_md_table_init(pgd_t *pgd) | |||
| 71 | if (!(pgd_val(*pgd) & _PAGE_PRESENT)) { | 71 | if (!(pgd_val(*pgd) & _PAGE_PRESENT)) { |
| 72 | pmd_table = (pmd_t *) alloc_bootmem_low_pages(PAGE_SIZE); | 72 | pmd_table = (pmd_t *) alloc_bootmem_low_pages(PAGE_SIZE); |
| 73 | 73 | ||
| 74 | paravirt_alloc_pd(&init_mm, __pa(pmd_table) >> PAGE_SHIFT); | 74 | paravirt_alloc_pmd(&init_mm, __pa(pmd_table) >> PAGE_SHIFT); |
| 75 | set_pgd(pgd, __pgd(__pa(pmd_table) | _PAGE_PRESENT)); | 75 | set_pgd(pgd, __pgd(__pa(pmd_table) | _PAGE_PRESENT)); |
| 76 | pud = pud_offset(pgd, 0); | 76 | pud = pud_offset(pgd, 0); |
| 77 | BUG_ON(pmd_table != pmd_offset(pud, 0)); | 77 | BUG_ON(pmd_table != pmd_offset(pud, 0)); |
| @@ -100,7 +100,7 @@ static pte_t * __init one_page_table_init(pmd_t *pmd) | |||
| 100 | (pte_t *)alloc_bootmem_low_pages(PAGE_SIZE); | 100 | (pte_t *)alloc_bootmem_low_pages(PAGE_SIZE); |
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | paravirt_alloc_pt(&init_mm, __pa(page_table) >> PAGE_SHIFT); | 103 | paravirt_alloc_pte(&init_mm, __pa(page_table) >> PAGE_SHIFT); |
| 104 | set_pmd(pmd, __pmd(__pa(page_table) | _PAGE_TABLE)); | 104 | set_pmd(pmd, __pmd(__pa(page_table) | _PAGE_TABLE)); |
| 105 | BUG_ON(page_table != pte_offset_kernel(pmd, 0)); | 105 | BUG_ON(page_table != pte_offset_kernel(pmd, 0)); |
| 106 | } | 106 | } |
| @@ -227,6 +227,25 @@ static inline int page_kills_ppro(unsigned long pagenr) | |||
| 227 | return 0; | 227 | return 0; |
| 228 | } | 228 | } |
| 229 | 229 | ||
| 230 | /* | ||
| 231 | * devmem_is_allowed() checks to see if /dev/mem access to a certain address | ||
| 232 | * is valid. The argument is a physical page number. | ||
| 233 | * | ||
| 234 | * | ||
| 235 | * On x86, access has to be given to the first megabyte of ram because that area | ||
| 236 | * contains bios code and data regions used by X and dosemu and similar apps. | ||
| 237 | * Access has to be given to non-kernel-ram areas as well, these contain the PCI | ||
| 238 | * mmio resources as well as potential bios/acpi data regions. | ||
| 239 | */ | ||
| 240 | int devmem_is_allowed(unsigned long pagenr) | ||
| 241 | { | ||
| 242 | if (pagenr <= 256) | ||
| 243 | return 1; | ||
| 244 | if (!page_is_ram(pagenr)) | ||
| 245 | return 1; | ||
| 246 | return 0; | ||
| 247 | } | ||
| 248 | |||
| 230 | #ifdef CONFIG_HIGHMEM | 249 | #ifdef CONFIG_HIGHMEM |
| 231 | pte_t *kmap_pte; | 250 | pte_t *kmap_pte; |
| 232 | pgprot_t kmap_prot; | 251 | pgprot_t kmap_prot; |
| @@ -365,7 +384,7 @@ void __init native_pagetable_setup_start(pgd_t *base) | |||
| 365 | 384 | ||
| 366 | pte_clear(NULL, va, pte); | 385 | pte_clear(NULL, va, pte); |
| 367 | } | 386 | } |
| 368 | paravirt_alloc_pd(&init_mm, __pa(base) >> PAGE_SHIFT); | 387 | paravirt_alloc_pmd(&init_mm, __pa(base) >> PAGE_SHIFT); |
| 369 | } | 388 | } |
| 370 | 389 | ||
| 371 | void __init native_pagetable_setup_done(pgd_t *base) | 390 | void __init native_pagetable_setup_done(pgd_t *base) |
| @@ -457,7 +476,7 @@ void zap_low_mappings(void) | |||
| 457 | * Note that "pgd_clear()" doesn't do it for | 476 | * Note that "pgd_clear()" doesn't do it for |
| 458 | * us, because pgd_clear() is a no-op on i386. | 477 | * us, because pgd_clear() is a no-op on i386. |
| 459 | */ | 478 | */ |
| 460 | for (i = 0; i < USER_PTRS_PER_PGD; i++) { | 479 | for (i = 0; i < KERNEL_PGD_BOUNDARY; i++) { |
| 461 | #ifdef CONFIG_X86_PAE | 480 | #ifdef CONFIG_X86_PAE |
| 462 | set_pgd(swapper_pg_dir+i, __pgd(1 + __pa(empty_zero_page))); | 481 | set_pgd(swapper_pg_dir+i, __pgd(1 + __pa(empty_zero_page))); |
| 463 | #else | 482 | #else |
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 1ff7906a9a4d..0cca62663037 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 | ||
| 138 | static __init void | 138 | static void |
| 139 | set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot) | 139 | set_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 */ |
| 217 | void __init | 217 | void __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 | ||
| @@ -664,6 +663,26 @@ EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid); | |||
| 664 | 663 | ||
| 665 | #endif /* CONFIG_MEMORY_HOTPLUG */ | 664 | #endif /* CONFIG_MEMORY_HOTPLUG */ |
| 666 | 665 | ||
| 666 | /* | ||
| 667 | * devmem_is_allowed() checks to see if /dev/mem access to a certain address | ||
| 668 | * is valid. The argument is a physical page number. | ||
| 669 | * | ||
| 670 | * | ||
| 671 | * On x86, access has to be given to the first megabyte of ram because that area | ||
| 672 | * contains bios code and data regions used by X and dosemu and similar apps. | ||
| 673 | * Access has to be given to non-kernel-ram areas as well, these contain the PCI | ||
| 674 | * mmio resources as well as potential bios/acpi data regions. | ||
| 675 | */ | ||
| 676 | int devmem_is_allowed(unsigned long pagenr) | ||
| 677 | { | ||
| 678 | if (pagenr <= 256) | ||
| 679 | return 1; | ||
| 680 | if (!page_is_ram(pagenr)) | ||
| 681 | return 1; | ||
| 682 | return 0; | ||
| 683 | } | ||
| 684 | |||
| 685 | |||
| 667 | static struct kcore_list kcore_mem, kcore_vmalloc, kcore_kernel, | 686 | static struct kcore_list kcore_mem, kcore_vmalloc, kcore_kernel, |
| 668 | kcore_modules, kcore_vsyscall; | 687 | kcore_modules, kcore_vsyscall; |
| 669 | 688 | ||
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index 3a4baf95e24d..d176b23110cc 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c | |||
| @@ -336,6 +336,35 @@ void iounmap(volatile void __iomem *addr) | |||
| 336 | } | 336 | } |
| 337 | EXPORT_SYMBOL(iounmap); | 337 | EXPORT_SYMBOL(iounmap); |
| 338 | 338 | ||
| 339 | /* | ||
| 340 | * Convert a physical pointer to a virtual kernel pointer for /dev/mem | ||
| 341 | * access | ||
| 342 | */ | ||
| 343 | void *xlate_dev_mem_ptr(unsigned long phys) | ||
| 344 | { | ||
| 345 | void *addr; | ||
| 346 | unsigned long start = phys & PAGE_MASK; | ||
| 347 | |||
| 348 | /* If page is RAM, we can use __va. Otherwise ioremap and unmap. */ | ||
| 349 | if (page_is_ram(start >> PAGE_SHIFT)) | ||
| 350 | return __va(phys); | ||
| 351 | |||
| 352 | addr = (void *)ioremap(start, PAGE_SIZE); | ||
| 353 | if (addr) | ||
| 354 | addr = (void *)((unsigned long)addr | (phys & ~PAGE_MASK)); | ||
| 355 | |||
| 356 | return addr; | ||
| 357 | } | ||
| 358 | |||
| 359 | void unxlate_dev_mem_ptr(unsigned long phys, void *addr) | ||
| 360 | { | ||
| 361 | if (page_is_ram(phys >> PAGE_SHIFT)) | ||
| 362 | return; | ||
| 363 | |||
| 364 | iounmap((void __iomem *)((unsigned long)addr & PAGE_MASK)); | ||
| 365 | return; | ||
| 366 | } | ||
| 367 | |||
| 339 | #ifdef CONFIG_X86_32 | 368 | #ifdef CONFIG_X86_32 |
| 340 | 369 | ||
| 341 | int __initdata early_ioremap_debug; | 370 | int __initdata early_ioremap_debug; |
| @@ -407,7 +436,7 @@ void __init early_ioremap_clear(void) | |||
| 407 | 436 | ||
| 408 | pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN)); | 437 | pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN)); |
| 409 | pmd_clear(pmd); | 438 | pmd_clear(pmd); |
| 410 | paravirt_release_pt(__pa(bm_pte) >> PAGE_SHIFT); | 439 | paravirt_release_pte(__pa(bm_pte) >> PAGE_SHIFT); |
| 411 | __flush_tlb_all(); | 440 | __flush_tlb_all(); |
| 412 | } | 441 | } |
| 413 | 442 | ||
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index f7823a172868..bd5e05c654dc 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c | |||
| @@ -483,9 +483,7 @@ static int split_large_page(pte_t *kpte, unsigned long address) | |||
| 483 | goto out_unlock; | 483 | goto out_unlock; |
| 484 | 484 | ||
| 485 | pbase = (pte_t *)page_address(base); | 485 | pbase = (pte_t *)page_address(base); |
| 486 | #ifdef CONFIG_X86_32 | 486 | paravirt_alloc_pte(&init_mm, page_to_pfn(base)); |
| 487 | paravirt_alloc_pt(&init_mm, page_to_pfn(base)); | ||
| 488 | #endif | ||
| 489 | ref_prot = pte_pgprot(pte_clrhuge(*kpte)); | 487 | ref_prot = pte_pgprot(pte_clrhuge(*kpte)); |
| 490 | 488 | ||
| 491 | #ifdef CONFIG_X86_64 | 489 | #ifdef CONFIG_X86_64 |
| @@ -993,7 +991,7 @@ static const struct file_operations dpa_fops = { | |||
| 993 | .release = single_release, | 991 | .release = single_release, |
| 994 | }; | 992 | }; |
| 995 | 993 | ||
| 996 | int __init debug_pagealloc_proc_init(void) | 994 | static int __init debug_pagealloc_proc_init(void) |
| 997 | { | 995 | { |
| 998 | struct dentry *de; | 996 | struct dentry *de; |
| 999 | 997 | ||
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index 72c0f6097402..ef8b64b89c7d 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
| 12 | #include <linux/gfp.h> | 12 | #include <linux/gfp.h> |
| 13 | #include <linux/fs.h> | 13 | #include <linux/fs.h> |
| 14 | #include <linux/bootmem.h> | ||
| 14 | 15 | ||
| 15 | #include <asm/msr.h> | 16 | #include <asm/msr.h> |
| 16 | #include <asm/tlbflush.h> | 17 | #include <asm/tlbflush.h> |
| @@ -21,6 +22,7 @@ | |||
| 21 | #include <asm/cacheflush.h> | 22 | #include <asm/cacheflush.h> |
| 22 | #include <asm/fcntl.h> | 23 | #include <asm/fcntl.h> |
| 23 | #include <asm/mtrr.h> | 24 | #include <asm/mtrr.h> |
| 25 | #include <asm/io.h> | ||
| 24 | 26 | ||
| 25 | int pat_wc_enabled = 1; | 27 | int pat_wc_enabled = 1; |
| 26 | 28 | ||
| @@ -190,6 +192,21 @@ static int pat_x_mtrr_type(u64 start, u64 end, unsigned long prot, | |||
| 190 | return 0; | 192 | return 0; |
| 191 | } | 193 | } |
| 192 | 194 | ||
| 195 | /* | ||
| 196 | * req_type typically has one of the: | ||
| 197 | * - _PAGE_CACHE_WB | ||
| 198 | * - _PAGE_CACHE_WC | ||
| 199 | * - _PAGE_CACHE_UC_MINUS | ||
| 200 | * - _PAGE_CACHE_UC | ||
| 201 | * | ||
| 202 | * req_type will have a special case value '-1', when requester want to inherit | ||
| 203 | * the memory type from mtrr (if WB), existing PAT, defaulting to UC_MINUS. | ||
| 204 | * | ||
| 205 | * If ret_type is NULL, function will return an error if it cannot reserve the | ||
| 206 | * region with req_type. If ret_type is non-null, function will return | ||
| 207 | * available type in ret_type in case of no error. In case of any error | ||
| 208 | * it will return a negative return value. | ||
| 209 | */ | ||
| 193 | int reserve_memtype(u64 start, u64 end, unsigned long req_type, | 210 | int reserve_memtype(u64 start, u64 end, unsigned long req_type, |
| 194 | unsigned long *ret_type) | 211 | unsigned long *ret_type) |
| 195 | { | 212 | { |
| @@ -200,9 +217,14 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
| 200 | 217 | ||
| 201 | /* Only track when pat_wc_enabled */ | 218 | /* Only track when pat_wc_enabled */ |
| 202 | if (!pat_wc_enabled) { | 219 | if (!pat_wc_enabled) { |
| 203 | if (ret_type) | 220 | /* This is identical to page table setting without PAT */ |
| 204 | *ret_type = req_type; | 221 | if (ret_type) { |
| 205 | 222 | if (req_type == -1) { | |
| 223 | *ret_type = _PAGE_CACHE_WB; | ||
| 224 | } else { | ||
| 225 | *ret_type = req_type; | ||
| 226 | } | ||
| 227 | } | ||
| 206 | return 0; | 228 | return 0; |
| 207 | } | 229 | } |
| 208 | 230 | ||
| @@ -214,8 +236,29 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
| 214 | return 0; | 236 | return 0; |
| 215 | } | 237 | } |
| 216 | 238 | ||
| 217 | req_type &= _PAGE_CACHE_MASK; | 239 | if (req_type == -1) { |
| 218 | err = pat_x_mtrr_type(start, end, req_type, &actual_type); | 240 | /* |
| 241 | * Special case where caller wants to inherit from mtrr or | ||
| 242 | * existing pat mapping, defaulting to UC_MINUS in case of | ||
| 243 | * no match. | ||
| 244 | */ | ||
| 245 | u8 mtrr_type = mtrr_type_lookup(start, end); | ||
| 246 | if (mtrr_type == 0xFE) { /* MTRR match error */ | ||
| 247 | err = -1; | ||
| 248 | } | ||
| 249 | |||
| 250 | if (mtrr_type == MTRR_TYPE_WRBACK) { | ||
| 251 | req_type = _PAGE_CACHE_WB; | ||
| 252 | actual_type = _PAGE_CACHE_WB; | ||
| 253 | } else { | ||
| 254 | req_type = _PAGE_CACHE_UC_MINUS; | ||
| 255 | actual_type = _PAGE_CACHE_UC_MINUS; | ||
| 256 | } | ||
| 257 | } else { | ||
| 258 | req_type &= _PAGE_CACHE_MASK; | ||
| 259 | err = pat_x_mtrr_type(start, end, req_type, &actual_type); | ||
| 260 | } | ||
| 261 | |||
| 219 | if (err) { | 262 | if (err) { |
| 220 | if (ret_type) | 263 | if (ret_type) |
| 221 | *ret_type = actual_type; | 264 | *ret_type = actual_type; |
| @@ -241,7 +284,7 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
| 241 | struct memtype *saved_ptr; | 284 | struct memtype *saved_ptr; |
| 242 | 285 | ||
| 243 | if (parse->start >= end) { | 286 | if (parse->start >= end) { |
| 244 | printk("New Entry\n"); | 287 | pr_debug("New Entry\n"); |
| 245 | list_add(&new_entry->nd, parse->nd.prev); | 288 | list_add(&new_entry->nd, parse->nd.prev); |
| 246 | new_entry = NULL; | 289 | new_entry = NULL; |
| 247 | break; | 290 | break; |
| @@ -343,7 +386,7 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
| 343 | break; | 386 | break; |
| 344 | } | 387 | } |
| 345 | 388 | ||
| 346 | printk("Overlap at 0x%Lx-0x%Lx\n", | 389 | printk(KERN_INFO "Overlap at 0x%Lx-0x%Lx\n", |
| 347 | saved_ptr->start, saved_ptr->end); | 390 | saved_ptr->start, saved_ptr->end); |
| 348 | /* No conflict. Go ahead and add this new entry */ | 391 | /* No conflict. Go ahead and add this new entry */ |
| 349 | list_add(&new_entry->nd, &saved_ptr->nd); | 392 | list_add(&new_entry->nd, &saved_ptr->nd); |
| @@ -353,7 +396,7 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
| 353 | } | 396 | } |
| 354 | 397 | ||
| 355 | if (err) { | 398 | if (err) { |
| 356 | printk( | 399 | printk(KERN_INFO |
| 357 | "reserve_memtype failed 0x%Lx-0x%Lx, track %s, req %s\n", | 400 | "reserve_memtype failed 0x%Lx-0x%Lx, track %s, req %s\n", |
| 358 | start, end, cattr_name(new_entry->type), | 401 | start, end, cattr_name(new_entry->type), |
| 359 | cattr_name(req_type)); | 402 | cattr_name(req_type)); |
| @@ -365,16 +408,16 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
| 365 | if (new_entry) { | 408 | if (new_entry) { |
| 366 | /* No conflict. Not yet added to the list. Add to the tail */ | 409 | /* No conflict. Not yet added to the list. Add to the tail */ |
| 367 | list_add_tail(&new_entry->nd, &memtype_list); | 410 | list_add_tail(&new_entry->nd, &memtype_list); |
| 368 | printk("New Entry\n"); | 411 | pr_debug("New Entry\n"); |
| 369 | } | 412 | } |
| 370 | 413 | ||
| 371 | if (ret_type) { | 414 | if (ret_type) { |
| 372 | printk( | 415 | pr_debug( |
| 373 | "reserve_memtype added 0x%Lx-0x%Lx, track %s, req %s, ret %s\n", | 416 | "reserve_memtype added 0x%Lx-0x%Lx, track %s, req %s, ret %s\n", |
| 374 | start, end, cattr_name(actual_type), | 417 | start, end, cattr_name(actual_type), |
| 375 | cattr_name(req_type), cattr_name(*ret_type)); | 418 | cattr_name(req_type), cattr_name(*ret_type)); |
| 376 | } else { | 419 | } else { |
| 377 | printk( | 420 | pr_debug( |
| 378 | "reserve_memtype added 0x%Lx-0x%Lx, track %s, req %s\n", | 421 | "reserve_memtype added 0x%Lx-0x%Lx, track %s, req %s\n", |
| 379 | start, end, cattr_name(actual_type), | 422 | start, end, cattr_name(actual_type), |
| 380 | cattr_name(req_type)); | 423 | cattr_name(req_type)); |
| @@ -411,11 +454,115 @@ int free_memtype(u64 start, u64 end) | |||
| 411 | spin_unlock(&memtype_lock); | 454 | spin_unlock(&memtype_lock); |
| 412 | 455 | ||
| 413 | if (err) { | 456 | if (err) { |
| 414 | printk(KERN_DEBUG "%s:%d freeing invalid memtype %Lx-%Lx\n", | 457 | printk(KERN_INFO "%s:%d freeing invalid memtype %Lx-%Lx\n", |
| 415 | current->comm, current->pid, start, end); | 458 | current->comm, current->pid, start, end); |
| 416 | } | 459 | } |
| 417 | 460 | ||
| 418 | printk( "free_memtype request 0x%Lx-0x%Lx\n", start, end); | 461 | pr_debug("free_memtype request 0x%Lx-0x%Lx\n", start, end); |
| 419 | return err; | 462 | return err; |
| 420 | } | 463 | } |
| 421 | 464 | ||
| 465 | |||
| 466 | /* | ||
| 467 | * /dev/mem mmap interface. The memtype used for mapping varies: | ||
| 468 | * - Use UC for mappings with O_SYNC flag | ||
| 469 | * - Without O_SYNC flag, if there is any conflict in reserve_memtype, | ||
| 470 | * inherit the memtype from existing mapping. | ||
| 471 | * - Else use UC_MINUS memtype (for backward compatibility with existing | ||
| 472 | * X drivers. | ||
| 473 | */ | ||
| 474 | pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, | ||
| 475 | unsigned long size, pgprot_t vma_prot) | ||
| 476 | { | ||
| 477 | return vma_prot; | ||
| 478 | } | ||
| 479 | |||
| 480 | int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, | ||
| 481 | unsigned long size, pgprot_t *vma_prot) | ||
| 482 | { | ||
| 483 | u64 offset = ((u64) pfn) << PAGE_SHIFT; | ||
| 484 | unsigned long flags = _PAGE_CACHE_UC_MINUS; | ||
| 485 | unsigned long ret_flags; | ||
| 486 | int retval; | ||
| 487 | |||
| 488 | if (file->f_flags & O_SYNC) { | ||
| 489 | flags = _PAGE_CACHE_UC; | ||
| 490 | } | ||
| 491 | |||
| 492 | #ifdef CONFIG_X86_32 | ||
| 493 | /* | ||
| 494 | * On the PPro and successors, the MTRRs are used to set | ||
| 495 | * memory types for physical addresses outside main memory, | ||
| 496 | * so blindly setting UC or PWT on those pages is wrong. | ||
| 497 | * For Pentiums and earlier, the surround logic should disable | ||
| 498 | * caching for the high addresses through the KEN pin, but | ||
| 499 | * we maintain the tradition of paranoia in this code. | ||
| 500 | */ | ||
| 501 | if (!pat_wc_enabled && | ||
| 502 | ! ( test_bit(X86_FEATURE_MTRR, boot_cpu_data.x86_capability) || | ||
| 503 | test_bit(X86_FEATURE_K6_MTRR, boot_cpu_data.x86_capability) || | ||
| 504 | test_bit(X86_FEATURE_CYRIX_ARR, boot_cpu_data.x86_capability) || | ||
| 505 | test_bit(X86_FEATURE_CENTAUR_MCR, boot_cpu_data.x86_capability)) && | ||
| 506 | (pfn << PAGE_SHIFT) >= __pa(high_memory)) { | ||
| 507 | flags = _PAGE_CACHE_UC; | ||
| 508 | } | ||
| 509 | #endif | ||
| 510 | |||
| 511 | /* | ||
| 512 | * With O_SYNC, we can only take UC mapping. Fail if we cannot. | ||
| 513 | * Without O_SYNC, we want to get | ||
| 514 | * - WB for WB-able memory and no other conflicting mappings | ||
| 515 | * - UC_MINUS for non-WB-able memory with no other conflicting mappings | ||
| 516 | * - Inherit from confliting mappings otherwise | ||
| 517 | */ | ||
| 518 | if (flags != _PAGE_CACHE_UC_MINUS) { | ||
| 519 | retval = reserve_memtype(offset, offset + size, flags, NULL); | ||
| 520 | } else { | ||
| 521 | retval = reserve_memtype(offset, offset + size, -1, &ret_flags); | ||
| 522 | } | ||
| 523 | |||
| 524 | if (retval < 0) | ||
| 525 | return 0; | ||
| 526 | |||
| 527 | flags = ret_flags; | ||
| 528 | |||
| 529 | if (pfn <= max_pfn_mapped && | ||
| 530 | ioremap_change_attr((unsigned long)__va(offset), size, flags) < 0) { | ||
| 531 | free_memtype(offset, offset + size); | ||
| 532 | printk(KERN_INFO | ||
| 533 | "%s:%d /dev/mem ioremap_change_attr failed %s for %Lx-%Lx\n", | ||
| 534 | current->comm, current->pid, | ||
| 535 | cattr_name(flags), | ||
| 536 | offset, offset + size); | ||
| 537 | return 0; | ||
| 538 | } | ||
| 539 | |||
| 540 | *vma_prot = __pgprot((pgprot_val(*vma_prot) & ~_PAGE_CACHE_MASK) | | ||
| 541 | flags); | ||
| 542 | return 1; | ||
| 543 | } | ||
| 544 | |||
| 545 | void map_devmem(unsigned long pfn, unsigned long size, pgprot_t vma_prot) | ||
| 546 | { | ||
| 547 | u64 addr = (u64)pfn << PAGE_SHIFT; | ||
| 548 | unsigned long flags; | ||
| 549 | unsigned long want_flags = (pgprot_val(vma_prot) & _PAGE_CACHE_MASK); | ||
| 550 | |||
| 551 | reserve_memtype(addr, addr + size, want_flags, &flags); | ||
| 552 | if (flags != want_flags) { | ||
| 553 | printk(KERN_INFO | ||
| 554 | "%s:%d /dev/mem expected mapping type %s for %Lx-%Lx, got %s\n", | ||
| 555 | current->comm, current->pid, | ||
| 556 | cattr_name(want_flags), | ||
| 557 | addr, addr + size, | ||
| 558 | cattr_name(flags)); | ||
| 559 | } | ||
| 560 | } | ||
| 561 | |||
| 562 | void unmap_devmem(unsigned long pfn, unsigned long size, pgprot_t vma_prot) | ||
| 563 | { | ||
| 564 | u64 addr = (u64)pfn << PAGE_SHIFT; | ||
| 565 | |||
| 566 | free_memtype(addr, addr + size); | ||
| 567 | } | ||
| 568 | |||
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c new file mode 100644 index 000000000000..50159764f694 --- /dev/null +++ b/arch/x86/mm/pgtable.c | |||
| @@ -0,0 +1,276 @@ | |||
| 1 | #include <linux/mm.h> | ||
| 2 | #include <asm/pgalloc.h> | ||
| 3 | #include <asm/pgtable.h> | ||
| 4 | #include <asm/tlb.h> | ||
| 5 | |||
| 6 | pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) | ||
| 7 | { | ||
| 8 | return (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); | ||
| 9 | } | ||
| 10 | |||
| 11 | pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) | ||
| 12 | { | ||
| 13 | struct page *pte; | ||
| 14 | |||
| 15 | #ifdef CONFIG_HIGHPTE | ||
| 16 | pte = alloc_pages(GFP_KERNEL|__GFP_HIGHMEM|__GFP_REPEAT|__GFP_ZERO, 0); | ||
| 17 | #else | ||
| 18 | pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, 0); | ||
| 19 | #endif | ||
| 20 | if (pte) | ||
| 21 | pgtable_page_ctor(pte); | ||
| 22 | return pte; | ||
| 23 | } | ||
| 24 | |||
| 25 | void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte) | ||
| 26 | { | ||
| 27 | pgtable_page_dtor(pte); | ||
| 28 | paravirt_release_pte(page_to_pfn(pte)); | ||
| 29 | tlb_remove_page(tlb, pte); | ||
| 30 | } | ||
| 31 | |||
| 32 | #if PAGETABLE_LEVELS > 2 | ||
| 33 | void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) | ||
| 34 | { | ||
| 35 | paravirt_release_pmd(__pa(pmd) >> PAGE_SHIFT); | ||
| 36 | tlb_remove_page(tlb, virt_to_page(pmd)); | ||
| 37 | } | ||
| 38 | |||
| 39 | #if PAGETABLE_LEVELS > 3 | ||
| 40 | void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud) | ||
| 41 | { | ||
| 42 | paravirt_release_pud(__pa(pud) >> PAGE_SHIFT); | ||
| 43 | tlb_remove_page(tlb, virt_to_page(pud)); | ||
| 44 | } | ||
| 45 | #endif /* PAGETABLE_LEVELS > 3 */ | ||
| 46 | #endif /* PAGETABLE_LEVELS > 2 */ | ||
| 47 | |||
| 48 | static inline void pgd_list_add(pgd_t *pgd) | ||
| 49 | { | ||
| 50 | struct page *page = virt_to_page(pgd); | ||
| 51 | |||
| 52 | list_add(&page->lru, &pgd_list); | ||
| 53 | } | ||
| 54 | |||
| 55 | static inline void pgd_list_del(pgd_t *pgd) | ||
| 56 | { | ||
| 57 | struct page *page = virt_to_page(pgd); | ||
| 58 | |||
| 59 | list_del(&page->lru); | ||
| 60 | } | ||
| 61 | |||
| 62 | #define UNSHARED_PTRS_PER_PGD \ | ||
| 63 | (SHARED_KERNEL_PMD ? KERNEL_PGD_BOUNDARY : PTRS_PER_PGD) | ||
| 64 | |||
| 65 | static void pgd_ctor(void *p) | ||
| 66 | { | ||
| 67 | pgd_t *pgd = p; | ||
| 68 | unsigned long flags; | ||
| 69 | |||
| 70 | /* Clear usermode parts of PGD */ | ||
| 71 | memset(pgd, 0, KERNEL_PGD_BOUNDARY*sizeof(pgd_t)); | ||
| 72 | |||
| 73 | spin_lock_irqsave(&pgd_lock, flags); | ||
| 74 | |||
| 75 | /* If the pgd points to a shared pagetable level (either the | ||
| 76 | ptes in non-PAE, or shared PMD in PAE), then just copy the | ||
| 77 | references from swapper_pg_dir. */ | ||
| 78 | if (PAGETABLE_LEVELS == 2 || | ||
| 79 | (PAGETABLE_LEVELS == 3 && SHARED_KERNEL_PMD) || | ||
| 80 | PAGETABLE_LEVELS == 4) { | ||
| 81 | clone_pgd_range(pgd + KERNEL_PGD_BOUNDARY, | ||
| 82 | swapper_pg_dir + KERNEL_PGD_BOUNDARY, | ||
| 83 | KERNEL_PGD_PTRS); | ||
| 84 | paravirt_alloc_pmd_clone(__pa(pgd) >> PAGE_SHIFT, | ||
| 85 | __pa(swapper_pg_dir) >> PAGE_SHIFT, | ||
| 86 | KERNEL_PGD_BOUNDARY, | ||
| 87 | KERNEL_PGD_PTRS); | ||
| 88 | } | ||
| 89 | |||
| 90 | /* list required to sync kernel mapping updates */ | ||
| 91 | if (!SHARED_KERNEL_PMD) | ||
| 92 | pgd_list_add(pgd); | ||
| 93 | |||
| 94 | spin_unlock_irqrestore(&pgd_lock, flags); | ||
| 95 | } | ||
| 96 | |||
| 97 | static void pgd_dtor(void *pgd) | ||
| 98 | { | ||
| 99 | unsigned long flags; /* can be called from interrupt context */ | ||
| 100 | |||
| 101 | if (SHARED_KERNEL_PMD) | ||
| 102 | return; | ||
| 103 | |||
| 104 | spin_lock_irqsave(&pgd_lock, flags); | ||
| 105 | pgd_list_del(pgd); | ||
| 106 | spin_unlock_irqrestore(&pgd_lock, flags); | ||
| 107 | } | ||
| 108 | |||
| 109 | /* | ||
| 110 | * List of all pgd's needed for non-PAE so it can invalidate entries | ||
| 111 | * in both cached and uncached pgd's; not needed for PAE since the | ||
| 112 | * kernel pmd is shared. If PAE were not to share the pmd a similar | ||
| 113 | * tactic would be needed. This is essentially codepath-based locking | ||
| 114 | * against pageattr.c; it is the unique case in which a valid change | ||
| 115 | * of kernel pagetables can't be lazily synchronized by vmalloc faults. | ||
| 116 | * vmalloc faults work because attached pagetables are never freed. | ||
| 117 | * -- wli | ||
| 118 | */ | ||
| 119 | |||
| 120 | #ifdef CONFIG_X86_PAE | ||
| 121 | /* | ||
| 122 | * Mop up any pmd pages which may still be attached to the pgd. | ||
| 123 | * Normally they will be freed by munmap/exit_mmap, but any pmd we | ||
| 124 | * preallocate which never got a corresponding vma will need to be | ||
| 125 | * freed manually. | ||
| 126 | */ | ||
| 127 | static void pgd_mop_up_pmds(struct mm_struct *mm, pgd_t *pgdp) | ||
| 128 | { | ||
| 129 | int i; | ||
| 130 | |||
| 131 | for(i = 0; i < UNSHARED_PTRS_PER_PGD; i++) { | ||
| 132 | pgd_t pgd = pgdp[i]; | ||
| 133 | |||
| 134 | if (pgd_val(pgd) != 0) { | ||
| 135 | pmd_t *pmd = (pmd_t *)pgd_page_vaddr(pgd); | ||
| 136 | |||
| 137 | pgdp[i] = native_make_pgd(0); | ||
| 138 | |||
| 139 | paravirt_release_pmd(pgd_val(pgd) >> PAGE_SHIFT); | ||
| 140 | pmd_free(mm, pmd); | ||
| 141 | } | ||
| 142 | } | ||
| 143 | } | ||
| 144 | |||
| 145 | /* | ||
| 146 | * In PAE mode, we need to do a cr3 reload (=tlb flush) when | ||
| 147 | * updating the top-level pagetable entries to guarantee the | ||
| 148 | * processor notices the update. Since this is expensive, and | ||
| 149 | * all 4 top-level entries are used almost immediately in a | ||
| 150 | * new process's life, we just pre-populate them here. | ||
| 151 | * | ||
| 152 | * Also, if we're in a paravirt environment where the kernel pmd is | ||
| 153 | * not shared between pagetables (!SHARED_KERNEL_PMDS), we allocate | ||
| 154 | * and initialize the kernel pmds here. | ||
| 155 | */ | ||
| 156 | static int pgd_prepopulate_pmd(struct mm_struct *mm, pgd_t *pgd) | ||
| 157 | { | ||
| 158 | pud_t *pud; | ||
| 159 | unsigned long addr; | ||
| 160 | int i; | ||
| 161 | |||
| 162 | pud = pud_offset(pgd, 0); | ||
| 163 | for (addr = i = 0; i < UNSHARED_PTRS_PER_PGD; | ||
| 164 | i++, pud++, addr += PUD_SIZE) { | ||
| 165 | pmd_t *pmd = pmd_alloc_one(mm, addr); | ||
| 166 | |||
| 167 | if (!pmd) { | ||
| 168 | pgd_mop_up_pmds(mm, pgd); | ||
| 169 | return 0; | ||
| 170 | } | ||
| 171 | |||
| 172 | if (i >= KERNEL_PGD_BOUNDARY) | ||
| 173 | memcpy(pmd, (pmd_t *)pgd_page_vaddr(swapper_pg_dir[i]), | ||
| 174 | sizeof(pmd_t) * PTRS_PER_PMD); | ||
| 175 | |||
| 176 | pud_populate(mm, pud, pmd); | ||
| 177 | } | ||
| 178 | |||
| 179 | return 1; | ||
| 180 | } | ||
| 181 | |||
| 182 | void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd) | ||
| 183 | { | ||
| 184 | paravirt_alloc_pmd(mm, __pa(pmd) >> PAGE_SHIFT); | ||
| 185 | |||
| 186 | /* Note: almost everything apart from _PAGE_PRESENT is | ||
| 187 | reserved at the pmd (PDPT) level. */ | ||
| 188 | set_pud(pudp, __pud(__pa(pmd) | _PAGE_PRESENT)); | ||
| 189 | |||
| 190 | /* | ||
| 191 | * According to Intel App note "TLBs, Paging-Structure Caches, | ||
| 192 | * and Their Invalidation", April 2007, document 317080-001, | ||
| 193 | * section 8.1: in PAE mode we explicitly have to flush the | ||
| 194 | * TLB via cr3 if the top-level pgd is changed... | ||
| 195 | */ | ||
| 196 | if (mm == current->active_mm) | ||
| 197 | write_cr3(read_cr3()); | ||
| 198 | } | ||
| 199 | #else /* !CONFIG_X86_PAE */ | ||
| 200 | /* No need to prepopulate any pagetable entries in non-PAE modes. */ | ||
| 201 | static int pgd_prepopulate_pmd(struct mm_struct *mm, pgd_t *pgd) | ||
| 202 | { | ||
| 203 | return 1; | ||
| 204 | } | ||
| 205 | |||
| 206 | static void pgd_mop_up_pmds(struct mm_struct *mm, pgd_t *pgd) | ||
| 207 | { | ||
| 208 | } | ||
| 209 | #endif /* CONFIG_X86_PAE */ | ||
| 210 | |||
| 211 | pgd_t *pgd_alloc(struct mm_struct *mm) | ||
| 212 | { | ||
| 213 | pgd_t *pgd = (pgd_t *)__get_free_page(GFP_KERNEL | __GFP_ZERO); | ||
| 214 | |||
| 215 | /* so that alloc_pmd can use it */ | ||
| 216 | mm->pgd = pgd; | ||
| 217 | if (pgd) | ||
| 218 | pgd_ctor(pgd); | ||
| 219 | |||
| 220 | if (pgd && !pgd_prepopulate_pmd(mm, pgd)) { | ||
| 221 | pgd_dtor(pgd); | ||
| 222 | free_page((unsigned long)pgd); | ||
| 223 | pgd = NULL; | ||
| 224 | } | ||
| 225 | |||
| 226 | return pgd; | ||
| 227 | } | ||
| 228 | |||
| 229 | void pgd_free(struct mm_struct *mm, pgd_t *pgd) | ||
| 230 | { | ||
| 231 | pgd_mop_up_pmds(mm, pgd); | ||
| 232 | pgd_dtor(pgd); | ||
| 233 | free_page((unsigned long)pgd); | ||
| 234 | } | ||
| 235 | |||
| 236 | int ptep_set_access_flags(struct vm_area_struct *vma, | ||
| 237 | unsigned long address, pte_t *ptep, | ||
| 238 | pte_t entry, int dirty) | ||
| 239 | { | ||
| 240 | int changed = !pte_same(*ptep, entry); | ||
| 241 | |||
| 242 | if (changed && dirty) { | ||
| 243 | *ptep = entry; | ||
| 244 | pte_update_defer(vma->vm_mm, address, ptep); | ||
| 245 | flush_tlb_page(vma, address); | ||
| 246 | } | ||
| 247 | |||
| 248 | return changed; | ||
| 249 | } | ||
| 250 | |||
| 251 | int ptep_test_and_clear_young(struct vm_area_struct *vma, | ||
| 252 | unsigned long addr, pte_t *ptep) | ||
| 253 | { | ||
| 254 | int ret = 0; | ||
| 255 | |||
| 256 | if (pte_young(*ptep)) | ||
| 257 | ret = test_and_clear_bit(_PAGE_BIT_ACCESSED, | ||
| 258 | &ptep->pte); | ||
| 259 | |||
| 260 | if (ret) | ||
| 261 | pte_update(vma->vm_mm, addr, ptep); | ||
| 262 | |||
| 263 | return ret; | ||
| 264 | } | ||
| 265 | |||
| 266 | int ptep_clear_flush_young(struct vm_area_struct *vma, | ||
| 267 | unsigned long address, pte_t *ptep) | ||
| 268 | { | ||
| 269 | int young; | ||
| 270 | |||
| 271 | young = ptep_test_and_clear_young(vma, address, ptep); | ||
| 272 | if (young) | ||
| 273 | flush_tlb_page(vma, address); | ||
| 274 | |||
| 275 | return young; | ||
| 276 | } | ||
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c index 6fb9e7c6893f..9ee007be9142 100644 --- a/arch/x86/mm/pgtable_32.c +++ b/arch/x86/mm/pgtable_32.c | |||
| @@ -173,210 +173,6 @@ void reserve_top_address(unsigned long reserve) | |||
| 173 | __VMALLOC_RESERVE += reserve; | 173 | __VMALLOC_RESERVE += reserve; |
| 174 | } | 174 | } |
| 175 | 175 | ||
| 176 | pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) | ||
| 177 | { | ||
| 178 | return (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); | ||
| 179 | } | ||
| 180 | |||
| 181 | pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) | ||
| 182 | { | ||
| 183 | struct page *pte; | ||
| 184 | |||
| 185 | #ifdef CONFIG_HIGHPTE | ||
| 186 | pte = alloc_pages(GFP_KERNEL|__GFP_HIGHMEM|__GFP_REPEAT|__GFP_ZERO, 0); | ||
| 187 | #else | ||
| 188 | pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, 0); | ||
| 189 | #endif | ||
| 190 | if (pte) | ||
| 191 | pgtable_page_ctor(pte); | ||
| 192 | return pte; | ||
| 193 | } | ||
| 194 | |||
| 195 | /* | ||
| 196 | * List of all pgd's needed for non-PAE so it can invalidate entries | ||
| 197 | * in both cached and uncached pgd's; not needed for PAE since the | ||
| 198 | * kernel pmd is shared. If PAE were not to share the pmd a similar | ||
| 199 | * tactic would be needed. This is essentially codepath-based locking | ||
| 200 | * against pageattr.c; it is the unique case in which a valid change | ||
| 201 | * of kernel pagetables can't be lazily synchronized by vmalloc faults. | ||
| 202 | * vmalloc faults work because attached pagetables are never freed. | ||
| 203 | * -- wli | ||
| 204 | */ | ||
| 205 | static inline void pgd_list_add(pgd_t *pgd) | ||
| 206 | { | ||
| 207 | struct page *page = virt_to_page(pgd); | ||
| 208 | |||
| 209 | list_add(&page->lru, &pgd_list); | ||
| 210 | } | ||
| 211 | |||
| 212 | static inline void pgd_list_del(pgd_t *pgd) | ||
| 213 | { | ||
| 214 | struct page *page = virt_to_page(pgd); | ||
| 215 | |||
| 216 | list_del(&page->lru); | ||
| 217 | } | ||
| 218 | |||
| 219 | #define UNSHARED_PTRS_PER_PGD \ | ||
| 220 | (SHARED_KERNEL_PMD ? USER_PTRS_PER_PGD : PTRS_PER_PGD) | ||
| 221 | |||
| 222 | static void pgd_ctor(void *p) | ||
| 223 | { | ||
| 224 | pgd_t *pgd = p; | ||
| 225 | unsigned long flags; | ||
| 226 | |||
| 227 | /* Clear usermode parts of PGD */ | ||
| 228 | memset(pgd, 0, USER_PTRS_PER_PGD*sizeof(pgd_t)); | ||
| 229 | |||
| 230 | spin_lock_irqsave(&pgd_lock, flags); | ||
| 231 | |||
| 232 | /* If the pgd points to a shared pagetable level (either the | ||
| 233 | ptes in non-PAE, or shared PMD in PAE), then just copy the | ||
| 234 | references from swapper_pg_dir. */ | ||
| 235 | if (PAGETABLE_LEVELS == 2 || | ||
| 236 | (PAGETABLE_LEVELS == 3 && SHARED_KERNEL_PMD)) { | ||
| 237 | clone_pgd_range(pgd + USER_PTRS_PER_PGD, | ||
| 238 | swapper_pg_dir + USER_PTRS_PER_PGD, | ||
| 239 | KERNEL_PGD_PTRS); | ||
| 240 | paravirt_alloc_pd_clone(__pa(pgd) >> PAGE_SHIFT, | ||
| 241 | __pa(swapper_pg_dir) >> PAGE_SHIFT, | ||
| 242 | USER_PTRS_PER_PGD, | ||
| 243 | KERNEL_PGD_PTRS); | ||
| 244 | } | ||
| 245 | |||
| 246 | /* list required to sync kernel mapping updates */ | ||
| 247 | if (!SHARED_KERNEL_PMD) | ||
| 248 | pgd_list_add(pgd); | ||
| 249 | |||
| 250 | spin_unlock_irqrestore(&pgd_lock, flags); | ||
| 251 | } | ||
| 252 | |||
| 253 | static void pgd_dtor(void *pgd) | ||
| 254 | { | ||
| 255 | unsigned long flags; /* can be called from interrupt context */ | ||
| 256 | |||
| 257 | if (SHARED_KERNEL_PMD) | ||
| 258 | return; | ||
| 259 | |||
| 260 | spin_lock_irqsave(&pgd_lock, flags); | ||
| 261 | pgd_list_del(pgd); | ||
| 262 | spin_unlock_irqrestore(&pgd_lock, flags); | ||
| 263 | } | ||
| 264 | |||
| 265 | #ifdef CONFIG_X86_PAE | ||
| 266 | /* | ||
| 267 | * Mop up any pmd pages which may still be attached to the pgd. | ||
| 268 | * Normally they will be freed by munmap/exit_mmap, but any pmd we | ||
| 269 | * preallocate which never got a corresponding vma will need to be | ||
| 270 | * freed manually. | ||
| 271 | */ | ||
| 272 | static void pgd_mop_up_pmds(struct mm_struct *mm, pgd_t *pgdp) | ||
| 273 | { | ||
| 274 | int i; | ||
| 275 | |||
| 276 | for(i = 0; i < UNSHARED_PTRS_PER_PGD; i++) { | ||
| 277 | pgd_t pgd = pgdp[i]; | ||
| 278 | |||
| 279 | if (pgd_val(pgd) != 0) { | ||
| 280 | pmd_t *pmd = (pmd_t *)pgd_page_vaddr(pgd); | ||
| 281 | |||
| 282 | pgdp[i] = native_make_pgd(0); | ||
| 283 | |||
| 284 | paravirt_release_pd(pgd_val(pgd) >> PAGE_SHIFT); | ||
| 285 | pmd_free(mm, pmd); | ||
| 286 | } | ||
| 287 | } | ||
| 288 | } | ||
| 289 | |||
| 290 | /* | ||
| 291 | * In PAE mode, we need to do a cr3 reload (=tlb flush) when | ||
| 292 | * updating the top-level pagetable entries to guarantee the | ||
| 293 | * processor notices the update. Since this is expensive, and | ||
| 294 | * all 4 top-level entries are used almost immediately in a | ||
| 295 | * new process's life, we just pre-populate them here. | ||
| 296 | * | ||
| 297 | * Also, if we're in a paravirt environment where the kernel pmd is | ||
| 298 | * not shared between pagetables (!SHARED_KERNEL_PMDS), we allocate | ||
| 299 | * and initialize the kernel pmds here. | ||
| 300 | */ | ||
| 301 | static int pgd_prepopulate_pmd(struct mm_struct *mm, pgd_t *pgd) | ||
| 302 | { | ||
| 303 | pud_t *pud; | ||
| 304 | unsigned long addr; | ||
| 305 | int i; | ||
| 306 | |||
| 307 | pud = pud_offset(pgd, 0); | ||
| 308 | for (addr = i = 0; i < UNSHARED_PTRS_PER_PGD; | ||
| 309 | i++, pud++, addr += PUD_SIZE) { | ||
| 310 | pmd_t *pmd = pmd_alloc_one(mm, addr); | ||
| 311 | |||
| 312 | if (!pmd) { | ||
| 313 | pgd_mop_up_pmds(mm, pgd); | ||
| 314 | return 0; | ||
| 315 | } | ||
| 316 | |||
| 317 | if (i >= USER_PTRS_PER_PGD) | ||
| 318 | memcpy(pmd, (pmd_t *)pgd_page_vaddr(swapper_pg_dir[i]), | ||
| 319 | sizeof(pmd_t) * PTRS_PER_PMD); | ||
| 320 | |||
| 321 | pud_populate(mm, pud, pmd); | ||
| 322 | } | ||
| 323 | |||
| 324 | return 1; | ||
| 325 | } | ||
| 326 | #else /* !CONFIG_X86_PAE */ | ||
| 327 | /* No need to prepopulate any pagetable entries in non-PAE modes. */ | ||
| 328 | static int pgd_prepopulate_pmd(struct mm_struct *mm, pgd_t *pgd) | ||
| 329 | { | ||
| 330 | return 1; | ||
| 331 | } | ||
| 332 | |||
| 333 | static void pgd_mop_up_pmds(struct mm_struct *mm, pgd_t *pgdp) | ||
| 334 | { | ||
| 335 | } | ||
| 336 | #endif /* CONFIG_X86_PAE */ | ||
| 337 | |||
| 338 | pgd_t *pgd_alloc(struct mm_struct *mm) | ||
| 339 | { | ||
| 340 | pgd_t *pgd = (pgd_t *)__get_free_page(GFP_KERNEL | __GFP_ZERO); | ||
| 341 | |||
| 342 | /* so that alloc_pd can use it */ | ||
| 343 | mm->pgd = pgd; | ||
| 344 | if (pgd) | ||
| 345 | pgd_ctor(pgd); | ||
| 346 | |||
| 347 | if (pgd && !pgd_prepopulate_pmd(mm, pgd)) { | ||
| 348 | pgd_dtor(pgd); | ||
| 349 | free_page((unsigned long)pgd); | ||
| 350 | pgd = NULL; | ||
| 351 | } | ||
| 352 | |||
| 353 | return pgd; | ||
| 354 | } | ||
| 355 | |||
| 356 | void pgd_free(struct mm_struct *mm, pgd_t *pgd) | ||
| 357 | { | ||
| 358 | pgd_mop_up_pmds(mm, pgd); | ||
| 359 | pgd_dtor(pgd); | ||
| 360 | free_page((unsigned long)pgd); | ||
| 361 | } | ||
| 362 | |||
| 363 | void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte) | ||
| 364 | { | ||
| 365 | pgtable_page_dtor(pte); | ||
| 366 | paravirt_release_pt(page_to_pfn(pte)); | ||
| 367 | tlb_remove_page(tlb, pte); | ||
| 368 | } | ||
| 369 | |||
| 370 | #ifdef CONFIG_X86_PAE | ||
| 371 | |||
| 372 | void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) | ||
| 373 | { | ||
| 374 | paravirt_release_pd(__pa(pmd) >> PAGE_SHIFT); | ||
| 375 | tlb_remove_page(tlb, virt_to_page(pmd)); | ||
| 376 | } | ||
| 377 | |||
| 378 | #endif | ||
| 379 | |||
| 380 | int pmd_bad(pmd_t pmd) | 176 | int pmd_bad(pmd_t pmd) |
| 381 | { | 177 | { |
| 382 | WARN_ON_ONCE(pmd_bad_v1(pmd) != pmd_bad_v2(pmd)); | 178 | WARN_ON_ONCE(pmd_bad_v1(pmd) != pmd_bad_v2(pmd)); |
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 | ||
| 166 | int update_end_of_memory(unsigned long end) {return -1;} | 166 | static int update_end_of_memory(unsigned long end) {return -1;} |
| 167 | static int hotadd_enough_memory(struct bootnode *nd) {return 1;} | 167 | static int hotadd_enough_memory(struct bootnode *nd) {return 1;} |
| 168 | #ifdef CONFIG_MEMORY_HOTPLUG_SPARSE | 168 | #ifdef CONFIG_MEMORY_HOTPLUG_SPARSE |
| 169 | static inline int save_add_info(void) {return 1;} | 169 | static inline int save_add_info(void) {return 1;} |
diff --git a/arch/x86/xen/Kconfig b/arch/x86/xen/Kconfig index 4d5f2649bee4..2e641be2737e 100644 --- a/arch/x86/xen/Kconfig +++ b/arch/x86/xen/Kconfig | |||
| @@ -6,7 +6,7 @@ config XEN | |||
| 6 | bool "Xen guest support" | 6 | bool "Xen guest support" |
| 7 | select PARAVIRT | 7 | select PARAVIRT |
| 8 | depends on X86_32 | 8 | depends on X86_32 |
| 9 | depends on X86_CMPXCHG && X86_TSC && !NEED_MULTIPLE_NODES && !(X86_VISWS || X86_VOYAGER) | 9 | depends on X86_CMPXCHG && X86_TSC && !(X86_VISWS || X86_VOYAGER) |
| 10 | help | 10 | help |
| 11 | This is the Linux Xen port. Enabling this will allow the | 11 | This is the Linux Xen port. Enabling this will allow the |
| 12 | kernel to boot in a paravirtualized environment under the | 12 | kernel to boot in a paravirtualized environment under the |
diff --git a/arch/x86/xen/Makefile b/arch/x86/xen/Makefile index 343df246bd3e..3d8df981d5fd 100644 --- a/arch/x86/xen/Makefile +++ b/arch/x86/xen/Makefile | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | obj-y := enlighten.o setup.o features.o multicalls.o mmu.o \ | 1 | obj-y := enlighten.o setup.o multicalls.o mmu.o \ |
| 2 | events.o time.o manage.o xen-asm.o | 2 | time.o manage.o xen-asm.o grant-table.o |
| 3 | 3 | ||
| 4 | obj-$(CONFIG_SMP) += smp.o | 4 | obj-$(CONFIG_SMP) += smp.o |
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index c0388220cf97..c8a56e457d61 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
| @@ -155,7 +155,8 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx, | |||
| 155 | if (*ax == 1) | 155 | if (*ax == 1) |
| 156 | maskedx = ~((1 << X86_FEATURE_APIC) | /* disable APIC */ | 156 | maskedx = ~((1 << X86_FEATURE_APIC) | /* disable APIC */ |
| 157 | (1 << X86_FEATURE_ACPI) | /* disable ACPI */ | 157 | (1 << X86_FEATURE_ACPI) | /* disable ACPI */ |
| 158 | (1 << X86_FEATURE_SEP) | /* disable SEP */ | 158 | (1 << X86_FEATURE_MCE) | /* disable MCE */ |
| 159 | (1 << X86_FEATURE_MCA) | /* disable MCA */ | ||
| 159 | (1 << X86_FEATURE_ACC)); /* thermal monitoring */ | 160 | (1 << X86_FEATURE_ACC)); /* thermal monitoring */ |
| 160 | 161 | ||
| 161 | asm(XEN_EMULATE_PREFIX "cpuid" | 162 | asm(XEN_EMULATE_PREFIX "cpuid" |
| @@ -531,26 +532,37 @@ static void xen_apic_write(unsigned long reg, u32 val) | |||
| 531 | static void xen_flush_tlb(void) | 532 | static void xen_flush_tlb(void) |
| 532 | { | 533 | { |
| 533 | struct mmuext_op *op; | 534 | struct mmuext_op *op; |
| 534 | struct multicall_space mcs = xen_mc_entry(sizeof(*op)); | 535 | struct multicall_space mcs; |
| 536 | |||
| 537 | preempt_disable(); | ||
| 538 | |||
| 539 | mcs = xen_mc_entry(sizeof(*op)); | ||
| 535 | 540 | ||
| 536 | op = mcs.args; | 541 | op = mcs.args; |
| 537 | op->cmd = MMUEXT_TLB_FLUSH_LOCAL; | 542 | op->cmd = MMUEXT_TLB_FLUSH_LOCAL; |
| 538 | MULTI_mmuext_op(mcs.mc, op, 1, NULL, DOMID_SELF); | 543 | MULTI_mmuext_op(mcs.mc, op, 1, NULL, DOMID_SELF); |
| 539 | 544 | ||
| 540 | xen_mc_issue(PARAVIRT_LAZY_MMU); | 545 | xen_mc_issue(PARAVIRT_LAZY_MMU); |
| 546 | |||
| 547 | preempt_enable(); | ||
| 541 | } | 548 | } |
| 542 | 549 | ||
| 543 | static void xen_flush_tlb_single(unsigned long addr) | 550 | static void xen_flush_tlb_single(unsigned long addr) |
| 544 | { | 551 | { |
| 545 | struct mmuext_op *op; | 552 | struct mmuext_op *op; |
| 546 | struct multicall_space mcs = xen_mc_entry(sizeof(*op)); | 553 | struct multicall_space mcs; |
| 554 | |||
| 555 | preempt_disable(); | ||
| 547 | 556 | ||
| 557 | mcs = xen_mc_entry(sizeof(*op)); | ||
| 548 | op = mcs.args; | 558 | op = mcs.args; |
| 549 | op->cmd = MMUEXT_INVLPG_LOCAL; | 559 | op->cmd = MMUEXT_INVLPG_LOCAL; |
| 550 | op->arg1.linear_addr = addr & PAGE_MASK; | 560 | op->arg1.linear_addr = addr & PAGE_MASK; |
| 551 | MULTI_mmuext_op(mcs.mc, op, 1, NULL, DOMID_SELF); | 561 | MULTI_mmuext_op(mcs.mc, op, 1, NULL, DOMID_SELF); |
| 552 | 562 | ||
| 553 | xen_mc_issue(PARAVIRT_LAZY_MMU); | 563 | xen_mc_issue(PARAVIRT_LAZY_MMU); |
| 564 | |||
| 565 | preempt_enable(); | ||
| 554 | } | 566 | } |
| 555 | 567 | ||
| 556 | static void xen_flush_tlb_others(const cpumask_t *cpus, struct mm_struct *mm, | 568 | static void xen_flush_tlb_others(const cpumask_t *cpus, struct mm_struct *mm, |
| @@ -655,15 +667,17 @@ static void xen_write_cr3(unsigned long cr3) | |||
| 655 | 667 | ||
| 656 | /* Early in boot, while setting up the initial pagetable, assume | 668 | /* Early in boot, while setting up the initial pagetable, assume |
| 657 | everything is pinned. */ | 669 | everything is pinned. */ |
| 658 | static __init void xen_alloc_pt_init(struct mm_struct *mm, u32 pfn) | 670 | static __init void xen_alloc_pte_init(struct mm_struct *mm, u32 pfn) |
| 659 | { | 671 | { |
| 672 | #ifdef CONFIG_FLATMEM | ||
| 660 | BUG_ON(mem_map); /* should only be used early */ | 673 | BUG_ON(mem_map); /* should only be used early */ |
| 674 | #endif | ||
| 661 | make_lowmem_page_readonly(__va(PFN_PHYS(pfn))); | 675 | make_lowmem_page_readonly(__va(PFN_PHYS(pfn))); |
| 662 | } | 676 | } |
| 663 | 677 | ||
| 664 | /* Early release_pt assumes that all pts are pinned, since there's | 678 | /* Early release_pte assumes that all pts are pinned, since there's |
| 665 | only init_mm and anything attached to that is pinned. */ | 679 | only init_mm and anything attached to that is pinned. */ |
| 666 | static void xen_release_pt_init(u32 pfn) | 680 | static void xen_release_pte_init(u32 pfn) |
| 667 | { | 681 | { |
| 668 | make_lowmem_page_readwrite(__va(PFN_PHYS(pfn))); | 682 | make_lowmem_page_readwrite(__va(PFN_PHYS(pfn))); |
| 669 | } | 683 | } |
| @@ -697,12 +711,12 @@ static void xen_alloc_ptpage(struct mm_struct *mm, u32 pfn, unsigned level) | |||
| 697 | } | 711 | } |
| 698 | } | 712 | } |
| 699 | 713 | ||
| 700 | static void xen_alloc_pt(struct mm_struct *mm, u32 pfn) | 714 | static void xen_alloc_pte(struct mm_struct *mm, u32 pfn) |
| 701 | { | 715 | { |
| 702 | xen_alloc_ptpage(mm, pfn, PT_PTE); | 716 | xen_alloc_ptpage(mm, pfn, PT_PTE); |
| 703 | } | 717 | } |
| 704 | 718 | ||
| 705 | static void xen_alloc_pd(struct mm_struct *mm, u32 pfn) | 719 | static void xen_alloc_pmd(struct mm_struct *mm, u32 pfn) |
| 706 | { | 720 | { |
| 707 | xen_alloc_ptpage(mm, pfn, PT_PMD); | 721 | xen_alloc_ptpage(mm, pfn, PT_PMD); |
| 708 | } | 722 | } |
| @@ -722,12 +736,12 @@ static void xen_release_ptpage(u32 pfn, unsigned level) | |||
| 722 | } | 736 | } |
| 723 | } | 737 | } |
| 724 | 738 | ||
| 725 | static void xen_release_pt(u32 pfn) | 739 | static void xen_release_pte(u32 pfn) |
| 726 | { | 740 | { |
| 727 | xen_release_ptpage(pfn, PT_PTE); | 741 | xen_release_ptpage(pfn, PT_PTE); |
| 728 | } | 742 | } |
| 729 | 743 | ||
| 730 | static void xen_release_pd(u32 pfn) | 744 | static void xen_release_pmd(u32 pfn) |
| 731 | { | 745 | { |
| 732 | xen_release_ptpage(pfn, PT_PMD); | 746 | xen_release_ptpage(pfn, PT_PMD); |
| 733 | } | 747 | } |
| @@ -849,10 +863,10 @@ static __init void xen_pagetable_setup_done(pgd_t *base) | |||
| 849 | { | 863 | { |
| 850 | /* This will work as long as patching hasn't happened yet | 864 | /* This will work as long as patching hasn't happened yet |
| 851 | (which it hasn't) */ | 865 | (which it hasn't) */ |
| 852 | pv_mmu_ops.alloc_pt = xen_alloc_pt; | 866 | pv_mmu_ops.alloc_pte = xen_alloc_pte; |
| 853 | pv_mmu_ops.alloc_pd = xen_alloc_pd; | 867 | pv_mmu_ops.alloc_pmd = xen_alloc_pmd; |
| 854 | pv_mmu_ops.release_pt = xen_release_pt; | 868 | pv_mmu_ops.release_pte = xen_release_pte; |
| 855 | pv_mmu_ops.release_pd = xen_release_pd; | 869 | pv_mmu_ops.release_pmd = xen_release_pmd; |
| 856 | pv_mmu_ops.set_pte = xen_set_pte; | 870 | pv_mmu_ops.set_pte = xen_set_pte; |
| 857 | 871 | ||
| 858 | setup_shared_info(); | 872 | setup_shared_info(); |
| @@ -994,7 +1008,7 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = { | |||
| 994 | .read_pmc = native_read_pmc, | 1008 | .read_pmc = native_read_pmc, |
| 995 | 1009 | ||
| 996 | .iret = xen_iret, | 1010 | .iret = xen_iret, |
| 997 | .irq_enable_syscall_ret = NULL, /* never called */ | 1011 | .irq_enable_syscall_ret = xen_sysexit, |
| 998 | 1012 | ||
| 999 | .load_tr_desc = paravirt_nop, | 1013 | .load_tr_desc = paravirt_nop, |
| 1000 | .set_ldt = xen_set_ldt, | 1014 | .set_ldt = xen_set_ldt, |
| @@ -1059,11 +1073,11 @@ static const struct pv_mmu_ops xen_mmu_ops __initdata = { | |||
| 1059 | .pte_update = paravirt_nop, | 1073 | .pte_update = paravirt_nop, |
| 1060 | .pte_update_defer = paravirt_nop, | 1074 | .pte_update_defer = paravirt_nop, |
| 1061 | 1075 | ||
| 1062 | .alloc_pt = xen_alloc_pt_init, | 1076 | .alloc_pte = xen_alloc_pte_init, |
| 1063 | .release_pt = xen_release_pt_init, | 1077 | .release_pte = xen_release_pte_init, |
| 1064 | .alloc_pd = xen_alloc_pt_init, | 1078 | .alloc_pmd = xen_alloc_pte_init, |
| 1065 | .alloc_pd_clone = paravirt_nop, | 1079 | .alloc_pmd_clone = paravirt_nop, |
| 1066 | .release_pd = xen_release_pt_init, | 1080 | .release_pmd = xen_release_pte_init, |
| 1067 | 1081 | ||
| 1068 | #ifdef CONFIG_HIGHPTE | 1082 | #ifdef CONFIG_HIGHPTE |
| 1069 | .kmap_atomic_pte = xen_kmap_atomic_pte, | 1083 | .kmap_atomic_pte = xen_kmap_atomic_pte, |
diff --git a/arch/x86/xen/events.c b/arch/x86/xen/events.c deleted file mode 100644 index dcf613e17581..000000000000 --- a/arch/x86/xen/events.c +++ /dev/null | |||
| @@ -1,591 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Xen event channels | ||
| 3 | * | ||
| 4 | * Xen models interrupts with abstract event channels. Because each | ||
| 5 | * domain gets 1024 event channels, but NR_IRQ is not that large, we | ||
| 6 | * must dynamically map irqs<->event channels. The event channels | ||
| 7 | * interface with the rest of the kernel by defining a xen interrupt | ||
| 8 | * chip. When an event is recieved, it is mapped to an irq and sent | ||
| 9 | * through the normal interrupt processing path. | ||
| 10 | * | ||
| 11 | * There are four kinds of events which can be mapped to an event | ||
| 12 | * channel: | ||
| 13 | * | ||
| 14 | * 1. Inter-domain notifications. This includes all the virtual | ||
| 15 | * device events, since they're driven by front-ends in another domain | ||
| 16 | * (typically dom0). | ||
| 17 | * 2. VIRQs, typically used for timers. These are per-cpu events. | ||
| 18 | * 3. IPIs. | ||
| 19 | * 4. Hardware interrupts. Not supported at present. | ||
| 20 | * | ||
| 21 | * Jeremy Fitzhardinge <jeremy@xensource.com>, XenSource Inc, 2007 | ||
| 22 | */ | ||
| 23 | |||
| 24 | #include <linux/linkage.h> | ||
| 25 | #include <linux/interrupt.h> | ||
| 26 | #include <linux/irq.h> | ||
| 27 | #include <linux/module.h> | ||
| 28 | #include <linux/string.h> | ||
| 29 | |||
| 30 | #include <asm/ptrace.h> | ||
| 31 | #include <asm/irq.h> | ||
| 32 | #include <asm/sync_bitops.h> | ||
| 33 | #include <asm/xen/hypercall.h> | ||
| 34 | #include <asm/xen/hypervisor.h> | ||
| 35 | |||
| 36 | #include <xen/events.h> | ||
| 37 | #include <xen/interface/xen.h> | ||
| 38 | #include <xen/interface/event_channel.h> | ||
| 39 | |||
| 40 | #include "xen-ops.h" | ||
| 41 | |||
| 42 | /* | ||
| 43 | * This lock protects updates to the following mapping and reference-count | ||
| 44 | * arrays. The lock does not need to be acquired to read the mapping tables. | ||
| 45 | */ | ||
| 46 | static DEFINE_SPINLOCK(irq_mapping_update_lock); | ||
| 47 | |||
| 48 | /* IRQ <-> VIRQ mapping. */ | ||
| 49 | static DEFINE_PER_CPU(int, virq_to_irq[NR_VIRQS]) = {[0 ... NR_VIRQS-1] = -1}; | ||
| 50 | |||
| 51 | /* IRQ <-> IPI mapping */ | ||
| 52 | static DEFINE_PER_CPU(int, ipi_to_irq[XEN_NR_IPIS]) = {[0 ... XEN_NR_IPIS-1] = -1}; | ||
| 53 | |||
| 54 | /* Packed IRQ information: binding type, sub-type index, and event channel. */ | ||
| 55 | struct packed_irq | ||
| 56 | { | ||
| 57 | unsigned short evtchn; | ||
| 58 | unsigned char index; | ||
| 59 | unsigned char type; | ||
| 60 | }; | ||
| 61 | |||
| 62 | static struct packed_irq irq_info[NR_IRQS]; | ||
| 63 | |||
| 64 | /* Binding types. */ | ||
| 65 | enum { | ||
| 66 | IRQT_UNBOUND, | ||
| 67 | IRQT_PIRQ, | ||
| 68 | IRQT_VIRQ, | ||
| 69 | IRQT_IPI, | ||
| 70 | IRQT_EVTCHN | ||
| 71 | }; | ||
| 72 | |||
| 73 | /* Convenient shorthand for packed representation of an unbound IRQ. */ | ||
| 74 | #define IRQ_UNBOUND mk_irq_info(IRQT_UNBOUND, 0, 0) | ||
| 75 | |||
| 76 | static int evtchn_to_irq[NR_EVENT_CHANNELS] = { | ||
| 77 | [0 ... NR_EVENT_CHANNELS-1] = -1 | ||
| 78 | }; | ||
| 79 | static unsigned long cpu_evtchn_mask[NR_CPUS][NR_EVENT_CHANNELS/BITS_PER_LONG]; | ||
| 80 | static u8 cpu_evtchn[NR_EVENT_CHANNELS]; | ||
| 81 | |||
| 82 | /* Reference counts for bindings to IRQs. */ | ||
| 83 | static int irq_bindcount[NR_IRQS]; | ||
| 84 | |||
| 85 | /* Xen will never allocate port zero for any purpose. */ | ||
| 86 | #define VALID_EVTCHN(chn) ((chn) != 0) | ||
| 87 | |||
| 88 | /* | ||
| 89 | * Force a proper event-channel callback from Xen after clearing the | ||
| 90 | * callback mask. We do this in a very simple manner, by making a call | ||
| 91 | * down into Xen. The pending flag will be checked by Xen on return. | ||
| 92 | */ | ||
| 93 | void force_evtchn_callback(void) | ||
| 94 | { | ||
| 95 | (void)HYPERVISOR_xen_version(0, NULL); | ||
| 96 | } | ||
| 97 | EXPORT_SYMBOL_GPL(force_evtchn_callback); | ||
| 98 | |||
| 99 | static struct irq_chip xen_dynamic_chip; | ||
| 100 | |||
| 101 | /* Constructor for packed IRQ information. */ | ||
| 102 | static inline struct packed_irq mk_irq_info(u32 type, u32 index, u32 evtchn) | ||
| 103 | { | ||
| 104 | return (struct packed_irq) { evtchn, index, type }; | ||
| 105 | } | ||
| 106 | |||
| 107 | /* | ||
| 108 | * Accessors for packed IRQ information. | ||
| 109 | */ | ||
| 110 | static inline unsigned int evtchn_from_irq(int irq) | ||
| 111 | { | ||
| 112 | return irq_info[irq].evtchn; | ||
| 113 | } | ||
| 114 | |||
| 115 | static inline unsigned int index_from_irq(int irq) | ||
| 116 | { | ||
| 117 | return irq_info[irq].index; | ||
| 118 | } | ||
| 119 | |||
| 120 | static inline unsigned int type_from_irq(int irq) | ||
| 121 | { | ||
| 122 | return irq_info[irq].type; | ||
| 123 | } | ||
| 124 | |||
| 125 | static inline unsigned long active_evtchns(unsigned int cpu, | ||
| 126 | struct shared_info *sh, | ||
| 127 | unsigned int idx) | ||
| 128 | { | ||
| 129 | return (sh->evtchn_pending[idx] & | ||
| 130 | cpu_evtchn_mask[cpu][idx] & | ||
| 131 | ~sh->evtchn_mask[idx]); | ||
| 132 | } | ||
| 133 | |||
| 134 | static void bind_evtchn_to_cpu(unsigned int chn, unsigned int cpu) | ||
| 135 | { | ||
| 136 | int irq = evtchn_to_irq[chn]; | ||
| 137 | |||
| 138 | BUG_ON(irq == -1); | ||
| 139 | #ifdef CONFIG_SMP | ||
| 140 | irq_desc[irq].affinity = cpumask_of_cpu(cpu); | ||
| 141 | #endif | ||
| 142 | |||
| 143 | __clear_bit(chn, cpu_evtchn_mask[cpu_evtchn[chn]]); | ||
| 144 | __set_bit(chn, cpu_evtchn_mask[cpu]); | ||
| 145 | |||
| 146 | cpu_evtchn[chn] = cpu; | ||
| 147 | } | ||
| 148 | |||
| 149 | static void init_evtchn_cpu_bindings(void) | ||
| 150 | { | ||
| 151 | #ifdef CONFIG_SMP | ||
| 152 | int i; | ||
| 153 | /* By default all event channels notify CPU#0. */ | ||
| 154 | for (i = 0; i < NR_IRQS; i++) | ||
| 155 | irq_desc[i].affinity = cpumask_of_cpu(0); | ||
| 156 | #endif | ||
| 157 | |||
| 158 | memset(cpu_evtchn, 0, sizeof(cpu_evtchn)); | ||
| 159 | memset(cpu_evtchn_mask[0], ~0, sizeof(cpu_evtchn_mask[0])); | ||
| 160 | } | ||
| 161 | |||
| 162 | static inline unsigned int cpu_from_evtchn(unsigned int evtchn) | ||
| 163 | { | ||
| 164 | return cpu_evtchn[evtchn]; | ||
| 165 | } | ||
| 166 | |||
| 167 | static inline void clear_evtchn(int port) | ||
| 168 | { | ||
| 169 | struct shared_info *s = HYPERVISOR_shared_info; | ||
| 170 | sync_clear_bit(port, &s->evtchn_pending[0]); | ||
| 171 | } | ||
| 172 | |||
| 173 | static inline void set_evtchn(int port) | ||
| 174 | { | ||
| 175 | struct shared_info *s = HYPERVISOR_shared_info; | ||
| 176 | sync_set_bit(port, &s->evtchn_pending[0]); | ||
| 177 | } | ||
| 178 | |||
| 179 | |||
| 180 | /** | ||
| 181 | * notify_remote_via_irq - send event to remote end of event channel via irq | ||
| 182 | * @irq: irq of event channel to send event to | ||
| 183 | * | ||
| 184 | * Unlike notify_remote_via_evtchn(), this is safe to use across | ||
| 185 | * save/restore. Notifications on a broken connection are silently | ||
| 186 | * dropped. | ||
| 187 | */ | ||
| 188 | void notify_remote_via_irq(int irq) | ||
| 189 | { | ||
| 190 | int evtchn = evtchn_from_irq(irq); | ||
| 191 | |||
| 192 | if (VALID_EVTCHN(evtchn)) | ||
| 193 | notify_remote_via_evtchn(evtchn); | ||
| 194 | } | ||
| 195 | EXPORT_SYMBOL_GPL(notify_remote_via_irq); | ||
| 196 | |||
| 197 | static void mask_evtchn(int port) | ||
| 198 | { | ||
| 199 | struct shared_info *s = HYPERVISOR_shared_info; | ||
| 200 | sync_set_bit(port, &s->evtchn_mask[0]); | ||
| 201 | } | ||
| 202 | |||
| 203 | static void unmask_evtchn(int port) | ||
| 204 | { | ||
| 205 | struct shared_info *s = HYPERVISOR_shared_info; | ||
| 206 | unsigned int cpu = get_cpu(); | ||
| 207 | |||
| 208 | BUG_ON(!irqs_disabled()); | ||
| 209 | |||
| 210 | /* Slow path (hypercall) if this is a non-local port. */ | ||
| 211 | if (unlikely(cpu != cpu_from_evtchn(port))) { | ||
| 212 | struct evtchn_unmask unmask = { .port = port }; | ||
| 213 | (void)HYPERVISOR_event_channel_op(EVTCHNOP_unmask, &unmask); | ||
| 214 | } else { | ||
| 215 | struct vcpu_info *vcpu_info = __get_cpu_var(xen_vcpu); | ||
| 216 | |||
| 217 | sync_clear_bit(port, &s->evtchn_mask[0]); | ||
| 218 | |||
| 219 | /* | ||
| 220 | * The following is basically the equivalent of | ||
| 221 | * 'hw_resend_irq'. Just like a real IO-APIC we 'lose | ||
| 222 | * the interrupt edge' if the channel is masked. | ||
| 223 | */ | ||
| 224 | if (sync_test_bit(port, &s->evtchn_pending[0]) && | ||
| 225 | !sync_test_and_set_bit(port / BITS_PER_LONG, | ||
| 226 | &vcpu_info->evtchn_pending_sel)) | ||
| 227 | vcpu_info->evtchn_upcall_pending = 1; | ||
| 228 | } | ||
| 229 | |||
| 230 | put_cpu(); | ||
| 231 | } | ||
| 232 | |||
| 233 | static int find_unbound_irq(void) | ||
| 234 | { | ||
| 235 | int irq; | ||
| 236 | |||
| 237 | /* Only allocate from dynirq range */ | ||
| 238 | for (irq = 0; irq < NR_IRQS; irq++) | ||
| 239 | if (irq_bindcount[irq] == 0) | ||
| 240 | break; | ||
| 241 | |||
| 242 | if (irq == NR_IRQS) | ||
| 243 | panic("No available IRQ to bind to: increase NR_IRQS!\n"); | ||
| 244 | |||
| 245 | return irq; | ||
| 246 | } | ||
| 247 | |||
| 248 | int bind_evtchn_to_irq(unsigned int evtchn) | ||
| 249 | { | ||
| 250 | int irq; | ||
| 251 | |||
| 252 | spin_lock(&irq_mapping_update_lock); | ||
| 253 | |||
| 254 | irq = evtchn_to_irq[evtchn]; | ||
| 255 | |||
| 256 | if (irq == -1) { | ||
| 257 | irq = find_unbound_irq(); | ||
| 258 | |||
| 259 | dynamic_irq_init(irq); | ||
| 260 | set_irq_chip_and_handler_name(irq, &xen_dynamic_chip, | ||
| 261 | handle_level_irq, "event"); | ||
| 262 | |||
| 263 | evtchn_to_irq[evtchn] = irq; | ||
| 264 | irq_info[irq] = mk_irq_info(IRQT_EVTCHN, 0, evtchn); | ||
| 265 | } | ||
| 266 | |||
| 267 | irq_bindcount[irq]++; | ||
| 268 | |||
| 269 | spin_unlock(&irq_mapping_update_lock); | ||
| 270 | |||
| 271 | return irq; | ||
| 272 | } | ||
| 273 | EXPORT_SYMBOL_GPL(bind_evtchn_to_irq); | ||
| 274 | |||
| 275 | static int bind_ipi_to_irq(unsigned int ipi, unsigned int cpu) | ||
| 276 | { | ||
| 277 | struct evtchn_bind_ipi bind_ipi; | ||
| 278 | int evtchn, irq; | ||
| 279 | |||
| 280 | spin_lock(&irq_mapping_update_lock); | ||
| 281 | |||
| 282 | irq = per_cpu(ipi_to_irq, cpu)[ipi]; | ||
| 283 | if (irq == -1) { | ||
| 284 | irq = find_unbound_irq(); | ||
| 285 | if (irq < 0) | ||
| 286 | goto out; | ||
| 287 | |||
| 288 | dynamic_irq_init(irq); | ||
| 289 | set_irq_chip_and_handler_name(irq, &xen_dynamic_chip, | ||
| 290 | handle_level_irq, "ipi"); | ||
| 291 | |||
| 292 | bind_ipi.vcpu = cpu; | ||
| 293 | if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_ipi, | ||
| 294 | &bind_ipi) != 0) | ||
| 295 | BUG(); | ||
| 296 | evtchn = bind_ipi.port; | ||
| 297 | |||
| 298 | evtchn_to_irq[evtchn] = irq; | ||
| 299 | irq_info[irq] = mk_irq_info(IRQT_IPI, ipi, evtchn); | ||
| 300 | |||
| 301 | per_cpu(ipi_to_irq, cpu)[ipi] = irq; | ||
| 302 | |||
| 303 | bind_evtchn_to_cpu(evtchn, cpu); | ||
| 304 | } | ||
| 305 | |||
| 306 | irq_bindcount[irq]++; | ||
| 307 | |||
| 308 | out: | ||
| 309 | spin_unlock(&irq_mapping_update_lock); | ||
| 310 | return irq; | ||
| 311 | } | ||
| 312 | |||
| 313 | |||
| 314 | static int bind_virq_to_irq(unsigned int virq, unsigned int cpu) | ||
| 315 | { | ||
| 316 | struct evtchn_bind_virq bind_virq; | ||
| 317 | int evtchn, irq; | ||
| 318 | |||
| 319 | spin_lock(&irq_mapping_update_lock); | ||
| 320 | |||
| 321 | irq = per_cpu(virq_to_irq, cpu)[virq]; | ||
| 322 | |||
| 323 | if (irq == -1) { | ||
| 324 | bind_virq.virq = virq; | ||
| 325 | bind_virq.vcpu = cpu; | ||
| 326 | if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, | ||
| 327 | &bind_virq) != 0) | ||
| 328 | BUG(); | ||
| 329 | evtchn = bind_virq.port; | ||
| 330 | |||
| 331 | irq = find_unbound_irq(); | ||
| 332 | |||
| 333 | dynamic_irq_init(irq); | ||
| 334 | set_irq_chip_and_handler_name(irq, &xen_dynamic_chip, | ||
| 335 | handle_level_irq, "virq"); | ||
| 336 | |||
| 337 | evtchn_to_irq[evtchn] = irq; | ||
| 338 | irq_info[irq] = mk_irq_info(IRQT_VIRQ, virq, evtchn); | ||
| 339 | |||
| 340 | per_cpu(virq_to_irq, cpu)[virq] = irq; | ||
| 341 | |||
| 342 | bind_evtchn_to_cpu(evtchn, cpu); | ||
| 343 | } | ||
| 344 | |||
| 345 | irq_bindcount[irq]++; | ||
| 346 | |||
| 347 | spin_unlock(&irq_mapping_update_lock); | ||
| 348 | |||
| 349 | return irq; | ||
| 350 | } | ||
| 351 | |||
| 352 | static void unbind_from_irq(unsigned int irq) | ||
| 353 | { | ||
| 354 | struct evtchn_close close; | ||
| 355 | int evtchn = evtchn_from_irq(irq); | ||
| 356 | |||
| 357 | spin_lock(&irq_mapping_update_lock); | ||
| 358 | |||
| 359 | if (VALID_EVTCHN(evtchn) && (--irq_bindcount[irq] == 0)) { | ||
| 360 | close.port = evtchn; | ||
| 361 | if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close) != 0) | ||
| 362 | BUG(); | ||
| 363 | |||
| 364 | switch (type_from_irq(irq)) { | ||
| 365 | case IRQT_VIRQ: | ||
| 366 | per_cpu(virq_to_irq, cpu_from_evtchn(evtchn)) | ||
| 367 | [index_from_irq(irq)] = -1; | ||
| 368 | break; | ||
| 369 | default: | ||
| 370 | break; | ||
| 371 | } | ||
| 372 | |||
| 373 | /* Closed ports are implicitly re-bound to VCPU0. */ | ||
| 374 | bind_evtchn_to_cpu(evtchn, 0); | ||
| 375 | |||
| 376 | evtchn_to_irq[evtchn] = -1; | ||
| 377 | irq_info[irq] = IRQ_UNBOUND; | ||
| 378 | |||
| 379 | dynamic_irq_init(irq); | ||
| 380 | } | ||
| 381 | |||
| 382 | spin_unlock(&irq_mapping_update_lock); | ||
| 383 | } | ||
| 384 | |||
| 385 | int bind_evtchn_to_irqhandler(unsigned int evtchn, | ||
| 386 | irq_handler_t handler, | ||
| 387 | unsigned long irqflags, | ||
| 388 | const char *devname, void *dev_id) | ||
| 389 | { | ||
| 390 | unsigned int irq; | ||
| 391 | int retval; | ||
| 392 | |||
| 393 | irq = bind_evtchn_to_irq(evtchn); | ||
| 394 | retval = request_irq(irq, handler, irqflags, devname, dev_id); | ||
| 395 | if (retval != 0) { | ||
| 396 | unbind_from_irq(irq); | ||
| 397 | return retval; | ||
| 398 | } | ||
| 399 | |||
| 400 | return irq; | ||
| 401 | } | ||
| 402 | EXPORT_SYMBOL_GPL(bind_evtchn_to_irqhandler); | ||
| 403 | |||
| 404 | int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu, | ||
| 405 | irq_handler_t handler, | ||
| 406 | unsigned long irqflags, const char *devname, void *dev_id) | ||
| 407 | { | ||
| 408 | unsigned int irq; | ||
| 409 | int retval; | ||
| 410 | |||
| 411 | irq = bind_virq_to_irq(virq, cpu); | ||
| 412 | retval = request_irq(irq, handler, irqflags, devname, dev_id); | ||
| 413 | if (retval != 0) { | ||
| 414 | unbind_from_irq(irq); | ||
| 415 | return retval; | ||
| 416 | } | ||
| 417 | |||
| 418 | return irq; | ||
| 419 | } | ||
| 420 | EXPORT_SYMBOL_GPL(bind_virq_to_irqhandler); | ||
| 421 | |||
| 422 | int bind_ipi_to_irqhandler(enum ipi_vector ipi, | ||
| 423 | unsigned int cpu, | ||
| 424 | irq_handler_t handler, | ||
| 425 | unsigned long irqflags, | ||
| 426 | const char *devname, | ||
| 427 | void *dev_id) | ||
| 428 | { | ||
| 429 | int irq, retval; | ||
| 430 | |||
| 431 | irq = bind_ipi_to_irq(ipi, cpu); | ||
| 432 | if (irq < 0) | ||
| 433 | return irq; | ||
| 434 | |||
| 435 | retval = request_irq(irq, handler, irqflags, devname, dev_id); | ||
| 436 | if (retval != 0) { | ||
| 437 | unbind_from_irq(irq); | ||
| 438 | return retval; | ||
| 439 | } | ||
| 440 | |||
| 441 | return irq; | ||
| 442 | } | ||
| 443 | |||
| 444 | void unbind_from_irqhandler(unsigned int irq, void *dev_id) | ||
| 445 | { | ||
| 446 | free_irq(irq, dev_id); | ||
| 447 | unbind_from_irq(irq); | ||
| 448 | } | ||
| 449 | EXPORT_SYMBOL_GPL(unbind_from_irqhandler); | ||
| 450 | |||
| 451 | void xen_send_IPI_one(unsigned int cpu, enum ipi_vector vector) | ||
| 452 | { | ||
| 453 | int irq = per_cpu(ipi_to_irq, cpu)[vector]; | ||
| 454 | BUG_ON(irq < 0); | ||
| 455 | notify_remote_via_irq(irq); | ||
| 456 | } | ||
| 457 | |||
| 458 | |||
| 459 | /* | ||
| 460 | * Search the CPUs pending events bitmasks. For each one found, map | ||
| 461 | * the event number to an irq, and feed it into do_IRQ() for | ||
| 462 | * handling. | ||
| 463 | * | ||
| 464 | * Xen uses a two-level bitmap to speed searching. The first level is | ||
| 465 | * a bitset of words which contain pending event bits. The second | ||
| 466 | * level is a bitset of pending events themselves. | ||
| 467 | */ | ||
| 468 | void xen_evtchn_do_upcall(struct pt_regs *regs) | ||
| 469 | { | ||
| 470 | int cpu = get_cpu(); | ||
| 471 | struct shared_info *s = HYPERVISOR_shared_info; | ||
| 472 | struct vcpu_info *vcpu_info = __get_cpu_var(xen_vcpu); | ||
| 473 | unsigned long pending_words; | ||
| 474 | |||
| 475 | vcpu_info->evtchn_upcall_pending = 0; | ||
| 476 | |||
| 477 | /* NB. No need for a barrier here -- XCHG is a barrier on x86. */ | ||
| 478 | pending_words = xchg(&vcpu_info->evtchn_pending_sel, 0); | ||
| 479 | while (pending_words != 0) { | ||
| 480 | unsigned long pending_bits; | ||
| 481 | int word_idx = __ffs(pending_words); | ||
| 482 | pending_words &= ~(1UL << word_idx); | ||
| 483 | |||
| 484 | while ((pending_bits = active_evtchns(cpu, s, word_idx)) != 0) { | ||
| 485 | int bit_idx = __ffs(pending_bits); | ||
| 486 | int port = (word_idx * BITS_PER_LONG) + bit_idx; | ||
| 487 | int irq = evtchn_to_irq[port]; | ||
| 488 | |||
| 489 | if (irq != -1) { | ||
| 490 | regs->orig_ax = ~irq; | ||
| 491 | do_IRQ(regs); | ||
| 492 | } | ||
| 493 | } | ||
| 494 | } | ||
| 495 | |||
| 496 | put_cpu(); | ||
| 497 | } | ||
| 498 | |||
| 499 | /* Rebind an evtchn so that it gets delivered to a specific cpu */ | ||
| 500 | static void rebind_irq_to_cpu(unsigned irq, unsigned tcpu) | ||
| 501 | { | ||
| 502 | struct evtchn_bind_vcpu bind_vcpu; | ||
| 503 | int evtchn = evtchn_from_irq(irq); | ||
| 504 | |||
| 505 | if (!VALID_EVTCHN(evtchn)) | ||
| 506 | return; | ||
| 507 | |||
| 508 | /* Send future instances of this interrupt to other vcpu. */ | ||
| 509 | bind_vcpu.port = evtchn; | ||
| 510 | bind_vcpu.vcpu = tcpu; | ||
| 511 | |||
| 512 | /* | ||
| 513 | * If this fails, it usually just indicates that we're dealing with a | ||
| 514 | * virq or IPI channel, which don't actually need to be rebound. Ignore | ||
| 515 | * it, but don't do the xenlinux-level rebind in that case. | ||
| 516 | */ | ||
| 517 | if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_vcpu, &bind_vcpu) >= 0) | ||
| 518 | bind_evtchn_to_cpu(evtchn, tcpu); | ||
| 519 | } | ||
| 520 | |||
| 521 | |||
| 522 | static void set_affinity_irq(unsigned irq, cpumask_t dest) | ||
| 523 | { | ||
| 524 | unsigned tcpu = first_cpu(dest); | ||
| 525 | rebind_irq_to_cpu(irq, tcpu); | ||
| 526 | } | ||
| 527 | |||
| 528 | static void enable_dynirq(unsigned int irq) | ||
| 529 | { | ||
| 530 | int evtchn = evtchn_from_irq(irq); | ||
| 531 | |||
| 532 | if (VALID_EVTCHN(evtchn)) | ||
| 533 | unmask_evtchn(evtchn); | ||
| 534 | } | ||
| 535 | |||
| 536 | static void disable_dynirq(unsigned int irq) | ||
| 537 | { | ||
| 538 | int evtchn = evtchn_from_irq(irq); | ||
| 539 | |||
| 540 | if (VALID_EVTCHN(evtchn)) | ||
| 541 | mask_evtchn(evtchn); | ||
| 542 | } | ||
| 543 | |||
| 544 | static void ack_dynirq(unsigned int irq) | ||
| 545 | { | ||
| 546 | int evtchn = evtchn_from_irq(irq); | ||
| 547 | |||
| 548 | move_native_irq(irq); | ||
| 549 | |||
| 550 | if (VALID_EVTCHN(evtchn)) | ||
| 551 | clear_evtchn(evtchn); | ||
| 552 | } | ||
| 553 | |||
| 554 | static int retrigger_dynirq(unsigned int irq) | ||
| 555 | { | ||
| 556 | int evtchn = evtchn_from_irq(irq); | ||
| 557 | int ret = 0; | ||
| 558 | |||
| 559 | if (VALID_EVTCHN(evtchn)) { | ||
| 560 | set_evtchn(evtchn); | ||
| 561 | ret = 1; | ||
| 562 | } | ||
| 563 | |||
| 564 | return ret; | ||
| 565 | } | ||
| 566 | |||
| 567 | static struct irq_chip xen_dynamic_chip __read_mostly = { | ||
| 568 | .name = "xen-dyn", | ||
| 569 | .mask = disable_dynirq, | ||
| 570 | .unmask = enable_dynirq, | ||
| 571 | .ack = ack_dynirq, | ||
| 572 | .set_affinity = set_affinity_irq, | ||
| 573 | .retrigger = retrigger_dynirq, | ||
| 574 | }; | ||
| 575 | |||
| 576 | void __init xen_init_IRQ(void) | ||
| 577 | { | ||
| 578 | int i; | ||
| 579 | |||
| 580 | init_evtchn_cpu_bindings(); | ||
| 581 | |||
| 582 | /* No event channels are 'live' right now. */ | ||
| 583 | for (i = 0; i < NR_EVENT_CHANNELS; i++) | ||
| 584 | mask_evtchn(i); | ||
| 585 | |||
| 586 | /* Dynamic IRQ space is currently unbound. Zero the refcnts. */ | ||
| 587 | for (i = 0; i < NR_IRQS; i++) | ||
| 588 | irq_bindcount[i] = 0; | ||
| 589 | |||
| 590 | irq_ctx_init(smp_processor_id()); | ||
| 591 | } | ||
diff --git a/arch/x86/xen/features.c b/arch/x86/xen/features.c deleted file mode 100644 index 0707714e40d6..000000000000 --- a/arch/x86/xen/features.c +++ /dev/null | |||
| @@ -1,29 +0,0 @@ | |||
| 1 | /****************************************************************************** | ||
| 2 | * features.c | ||
| 3 | * | ||
| 4 | * Xen feature flags. | ||
| 5 | * | ||
| 6 | * Copyright (c) 2006, Ian Campbell, XenSource Inc. | ||
| 7 | */ | ||
| 8 | #include <linux/types.h> | ||
| 9 | #include <linux/cache.h> | ||
| 10 | #include <linux/module.h> | ||
| 11 | #include <asm/xen/hypervisor.h> | ||
| 12 | #include <xen/features.h> | ||
| 13 | |||
| 14 | u8 xen_features[XENFEAT_NR_SUBMAPS * 32] __read_mostly; | ||
| 15 | EXPORT_SYMBOL_GPL(xen_features); | ||
| 16 | |||
| 17 | void xen_setup_features(void) | ||
| 18 | { | ||
| 19 | struct xen_feature_info fi; | ||
| 20 | int i, j; | ||
| 21 | |||
| 22 | for (i = 0; i < XENFEAT_NR_SUBMAPS; i++) { | ||
| 23 | fi.submap_idx = i; | ||
| 24 | if (HYPERVISOR_xen_version(XENVER_get_features, &fi) < 0) | ||
| 25 | break; | ||
| 26 | for (j = 0; j < 32; j++) | ||
| 27 | xen_features[i * 32 + j] = !!(fi.submap & 1<<j); | ||
| 28 | } | ||
| 29 | } | ||
diff --git a/arch/x86/xen/grant-table.c b/arch/x86/xen/grant-table.c new file mode 100644 index 000000000000..49ba9b5224d1 --- /dev/null +++ b/arch/x86/xen/grant-table.c | |||
| @@ -0,0 +1,91 @@ | |||
| 1 | /****************************************************************************** | ||
| 2 | * grant_table.c | ||
| 3 | * x86 specific part | ||
| 4 | * | ||
| 5 | * Granting foreign access to our memory reservation. | ||
| 6 | * | ||
| 7 | * Copyright (c) 2005-2006, Christopher Clark | ||
| 8 | * Copyright (c) 2004-2005, K A Fraser | ||
| 9 | * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp> | ||
| 10 | * VA Linux Systems Japan. Split out x86 specific part. | ||
| 11 | * | ||
| 12 | * This program is free software; you can redistribute it and/or | ||
| 13 | * modify it under the terms of the GNU General Public License version 2 | ||
| 14 | * as published by the Free Software Foundation; or, when distributed | ||
| 15 | * separately from the Linux kernel or incorporated into other | ||
| 16 | * software packages, subject to the following license: | ||
| 17 | * | ||
| 18 | * Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 19 | * of this source file (the "Software"), to deal in the Software without | ||
| 20 | * restriction, including without limitation the rights to use, copy, modify, | ||
| 21 | * merge, publish, distribute, sublicense, and/or sell copies of the Software, | ||
| 22 | * and to permit persons to whom the Software is furnished to do so, subject to | ||
| 23 | * the following conditions: | ||
| 24 | * | ||
| 25 | * The above copyright notice and this permission notice shall be included in | ||
| 26 | * all copies or substantial portions of the Software. | ||
| 27 | * | ||
| 28 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 29 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 30 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 31 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 32 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 33 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | ||
| 34 | * IN THE SOFTWARE. | ||
| 35 | */ | ||
| 36 | |||
| 37 | #include <linux/sched.h> | ||
| 38 | #include <linux/mm.h> | ||
| 39 | #include <linux/vmalloc.h> | ||
| 40 | |||
| 41 | #include <xen/interface/xen.h> | ||
| 42 | #include <xen/page.h> | ||
| 43 | #include <xen/grant_table.h> | ||
| 44 | |||
| 45 | #include <asm/pgtable.h> | ||
| 46 | |||
| 47 | static int map_pte_fn(pte_t *pte, struct page *pmd_page, | ||
| 48 | unsigned long addr, void *data) | ||
| 49 | { | ||
| 50 | unsigned long **frames = (unsigned long **)data; | ||
| 51 | |||
| 52 | set_pte_at(&init_mm, addr, pte, mfn_pte((*frames)[0], PAGE_KERNEL)); | ||
| 53 | (*frames)++; | ||
| 54 | return 0; | ||
| 55 | } | ||
| 56 | |||
| 57 | static int unmap_pte_fn(pte_t *pte, struct page *pmd_page, | ||
| 58 | unsigned long addr, void *data) | ||
| 59 | { | ||
| 60 | |||
| 61 | set_pte_at(&init_mm, addr, pte, __pte(0)); | ||
| 62 | return 0; | ||
| 63 | } | ||
| 64 | |||
| 65 | int arch_gnttab_map_shared(unsigned long *frames, unsigned long nr_gframes, | ||
| 66 | unsigned long max_nr_gframes, | ||
| 67 | struct grant_entry **__shared) | ||
| 68 | { | ||
| 69 | int rc; | ||
| 70 | struct grant_entry *shared = *__shared; | ||
| 71 | |||
| 72 | if (shared == NULL) { | ||
| 73 | struct vm_struct *area = | ||
| 74 | xen_alloc_vm_area(PAGE_SIZE * max_nr_gframes); | ||
| 75 | BUG_ON(area == NULL); | ||
| 76 | shared = area->addr; | ||
| 77 | *__shared = shared; | ||
| 78 | } | ||
| 79 | |||
| 80 | rc = apply_to_page_range(&init_mm, (unsigned long)shared, | ||
| 81 | PAGE_SIZE * nr_gframes, | ||
| 82 | map_pte_fn, &frames); | ||
| 83 | return rc; | ||
| 84 | } | ||
| 85 | |||
| 86 | void arch_gnttab_unmap_shared(struct grant_entry *shared, | ||
| 87 | unsigned long nr_gframes) | ||
| 88 | { | ||
| 89 | apply_to_page_range(&init_mm, (unsigned long)shared, | ||
| 90 | PAGE_SIZE * nr_gframes, unmap_pte_fn, NULL); | ||
| 91 | } | ||
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index 2a054ef2a3da..6cbcf65609ad 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c | |||
| @@ -156,6 +156,10 @@ void set_pte_mfn(unsigned long vaddr, unsigned long mfn, pgprot_t flags) | |||
| 156 | void xen_set_pte_at(struct mm_struct *mm, unsigned long addr, | 156 | void xen_set_pte_at(struct mm_struct *mm, unsigned long addr, |
| 157 | pte_t *ptep, pte_t pteval) | 157 | pte_t *ptep, pte_t pteval) |
| 158 | { | 158 | { |
| 159 | /* updates to init_mm may be done without lock */ | ||
| 160 | if (mm == &init_mm) | ||
| 161 | preempt_disable(); | ||
| 162 | |||
| 159 | if (mm == current->mm || mm == &init_mm) { | 163 | if (mm == current->mm || mm == &init_mm) { |
| 160 | if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_MMU) { | 164 | if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_MMU) { |
| 161 | struct multicall_space mcs; | 165 | struct multicall_space mcs; |
| @@ -163,14 +167,61 @@ void xen_set_pte_at(struct mm_struct *mm, unsigned long addr, | |||
| 163 | 167 | ||
| 164 | MULTI_update_va_mapping(mcs.mc, addr, pteval, 0); | 168 | MULTI_update_va_mapping(mcs.mc, addr, pteval, 0); |
| 165 | xen_mc_issue(PARAVIRT_LAZY_MMU); | 169 | xen_mc_issue(PARAVIRT_LAZY_MMU); |
| 166 | return; | 170 | goto out; |
| 167 | } else | 171 | } else |
| 168 | if (HYPERVISOR_update_va_mapping(addr, pteval, 0) == 0) | 172 | if (HYPERVISOR_update_va_mapping(addr, pteval, 0) == 0) |
| 169 | return; | 173 | goto out; |
| 170 | } | 174 | } |
| 171 | xen_set_pte(ptep, pteval); | 175 | xen_set_pte(ptep, pteval); |
| 176 | |||
| 177 | out: | ||
| 178 | if (mm == &init_mm) | ||
| 179 | preempt_enable(); | ||
| 180 | } | ||
| 181 | |||
| 182 | pteval_t xen_pte_val(pte_t pte) | ||
| 183 | { | ||
| 184 | pteval_t ret = pte.pte; | ||
| 185 | |||
| 186 | if (ret & _PAGE_PRESENT) | ||
| 187 | ret = machine_to_phys(XMADDR(ret)).paddr | _PAGE_PRESENT; | ||
| 188 | |||
| 189 | return ret; | ||
| 190 | } | ||
| 191 | |||
| 192 | pgdval_t xen_pgd_val(pgd_t pgd) | ||
| 193 | { | ||
| 194 | pgdval_t ret = pgd.pgd; | ||
| 195 | if (ret & _PAGE_PRESENT) | ||
| 196 | ret = machine_to_phys(XMADDR(ret)).paddr | _PAGE_PRESENT; | ||
| 197 | return ret; | ||
| 198 | } | ||
| 199 | |||
| 200 | pte_t xen_make_pte(pteval_t pte) | ||
| 201 | { | ||
| 202 | if (pte & _PAGE_PRESENT) { | ||
| 203 | pte = phys_to_machine(XPADDR(pte)).maddr; | ||
| 204 | pte &= ~(_PAGE_PCD | _PAGE_PWT); | ||
| 205 | } | ||
| 206 | |||
| 207 | return (pte_t){ .pte = pte }; | ||
| 172 | } | 208 | } |
| 173 | 209 | ||
| 210 | pgd_t xen_make_pgd(pgdval_t pgd) | ||
| 211 | { | ||
| 212 | if (pgd & _PAGE_PRESENT) | ||
| 213 | pgd = phys_to_machine(XPADDR(pgd)).maddr; | ||
| 214 | |||
| 215 | return (pgd_t){ pgd }; | ||
| 216 | } | ||
| 217 | |||
| 218 | pmdval_t xen_pmd_val(pmd_t pmd) | ||
| 219 | { | ||
| 220 | pmdval_t ret = native_pmd_val(pmd); | ||
| 221 | if (ret & _PAGE_PRESENT) | ||
| 222 | ret = machine_to_phys(XMADDR(ret)).paddr | _PAGE_PRESENT; | ||
| 223 | return ret; | ||
| 224 | } | ||
| 174 | #ifdef CONFIG_X86_PAE | 225 | #ifdef CONFIG_X86_PAE |
| 175 | void xen_set_pud(pud_t *ptr, pud_t val) | 226 | void xen_set_pud(pud_t *ptr, pud_t val) |
| 176 | { | 227 | { |
| @@ -214,100 +265,18 @@ void xen_pmd_clear(pmd_t *pmdp) | |||
| 214 | xen_set_pmd(pmdp, __pmd(0)); | 265 | xen_set_pmd(pmdp, __pmd(0)); |
| 215 | } | 266 | } |
| 216 | 267 | ||
| 217 | unsigned long long xen_pte_val(pte_t pte) | 268 | pmd_t xen_make_pmd(pmdval_t pmd) |
| 218 | { | 269 | { |
| 219 | unsigned long long ret = 0; | 270 | if (pmd & _PAGE_PRESENT) |
| 220 | |||
| 221 | if (pte.pte_low) { | ||
| 222 | ret = ((unsigned long long)pte.pte_high << 32) | pte.pte_low; | ||
| 223 | ret = machine_to_phys(XMADDR(ret)).paddr | 1; | ||
| 224 | } | ||
| 225 | |||
| 226 | return ret; | ||
| 227 | } | ||
| 228 | |||
| 229 | unsigned long long xen_pmd_val(pmd_t pmd) | ||
| 230 | { | ||
| 231 | unsigned long long ret = pmd.pmd; | ||
| 232 | if (ret) | ||
| 233 | ret = machine_to_phys(XMADDR(ret)).paddr | 1; | ||
| 234 | return ret; | ||
| 235 | } | ||
| 236 | |||
| 237 | unsigned long long xen_pgd_val(pgd_t pgd) | ||
| 238 | { | ||
| 239 | unsigned long long ret = pgd.pgd; | ||
| 240 | if (ret) | ||
| 241 | ret = machine_to_phys(XMADDR(ret)).paddr | 1; | ||
| 242 | return ret; | ||
| 243 | } | ||
| 244 | |||
| 245 | pte_t xen_make_pte(unsigned long long pte) | ||
| 246 | { | ||
| 247 | if (pte & _PAGE_PRESENT) { | ||
| 248 | pte = phys_to_machine(XPADDR(pte)).maddr; | ||
| 249 | pte &= ~(_PAGE_PCD | _PAGE_PWT); | ||
| 250 | } | ||
| 251 | |||
| 252 | return (pte_t){ .pte = pte }; | ||
| 253 | } | ||
| 254 | |||
| 255 | pmd_t xen_make_pmd(unsigned long long pmd) | ||
| 256 | { | ||
| 257 | if (pmd & 1) | ||
| 258 | pmd = phys_to_machine(XPADDR(pmd)).maddr; | 271 | pmd = phys_to_machine(XPADDR(pmd)).maddr; |
| 259 | 272 | ||
| 260 | return (pmd_t){ pmd }; | 273 | return native_make_pmd(pmd); |
| 261 | } | ||
| 262 | |||
| 263 | pgd_t xen_make_pgd(unsigned long long pgd) | ||
| 264 | { | ||
| 265 | if (pgd & _PAGE_PRESENT) | ||
| 266 | pgd = phys_to_machine(XPADDR(pgd)).maddr; | ||
| 267 | |||
| 268 | return (pgd_t){ pgd }; | ||
| 269 | } | 274 | } |
| 270 | #else /* !PAE */ | 275 | #else /* !PAE */ |
| 271 | void xen_set_pte(pte_t *ptep, pte_t pte) | 276 | void xen_set_pte(pte_t *ptep, pte_t pte) |
| 272 | { | 277 | { |
| 273 | *ptep = pte; | 278 | *ptep = pte; |
| 274 | } | 279 | } |
| 275 | |||
| 276 | unsigned long xen_pte_val(pte_t pte) | ||
| 277 | { | ||
| 278 | unsigned long ret = pte.pte_low; | ||
| 279 | |||
| 280 | if (ret & _PAGE_PRESENT) | ||
| 281 | ret = machine_to_phys(XMADDR(ret)).paddr; | ||
| 282 | |||
| 283 | return ret; | ||
| 284 | } | ||
| 285 | |||
| 286 | unsigned long xen_pgd_val(pgd_t pgd) | ||
| 287 | { | ||
| 288 | unsigned long ret = pgd.pgd; | ||
| 289 | if (ret) | ||
| 290 | ret = machine_to_phys(XMADDR(ret)).paddr | 1; | ||
| 291 | return ret; | ||
| 292 | } | ||
| 293 | |||
| 294 | pte_t xen_make_pte(unsigned long pte) | ||
| 295 | { | ||
| 296 | if (pte & _PAGE_PRESENT) { | ||
| 297 | pte = phys_to_machine(XPADDR(pte)).maddr; | ||
| 298 | pte &= ~(_PAGE_PCD | _PAGE_PWT); | ||
| 299 | } | ||
| 300 | |||
| 301 | return (pte_t){ pte }; | ||
| 302 | } | ||
| 303 | |||
| 304 | pgd_t xen_make_pgd(unsigned long pgd) | ||
| 305 | { | ||
| 306 | if (pgd & _PAGE_PRESENT) | ||
| 307 | pgd = phys_to_machine(XPADDR(pgd)).maddr; | ||
| 308 | |||
| 309 | return (pgd_t){ pgd }; | ||
| 310 | } | ||
| 311 | #endif /* CONFIG_X86_PAE */ | 280 | #endif /* CONFIG_X86_PAE */ |
| 312 | 281 | ||
| 313 | /* | 282 | /* |
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c index 2341492bf7a0..82517e4a752a 100644 --- a/arch/x86/xen/setup.c +++ b/arch/x86/xen/setup.c | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <asm/xen/hypervisor.h> | 16 | #include <asm/xen/hypervisor.h> |
| 17 | #include <asm/xen/hypercall.h> | 17 | #include <asm/xen/hypercall.h> |
| 18 | 18 | ||
| 19 | #include <xen/interface/callback.h> | ||
| 19 | #include <xen/interface/physdev.h> | 20 | #include <xen/interface/physdev.h> |
| 20 | #include <xen/features.h> | 21 | #include <xen/features.h> |
| 21 | 22 | ||
| @@ -68,6 +69,24 @@ static void __init fiddle_vdso(void) | |||
| 68 | *mask |= 1 << VDSO_NOTE_NONEGSEG_BIT; | 69 | *mask |= 1 << VDSO_NOTE_NONEGSEG_BIT; |
| 69 | } | 70 | } |
| 70 | 71 | ||
| 72 | void xen_enable_sysenter(void) | ||
| 73 | { | ||
| 74 | int cpu = smp_processor_id(); | ||
| 75 | extern void xen_sysenter_target(void); | ||
| 76 | /* Mask events on entry, even though they get enabled immediately */ | ||
| 77 | static struct callback_register sysenter = { | ||
| 78 | .type = CALLBACKTYPE_sysenter, | ||
| 79 | .address = { __KERNEL_CS, (unsigned long)xen_sysenter_target }, | ||
| 80 | .flags = CALLBACKF_mask_events, | ||
| 81 | }; | ||
| 82 | |||
| 83 | if (!boot_cpu_has(X86_FEATURE_SEP) || | ||
| 84 | HYPERVISOR_callback_op(CALLBACKOP_register, &sysenter) != 0) { | ||
| 85 | clear_cpu_cap(&cpu_data(cpu), X86_FEATURE_SEP); | ||
| 86 | clear_cpu_cap(&boot_cpu_data, X86_FEATURE_SEP); | ||
| 87 | } | ||
| 88 | } | ||
| 89 | |||
| 71 | void __init xen_arch_setup(void) | 90 | void __init xen_arch_setup(void) |
| 72 | { | 91 | { |
| 73 | struct physdev_set_iopl set_iopl; | 92 | struct physdev_set_iopl set_iopl; |
| @@ -82,6 +101,8 @@ void __init xen_arch_setup(void) | |||
| 82 | HYPERVISOR_set_callbacks(__KERNEL_CS, (unsigned long)xen_hypervisor_callback, | 101 | HYPERVISOR_set_callbacks(__KERNEL_CS, (unsigned long)xen_hypervisor_callback, |
| 83 | __KERNEL_CS, (unsigned long)xen_failsafe_callback); | 102 | __KERNEL_CS, (unsigned long)xen_failsafe_callback); |
| 84 | 103 | ||
| 104 | xen_enable_sysenter(); | ||
| 105 | |||
| 85 | set_iopl.iopl = 1; | 106 | set_iopl.iopl = 1; |
| 86 | rc = HYPERVISOR_physdev_op(PHYSDEVOP_set_iopl, &set_iopl); | 107 | rc = HYPERVISOR_physdev_op(PHYSDEVOP_set_iopl, &set_iopl); |
| 87 | if (rc != 0) | 108 | if (rc != 0) |
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c index e340ff92f6b6..92dd3dbf3ffb 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c | |||
| @@ -36,8 +36,9 @@ | |||
| 36 | #include "mmu.h" | 36 | #include "mmu.h" |
| 37 | 37 | ||
| 38 | static cpumask_t xen_cpu_initialized_map; | 38 | static cpumask_t xen_cpu_initialized_map; |
| 39 | static DEFINE_PER_CPU(int, resched_irq); | 39 | static DEFINE_PER_CPU(int, resched_irq) = -1; |
| 40 | static DEFINE_PER_CPU(int, callfunc_irq); | 40 | static DEFINE_PER_CPU(int, callfunc_irq) = -1; |
| 41 | static DEFINE_PER_CPU(int, debug_irq) = -1; | ||
| 41 | 42 | ||
| 42 | /* | 43 | /* |
| 43 | * Structure and data for smp_call_function(). This is designed to minimise | 44 | * Structure and data for smp_call_function(). This is designed to minimise |
| @@ -72,6 +73,7 @@ static __cpuinit void cpu_bringup_and_idle(void) | |||
| 72 | int cpu = smp_processor_id(); | 73 | int cpu = smp_processor_id(); |
| 73 | 74 | ||
| 74 | cpu_init(); | 75 | cpu_init(); |
| 76 | xen_enable_sysenter(); | ||
| 75 | 77 | ||
| 76 | preempt_disable(); | 78 | preempt_disable(); |
| 77 | per_cpu(cpu_state, cpu) = CPU_ONLINE; | 79 | per_cpu(cpu_state, cpu) = CPU_ONLINE; |
| @@ -88,9 +90,7 @@ static __cpuinit void cpu_bringup_and_idle(void) | |||
| 88 | static int xen_smp_intr_init(unsigned int cpu) | 90 | static int xen_smp_intr_init(unsigned int cpu) |
| 89 | { | 91 | { |
| 90 | int rc; | 92 | int rc; |
| 91 | const char *resched_name, *callfunc_name; | 93 | const char *resched_name, *callfunc_name, *debug_name; |
| 92 | |||
| 93 | per_cpu(resched_irq, cpu) = per_cpu(callfunc_irq, cpu) = -1; | ||
| 94 | 94 | ||
| 95 | resched_name = kasprintf(GFP_KERNEL, "resched%d", cpu); | 95 | resched_name = kasprintf(GFP_KERNEL, "resched%d", cpu); |
| 96 | rc = bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR, | 96 | rc = bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR, |
| @@ -114,6 +114,14 @@ static int xen_smp_intr_init(unsigned int cpu) | |||
| 114 | goto fail; | 114 | goto fail; |
| 115 | per_cpu(callfunc_irq, cpu) = rc; | 115 | per_cpu(callfunc_irq, cpu) = rc; |
| 116 | 116 | ||
| 117 | debug_name = kasprintf(GFP_KERNEL, "debug%d", cpu); | ||
| 118 | rc = bind_virq_to_irqhandler(VIRQ_DEBUG, cpu, xen_debug_interrupt, | ||
| 119 | IRQF_DISABLED | IRQF_PERCPU | IRQF_NOBALANCING, | ||
| 120 | debug_name, NULL); | ||
| 121 | if (rc < 0) | ||
| 122 | goto fail; | ||
| 123 | per_cpu(debug_irq, cpu) = rc; | ||
| 124 | |||
| 117 | return 0; | 125 | return 0; |
| 118 | 126 | ||
| 119 | fail: | 127 | fail: |
| @@ -121,6 +129,8 @@ static int xen_smp_intr_init(unsigned int cpu) | |||
| 121 | unbind_from_irqhandler(per_cpu(resched_irq, cpu), NULL); | 129 | unbind_from_irqhandler(per_cpu(resched_irq, cpu), NULL); |
| 122 | if (per_cpu(callfunc_irq, cpu) >= 0) | 130 | if (per_cpu(callfunc_irq, cpu) >= 0) |
| 123 | unbind_from_irqhandler(per_cpu(callfunc_irq, cpu), NULL); | 131 | unbind_from_irqhandler(per_cpu(callfunc_irq, cpu), NULL); |
| 132 | if (per_cpu(debug_irq, cpu) >= 0) | ||
| 133 | unbind_from_irqhandler(per_cpu(debug_irq, cpu), NULL); | ||
| 124 | return rc; | 134 | return rc; |
| 125 | } | 135 | } |
| 126 | 136 | ||
diff --git a/arch/x86/xen/xen-asm.S b/arch/x86/xen/xen-asm.S index fe161ed4b01e..2497a30f41de 100644 --- a/arch/x86/xen/xen-asm.S +++ b/arch/x86/xen/xen-asm.S | |||
| @@ -108,6 +108,20 @@ ENDPATCH(xen_restore_fl_direct) | |||
| 108 | RELOC(xen_restore_fl_direct, 2b+1) | 108 | RELOC(xen_restore_fl_direct, 2b+1) |
| 109 | 109 | ||
| 110 | /* | 110 | /* |
| 111 | We can't use sysexit directly, because we're not running in ring0. | ||
| 112 | But we can easily fake it up using iret. Assuming xen_sysexit | ||
| 113 | is jumped to with a standard stack frame, we can just strip it | ||
| 114 | back to a standard iret frame and use iret. | ||
| 115 | */ | ||
| 116 | ENTRY(xen_sysexit) | ||
| 117 | movl PT_EAX(%esp), %eax /* Shouldn't be necessary? */ | ||
| 118 | orl $X86_EFLAGS_IF, PT_EFLAGS(%esp) | ||
| 119 | lea PT_EIP(%esp), %esp | ||
| 120 | |||
| 121 | jmp xen_iret | ||
| 122 | ENDPROC(xen_sysexit) | ||
| 123 | |||
| 124 | /* | ||
| 111 | This is run where a normal iret would be run, with the same stack setup: | 125 | This is run where a normal iret would be run, with the same stack setup: |
| 112 | 8: eflags | 126 | 8: eflags |
| 113 | 4: cs | 127 | 4: cs |
| @@ -184,8 +198,12 @@ iret_restore_end: | |||
| 184 | region is OK. */ | 198 | region is OK. */ |
| 185 | je xen_hypervisor_callback | 199 | je xen_hypervisor_callback |
| 186 | 200 | ||
| 187 | iret | 201 | 1: iret |
| 188 | xen_iret_end_crit: | 202 | xen_iret_end_crit: |
| 203 | .section __ex_table,"a" | ||
| 204 | .align 4 | ||
| 205 | .long 1b,iret_exc | ||
| 206 | .previous | ||
| 189 | 207 | ||
| 190 | hyper_iret: | 208 | hyper_iret: |
| 191 | /* put this out of line since its very rarely used */ | 209 | /* put this out of line since its very rarely used */ |
| @@ -219,9 +237,7 @@ hyper_iret: | |||
| 219 | ds } SAVE_ALL state | 237 | ds } SAVE_ALL state |
| 220 | eax } | 238 | eax } |
| 221 | : : | 239 | : : |
| 222 | ebx } | 240 | ebx }<- esp |
| 223 | ---------------- | ||
| 224 | return addr <- esp | ||
| 225 | ---------------- | 241 | ---------------- |
| 226 | 242 | ||
| 227 | In order to deliver the nested exception properly, we need to shift | 243 | In order to deliver the nested exception properly, we need to shift |
| @@ -236,10 +252,8 @@ hyper_iret: | |||
| 236 | it's usermode state which we eventually need to restore. | 252 | it's usermode state which we eventually need to restore. |
| 237 | */ | 253 | */ |
| 238 | ENTRY(xen_iret_crit_fixup) | 254 | ENTRY(xen_iret_crit_fixup) |
| 239 | /* offsets +4 for return address */ | ||
| 240 | |||
| 241 | /* | 255 | /* |
| 242 | Paranoia: Make sure we're really coming from userspace. | 256 | Paranoia: Make sure we're really coming from kernel space. |
| 243 | One could imagine a case where userspace jumps into the | 257 | One could imagine a case where userspace jumps into the |
| 244 | critical range address, but just before the CPU delivers a GP, | 258 | critical range address, but just before the CPU delivers a GP, |
| 245 | it decides to deliver an interrupt instead. Unlikely? | 259 | it decides to deliver an interrupt instead. Unlikely? |
| @@ -248,32 +262,32 @@ ENTRY(xen_iret_crit_fixup) | |||
| 248 | jump instruction itself, not the destination, but some virtual | 262 | jump instruction itself, not the destination, but some virtual |
| 249 | environments get this wrong. | 263 | environments get this wrong. |
| 250 | */ | 264 | */ |
| 251 | movl PT_CS+4(%esp), %ecx | 265 | movl PT_CS(%esp), %ecx |
| 252 | andl $SEGMENT_RPL_MASK, %ecx | 266 | andl $SEGMENT_RPL_MASK, %ecx |
| 253 | cmpl $USER_RPL, %ecx | 267 | cmpl $USER_RPL, %ecx |
| 254 | je 2f | 268 | je 2f |
| 255 | 269 | ||
| 256 | lea PT_ORIG_EAX+4(%esp), %esi | 270 | lea PT_ORIG_EAX(%esp), %esi |
| 257 | lea PT_EFLAGS+4(%esp), %edi | 271 | lea PT_EFLAGS(%esp), %edi |
| 258 | 272 | ||
| 259 | /* If eip is before iret_restore_end then stack | 273 | /* If eip is before iret_restore_end then stack |
| 260 | hasn't been restored yet. */ | 274 | hasn't been restored yet. */ |
| 261 | cmp $iret_restore_end, %eax | 275 | cmp $iret_restore_end, %eax |
| 262 | jae 1f | 276 | jae 1f |
| 263 | 277 | ||
| 264 | movl 0+4(%edi),%eax /* copy EAX */ | 278 | movl 0+4(%edi),%eax /* copy EAX (just above top of frame) */ |
| 265 | movl %eax, PT_EAX+4(%esp) | 279 | movl %eax, PT_EAX(%esp) |
| 266 | 280 | ||
| 267 | lea ESP_OFFSET(%edi),%edi /* move dest up over saved regs */ | 281 | lea ESP_OFFSET(%edi),%edi /* move dest up over saved regs */ |
| 268 | 282 | ||
| 269 | /* set up the copy */ | 283 | /* set up the copy */ |
| 270 | 1: std | 284 | 1: std |
| 271 | mov $(PT_EIP+4) / 4, %ecx /* copy ret+saved regs up to orig_eax */ | 285 | mov $PT_EIP / 4, %ecx /* saved regs up to orig_eax */ |
| 272 | rep movsl | 286 | rep movsl |
| 273 | cld | 287 | cld |
| 274 | 288 | ||
| 275 | lea 4(%edi),%esp /* point esp to new frame */ | 289 | lea 4(%edi),%esp /* point esp to new frame */ |
| 276 | 2: ret | 290 | 2: jmp xen_do_upcall |
| 277 | 291 | ||
| 278 | 292 | ||
| 279 | /* | 293 | /* |
diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h index 956a491ea998..f1063ae08037 100644 --- a/arch/x86/xen/xen-ops.h +++ b/arch/x86/xen/xen-ops.h | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | #define XEN_OPS_H | 2 | #define XEN_OPS_H |
| 3 | 3 | ||
| 4 | #include <linux/init.h> | 4 | #include <linux/init.h> |
| 5 | #include <linux/irqreturn.h> | ||
| 6 | #include <xen/xen-ops.h> | ||
| 5 | 7 | ||
| 6 | /* These are code, but not functions. Defined in entry.S */ | 8 | /* These are code, but not functions. Defined in entry.S */ |
| 7 | extern const char xen_hypervisor_callback[]; | 9 | extern const char xen_hypervisor_callback[]; |
| @@ -9,7 +11,6 @@ extern const char xen_failsafe_callback[]; | |||
| 9 | 11 | ||
| 10 | void xen_copy_trap_info(struct trap_info *traps); | 12 | void xen_copy_trap_info(struct trap_info *traps); |
| 11 | 13 | ||
| 12 | DECLARE_PER_CPU(struct vcpu_info *, xen_vcpu); | ||
| 13 | DECLARE_PER_CPU(unsigned long, xen_cr3); | 14 | DECLARE_PER_CPU(unsigned long, xen_cr3); |
| 14 | DECLARE_PER_CPU(unsigned long, xen_current_cr3); | 15 | DECLARE_PER_CPU(unsigned long, xen_current_cr3); |
| 15 | 16 | ||
| @@ -19,6 +20,7 @@ extern struct shared_info *HYPERVISOR_shared_info; | |||
| 19 | char * __init xen_memory_setup(void); | 20 | char * __init xen_memory_setup(void); |
| 20 | void __init xen_arch_setup(void); | 21 | void __init xen_arch_setup(void); |
| 21 | void __init xen_init_IRQ(void); | 22 | void __init xen_init_IRQ(void); |
| 23 | void xen_enable_sysenter(void); | ||
| 22 | 24 | ||
| 23 | void xen_setup_timer(int cpu); | 25 | void xen_setup_timer(int cpu); |
| 24 | void xen_setup_cpu_clockevents(void); | 26 | void xen_setup_cpu_clockevents(void); |
| @@ -28,6 +30,8 @@ unsigned long xen_get_wallclock(void); | |||
| 28 | int xen_set_wallclock(unsigned long time); | 30 | int xen_set_wallclock(unsigned long time); |
| 29 | unsigned long long xen_sched_clock(void); | 31 | unsigned long long xen_sched_clock(void); |
| 30 | 32 | ||
| 33 | irqreturn_t xen_debug_interrupt(int irq, void *dev_id); | ||
| 34 | |||
| 31 | bool xen_vcpu_stolen(int vcpu); | 35 | bool xen_vcpu_stolen(int vcpu); |
| 32 | 36 | ||
| 33 | void xen_mark_init_mm_pinned(void); | 37 | void xen_mark_init_mm_pinned(void); |
| @@ -64,4 +68,6 @@ DECL_ASM(unsigned long, xen_save_fl_direct, void); | |||
| 64 | DECL_ASM(void, xen_restore_fl_direct, unsigned long); | 68 | DECL_ASM(void, xen_restore_fl_direct, unsigned long); |
| 65 | 69 | ||
| 66 | void xen_iret(void); | 70 | void xen_iret(void); |
| 71 | void xen_sysexit(void); | ||
| 72 | |||
| 67 | #endif /* XEN_OPS_H */ | 73 | #endif /* XEN_OPS_H */ |
