Blackfin arch: remove hardware PM code, oprofile not use it
[safe/jmp/linux-2.6] / arch / blackfin / Kconfig
index 385c262..56ee44d 100644 (file)
@@ -3,7 +3,7 @@
 # see Documentation/kbuild/kconfig-language.txt.
 #
 
-mainmenu "uClinux/Blackfin (w/o MMU) Kernel Configuration"
+mainmenu "Blackfin Kernel Configuration"
 
 config MMU
        bool
@@ -24,19 +24,14 @@ config RWSEM_XCHGADD_ALGORITHM
 config BLACKFIN
        bool
        default y
+       select HAVE_IDE
+       select HAVE_OPROFILE
+       select ARCH_WANT_OPTIONAL_GPIOLIB
 
 config ZONE_DMA
        bool
        default y
 
-config BFIN
-       bool
-       default y
-
-config SEMAPHORE_SLEEPERS
-       bool
-       default y
-
 config GENERIC_FIND_NEXT_BIT
        bool
        default y
@@ -50,14 +45,10 @@ config GENERIC_HARDIRQS
        default y
 
 config GENERIC_IRQ_PROBE
-        bool
-       default y
-
-config GENERIC_TIME
        bool
-       default n
+       default y
 
-config GENERIC_CALIBRATE_DELAY
+config GENERIC_GPIO
        bool
        default y
 
@@ -69,14 +60,12 @@ config GENERIC_CALIBRATE_DELAY
        bool
        default y
 
-config IRQCHIP_DEMUX_GPIO
-       bool
-       depends on (BF53x || BF561)
-       default y
-
 source "init/Kconfig"
+
 source "kernel/Kconfig.preempt"
 
+source "kernel/Kconfig.freezer"
+
 menu "Blackfin Processor Options"
 
 comment "Processor and Board Settings"
@@ -85,6 +74,56 @@ choice
        prompt "CPU"
        default BF533
 
+config BF512
+       bool "BF512"
+       help
+         BF512 Processor Support.
+
+config BF514
+       bool "BF514"
+       help
+         BF514 Processor Support.
+
+config BF516
+       bool "BF516"
+       help
+         BF516 Processor Support.
+
+config BF518
+       bool "BF518"
+       help
+         BF518 Processor Support.
+
+config BF522
+       bool "BF522"
+       help
+         BF522 Processor Support.
+
+config BF523
+       bool "BF523"
+       help
+         BF523 Processor Support.
+
+config BF524
+       bool "BF524"
+       help
+         BF524 Processor Support.
+
+config BF525
+       bool "BF525"
+       help
+         BF525 Processor Support.
+
+config BF526
+       bool "BF526"
+       help
+         BF526 Processor Support.
+
+config BF527
+       bool "BF527"
+       help
+         BF527 Processor Support.
+
 config BF531
        bool "BF531"
        help
@@ -115,6 +154,16 @@ config BF537
        help
          BF537 Processor Support.
 
+config BF538
+       bool "BF538"
+       help
+         BF538 Processor Support.
+
+config BF539
+       bool "BF539"
+       help
+         BF539 Processor Support.
+
 config BF542
        bool "BF542"
        help
@@ -125,6 +174,11 @@ config BF544
        help
          BF544 Processor Support.
 
+config BF547
+       bool "BF547"
+       help
+         BF547 Processor Support.
+
 config BF548
        bool "BF548"
        help
@@ -138,23 +192,67 @@ config BF549
 config BF561
        bool "BF561"
        help
-         Not Supported Yet - Work in progress - BF561 Processor Support.
+         BF561 Processor Support.
 
 endchoice
 
+config SMP
+       depends on BF561
+       bool "Symmetric multi-processing support"
+       ---help---
+         This enables support for systems with more than one CPU,
+         like the dual core BF561. If you have a system with only one
+         CPU, say N. If you have a system with more than one CPU, say Y.
+
+         If you don't know what to do here, say N.
+
+config NR_CPUS
+       int
+       depends on SMP
+       default 2 if BF561
+
+config IRQ_PER_CPU
+       bool
+       depends on SMP
+       default y
+
+config TICK_SOURCE_SYSTMR0
+       bool
+       select BFIN_GPTIMERS
+       depends on SMP
+       default y
+
+config BF_REV_MIN
+       int
+       default 0 if (BF51x || BF52x || BF54x)
+       default 2 if (BF537 || BF536 || BF534)
+       default 3 if (BF561 ||BF533 || BF532 || BF531)
+       default 4 if (BF538 || BF539)
+
+config BF_REV_MAX
+       int
+       default 2 if (BF51x || BF52x || BF54x)
+       default 3 if (BF537 || BF536 || BF534)
+       default 5 if (BF561 || BF538 || BF539)
+       default 6 if (BF533 || BF532 || BF531)
+
 choice
        prompt "Silicon Rev"
-       default BF_REV_0_2 if BF537
-       default BF_REV_0_3 if BF533
-       default BF_REV_0_0 if BF549
+       default BF_REV_0_1 if (BF51x || BF52x || BF54x)
+       default BF_REV_0_2 if (BF534 || BF536 || BF537)
+       default BF_REV_0_3 if (BF531 || BF532 || BF533 || BF561)
 
 config BF_REV_0_0
        bool "0.0"
-       depends on (BF549)
+       depends on (BF51x || BF52x || BF54x)
+
+config BF_REV_0_1
+       bool "0.1"
+       depends on (BF52x || BF54x)
 
 config BF_REV_0_2
        bool "0.2"
-       depends on (BF537 || BF536 || BF534)
+       depends on (BF52x || BF537 || BF536 || BF534 || BF54x)
 
 config BF_REV_0_3
        bool "0.3"
@@ -162,11 +260,15 @@ config BF_REV_0_3
 
 config BF_REV_0_4
        bool "0.4"
-       depends on (BF561 || BF533 || BF532 || BF531)
+       depends on (BF561 || BF533 || BF532 || BF531 || BF538 || BF539)
 
 config BF_REV_0_5
        bool "0.5"
-       depends on (BF561 || BF533 || BF532 || BF531)
+       depends on (BF561 || BF533 || BF532 || BF531 || BF538 || BF539)
+
+config BF_REV_0_6
+       bool "0.6"
+       depends on (BF533 || BF532 || BF531)
 
 config BF_REV_ANY
        bool "any"
@@ -176,103 +278,26 @@ config BF_REV_NONE
 
 endchoice
 
-config BF53x
+config BF51x
        bool
-       depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537)
+       depends on (BF512 || BF514 || BF516 || BF518)
        default y
 
-config BF54x
+config BF52x
        bool
-       depends on (BF542 || BF544 || BF548 || BF549)
+       depends on (BF522 || BF523 || BF524 || BF525 || BF526 || BF527)
        default y
 
-config BFIN_DUAL_CORE
+config BF53x
        bool
-       depends on (BF561)
+       depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537)
        default y
 
-config BFIN_SINGLE_CORE
+config BF54x
        bool
-       depends on !BFIN_DUAL_CORE
+       depends on (BF542 || BF544 || BF547 || BF548 || BF549)
        default y
 
-choice
-       prompt "System type"
-       default BFIN533_STAMP
-       help
-         Do NOT change the board here.  Please use the top level
-         configuration to ensure that all the other settings are
-         correct.
-
-config BFIN533_EZKIT
-       bool "BF533-EZKIT"
-       depends on (BF533 || BF532 || BF531)
-       help
-         BF533-EZKIT-LITE board Support.
-
-config  BFIN533_STAMP
-       bool "BF533-STAMP"
-       depends on (BF533 || BF532 || BF531)
-       help
-         BF533-STAMP board Support.
-
-config BFIN537_STAMP
-       bool "BF537-STAMP"
-       depends on (BF537 || BF536 || BF534)
-       help
-         BF537-STAMP board Support.
-
-config BFIN533_BLUETECHNIX_CM
-       bool "Bluetechnix CM-BF533"
-       depends on (BF533)
-       help
-         CM-BF533 support for EVAL- and DEV-Board.
-
-config BFIN537_BLUETECHNIX_CM
-       bool "Bluetechnix CM-BF537"
-       depends on (BF537)
-       help
-         CM-BF537 support for EVAL- and DEV-Board.
-
-config BFIN548_EZKIT
-       bool "BF548-EZKIT"
-       depends on (BF548 || BF549)
-         help
-         BFIN548-EZKIT board Support.
-
-config BFIN561_BLUETECHNIX_CM
-       bool "Bluetechnix CM-BF561"
-       depends on (BF561)
-       help
-         CM-BF561 support for EVAL- and DEV-Board.
-
-config BFIN561_EZKIT
-       bool "BF561-EZKIT"
-       depends on (BF561)
-       help
-         BF561-EZKIT-LITE board Support.
-
-config BFIN561_TEPLA
-       bool "BF561-TEPLA"
-       depends on (BF561)
-       help
-        BF561-TEPLA board Support.
-
-config PNAV10
-       bool "PNAV 1.0 board"
-       depends on (BF537)
-       help
-         PNAV 1.0 board Support.
-
-config GENERIC_BOARD
-       bool "Custom"
-       depends on (BF537 || BF536 \
-               || BF534 || BF561 || BF535 || BF533 || BF532 || BF531)
-       help
-         GENERIC or Custom board Support.
-
-endchoice
-
 config MEM_GENERIC_BOARD
        bool
        depends on GENERIC_BOARD
@@ -286,12 +311,13 @@ config MEM_MT48LC64M4A2FB_7E
 config MEM_MT48LC16M16A2TG_75
        bool
        depends on (BFIN533_EZKIT || BFIN561_EZKIT \
-               || BFIN533_BLUETECHNIX_CM || BFIN537_BLUETECHNIX_CM)
+               || BFIN533_BLUETECHNIX_CM || BFIN537_BLUETECHNIX_CM \
+               || H8606_HVSISTEMAS || BFIN527_BLUETECHNIX_CM)
        default y
 
 config MEM_MT48LC32M8A2_75
        bool
-       depends on (BFIN537_STAMP || PNAV10)
+       depends on (BFIN537_STAMP || PNAV10 || BFIN538_EZKIT)
        default y
 
 config MEM_MT48LC8M32B2B5_7
@@ -299,14 +325,17 @@ config MEM_MT48LC8M32B2B5_7
        depends on (BFIN561_BLUETECHNIX_CM)
        default y
 
-config BFIN_SHARED_FLASH_ENET
+config MEM_MT48LC32M16A2TG_75
        bool
-       depends on (BFIN533_STAMP)
+       depends on (BFIN527_EZKIT || BFIN532_IP0X || BLACKSTAMP || BFIN526_EZBRD)
        default y
 
+source "arch/blackfin/mach-bf518/Kconfig"
+source "arch/blackfin/mach-bf527/Kconfig"
 source "arch/blackfin/mach-bf533/Kconfig"
 source "arch/blackfin/mach-bf561/Kconfig"
 source "arch/blackfin/mach-bf537/Kconfig"
+source "arch/blackfin/mach-bf538/Kconfig"
 source "arch/blackfin/mach-bf548/Kconfig"
 
 menu "Board customizations"
@@ -323,134 +352,302 @@ config CMDLINE
          to the kernel, you may specify one here. As a minimum, you should specify
          the memory size and the root device (e.g., mem=8M, root=/dev/nfs).
 
-comment "Board Setup"
+config BOOT_LOAD
+       hex "Kernel load address for booting"
+       default "0x1000"
+       range 0x1000 0x20000000
+       help
+         This option allows you to set the load address of the kernel.
+         This can be useful if you are on a board which has a small amount
+         of memory or you wish to reserve some memory at the beginning of
+         the address space.
+
+         Note that you need to keep this value above 4k (0x1000) as this
+         memory region is used to capture NULL pointer references as well
+         as some core kernel functions.
+
+config ROM_BASE
+       hex "Kernel ROM Base"
+       depends on ROMKERNEL
+       default "0x20040000"
+       range 0x20000000 0x20400000 if !(BF54x || BF561)
+       range 0x20000000 0x30000000 if (BF54x || BF561)
+       help
+
+comment "Clock/PLL Setup"
 
 config CLKIN_HZ
-       int "Crystal Frequency in Hz"
+       int "Frequency of the crystal on the board in Hz"
        default "11059200" if BFIN533_STAMP
        default "27000000" if BFIN533_EZKIT
-       default "25000000" if BFIN537_STAMP
+       default "25000000" if (BFIN537_STAMP || BFIN527_EZKIT || H8606_HVSISTEMAS || BLACKSTAMP || BFIN526_EZBRD || BFIN538_EZKIT || BFIN518F-EZBRD)
        default "30000000" if BFIN561_EZKIT
        default "24576000" if PNAV10
+       default "10000000" if BFIN532_IP0X
        help
          The frequency of CLKIN crystal oscillator on the board in Hz.
+         Warning: This value should match the crystal on the board. Otherwise,
+         peripherals won't work properly.
 
-config MEM_SIZE
-       int "SDRAM Memory Size in MBytes"
-       default  32 if BFIN533_EZKIT
-       default  64 if BFIN537_STAMP
-       default  64 if BFIN561_EZKIT
-       default 128 if BFIN533_STAMP
-       default  64 if PNAV10
-
-config MEM_ADD_WIDTH
-       int "SDRAM Memory Address Width"
-       default  9 if BFIN533_EZKIT
-       default  9 if BFIN561_EZKIT
-       default 10 if BFIN537_STAMP
-       default 11 if BFIN533_STAMP
-       default 10 if PNAV10
-
-config ENET_FLASH_PIN
-       int "PF port/pin used for flash and ethernet sharing"
-       depends on (BFIN533_STAMP)
-       default  0
+config BFIN_KERNEL_CLOCK
+       bool "Re-program Clocks while Kernel boots?"
+       default n
+       help
+         This option decides if kernel clocks are re-programed from the
+         bootloader settings. If the clocks are not set, the SDRAM settings
+         are also not changed, and the Bootloader does 100% of the hardware
+         configuration.
+
+config PLL_BYPASS
+       bool "Bypass PLL"
+       depends on BFIN_KERNEL_CLOCK
+       default n
+
+config CLKIN_HALF
+       bool "Half Clock In"
+       depends on BFIN_KERNEL_CLOCK && (! PLL_BYPASS)
+       default n
        help
-         PF port/pin used for flash and ethernet sharing to allow other PF
-         pins to be used on other platforms without having to touch common
-         code.
-         For example: PF0 --> 0,PF1 --> 1,PF2 --> 2, etc.
+         If this is set the clock will be divided by 2, before it goes to the PLL.
 
-config BOOT_LOAD
-       hex "Kernel load address for booting"
-       default "0x1000"
+config VCO_MULT
+       int "VCO Multiplier"
+       depends on BFIN_KERNEL_CLOCK && (! PLL_BYPASS)
+       range 1 64
+       default "22" if BFIN533_EZKIT
+       default "45" if BFIN533_STAMP
+       default "20" if (BFIN537_STAMP || BFIN527_EZKIT || BFIN548_EZKIT || BFIN548_BLUETECHNIX_CM || BFIN538_EZKIT)
+       default "22" if BFIN533_BLUETECHNIX_CM
+       default "20" if (BFIN537_BLUETECHNIX_CM || BFIN527_BLUETECHNIX_CM || BFIN561_BLUETECHNIX_CM)
+       default "20" if BFIN561_EZKIT
+       default "16" if (H8606_HVSISTEMAS || BLACKSTAMP || BFIN526_EZBRD || BFIN518F_EZBRD)
        help
-         This option allows you to set the load address of the kernel.
-         This can be useful if you are on a board which has a small amount
-         of memory or you wish to reserve some memory at the beginning of
-         the address space.
+         This controls the frequency of the on-chip PLL. This can be between 1 and 64.
+         PLL Frequency = (Crystal Frequency) * (this setting)
 
-         Note that you generally want to keep this value at or above 4k
-         (0x1000) as this will allow the kernel to capture NULL pointer
-         references.
+choice
+       prompt "Core Clock Divider"
+       depends on BFIN_KERNEL_CLOCK
+       default CCLK_DIV_1
+       help
+         This sets the frequency of the core. It can be 1, 2, 4 or 8
+         Core Frequency = (PLL frequency) / (this setting)
 
-comment "LED Status Indicators"
-       depends on (BFIN533_STAMP || BFIN533_BLUETECHNIX_CM)
+config CCLK_DIV_1
+       bool "1"
 
-config BFIN_ALIVE_LED
-       bool "Enable Board Alive"
-       depends on (BFIN533_STAMP || BFIN533_BLUETECHNIX_CM)
-       default n
-       help
-         Blink the LEDs you select when the kernel is running.  Helps detect
-         a hung kernel.
+config CCLK_DIV_2
+       bool "2"
+
+config CCLK_DIV_4
+       bool "4"
 
-config BFIN_ALIVE_LED_NUM
-       int "LED"
-       depends on BFIN_ALIVE_LED
-       range 1 3 if BFIN533_STAMP
-       default "3" if BFIN533_STAMP
+config CCLK_DIV_8
+       bool "8"
+endchoice
+
+config SCLK_DIV
+       int "System Clock Divider"
+       depends on BFIN_KERNEL_CLOCK
+       range 1 15
+       default 5
        help
-         Select the LED (marked on the board) for you to blink.
+         This sets the frequency of the system clock (including SDRAM or DDR).
+         This can be between 1 and 15
+         System Clock = (PLL frequency) / (this setting)
 
-config BFIN_IDLE_LED
-       bool "Enable System Load/Idle LED"
-       depends on (BFIN533_STAMP || BFIN533_BLUETECHNIX_CM)
-       default n
+choice
+       prompt "DDR SDRAM Chip Type"
+       depends on BFIN_KERNEL_CLOCK
+       depends on BF54x
+       default MEM_MT46V32M16_5B
+
+config MEM_MT46V32M16_6T
+       bool "MT46V32M16_6T"
+
+config MEM_MT46V32M16_5B
+       bool "MT46V32M16_5B"
+endchoice
+
+choice
+       prompt "DDR/SDRAM Timing"
+       depends on BFIN_KERNEL_CLOCK
+       default BFIN_KERNEL_CLOCK_MEMINIT_CALC
        help
-         Blinks the LED you select when to determine kernel load.
+         This option allows you to specify Blackfin SDRAM/DDR Timing parameters
+         The calculated SDRAM timing parameters may not be 100%
+         accurate - This option is therefore marked experimental.
+
+config BFIN_KERNEL_CLOCK_MEMINIT_CALC
+       bool "Calculate Timings (EXPERIMENTAL)"
+       depends on EXPERIMENTAL
 
-config BFIN_IDLE_LED_NUM
-       int "LED"
-       depends on BFIN_IDLE_LED
-       range 1 3 if BFIN533_STAMP
-       default "2" if BFIN533_STAMP
+config BFIN_KERNEL_CLOCK_MEMINIT_SPEC
+       bool "Provide accurate Timings based on target SCLK"
        help
-         Select the LED (marked on the board) for you to blink.
+         Please consult the Blackfin Hardware Reference Manuals as well
+         as the memory device datasheet.
+         http://docs.blackfin.uclinux.org/doku.php?id=bfin:sdram
+endchoice
+
+menu "Memory Init Control"
+       depends on BFIN_KERNEL_CLOCK_MEMINIT_SPEC
+
+config MEM_DDRCTL0
+       depends on BF54x
+       hex "DDRCTL0"
+       default 0x0
+
+config MEM_DDRCTL1
+       depends on BF54x
+       hex "DDRCTL1"
+       default 0x0
+
+config MEM_DDRCTL2
+       depends on BF54x
+       hex "DDRCTL2"
+       default 0x0
+
+config MEM_EBIU_DDRQUE
+       depends on BF54x
+       hex "DDRQUE"
+       default 0x0
+
+config MEM_SDRRC
+       depends on !BF54x
+       hex "SDRRC"
+       default 0x0
+
+config MEM_SDGCTL
+       depends on !BF54x
+       hex "SDGCTL"
+       default 0x0
+endmenu
 
 #
-# Sorry - but you need to put the hex address here -
+# Max & Min Speeds for various Chips
 #
+config MAX_VCO_HZ
+       int
+       default 400000000 if BF512
+       default 400000000 if BF514
+       default 400000000 if BF516
+       default 400000000 if BF518
+       default 600000000 if BF522
+       default 400000000 if BF523
+       default 400000000 if BF524
+       default 600000000 if BF525
+       default 400000000 if BF526
+       default 600000000 if BF527
+       default 400000000 if BF531
+       default 400000000 if BF532
+       default 750000000 if BF533
+       default 500000000 if BF534
+       default 400000000 if BF536
+       default 600000000 if BF537
+       default 533333333 if BF538
+       default 533333333 if BF539
+       default 600000000 if BF542
+       default 533333333 if BF544
+       default 600000000 if BF547
+       default 600000000 if BF548
+       default 533333333 if BF549
+       default 600000000 if BF561
+
+config MIN_VCO_HZ
+       int
+       default 50000000
 
-# Flag Data register
-config BFIN_ALIVE_LED_PORT
-       hex
-       default 0xFFC00700 if (BFIN533_STAMP)
-
-# Peripheral Flag Direction Register
-config BFIN_ALIVE_LED_DPORT
-       hex
-       default 0xFFC00730 if (BFIN533_STAMP)
-
-config BFIN_ALIVE_LED_PIN
-       hex
-       default 0x04 if (BFIN533_STAMP && BFIN_ALIVE_LED_NUM = 1)
-       default 0x08 if (BFIN533_STAMP && BFIN_ALIVE_LED_NUM = 2)
-       default 0x10 if (BFIN533_STAMP && BFIN_ALIVE_LED_NUM = 3)
-
-config BFIN_IDLE_LED_PORT
-       hex
-       default 0xFFC00700 if (BFIN533_STAMP)
-
-# Peripheral Flag Direction Register
-config BFIN_IDLE_LED_DPORT
-       hex
-       default 0xFFC00730 if (BFIN533_STAMP)
-
-config BFIN_IDLE_LED_PIN
-       hex
-       default 0x04 if (BFIN533_STAMP && BFIN_IDLE_LED_NUM = 1)
-       default 0x08 if (BFIN533_STAMP && BFIN_IDLE_LED_NUM = 2)
-       default 0x10 if (BFIN533_STAMP && BFIN_IDLE_LED_NUM = 3)
+config MAX_SCLK_HZ
+       int
+       default 133333333
 
-endmenu
+config MIN_SCLK_HZ
+       int
+       default 27000000
 
+comment "Kernel Timer/Scheduler"
 
-menu "Blackfin Kernel Optimizations"
+source kernel/Kconfig.hz
+
+config GENERIC_TIME
+       bool "Generic time"
+       depends on !SMP
+       default y
 
-comment "Timer Tick"
+config GENERIC_CLOCKEVENTS
+       bool "Generic clock events"
+       depends on GENERIC_TIME
+       default y
+
+config CYCLES_CLOCKSOURCE
+       bool "Use 'CYCLES' as a clocksource (EXPERIMENTAL)"
+       depends on EXPERIMENTAL
+       depends on GENERIC_CLOCKEVENTS
+       depends on !BFIN_SCRATCH_REG_CYCLES
+       default n
+       help
+         If you say Y here, you will enable support for using the 'cycles'
+         registers as a clock source.  Doing so means you will be unable to
+         safely write to the 'cycles' register during runtime.  You will
+         still be able to read it (such as for performance monitoring), but
+         writing the registers will most likely crash the kernel.
+
+source kernel/time/Kconfig
+
+comment "Misc"
+
+choice
+       prompt "Blackfin Exception Scratch Register"
+       default BFIN_SCRATCH_REG_RETN
+       help
+         Select the resource to reserve for the Exception handler:
+           - RETN: Non-Maskable Interrupt (NMI)
+           - RETE: Exception Return (JTAG/ICE)
+           - CYCLES: Performance counter
+
+         If you are unsure, please select "RETN".
+
+config BFIN_SCRATCH_REG_RETN
+       bool "RETN"
+       help
+         Use the RETN register in the Blackfin exception handler
+         as a stack scratch register.  This means you cannot
+         safely use NMI on the Blackfin while running Linux, but
+         you can debug the system with a JTAG ICE and use the
+         CYCLES performance registers.
+
+         If you are unsure, please select "RETN".
+
+config BFIN_SCRATCH_REG_RETE
+       bool "RETE"
+       help
+         Use the RETE register in the Blackfin exception handler
+         as a stack scratch register.  This means you cannot
+         safely use a JTAG ICE while debugging a Blackfin board,
+         but you can safely use the CYCLES performance registers
+         and the NMI.
+
+         If you are unsure, please select "RETN".
+
+config BFIN_SCRATCH_REG_CYCLES
+       bool "CYCLES"
+       help
+         Use the CYCLES register in the Blackfin exception handler
+         as a stack scratch register.  This means you cannot
+         safely use the CYCLES performance registers on a Blackfin
+         board at anytime, but you can debug the system with a JTAG
+         ICE and use the NMI.
+
+         If you are unsure, please select "RETN".
+
+endchoice
+
+endmenu
 
-source kernel/Kconfig.hz
+
+menu "Blackfin Kernel Optimizations"
+       depends on !SMP
 
 comment "Memory Optimizations"
 
@@ -458,112 +655,160 @@ config I_ENTRY_L1
        bool "Locate interrupt entry code in L1 Memory"
        default y
        help
-         If enabled interrupt entry code (STORE/RESTORE CONTEXT) is linked
-         into L1 instruction memory.(less latency)
+         If enabled, interrupt entry code (STORE/RESTORE CONTEXT) is linked
+         into L1 instruction memory. (less latency)
 
 config EXCPT_IRQ_SYSC_L1
-       bool "Locate entire ASM lowlevel excepetion / interrupt - Syscall and CPLB handler code in L1 Memory"
+       bool "Locate entire ASM lowlevel exception / interrupt - Syscall and CPLB handler code in L1 Memory"
        default y
        help
-         If enabled entire ASM lowlevel exception and interrupt entry code (STORE/RESTORE CONTEXT) is linked
-         into L1 instruction memory.(less latency)
+         If enabled, the entire ASM lowlevel exception and interrupt entry code
+         (STORE/RESTORE CONTEXT) is linked into L1 instruction memory.
+         (less latency)
 
 config DO_IRQ_L1
        bool "Locate frequently called do_irq dispatcher function in L1 Memory"
        default y
        help
-         If enabled frequently called do_irq dispatcher function is linked
-         into L1 instruction memory.(less latency)
+         If enabled, the frequently called do_irq dispatcher function is linked
+         into L1 instruction memory. (less latency)
 
 config CORE_TIMER_IRQ_L1
        bool "Locate frequently called timer_interrupt() function in L1 Memory"
        default y
        help
-         If enabled frequently called timer_interrupt() function is linked
-         into L1 instruction memory.(less latency)
+         If enabled, the frequently called timer_interrupt() function is linked
+         into L1 instruction memory. (less latency)
 
 config IDLE_L1
        bool "Locate frequently idle function in L1 Memory"
        default y
        help
-         If enabled frequently called idle function is linked
-         into L1 instruction memory.(less latency)
+         If enabled, the frequently called idle function is linked
+         into L1 instruction memory. (less latency)
 
 config SCHEDULE_L1
        bool "Locate kernel schedule function in L1 Memory"
        default y
        help
-         If enabled frequently called kernel schedule is linked
-         into L1 instruction memory.(less latency)
+         If enabled, the frequently called kernel schedule is linked
+         into L1 instruction memory. (less latency)
 
 config ARITHMETIC_OPS_L1
        bool "Locate kernel owned arithmetic functions in L1 Memory"
        default y
        help
-         If enabled arithmetic functions are linked
-         into L1 instruction memory.(less latency)
+         If enabled, arithmetic functions are linked
+         into L1 instruction memory. (less latency)
 
 config ACCESS_OK_L1
        bool "Locate access_ok function in L1 Memory"
        default y
        help
-         If enabled access_ok function is linked
-         into L1 instruction memory.(less latency)
+         If enabled, the access_ok function is linked
+         into L1 instruction memory. (less latency)
 
 config MEMSET_L1
        bool "Locate memset function in L1 Memory"
        default y
        help
-         If enabled memset function is linked
-         into L1 instruction memory.(less latency)
+         If enabled, the memset function is linked
+         into L1 instruction memory. (less latency)
 
 config MEMCPY_L1
        bool "Locate memcpy function in L1 Memory"
        default y
        help
-         If enabled memcpy function is linked
-         into L1 instruction memory.(less latency)
+         If enabled, the memcpy function is linked
+         into L1 instruction memory. (less latency)
 
 config SYS_BFIN_SPINLOCK_L1
        bool "Locate sys_bfin_spinlock function in L1 Memory"
        default y
        help
-         If enabled sys_bfin_spinlock function is linked
-         into L1 instruction memory.(less latency)
+         If enabled, sys_bfin_spinlock function is linked
+         into L1 instruction memory. (less latency)
 
 config IP_CHECKSUM_L1
        bool "Locate IP Checksum function in L1 Memory"
        default n
        help
-         If enabled IP Checksum function is linked
-         into L1 instruction memory.(less latency)
+         If enabled, the IP Checksum function is linked
+         into L1 instruction memory. (less latency)
 
 config CACHELINE_ALIGNED_L1
        bool "Locate cacheline_aligned data to L1 Data Memory"
-       default y
+       default y if !BF54x
+       default n if BF54x
        depends on !BF531
        help
-         If enabled cacheline_anligned data is linked
-         into L1 data memory.(less latency)
+         If enabled, cacheline_anligned data is linked
+         into L1 data memory. (less latency)
 
 config SYSCALL_TAB_L1
        bool "Locate Syscall Table L1 Data Memory"
        default n
        depends on !BF531
        help
-         If enabled the Syscall LUT is linked
-         into L1 data memory.(less latency)
+         If enabled, the Syscall LUT is linked
+         into L1 data memory. (less latency)
 
 config CPLB_SWITCH_TAB_L1
        bool "Locate CPLB Switch Tables L1 Data Memory"
        default n
        depends on !BF531
        help
-         If enabled the CPLB Switch Tables are linked
-         into L1 data memory.(less latency)
+         If enabled, the CPLB Switch Tables are linked
+         into L1 data memory. (less latency)
 
-endmenu
+config APP_STACK_L1
+       bool "Support locating application stack in L1 Scratch Memory"
+       default y
+       help
+         If enabled the application stack can be located in L1
+         scratch memory (less latency).
+
+         Currently only works with FLAT binaries.
+
+config EXCEPTION_L1_SCRATCH
+       bool "Locate exception stack in L1 Scratch Memory"
+       default n
+       depends on !APP_STACK_L1 && !SYSCALL_TAB_L1
+       help
+         Whenever an exception occurs, use the L1 Scratch memory for
+         stack storage.  You cannot place the stacks of FLAT binaries
+         in L1 when using this option.
+
+         If you don't use L1 Scratch, then you should say Y here.
+
+comment "Speed Optimizations"
+config BFIN_INS_LOWOVERHEAD
+       bool "ins[bwl] low overhead, higher interrupt latency"
+       default y
+       help
+         Reads on the Blackfin are speculative. In Blackfin terms, this means
+         they can be interrupted at any time (even after they have been issued
+         on to the external bus), and re-issued after the interrupt occurs.
+         For memory - this is not a big deal, since memory does not change if
+         it sees a read.
+
+         If a FIFO is sitting on the end of the read, it will see two reads,
+         when the core only sees one since the FIFO receives both the read
+         which is cancelled (and not delivered to the core) and the one which
+         is re-issued (which is delivered to the core).
+
+         To solve this, interrupts are turned off before reads occur to
+         I/O space. This option controls which the overhead/latency of
+         controlling interrupts during this time
+          "n" turns interrupts off every read
+               (higher overhead, but lower interrupt latency)
+          "y" turns interrupts off every loop
+               (low overhead, but longer interrupt latency)
+
+         default behavior is to leave this set to on (type "Y"). If you are experiencing
+         interrupt latency issues, it is safe and OK to turn this off.
 
+endmenu
 
 choice
        prompt "Kernel executes from"
@@ -584,17 +829,21 @@ endchoice
 
 source "mm/Kconfig"
 
-config BFIN_DMA_5XX
-       bool "Enable DMA Support"
-       depends on (BF533 || BF532 || BF531 || BF537 || BF536 || BF534 || BF561 || BF54x)
-       default y
+config BFIN_GPTIMERS
+       tristate "Enable Blackfin General Purpose Timers API"
+       default n
        help
-         DMA driver for BF5xx.
+         Enable support for the General Purpose Timers API.  If you
+         are unsure, say N.
+
+         To compile this driver as a module, choose M here: the module
+         will be called gptimers.ko.
 
 choice
-       prompt "Uncached SDRAM region"
+       prompt "Uncached DMA region"
        default DMA_UNCACHED_1M
-       depends BFIN_DMA_5XX
+config DMA_UNCACHED_4M
+       bool "Enable 4M DMA region"
 config DMA_UNCACHED_2M
        bool "Enable 2M DMA region"
 config DMA_UNCACHED_1M
@@ -605,23 +854,25 @@ endchoice
 
 
 comment "Cache Support"
-config BLKFIN_CACHE
+config BFIN_ICACHE
        bool "Enable ICACHE"
-config BLKFIN_DCACHE
+config BFIN_DCACHE
        bool "Enable DCACHE"
-config BLKFIN_DCACHE_BANKA
+config BFIN_DCACHE_BANKA
        bool "Enable only 16k BankA DCACHE - BankB is SRAM"
-       depends on BLKFIN_DCACHE && !BF531
+       depends on BFIN_DCACHE && !BF531
        default n
-config BLKFIN_CACHE_LOCK
-       bool "Enable Cache Locking"
+config BFIN_ICACHE_LOCK
+       bool "Enable Instruction Cache Locking"
 
 choice
        prompt "Policy"
-       depends on BLKFIN_DCACHE
-       default BLKFIN_WB
-config BLKFIN_WB
+       depends on BFIN_DCACHE
+       default BFIN_WB if !SMP
+       default BFIN_WT if SMP
+config BFIN_WB
        bool "Write back"
+       depends on !SMP
        help
          Write Back Policy:
            Cached data will be written back to SDRAM only when needed.
@@ -637,7 +888,7 @@ config BLKFIN_WB
          If you are unsure of the options and you want to be safe,
          then go with Write Through.
 
-config BLKFIN_WT
+config BFIN_WT
        bool "Write through"
        help
          Write Back Policy:
@@ -656,73 +907,24 @@ config BLKFIN_WT
 
 endchoice
 
-config L1_MAX_PIECE
-       int "Set the max L1 SRAM pieces"
-       default 16
-       help
-         Set the max memory pieces for the L1 SRAM allocation algorithm.
-         Min value is 16. Max value is 1024.
-
-menu "Clock Settings"
-
-
-config BFIN_KERNEL_CLOCK
-       bool "Re-program Clocks while Kernel boots?"
+config BFIN_L2_CACHEABLE
+       bool "Cache L2 SRAM"
+       depends on (BFIN_DCACHE || BFIN_ICACHE) && (BF54x || (BF561 && !SMP))
        default n
        help
-         This option decides if kernel clocks are re-programed from the
-         bootloader settings. If the clocks are not set, the SDRAM settings
-         are also not changed, and the Bootloader does 100% of the hardware
-         configuration.
+         Select to make L2 SRAM cacheable in L1 data and instruction cache.
 
-config VCO_MULT
-       int "VCO Multiplier"
-       depends on BFIN_KERNEL_CLOCK
-       default "22" if BFIN533_EZKIT
-       default "45" if BFIN533_STAMP
-       default "20" if BFIN537_STAMP
-       default "22" if BFIN533_BLUETECHNIX_CM
-       default "20" if BFIN537_BLUETECHNIX_CM
-       default "20" if BFIN561_BLUETECHNIX_CM
-       default "20" if BFIN561_EZKIT
-
-config CCLK_DIV
-       int "Core Clock Divider"
-       depends on BFIN_KERNEL_CLOCK
-       default 1 if BFIN533_EZKIT
-       default 1 if BFIN533_STAMP
-       default 1 if BFIN537_STAMP
-       default 1 if BFIN533_BLUETECHNIX_CM
-       default 1 if BFIN537_BLUETECHNIX_CM
-       default 1 if BFIN561_BLUETECHNIX_CM
-       default 1 if BFIN561_EZKIT
-
-config SCLK_DIV
-       int "System Clock Divider"
-       depends on BFIN_KERNEL_CLOCK
-       default 5 if BFIN533_EZKIT
-       default 5 if BFIN533_STAMP
-       default 4 if BFIN537_STAMP
-       default 5 if BFIN533_BLUETECHNIX_CM
-       default 4 if BFIN537_BLUETECHNIX_CM
-       default 4 if BFIN561_BLUETECHNIX_CM
-       default 5 if BFIN561_EZKIT
-
-config CLKIN_HALF
-       bool "Half ClockIn"
-       depends on BFIN_KERNEL_CLOCK
-       default n
-
-config PLL_BYPASS
-       bool "Bypass PLL"
-       depends on BFIN_KERNEL_CLOCK
+config MPU
+       bool "Enable the memory protection unit (EXPERIMENTAL)"
        default n
-
-endmenu
+       help
+         Use the processor's MPU to protect applications from accessing
+         memory they do not own.  This comes at a performance penalty
+         and is recommended only for debugging.
 
 comment "Asynchonous Memory Configuration"
 
-menu "EBIU_AMBCTL Global Control"
+menu "EBIU_AMGCTL Global Control"
 config C_AMCKEN
        bool "Enable CLKOUT"
        default y
@@ -780,6 +982,7 @@ config BANK_0
 config BANK_1
        hex "Bank 1"
        default 0x7BB0
+       default 0x5558 if BF54x
 
 config BANK_2
        hex "Bank 2"
@@ -790,6 +993,20 @@ config BANK_3
        default 0x99B3
 endmenu
 
+config EBIU_MBSCTLVAL
+       hex "EBIU Bank Select Control Register"
+       depends on BF54x
+       default 0
+
+config EBIU_MODEVAL
+       hex "Flash Memory Mode Control Register"
+       depends on BF54x
+       default 1
+
+config EBIU_FCTLVAL
+       hex "Flash Memory Bank Control Register"
+       depends on BF54x
+       default 6
 endmenu
 
 #############################################################################
@@ -797,6 +1014,7 @@ menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)"
 
 config PCI
        bool "PCI support"
+       depends on BROKEN
        help
          Support for PCI bus.
 
@@ -814,8 +1032,8 @@ config HOTPLUG
          plugged into slots found on all modern laptop computers.  Another
          example, used on modern desktops as well as laptops, is USB.
 
-         Enable HOTPLUG and KMOD, and build a modular kernel.  Get agent
-         software (at <http://linux-hotplug.sourceforge.net/>) and install it.
+         Enable HOTPLUG and build a modular kernel.  Get agent software
+         (from <http://linux-hotplug.sourceforge.net/>) and install it.
          Then your kernel will automatically call out to a user mode "policy
          agent" (/sbin/hotplug) to load modules and set up software needed
          to use devices as you hotplug them.
@@ -835,34 +1053,53 @@ endmenu
 menu "Power management options"
 source "kernel/power/Kconfig"
 
+config ARCH_SUSPEND_POSSIBLE
+       def_bool y
+       depends on !SMP
+
 choice
-       prompt "Select PM Wakeup Event Source"
-       default PM_WAKEUP_GPIO_BY_SIC_IWR
+       prompt "Standby Power Saving Mode"
        depends on PM
-       help
-         If you have a GPIO already configured as input with the corresponding PORTx_MASK
-         bit set - "Specify Wakeup Event by SIC_IWR value"
-
-config PM_WAKEUP_GPIO_BY_SIC_IWR
-       bool "Specify Wakeup Event by SIC_IWR value"
-config PM_WAKEUP_BY_GPIO
-       bool "Cause Wakeup Event by GPIO"
-config PM_WAKEUP_GPIO_API
-       bool "Configure Wakeup Event by PM GPIO API"
-
+       default PM_BFIN_SLEEP_DEEPER
+config  PM_BFIN_SLEEP_DEEPER
+       bool "Sleep Deeper"
+       help
+         Sleep "Deeper" Mode (High Power Savings) - This mode reduces dynamic
+         power dissipation by disabling the clock to the processor core (CCLK).
+         Furthermore, Standby sets the internal power supply voltage (VDDINT)
+         to 0.85 V to provide the greatest power savings, while preserving the
+         processor state.
+         The PLL and system clock (SCLK) continue to operate at a very low
+         frequency of about 3.3 MHz. To preserve data integrity in the SDRAM,
+         the SDRAM is put into Self Refresh Mode. Typically an external event
+         such as GPIO interrupt or RTC activity wakes up the processor.
+         Various Peripherals such as UART, SPORT, PPI may not function as
+         normal during Sleep Deeper, due to the reduced SCLK frequency.
+         When in the sleep mode, system DMA access to L1 memory is not supported.
+
+         If unsure, select "Sleep Deeper".
+
+config  PM_BFIN_SLEEP
+       bool "Sleep"
+       help
+         Sleep Mode (High Power Savings) - The sleep mode reduces power
+         dissipation by disabling the clock to the processor core (CCLK).
+         The PLL and system clock (SCLK), however, continue to operate in
+         this mode. Typically an external event or RTC activity will wake
+         up the processor. When in the sleep mode, system DMA access to L1
+         memory is not supported.
+
+         If unsure, select "Sleep Deeper".
 endchoice
 
-config PM_WAKEUP_SIC_IWR
-       hex "Wakeup Events (SIC_IWR)"
-       depends on PM_WAKEUP_GPIO_BY_SIC_IWR
-       default 0x80000000 if (BF537 || BF536 || BF534)
-       default 0x100000 if (BF533 || BF532 || BF531)
+config PM_WAKEUP_BY_GPIO
+       bool "Allow Wakeup from Standby by GPIO"
 
 config PM_WAKEUP_GPIO_NUMBER
-       int "Wakeup GPIO number"
+       int "GPIO number"
        range 0 47
        depends on PM_WAKEUP_BY_GPIO
-       default 2 if BFIN537_STAMP
+       default 2
 
 choice
        prompt "GPIO Polarity"
@@ -880,123 +1117,54 @@ config  PM_WAKEUP_GPIO_POLAR_EDGE_B
        bool "Both EDGE"
 endchoice
 
-endmenu
-
-if (BF537 || BF533 || BF54x)
-
-menu "CPU Frequency scaling"
-
-source "drivers/cpufreq/Kconfig"
+comment "Possible Suspend Mem / Hibernate Wake-Up Sources"
+       depends on PM
 
-config CPU_FREQ
-       bool
+config PM_BFIN_WAKE_PH6
+       bool "Allow Wake-Up from on-chip PHY or PH6 GP"
+       depends on PM && (BF51x || BF52x || BF534 || BF536 || BF537)
        default n
        help
-         If you want to enable this option, you should select the
-         DPMC driver from Character Devices.
-endmenu
-
-endif
-
-source "net/Kconfig"
-
-source "drivers/Kconfig"
-
-source "fs/Kconfig"
-
-source "arch/blackfin/oprofile/Kconfig"
-
-menu "Kernel hacking"
-
-source "lib/Kconfig.debug"
-
-config DEBUG_HWERR
-       bool "Hardware error interrupt debugging"
-       depends on DEBUG_KERNEL
-       help
-         When enabled, the hardware error interrupt is never disabled, and
-         will happen immediately when an error condition occurs.  This comes
-         at a slight cost in code size, but is necessary if you are getting
-         hardware error interrupts and need to know where they are coming
-         from.
-
-config DEBUG_ICACHE_CHECK
-       bool "Check Instruction cache coherancy"
-       depends on DEBUG_KERNEL
-       depends on DEBUG_HWERR
-       help
-         Say Y here if you are getting wierd unexplained errors. This will
-         ensure that icache is what SDRAM says it should be, by doing a
-         byte wise comparision between SDRAM and instruction cache. This
-         also relocates the irq_panic() function to L1 memory, (which is
-         un-cached).
-
-config DEBUG_KERNEL_START
-       bool "Debug Kernel Startup"
-       depends on DEBUG_KERNEL
-       help
-         Say Y here to put in an mini-execption handler before the kernel
-         replaces the bootloader exception handler. This will stop kernels
-         from dieing at startup with no visible error messages.
+         Enable PHY and PH6 GP Wake-Up (Voltage Regulator Power-Up)
 
-config DEBUG_SERIAL_EARLY_INIT
-       bool "Initialize serial driver early"
+config PM_BFIN_WAKE_GP
+       bool "Allow Wake-Up from GPIOs"
+       depends on PM && BF54x
        default n
-       depends on SERIAL_BFIN
        help
-         Say Y here if you want to get kernel output early when kernel
-         crashes before the normal console initialization. If this option
-         is enable, console output will always go to the ttyBF0, no matter
-         what kernel boot paramters you set.
+         Enable General-Purpose Wake-Up (Voltage Regulator Power-Up)
+endmenu
 
-config DEBUG_HUNT_FOR_ZERO
-       bool "Catch NULL pointer reads/writes"
-       default y
-       help
-         Say Y here to catch reads/writes to anywhere in the memory range
-         from 0x0000 - 0x0FFF (the first 4k) of memory.  This is useful in
-         catching common programming errors such as NULL pointer dereferences.
+menu "CPU Frequency scaling"
 
-         Misbehaving applications will be killed (generate a SEGV) while the
-         kernel will trigger a panic.
+source "drivers/cpufreq/Kconfig"
 
-         Enabling this option will take up an extra entry in CPLB table.
-         Otherwise, there is no extra overhead.
+config BFIN_CPU_FREQ
+       bool
+       depends on CPU_FREQ
+       select CPU_FREQ_TABLE
+       default y
 
-config DEBUG_BFIN_NO_KERN_HWTRACE
-       bool "Trace user apps (turn off hwtrace in kernel)"
+config CPU_VOLTAGE
+       bool "CPU Voltage scaling"
+       depends on EXPERIMENTAL
+       depends on CPU_FREQ
        default n
        help
-         Some pieces of the kernel contain a lot of flow changes which can
-         quickly fill up the hardware trace buffer.  When debugging crashes,
-         the hardware trace may indicate that the problem lies in kernel
-         space when in reality an application is buggy.
+         Say Y here if you want CPU voltage scaling according to the CPU frequency.
+         This option violates the PLL BYPASS recommendation in the Blackfin Processor
+         manuals. There is a theoretical risk that during VDDINT transitions
+         the PLL may unlock.
 
-         Say Y here to disable hardware tracing in some known "jumpy" pieces
-         of code so that the trace buffer will extend further back.
-
-config DUAL_CORE_TEST_MODULE
-       tristate "Dual Core Test Module"
-       depends on (BF561)
-       default n
-       help
-         Say Y here to build-in dual core test module for dual core test.
+endmenu
 
-config CPLB_INFO
-       bool "Display the CPLB information"
-       help
-         Display the CPLB information.
+source "net/Kconfig"
 
-config ACCESS_CHECK
-       bool "Check the user pointer address"
-       default y
-       help
-         Usually the pointer transfer from user space is checked to see if its
-         address is in the kernel space.
+source "drivers/Kconfig"
 
-         Say N here to disable that check to improve the performance.
+source "fs/Kconfig"
 
-endmenu
+source "arch/blackfin/Kconfig.debug"
 
 source "security/Kconfig"